@wordpress/block-editor 14.1.0 → 14.2.1-next.1f6eadc42.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 (705) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -10
  3. package/build/components/block-alignment-matrix-control/index.js +2 -2
  4. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +2 -2
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-canvas/index.js +8 -1
  8. package/build/components/block-canvas/index.js.map +1 -1
  9. package/build/components/block-compare/block-view.js +1 -0
  10. package/build/components/block-compare/block-view.js.map +1 -1
  11. package/build/components/block-draggable/index.js +4 -4
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-edit/multiple-usage-warning.js +2 -0
  16. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  17. package/build/components/block-inspector/index.js +27 -11
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-invalid-warning.js +3 -2
  20. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  21. package/build/components/block-list/block.js +5 -1
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/index.js +14 -3
  24. package/build/components/block-list/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js +5 -1
  26. package/build/components/block-list/use-block-props/index.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  28. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +53 -0
  30. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  31. package/build/components/block-list/zoom-out-separator.js +98 -0
  32. package/build/components/block-list/zoom-out-separator.js.map +1 -0
  33. package/build/components/block-lock/toolbar.js +3 -3
  34. package/build/components/block-lock/toolbar.js.map +1 -1
  35. package/build/components/block-mover/button.js +1 -0
  36. package/build/components/block-mover/button.js.map +1 -1
  37. package/build/components/block-mover/index.js +1 -0
  38. package/build/components/block-mover/index.js.map +1 -1
  39. package/build/components/block-navigation/dropdown.js +4 -1
  40. package/build/components/block-navigation/dropdown.js.map +1 -1
  41. package/build/components/block-pattern-setup/index.js +2 -10
  42. package/build/components/block-pattern-setup/index.js.map +1 -1
  43. package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
  44. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  45. package/build/components/block-patterns-list/index.js +12 -20
  46. package/build/components/block-patterns-list/index.js.map +1 -1
  47. package/build/components/block-patterns-paging/index.js +12 -3
  48. package/build/components/block-patterns-paging/index.js.map +1 -1
  49. package/build/components/block-popover/index.js +2 -15
  50. package/build/components/block-popover/index.js.map +1 -1
  51. package/build/components/block-quick-navigation/index.js +4 -1
  52. package/build/components/block-quick-navigation/index.js.map +1 -1
  53. package/build/components/block-settings-menu-controls/index.js +4 -0
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-switcher/index.js +30 -19
  56. package/build/components/block-switcher/index.js.map +1 -1
  57. package/build/components/block-switcher/pattern-transformations-menu.js +2 -10
  58. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +19 -12
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-toolbar/shuffle.js +6 -2
  62. package/build/components/block-toolbar/shuffle.js.map +1 -1
  63. package/build/components/block-tools/block-selection-button.js +8 -2
  64. package/build/components/block-tools/block-selection-button.js.map +1 -1
  65. package/build/components/block-tools/block-toolbar-popover.js +10 -6
  66. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  67. package/build/components/block-tools/index.js +1 -1
  68. package/build/components/block-tools/index.js.map +1 -1
  69. package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  70. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  71. package/build/components/block-tools/zoom-out-mode-inserters.js +7 -21
  72. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  73. package/build/components/block-tools/zoom-out-popover.js +3 -4
  74. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  75. package/build/components/block-tools/zoom-out-toolbar.js +26 -7
  76. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  77. package/build/components/block-variation-picker/index.js +4 -1
  78. package/build/components/block-variation-picker/index.js.map +1 -1
  79. package/build/components/block-variation-transforms/index.js +4 -1
  80. package/build/components/block-variation-transforms/index.js.map +1 -1
  81. package/build/components/button-block-appender/index.js +20 -23
  82. package/build/components/button-block-appender/index.js.map +1 -1
  83. package/build/components/colors-gradients/dropdown.js +4 -1
  84. package/build/components/colors-gradients/dropdown.js.map +1 -1
  85. package/build/components/content-lock/index.js +13 -0
  86. package/build/components/content-lock/index.js.map +1 -0
  87. package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
  88. package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  89. package/build/components/editor-styles/index.js +4 -3
  90. package/build/components/editor-styles/index.js.map +1 -1
  91. package/build/components/global-styles/background-panel.js +8 -12
  92. package/build/components/global-styles/background-panel.js.map +1 -1
  93. package/build/components/global-styles/color-panel.js +8 -5
  94. package/build/components/global-styles/color-panel.js.map +1 -1
  95. package/build/components/global-styles/color-panel.native.js +1 -1
  96. package/build/components/global-styles/color-panel.native.js.map +1 -1
  97. package/build/components/global-styles/dimensions-panel.js +34 -37
  98. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  99. package/build/components/global-styles/filters-panel.js +4 -1
  100. package/build/components/global-styles/filters-panel.js.map +1 -1
  101. package/build/components/global-styles/shadow-panel-components.js +14 -17
  102. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  103. package/build/components/global-styles/typography-utils.js +17 -6
  104. package/build/components/global-styles/typography-utils.js.map +1 -1
  105. package/build/components/global-styles/utils.js +4 -6
  106. package/build/components/global-styles/utils.js.map +1 -1
  107. package/build/components/grid/grid-item-movers.js +2 -2
  108. package/build/components/grid/grid-item-movers.js.map +1 -1
  109. package/build/components/grid/grid-item-resizer.js +2 -2
  110. package/build/components/grid/grid-item-resizer.js.map +1 -1
  111. package/build/components/iframe/get-compatibility-styles.js +1 -1
  112. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  113. package/build/components/iframe/index.js +5 -5
  114. package/build/components/iframe/index.js.map +1 -1
  115. package/build/components/inner-blocks/index.js +2 -4
  116. package/build/components/inner-blocks/index.js.map +1 -1
  117. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  118. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  119. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  120. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  121. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  122. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  123. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  124. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  125. package/build/components/inserter/index.js +4 -11
  126. package/build/components/inserter/index.js.map +1 -1
  127. package/build/components/inserter/library.js +2 -4
  128. package/build/components/inserter/library.js.map +1 -1
  129. package/build/components/inserter/media-tab/hooks.js +3 -3
  130. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  131. package/build/components/inserter/media-tab/media-list.js +1 -8
  132. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  133. package/build/components/inserter/media-tab/media-preview.js +9 -7
  134. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  135. package/build/components/inserter/media-tab/media-tab.js +4 -1
  136. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  137. package/build/components/inserter/menu.js +7 -24
  138. package/build/components/inserter/menu.js.map +1 -1
  139. package/build/components/inserter/quick-inserter.js +4 -5
  140. package/build/components/inserter/quick-inserter.js.map +1 -1
  141. package/build/components/inserter-list-item/index.js +4 -4
  142. package/build/components/inserter-list-item/index.js.map +1 -1
  143. package/build/components/inserter-listbox/index.js +3 -13
  144. package/build/components/inserter-listbox/index.js.map +1 -1
  145. package/build/components/inserter-listbox/item.js +6 -11
  146. package/build/components/inserter-listbox/item.js.map +1 -1
  147. package/build/components/inserter-listbox/row.js +1 -9
  148. package/build/components/inserter-listbox/row.js.map +1 -1
  149. package/build/components/inspector-controls/groups.js +2 -0
  150. package/build/components/inspector-controls/groups.js.map +1 -1
  151. package/build/components/inspector-controls-tabs/index.js +4 -1
  152. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  153. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  154. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  155. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  156. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  157. package/build/components/inspector-popover-header/index.js +8 -2
  158. package/build/components/inspector-popover-header/index.js.map +1 -1
  159. package/build/components/letter-spacing-control/index.js +7 -4
  160. package/build/components/letter-spacing-control/index.js.map +1 -1
  161. package/build/components/link-control/index.js +19 -10
  162. package/build/components/link-control/index.js.map +1 -1
  163. package/build/components/link-control/settings-drawer.js +4 -1
  164. package/build/components/link-control/settings-drawer.js.map +1 -1
  165. package/build/components/list-view/block-select-button.js +4 -1
  166. package/build/components/list-view/block-select-button.js.map +1 -1
  167. package/build/components/list-view/index.js +3 -7
  168. package/build/components/list-view/index.js.map +1 -1
  169. package/build/components/media-placeholder/index.js +32 -11
  170. package/build/components/media-placeholder/index.js.map +1 -1
  171. package/build/components/media-replace-flow/index.js +8 -1
  172. package/build/components/media-replace-flow/index.js.map +1 -1
  173. package/build/components/provider/use-block-sync.js +19 -19
  174. package/build/components/provider/use-block-sync.js.map +1 -1
  175. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  176. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  177. package/build/components/rich-text/index.js +38 -30
  178. package/build/components/rich-text/index.js.map +1 -1
  179. package/build/components/rich-text/use-mark-persistent.js +5 -5
  180. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  181. package/build/components/skip-to-selected-block/index.js +4 -1
  182. package/build/components/skip-to-selected-block/index.js.map +1 -1
  183. package/build/components/spacing-sizes-control/index.js +8 -9
  184. package/build/components/spacing-sizes-control/index.js.map +1 -1
  185. package/build/components/spacing-sizes-control/linked-button.js +35 -0
  186. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  187. package/build/components/spacing-sizes-control/utils.js +4 -15
  188. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  189. package/build/components/tool-selector/index.js +4 -1
  190. package/build/components/tool-selector/index.js.map +1 -1
  191. package/build/components/url-input/button.js +12 -3
  192. package/build/components/url-input/button.js.map +1 -1
  193. package/build/components/url-input/index.js +4 -1
  194. package/build/components/url-input/index.js.map +1 -1
  195. package/build/components/use-block-drop-zone/index.js +31 -7
  196. package/build/components/use-block-drop-zone/index.js.map +1 -1
  197. package/build/components/writing-flow/index.js +2 -1
  198. package/build/components/writing-flow/index.js.map +1 -1
  199. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  200. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  201. package/build/components/writing-flow/use-event-redirect.js +66 -0
  202. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  203. package/build/components/writing-flow/use-input.js +31 -1
  204. package/build/components/writing-flow/use-input.js.map +1 -1
  205. package/build/components/writing-flow/use-select-all.js +14 -1
  206. package/build/components/writing-flow/use-select-all.js.map +1 -1
  207. package/build/components/writing-flow/use-selection-observer.js +20 -6
  208. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  209. package/build/components/writing-flow/use-tab-nav.js +4 -4
  210. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  211. package/build/components/writing-flow/utils.js +27 -0
  212. package/build/components/writing-flow/utils.js.map +1 -1
  213. package/build/hooks/block-bindings.js +33 -29
  214. package/build/hooks/block-bindings.js.map +1 -1
  215. package/build/hooks/content-lock-ui.js +8 -26
  216. package/build/hooks/content-lock-ui.js.map +1 -1
  217. package/build/hooks/duotone.js +0 -4
  218. package/build/hooks/duotone.js.map +1 -1
  219. package/build/hooks/layout.js +4 -2
  220. package/build/hooks/layout.js.map +1 -1
  221. package/build/hooks/spacing-visualizer.js +3 -3
  222. package/build/hooks/spacing-visualizer.js.map +1 -1
  223. package/build/hooks/style.js +1 -5
  224. package/build/hooks/style.js.map +1 -1
  225. package/build/hooks/use-bindings-attributes.js +19 -20
  226. package/build/hooks/use-bindings-attributes.js.map +1 -1
  227. package/build/hooks/use-zoom-out.js +7 -7
  228. package/build/hooks/use-zoom-out.js.map +1 -1
  229. package/build/layouts/constrained.js +41 -42
  230. package/build/layouts/constrained.js.map +1 -1
  231. package/build/layouts/flex.js +4 -1
  232. package/build/layouts/flex.js.map +1 -1
  233. package/build/layouts/grid.js +19 -16
  234. package/build/layouts/grid.js.map +1 -1
  235. package/build/layouts/utils.js +1 -7
  236. package/build/layouts/utils.js.map +1 -1
  237. package/build/private-apis.js +2 -3
  238. package/build/private-apis.js.map +1 -1
  239. package/build/store/actions.js +2 -7
  240. package/build/store/actions.js.map +1 -1
  241. package/build/store/private-actions.js +1 -0
  242. package/build/store/private-actions.js.map +1 -1
  243. package/build/store/private-keys.js +2 -1
  244. package/build/store/private-keys.js.map +1 -1
  245. package/build/store/private-selectors.js +16 -18
  246. package/build/store/private-selectors.js.map +1 -1
  247. package/build/store/reducer.js +1 -10
  248. package/build/store/reducer.js.map +1 -1
  249. package/build/store/selectors.js +19 -43
  250. package/build/store/selectors.js.map +1 -1
  251. package/build/store/utils.js +48 -0
  252. package/build/store/utils.js.map +1 -1
  253. package/build/utils/block-bindings.js +16 -11
  254. package/build/utils/block-bindings.js.map +1 -1
  255. package/build/utils/dom.js +101 -0
  256. package/build/utils/dom.js.map +1 -1
  257. package/build/utils/get-font-styles-and-weights.js +4 -4
  258. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  259. package/build/utils/transform-styles/index.js +120 -16
  260. package/build/utils/transform-styles/index.js.map +1 -1
  261. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  262. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  263. package/build-module/components/block-breadcrumb/index.js +2 -2
  264. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  265. package/build-module/components/block-canvas/index.js +9 -1
  266. package/build-module/components/block-canvas/index.js.map +1 -1
  267. package/build-module/components/block-compare/block-view.js +1 -0
  268. package/build-module/components/block-compare/block-view.js.map +1 -1
  269. package/build-module/components/block-draggable/index.js +4 -4
  270. package/build-module/components/block-draggable/index.js.map +1 -1
  271. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  272. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  273. package/build-module/components/block-edit/multiple-usage-warning.js +2 -0
  274. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  275. package/build-module/components/block-inspector/index.js +27 -11
  276. package/build-module/components/block-inspector/index.js.map +1 -1
  277. package/build-module/components/block-list/block-invalid-warning.js +3 -2
  278. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  279. package/build-module/components/block-list/block.js +5 -1
  280. package/build-module/components/block-list/block.js.map +1 -1
  281. package/build-module/components/block-list/index.js +14 -3
  282. package/build-module/components/block-list/index.js.map +1 -1
  283. package/build-module/components/block-list/use-block-props/index.js +5 -1
  284. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  285. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  286. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  287. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +47 -0
  288. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  289. package/build-module/components/block-list/zoom-out-separator.js +90 -0
  290. package/build-module/components/block-list/zoom-out-separator.js.map +1 -0
  291. package/build-module/components/block-lock/toolbar.js +3 -3
  292. package/build-module/components/block-lock/toolbar.js.map +1 -1
  293. package/build-module/components/block-mover/button.js +1 -0
  294. package/build-module/components/block-mover/button.js.map +1 -1
  295. package/build-module/components/block-mover/index.js +1 -0
  296. package/build-module/components/block-mover/index.js.map +1 -1
  297. package/build-module/components/block-navigation/dropdown.js +4 -1
  298. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  299. package/build-module/components/block-pattern-setup/index.js +2 -10
  300. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  301. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  302. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  303. package/build-module/components/block-patterns-list/index.js +12 -20
  304. package/build-module/components/block-patterns-list/index.js.map +1 -1
  305. package/build-module/components/block-patterns-paging/index.js +12 -3
  306. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  307. package/build-module/components/block-popover/index.js +2 -15
  308. package/build-module/components/block-popover/index.js.map +1 -1
  309. package/build-module/components/block-quick-navigation/index.js +4 -1
  310. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  311. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  312. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  313. package/build-module/components/block-switcher/index.js +30 -19
  314. package/build-module/components/block-switcher/index.js.map +1 -1
  315. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -10
  316. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  317. package/build-module/components/block-toolbar/index.js +19 -12
  318. package/build-module/components/block-toolbar/index.js.map +1 -1
  319. package/build-module/components/block-toolbar/shuffle.js +6 -2
  320. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  321. package/build-module/components/block-tools/block-selection-button.js +8 -2
  322. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  323. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  324. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  325. package/build-module/components/block-tools/index.js +1 -1
  326. package/build-module/components/block-tools/index.js.map +1 -1
  327. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  328. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  329. package/build-module/components/block-tools/zoom-out-mode-inserters.js +7 -22
  330. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  331. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  332. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  333. package/build-module/components/block-tools/zoom-out-toolbar.js +27 -8
  334. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  335. package/build-module/components/block-variation-picker/index.js +4 -1
  336. package/build-module/components/block-variation-picker/index.js.map +1 -1
  337. package/build-module/components/block-variation-transforms/index.js +4 -1
  338. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  339. package/build-module/components/button-block-appender/index.js +22 -26
  340. package/build-module/components/button-block-appender/index.js.map +1 -1
  341. package/build-module/components/colors-gradients/dropdown.js +4 -1
  342. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  343. package/build-module/components/content-lock/index.js +2 -0
  344. package/build-module/components/content-lock/index.js.map +1 -0
  345. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  346. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  347. package/build-module/components/editor-styles/index.js +4 -3
  348. package/build-module/components/editor-styles/index.js.map +1 -1
  349. package/build-module/components/global-styles/background-panel.js +8 -12
  350. package/build-module/components/global-styles/background-panel.js.map +1 -1
  351. package/build-module/components/global-styles/color-panel.js +7 -4
  352. package/build-module/components/global-styles/color-panel.js.map +1 -1
  353. package/build-module/components/global-styles/color-panel.native.js +2 -2
  354. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  355. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  356. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  357. package/build-module/components/global-styles/filters-panel.js +4 -1
  358. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  359. package/build-module/components/global-styles/shadow-panel-components.js +14 -17
  360. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  361. package/build-module/components/global-styles/typography-utils.js +17 -6
  362. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  363. package/build-module/components/global-styles/utils.js +4 -6
  364. package/build-module/components/global-styles/utils.js.map +1 -1
  365. package/build-module/components/grid/grid-item-movers.js +3 -3
  366. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  367. package/build-module/components/grid/grid-item-resizer.js +2 -2
  368. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  369. package/build-module/components/iframe/get-compatibility-styles.js +1 -1
  370. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  371. package/build-module/components/iframe/index.js +5 -5
  372. package/build-module/components/iframe/index.js.map +1 -1
  373. package/build-module/components/inner-blocks/index.js +2 -4
  374. package/build-module/components/inner-blocks/index.js.map +1 -1
  375. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  376. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  377. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  378. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  379. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  380. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  381. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  382. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  383. package/build-module/components/inserter/index.js +4 -11
  384. package/build-module/components/inserter/index.js.map +1 -1
  385. package/build-module/components/inserter/library.js +2 -4
  386. package/build-module/components/inserter/library.js.map +1 -1
  387. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  388. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  389. package/build-module/components/inserter/media-tab/media-list.js +1 -8
  390. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  391. package/build-module/components/inserter/media-tab/media-preview.js +10 -8
  392. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  393. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  394. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  395. package/build-module/components/inserter/menu.js +7 -24
  396. package/build-module/components/inserter/menu.js.map +1 -1
  397. package/build-module/components/inserter/quick-inserter.js +5 -6
  398. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  399. package/build-module/components/inserter-list-item/index.js +4 -4
  400. package/build-module/components/inserter-list-item/index.js.map +1 -1
  401. package/build-module/components/inserter-listbox/index.js +3 -11
  402. package/build-module/components/inserter-listbox/index.js.map +1 -1
  403. package/build-module/components/inserter-listbox/item.js +7 -12
  404. package/build-module/components/inserter-listbox/item.js.map +1 -1
  405. package/build-module/components/inserter-listbox/row.js +2 -10
  406. package/build-module/components/inserter-listbox/row.js.map +1 -1
  407. package/build-module/components/inspector-controls/groups.js +2 -0
  408. package/build-module/components/inspector-controls/groups.js.map +1 -1
  409. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  410. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  411. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  412. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  413. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  414. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  415. package/build-module/components/inspector-popover-header/index.js +8 -2
  416. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  417. package/build-module/components/letter-spacing-control/index.js +7 -4
  418. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  419. package/build-module/components/link-control/index.js +19 -10
  420. package/build-module/components/link-control/index.js.map +1 -1
  421. package/build-module/components/link-control/settings-drawer.js +4 -1
  422. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  423. package/build-module/components/list-view/block-select-button.js +4 -1
  424. package/build-module/components/list-view/block-select-button.js.map +1 -1
  425. package/build-module/components/list-view/index.js +3 -7
  426. package/build-module/components/list-view/index.js.map +1 -1
  427. package/build-module/components/media-placeholder/index.js +32 -11
  428. package/build-module/components/media-placeholder/index.js.map +1 -1
  429. package/build-module/components/media-replace-flow/index.js +8 -1
  430. package/build-module/components/media-replace-flow/index.js.map +1 -1
  431. package/build-module/components/provider/use-block-sync.js +19 -19
  432. package/build-module/components/provider/use-block-sync.js.map +1 -1
  433. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  434. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  435. package/build-module/components/rich-text/index.js +39 -31
  436. package/build-module/components/rich-text/index.js.map +1 -1
  437. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  438. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  439. package/build-module/components/skip-to-selected-block/index.js +4 -1
  440. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  441. package/build-module/components/spacing-sizes-control/index.js +9 -10
  442. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  443. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  444. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  445. package/build-module/components/spacing-sizes-control/utils.js +4 -15
  446. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  447. package/build-module/components/tool-selector/index.js +4 -1
  448. package/build-module/components/tool-selector/index.js.map +1 -1
  449. package/build-module/components/url-input/button.js +12 -3
  450. package/build-module/components/url-input/button.js.map +1 -1
  451. package/build-module/components/url-input/index.js +4 -1
  452. package/build-module/components/url-input/index.js.map +1 -1
  453. package/build-module/components/use-block-drop-zone/index.js +31 -7
  454. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  455. package/build-module/components/writing-flow/index.js +2 -1
  456. package/build-module/components/writing-flow/index.js.map +1 -1
  457. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  458. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  459. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  460. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  461. package/build-module/components/writing-flow/use-input.js +31 -1
  462. package/build-module/components/writing-flow/use-input.js.map +1 -1
  463. package/build-module/components/writing-flow/use-select-all.js +14 -1
  464. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  465. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  466. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  467. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  468. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  469. package/build-module/components/writing-flow/utils.js +26 -0
  470. package/build-module/components/writing-flow/utils.js.map +1 -1
  471. package/build-module/hooks/block-bindings.js +35 -31
  472. package/build-module/hooks/block-bindings.js.map +1 -1
  473. package/build-module/hooks/content-lock-ui.js +10 -30
  474. package/build-module/hooks/content-lock-ui.js.map +1 -1
  475. package/build-module/hooks/duotone.js +0 -4
  476. package/build-module/hooks/duotone.js.map +1 -1
  477. package/build-module/hooks/layout.js +4 -2
  478. package/build-module/hooks/layout.js.map +1 -1
  479. package/build-module/hooks/spacing-visualizer.js +3 -3
  480. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  481. package/build-module/hooks/style.js +1 -5
  482. package/build-module/hooks/style.js.map +1 -1
  483. package/build-module/hooks/use-bindings-attributes.js +19 -20
  484. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  485. package/build-module/hooks/use-zoom-out.js +7 -7
  486. package/build-module/hooks/use-zoom-out.js.map +1 -1
  487. package/build-module/layouts/constrained.js +44 -45
  488. package/build-module/layouts/constrained.js.map +1 -1
  489. package/build-module/layouts/flex.js +4 -1
  490. package/build-module/layouts/flex.js.map +1 -1
  491. package/build-module/layouts/grid.js +21 -18
  492. package/build-module/layouts/grid.js.map +1 -1
  493. package/build-module/layouts/utils.js +1 -7
  494. package/build-module/layouts/utils.js.map +1 -1
  495. package/build-module/private-apis.js +3 -4
  496. package/build-module/private-apis.js.map +1 -1
  497. package/build-module/store/actions.js +2 -7
  498. package/build-module/store/actions.js.map +1 -1
  499. package/build-module/store/private-actions.js +1 -0
  500. package/build-module/store/private-actions.js.map +1 -1
  501. package/build-module/store/private-keys.js +1 -0
  502. package/build-module/store/private-keys.js.map +1 -1
  503. package/build-module/store/private-selectors.js +15 -18
  504. package/build-module/store/private-selectors.js.map +1 -1
  505. package/build-module/store/reducer.js +1 -9
  506. package/build-module/store/reducer.js.map +1 -1
  507. package/build-module/store/selectors.js +22 -46
  508. package/build-module/store/selectors.js.map +1 -1
  509. package/build-module/store/utils.js +46 -0
  510. package/build-module/store/utils.js.map +1 -1
  511. package/build-module/utils/block-bindings.js +17 -12
  512. package/build-module/utils/block-bindings.js.map +1 -1
  513. package/build-module/utils/dom.js +99 -0
  514. package/build-module/utils/dom.js.map +1 -1
  515. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  516. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  517. package/build-module/utils/transform-styles/index.js +120 -16
  518. package/build-module/utils/transform-styles/index.js.map +1 -1
  519. package/build-style/content-rtl.css +19 -11
  520. package/build-style/content.css +19 -11
  521. package/build-style/style-rtl.css +27 -117
  522. package/build-style/style.css +27 -117
  523. package/build-types/utils/dom.d.ts +25 -0
  524. package/build-types/utils/dom.d.ts.map +1 -1
  525. package/package.json +34 -32
  526. package/src/components/block-alignment-matrix-control/index.js +1 -1
  527. package/src/components/block-breadcrumb/index.js +2 -2
  528. package/src/components/block-breadcrumb/style.scss +1 -30
  529. package/src/components/block-canvas/index.js +9 -1
  530. package/src/components/block-compare/block-view.js +6 -1
  531. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  532. package/src/components/block-draggable/content.scss +1 -1
  533. package/src/components/block-draggable/index.js +4 -4
  534. package/src/components/block-draggable/style.scss +1 -1
  535. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  536. package/src/components/block-edit/multiple-usage-warning.js +2 -0
  537. package/src/components/block-inspector/index.js +22 -7
  538. package/src/components/block-inspector/style.scss +2 -4
  539. package/src/components/block-list/block-invalid-warning.js +3 -2
  540. package/src/components/block-list/block.js +6 -2
  541. package/src/components/block-list/content.scss +23 -3
  542. package/src/components/block-list/index.js +59 -38
  543. package/src/components/block-list/use-block-props/index.js +3 -0
  544. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  545. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +56 -0
  546. package/src/components/block-list/zoom-out-separator.js +110 -0
  547. package/src/components/block-lock/style.scss +1 -1
  548. package/src/components/block-lock/toolbar.js +3 -3
  549. package/src/components/block-mover/button.js +1 -0
  550. package/src/components/block-mover/index.js +1 -0
  551. package/src/components/block-mover/style.scss +1 -1
  552. package/src/components/block-navigation/dropdown.js +2 -0
  553. package/src/components/block-pattern-setup/index.js +3 -15
  554. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  555. package/src/components/block-pattern-setup/style.scss +2 -2
  556. package/src/components/block-patterns-list/index.js +15 -18
  557. package/src/components/block-patterns-list/style.scss +2 -2
  558. package/src/components/block-patterns-paging/index.js +6 -0
  559. package/src/components/block-popover/index.js +7 -28
  560. package/src/components/block-popover/style.scss +1 -1
  561. package/src/components/block-quick-navigation/index.js +2 -0
  562. package/src/components/block-settings-menu-controls/index.js +7 -1
  563. package/src/components/block-switcher/index.js +45 -23
  564. package/src/components/block-switcher/pattern-transformations-menu.js +3 -12
  565. package/src/components/block-switcher/style.scss +5 -30
  566. package/src/components/block-toolbar/index.js +27 -11
  567. package/src/components/block-toolbar/shuffle.js +9 -7
  568. package/src/components/block-toolbar/style.scss +4 -1
  569. package/src/components/block-tools/block-selection-button.js +4 -0
  570. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  571. package/src/components/block-tools/index.js +1 -1
  572. package/src/components/block-tools/style.scss +3 -4
  573. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  574. package/src/components/block-tools/zoom-out-mode-inserters.js +2 -17
  575. package/src/components/block-tools/zoom-out-popover.js +3 -7
  576. package/src/components/block-tools/zoom-out-toolbar.js +31 -6
  577. package/src/components/block-variation-picker/README.md +2 -2
  578. package/src/components/block-variation-picker/index.js +6 -1
  579. package/src/components/block-variation-transforms/index.js +2 -0
  580. package/src/components/block-variation-transforms/style.scss +1 -1
  581. package/src/components/button-block-appender/content.scss +0 -1
  582. package/src/components/button-block-appender/index.js +30 -28
  583. package/src/components/color-palette/test/control.js +15 -2
  584. package/src/components/colors-gradients/dropdown.js +5 -1
  585. package/src/components/colors-gradients/style.scss +4 -4
  586. package/src/components/content-lock/index.js +1 -0
  587. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  588. package/src/components/default-block-appender/content.scss +0 -1
  589. package/src/components/editor-styles/index.js +4 -3
  590. package/src/components/global-styles/background-panel.js +6 -14
  591. package/src/components/global-styles/color-panel.js +8 -4
  592. package/src/components/global-styles/color-panel.native.js +2 -2
  593. package/src/components/global-styles/dimensions-panel.js +40 -40
  594. package/src/components/global-styles/filters-panel.js +5 -1
  595. package/src/components/global-styles/shadow-panel-components.js +11 -15
  596. package/src/components/global-styles/style.scss +3 -4
  597. package/src/components/global-styles/test/typography-utils.js +96 -5
  598. package/src/components/global-styles/test/utils.js +10 -0
  599. package/src/components/global-styles/typography-utils.js +22 -6
  600. package/src/components/global-styles/utils.js +4 -6
  601. package/src/components/grid/grid-item-movers.js +3 -3
  602. package/src/components/grid/grid-item-resizer.js +2 -2
  603. package/src/components/grid/style.scss +1 -1
  604. package/src/components/iframe/get-compatibility-styles.js +6 -1
  605. package/src/components/iframe/index.js +5 -5
  606. package/src/components/inner-blocks/index.js +2 -2
  607. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  608. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  609. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  610. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +32 -15
  611. package/src/components/inserter/index.js +4 -10
  612. package/src/components/inserter/library.js +0 -2
  613. package/src/components/inserter/media-tab/hooks.js +3 -3
  614. package/src/components/inserter/media-tab/media-list.js +1 -7
  615. package/src/components/inserter/media-tab/media-preview.js +15 -8
  616. package/src/components/inserter/media-tab/media-tab.js +2 -0
  617. package/src/components/inserter/menu.js +15 -29
  618. package/src/components/inserter/quick-inserter.js +3 -4
  619. package/src/components/inserter/style.scss +10 -17
  620. package/src/components/inserter-list-item/index.js +4 -4
  621. package/src/components/inserter-list-item/style.scss +1 -3
  622. package/src/components/inserter-listbox/index.js +2 -11
  623. package/src/components/inserter-listbox/item.js +12 -14
  624. package/src/components/inserter-listbox/row.js +2 -9
  625. package/src/components/inspector-controls/groups.js +2 -0
  626. package/src/components/inspector-controls-tabs/index.js +2 -0
  627. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  628. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  629. package/src/components/inspector-popover-header/index.js +4 -0
  630. package/src/components/letter-spacing-control/README.md +8 -1
  631. package/src/components/letter-spacing-control/index.js +7 -4
  632. package/src/components/link-control/index.js +17 -8
  633. package/src/components/link-control/settings-drawer.js +2 -0
  634. package/src/components/link-control/style.scss +1 -3
  635. package/src/components/list-view/block-select-button.js +2 -0
  636. package/src/components/list-view/index.js +3 -8
  637. package/src/components/list-view/style.scss +14 -16
  638. package/src/components/media-placeholder/README.md +2 -2
  639. package/src/components/media-placeholder/index.js +21 -4
  640. package/src/components/media-replace-flow/index.js +12 -1
  641. package/src/components/provider/use-block-sync.js +20 -20
  642. package/src/components/responsive-block-control/README.md +3 -27
  643. package/src/components/rich-text/content.scss +1 -1
  644. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  645. package/src/components/rich-text/index.js +54 -41
  646. package/src/components/rich-text/style.scss +1 -1
  647. package/src/components/rich-text/use-mark-persistent.js +5 -5
  648. package/src/components/skip-to-selected-block/index.js +2 -0
  649. package/src/components/spacing-sizes-control/index.js +10 -13
  650. package/src/components/spacing-sizes-control/linked-button.js +32 -0
  651. package/src/components/spacing-sizes-control/style.scss +1 -0
  652. package/src/components/spacing-sizes-control/test/utils.js +14 -15
  653. package/src/components/spacing-sizes-control/utils.js +5 -18
  654. package/src/components/tool-selector/index.js +2 -0
  655. package/src/components/url-input/button.js +6 -0
  656. package/src/components/url-input/index.js +2 -0
  657. package/src/components/url-popover/stories/index.story.js +7 -1
  658. package/src/components/use-block-drop-zone/index.js +37 -5
  659. package/src/components/warning/content.scss +3 -10
  660. package/src/components/writing-flow/index.js +2 -0
  661. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  662. package/src/components/writing-flow/use-event-redirect.js +72 -0
  663. package/src/components/writing-flow/use-input.js +36 -1
  664. package/src/components/writing-flow/use-select-all.js +18 -1
  665. package/src/components/writing-flow/use-selection-observer.js +23 -3
  666. package/src/components/writing-flow/use-tab-nav.js +4 -4
  667. package/src/components/writing-flow/utils.js +30 -0
  668. package/src/hooks/block-bindings.js +42 -43
  669. package/src/hooks/block-bindings.scss +1 -9
  670. package/src/hooks/content-lock-ui.js +11 -36
  671. package/src/hooks/duotone.js +0 -4
  672. package/src/hooks/layout.js +2 -1
  673. package/src/hooks/layout.scss +5 -27
  674. package/src/hooks/spacing-visualizer.js +3 -3
  675. package/src/hooks/style.js +1 -4
  676. package/src/hooks/use-bindings-attributes.js +23 -24
  677. package/src/hooks/use-zoom-out.js +7 -7
  678. package/src/layouts/constrained.js +53 -48
  679. package/src/layouts/flex.js +2 -0
  680. package/src/layouts/grid.js +29 -22
  681. package/src/layouts/test/grid.js +2 -2
  682. package/src/layouts/test/utils.js +6 -8
  683. package/src/layouts/utils.js +1 -9
  684. package/src/private-apis.js +2 -2
  685. package/src/store/actions.js +4 -6
  686. package/src/store/private-actions.js +1 -0
  687. package/src/store/private-keys.js +1 -0
  688. package/src/store/private-selectors.js +18 -14
  689. package/src/store/reducer.js +0 -7
  690. package/src/store/selectors.js +32 -51
  691. package/src/store/utils.js +50 -0
  692. package/src/utils/block-bindings.js +15 -16
  693. package/src/utils/dom.js +117 -0
  694. package/src/utils/get-font-styles-and-weights.js +12 -4
  695. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  696. package/src/utils/test/transform-styles.js +259 -50
  697. package/src/utils/transform-styles/index.js +132 -21
  698. package/tsconfig.json +1 -0
  699. package/tsconfig.tsbuildinfo +1 -1
  700. package/build/components/spacing-sizes-control/sides-dropdown/index.js +0 -86
  701. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  702. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +0 -81
  703. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  704. package/src/components/spacing-sizes-control/sides-dropdown/index.js +0 -91
  705. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -1 +1 @@
1
- {"version":3,"names":["pasteHandler","isEmpty","insert","create","isURL","addActiveFormats","getPasteEventData","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","target","defaultPrevented","plainText","html","preventDefault","window","console","log","isInternal","clipboardData","getData","pasteInline","content","transformed","reduce","accumulator","__unstablePasteRule","valueToInsert","activeFormats","text","mode","trimmedPlainText","trim","test","HTML","length","defaultView","ownerDocument","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/event-listeners/paste-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { pasteHandler } from '@wordpress/blocks';\nimport { isEmpty, insert, create } from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { addActiveFormats } from '../utils';\nimport { getPasteEventData } from '../../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\nexport default ( props ) => ( element ) => {\n\tfunction _onPaste( event ) {\n\t\tconst {\n\t\t\tdisableFormats,\n\t\t\tonChange,\n\t\t\tvalue,\n\t\t\tformatTypes,\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t} = props.current;\n\n\t\t// The event listener is attached to the window, so we need to check if\n\t\t// the target is the element.\n\t\tif ( event.target !== element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { plainText, html } = getPasteEventData( event );\n\n\t\tevent.preventDefault();\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tif ( disableFormats ) {\n\t\t\tonChange( insert( value, plainText ) );\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInternal =\n\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\n\t\tfunction pasteInline( content ) {\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumulator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumulator === value ) {\n\t\t\t\t\t\taccumulator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t} else {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t}\n\t\t}\n\n\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t// without filtering the data. The filters are only meant for externally\n\t\t// pasted content and remove inline styles.\n\t\tif ( isInternal ) {\n\t\t\tpasteInline( html );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pastePlainText ) {\n\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\treturn;\n\t\t}\n\n\t\tlet mode = 'INLINE';\n\n\t\tconst trimmedPlainText = plainText.trim();\n\n\t\tif (\n\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\tisEmpty( value ) &&\n\t\t\tisURL( trimmedPlainText ) &&\n\t\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\t\t/^https?:/.test( trimmedPlainText )\n\t\t) {\n\t\t\tmode = 'BLOCKS';\n\t\t}\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode,\n\t\t\ttagName,\n\t\t\tpreserveWhiteSpace,\n\t\t} );\n\n\t\tif ( typeof content === 'string' ) {\n\t\t\tpasteInline( content );\n\t\t} else if ( content.length > 0 ) {\n\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst { defaultView } = element.ownerDocument;\n\n\t// Attach the listener to the window so parent elements have the chance to\n\t// prevent the default behavior.\n\tdefaultView.addEventListener( 'paste', _onPaste );\n\treturn () => {\n\t\tdefaultView.removeEventListener( 'paste', _onPaste );\n\t};\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pasteHandler","isEmpty","insert","create","isURL","addActiveFormats","getPasteEventData","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","ownerDocument","defaultView","anchorNode","focusNode","getSelection","containsSelection","contains","defaultPrevented","plainText","html","preventDefault","window","console","log","isInternal","clipboardData","getData","pasteInline","content","transformed","reduce","accumulator","__unstablePasteRule","valueToInsert","activeFormats","text","mode","trimmedPlainText","trim","test","HTML","length","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/event-listeners/paste-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { pasteHandler } from '@wordpress/blocks';\nimport { isEmpty, insert, create } from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { addActiveFormats } from '../utils';\nimport { getPasteEventData } from '../../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\nexport default ( props ) => ( element ) => {\n\tfunction _onPaste( event ) {\n\t\tconst {\n\t\t\tdisableFormats,\n\t\t\tonChange,\n\t\t\tvalue,\n\t\t\tformatTypes,\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t} = props.current;\n\t\tconst { ownerDocument } = element;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst { anchorNode, focusNode } = defaultView.getSelection();\n\t\tconst containsSelection =\n\t\t\telement.contains( anchorNode ) && element.contains( focusNode );\n\n\t\t// The event listener is attached to the window, so we need to check if\n\t\t// the target is the element.\n\t\tif ( ! containsSelection ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { plainText, html } = getPasteEventData( event );\n\n\t\tevent.preventDefault();\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tif ( disableFormats ) {\n\t\t\tonChange( insert( value, plainText ) );\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInternal =\n\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\n\t\tfunction pasteInline( content ) {\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumulator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumulator === value ) {\n\t\t\t\t\t\taccumulator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t} else {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t}\n\t\t}\n\n\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t// without filtering the data. The filters are only meant for externally\n\t\t// pasted content and remove inline styles.\n\t\tif ( isInternal ) {\n\t\t\tpasteInline( html );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pastePlainText ) {\n\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\treturn;\n\t\t}\n\n\t\tlet mode = 'INLINE';\n\n\t\tconst trimmedPlainText = plainText.trim();\n\n\t\tif (\n\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\tisEmpty( value ) &&\n\t\t\tisURL( trimmedPlainText ) &&\n\t\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\t\t/^https?:/.test( trimmedPlainText )\n\t\t) {\n\t\t\tmode = 'BLOCKS';\n\t\t}\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode,\n\t\t\ttagName,\n\t\t\tpreserveWhiteSpace,\n\t\t} );\n\n\t\tif ( typeof content === 'string' ) {\n\t\t\tpasteInline( content );\n\t\t} else if ( content.length > 0 ) {\n\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst { defaultView } = element.ownerDocument;\n\n\t// Attach the listener to the window so parent elements have the chance to\n\t// prevent the default behavior.\n\tdefaultView.addEventListener( 'paste', _onPaste );\n\treturn () => {\n\t\tdefaultView.removeEventListener( 'paste', _onPaste );\n\t};\n};\n"],"mappings":"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","ignoreList":[]}
@@ -11,8 +11,9 @@ import { useDispatch, useRegistry, useSelect } from '@wordpress/data';
11
11
  import { useMergeRefs, useInstanceId } from '@wordpress/compose';
12
12
  import { __unstableUseRichText as useRichText, removeFormat } from '@wordpress/rich-text';
13
13
  import { Popover } from '@wordpress/components';
14
- import { getBlockType, store as blocksStore } from '@wordpress/blocks';
14
+ import { store as blocksStore } from '@wordpress/blocks';
15
15
  import deprecated from '@wordpress/deprecated';
16
+ import { __, sprintf } from '@wordpress/i18n';
16
17
 
17
18
  /**
18
19
  * Internal dependencies
@@ -145,34 +146,31 @@ export function RichTextWrapper({
145
146
  selectionEnd,
146
147
  isSelected
147
148
  } = useSelect(selector, [clientId, identifier, instanceId, originalIsSelected, isBlockSelected]);
148
- const disableBoundBlocks = useSelect(select => {
149
- // Disable Rich Text editing if block bindings specify that.
150
- let _disableBoundBlocks = false;
151
- if (blockBindings && canBindBlock(blockName)) {
152
- const blockTypeAttributes = getBlockType(blockName).attributes;
153
- const {
154
- getBlockBindingsSource
155
- } = unlock(select(blocksStore));
156
- for (const [attribute, binding] of Object.entries(blockBindings)) {
157
- if (blockTypeAttributes?.[attribute]?.source !== 'rich-text') {
158
- break;
159
- }
160
-
161
- // If the source is not defined, or if its value of `canUserEditValue` is `false`, disable it.
162
- const blockBindingsSource = getBlockBindingsSource(binding.source);
163
- if (!blockBindingsSource?.canUserEditValue?.({
164
- select,
165
- context: blockContext,
166
- args: binding.args
167
- })) {
168
- _disableBoundBlocks = true;
169
- break;
170
- }
171
- }
149
+ const {
150
+ disableBoundBlock,
151
+ bindingsPlaceholder
152
+ } = useSelect(select => {
153
+ if (!blockBindings?.[identifier] || !canBindBlock(blockName)) {
154
+ return {};
172
155
  }
173
- return _disableBoundBlocks;
174
- }, [blockBindings, blockName]);
175
- const shouldDisableEditing = readOnly || disableBoundBlocks;
156
+ const relatedBinding = blockBindings[identifier];
157
+ const {
158
+ getBlockBindingsSource
159
+ } = unlock(select(blocksStore));
160
+ const blockBindingsSource = getBlockBindingsSource(relatedBinding.source);
161
+ const _disableBoundBlock = !blockBindingsSource?.canUserEditValue?.({
162
+ select,
163
+ context: blockContext,
164
+ args: relatedBinding.args
165
+ });
166
+ const _bindingsPlaceholder = _disableBoundBlock ? relatedBinding?.args?.key || blockBindingsSource?.label : sprintf( /* translators: %s: source label or key */
167
+ __('Add %s'), relatedBinding?.args?.key || blockBindingsSource?.label);
168
+ return {
169
+ disableBoundBlock: _disableBoundBlock,
170
+ bindingsPlaceholder: (!adjustedValue || adjustedValue.length === 0) && _bindingsPlaceholder
171
+ };
172
+ }, [blockBindings, identifier, blockName, blockContext, adjustedValue]);
173
+ const shouldDisableEditing = readOnly || disableBoundBlock;
176
174
  const {
177
175
  getSelectionStart,
178
176
  getSelectionEnd,
@@ -263,7 +261,7 @@ export function RichTextWrapper({
263
261
  selectionStart,
264
262
  selectionEnd,
265
263
  onSelectionChange,
266
- placeholder,
264
+ placeholder: bindingsPlaceholder || placeholder,
267
265
  __unstableIsSelected: isSelected,
268
266
  __unstableDisableFormats: disableFormats,
269
267
  preserveWhiteSpace,
@@ -285,7 +283,17 @@ export function RichTextWrapper({
285
283
  const keyboardShortcuts = useRef(new Set());
286
284
  const inputEvents = useRef(new Set());
287
285
  function onFocus() {
288
- anchorRef.current?.focus();
286
+ let element = anchorRef.current;
287
+ if (!element) {
288
+ return;
289
+ }
290
+
291
+ // Writing flow might be editable, so we should make sure focus goes to
292
+ // the root editable element.
293
+ while (element.parentElement?.isContentEditable) {
294
+ element = element.parentElement;
295
+ }
296
+ element.focus();
289
297
  }
290
298
  const registry = useRegistry();
291
299
  const TagName = tagName;
@@ -317,9 +325,9 @@ export function RichTextWrapper({
317
325
  , {
318
326
  role: "textbox",
319
327
  "aria-multiline": !disableLineBreaks,
320
- "aria-label": placeholder,
321
328
  "aria-readonly": shouldDisableEditing,
322
329
  ...props,
330
+ "aria-label": bindingsPlaceholder || props['aria-label'] || placeholder,
323
331
  ...autocompleteProps,
324
332
  ref: useMergeRefs([
325
333
  // Rich text ref must be first because its focus listener
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useRef","useCallback","forwardRef","createContext","useContext","useDispatch","useRegistry","useSelect","useMergeRefs","useInstanceId","__unstableUseRichText","useRichText","removeFormat","Popover","getBlockType","store","blocksStore","deprecated","useBlockEditorAutocompleteProps","useBlockEditContext","blockBindingsKey","isPreviewModeKey","FormatToolbarContainer","blockEditorStore","useMarkPersistent","useFormatTypes","useEventListeners","FormatEdit","getAllowedFormats","Content","valueToHTMLString","withDeprecations","unlock","canBindBlock","BlockContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","keyboardShortcutContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","since","alternative","instanceId","anchorRef","context","clientId","isBlockSelected","name","blockName","blockBindings","blockContext","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","disableBoundBlocks","_disableBoundBlocks","blockTypeAttributes","attributes","getBlockBindingsSource","attribute","binding","Object","entries","source","blockBindingsSource","canUserEditValue","args","shouldDisableEditing","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","length","onSelectionChange","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","registry","TagName","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","PrivateRichText","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","Tag","contentProps","dangerouslySetInnerHTML","__html","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst disableBoundBlocks = useSelect(\n\t\t( select ) => {\n\t\t\t// Disable Rich Text editing if block bindings specify that.\n\t\t\tlet _disableBoundBlocks = false;\n\t\t\tif ( blockBindings && canBindBlock( blockName ) ) {\n\t\t\t\tconst blockTypeAttributes =\n\t\t\t\t\tgetBlockType( blockName ).attributes;\n\t\t\t\tconst { getBlockBindingsSource } = unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t);\n\t\t\t\tfor ( const [ attribute, binding ] of Object.entries(\n\t\t\t\t\tblockBindings\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockTypeAttributes?.[ attribute ]?.source !==\n\t\t\t\t\t\t'rich-text'\n\t\t\t\t\t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the source is not defined, or if its value of `canUserEditValue` is `false`, disable it.\n\t\t\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\t\t\tbinding.source\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\t\t\targs: binding.args,\n\t\t\t\t\t\t} )\n\t\t\t\t\t) {\n\t\t\t\t\t\t_disableBoundBlocks = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _disableBoundBlocks;\n\t\t},\n\t\t[ blockBindings, blockName ]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlocks;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst registry = useRegistry();\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useRef","useCallback","forwardRef","createContext","useContext","useDispatch","useRegistry","useSelect","useMergeRefs","useInstanceId","__unstableUseRichText","useRichText","removeFormat","Popover","store","blocksStore","deprecated","__","sprintf","useBlockEditorAutocompleteProps","useBlockEditContext","blockBindingsKey","isPreviewModeKey","FormatToolbarContainer","blockEditorStore","useMarkPersistent","useFormatTypes","useEventListeners","FormatEdit","getAllowedFormats","Content","valueToHTMLString","withDeprecations","unlock","canBindBlock","BlockContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","keyboardShortcutContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","since","alternative","instanceId","anchorRef","context","clientId","isBlockSelected","name","blockName","blockBindings","blockContext","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","disableBoundBlock","bindingsPlaceholder","relatedBinding","getBlockBindingsSource","blockBindingsSource","source","_disableBoundBlock","canUserEditValue","args","_bindingsPlaceholder","key","label","length","shouldDisableEditing","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","onSelectionChange","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","element","current","parentElement","isContentEditable","focus","registry","TagName","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","PrivateRichText","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","Tag","contentProps","dangerouslySetInnerHTML","__html","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst { disableBoundBlock, bindingsPlaceholder } = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! blockBindings?.[ identifier ] ||\n\t\t\t\t! canBindBlock( blockName )\n\t\t\t) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst relatedBinding = blockBindings[ identifier ];\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\trelatedBinding.source\n\t\t\t);\n\n\t\t\tconst _disableBoundBlock =\n\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\tselect,\n\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\targs: relatedBinding.args,\n\t\t\t\t} );\n\n\t\t\tconst _bindingsPlaceholder = _disableBoundBlock\n\t\t\t\t? relatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: source label or key */\n\t\t\t\t\t\t__( 'Add %s' ),\n\t\t\t\t\t\trelatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t );\n\n\t\t\treturn {\n\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\tbindingsPlaceholder:\n\t\t\t\t\t( ! adjustedValue || adjustedValue.length === 0 ) &&\n\t\t\t\t\t_bindingsPlaceholder,\n\t\t\t};\n\t\t},\n\t\t[ blockBindings, identifier, blockName, blockContext, adjustedValue ]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlock;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder: bindingsPlaceholder || placeholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tlet element = anchorRef.current;\n\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Writing flow might be editable, so we should make sure focus goes to\n\t\t// the root editable element.\n\t\twhile ( element.parentElement?.isContentEditable ) {\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\telement.focus();\n\t}\n\n\tconst registry = useRegistry();\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\taria-label={\n\t\t\t\t\tbindingsPlaceholder || props[ 'aria-label' ] || placeholder\n\t\t\t\t}\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ export function useMarkPersistent({
12
12
  html,
13
13
  value
14
14
  }) {
15
- const previousText = useRef();
15
+ const previousTextRef = useRef();
16
16
  const hasActiveFormats = !!value.activeFormats?.length;
17
17
  const {
18
18
  __unstableMarkLastChangeAsPersistent
@@ -21,18 +21,18 @@ export function useMarkPersistent({
21
21
  // Must be set synchronously to make sure it applies to the last change.
22
22
  useLayoutEffect(() => {
23
23
  // Ignore mount.
24
- if (!previousText.current) {
25
- previousText.current = value.text;
24
+ if (!previousTextRef.current) {
25
+ previousTextRef.current = value.text;
26
26
  return;
27
27
  }
28
28
 
29
29
  // Text input, so don't create an undo level for every character.
30
30
  // Create an undo level after 1 second of no input.
31
- if (previousText.current !== value.text) {
31
+ if (previousTextRef.current !== value.text) {
32
32
  const timeout = window.setTimeout(() => {
33
33
  __unstableMarkLastChangeAsPersistent();
34
34
  }, 1000);
35
- previousText.current = value.text;
35
+ previousTextRef.current = value.text;
36
36
  return () => {
37
37
  window.clearTimeout(timeout);
38
38
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useLayoutEffect","useRef","useDispatch","store","blockEditorStore","useMarkPersistent","html","value","previousText","hasActiveFormats","activeFormats","length","__unstableMarkLastChangeAsPersistent","current","text","timeout","window","setTimeout","clearTimeout"],"sources":["@wordpress/block-editor/src/components/rich-text/use-mark-persistent.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useMarkPersistent( { html, value } ) {\n\tconst previousText = useRef();\n\tconst hasActiveFormats = !! value.activeFormats?.length;\n\tconst { __unstableMarkLastChangeAsPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Must be set synchronously to make sure it applies to the last change.\n\tuseLayoutEffect( () => {\n\t\t// Ignore mount.\n\t\tif ( ! previousText.current ) {\n\t\t\tpreviousText.current = value.text;\n\t\t\treturn;\n\t\t}\n\n\t\t// Text input, so don't create an undo level for every character.\n\t\t// Create an undo level after 1 second of no input.\n\t\tif ( previousText.current !== value.text ) {\n\t\t\tconst timeout = window.setTimeout( () => {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}, 1000 );\n\t\t\tpreviousText.current = value.text;\n\t\t\treturn () => {\n\t\t\t\twindow.clearTimeout( timeout );\n\t\t\t};\n\t\t}\n\n\t\t__unstableMarkLastChangeAsPersistent();\n\t}, [ html, hasActiveFormats ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,EAAEC,MAAM,QAAQ,oBAAoB;AAC5D,SAASC,WAAW,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,SAASC,iBAAiBA,CAAE;EAAEC,IAAI;EAAEC;AAAM,CAAC,EAAG;EACpD,MAAMC,YAAY,GAAGP,MAAM,CAAC,CAAC;EAC7B,MAAMQ,gBAAgB,GAAG,CAAC,CAAEF,KAAK,CAACG,aAAa,EAAEC,MAAM;EACvD,MAAM;IAAEC;EAAqC,CAAC,GAC7CV,WAAW,CAAEE,gBAAiB,CAAC;;EAEhC;EACAJ,eAAe,CAAE,MAAM;IACtB;IACA,IAAK,CAAEQ,YAAY,CAACK,OAAO,EAAG;MAC7BL,YAAY,CAACK,OAAO,GAAGN,KAAK,CAACO,IAAI;MACjC;IACD;;IAEA;IACA;IACA,IAAKN,YAAY,CAACK,OAAO,KAAKN,KAAK,CAACO,IAAI,EAAG;MAC1C,MAAMC,OAAO,GAAGC,MAAM,CAACC,UAAU,CAAE,MAAM;QACxCL,oCAAoC,CAAC,CAAC;MACvC,CAAC,EAAE,IAAK,CAAC;MACTJ,YAAY,CAACK,OAAO,GAAGN,KAAK,CAACO,IAAI;MACjC,OAAO,MAAM;QACZE,MAAM,CAACE,YAAY,CAAEH,OAAQ,CAAC;MAC/B,CAAC;IACF;IAEAH,oCAAoC,CAAC,CAAC;EACvC,CAAC,EAAE,CAAEN,IAAI,EAAEG,gBAAgB,CAAG,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["useLayoutEffect","useRef","useDispatch","store","blockEditorStore","useMarkPersistent","html","value","previousTextRef","hasActiveFormats","activeFormats","length","__unstableMarkLastChangeAsPersistent","current","text","timeout","window","setTimeout","clearTimeout"],"sources":["@wordpress/block-editor/src/components/rich-text/use-mark-persistent.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useMarkPersistent( { html, value } ) {\n\tconst previousTextRef = useRef();\n\tconst hasActiveFormats = !! value.activeFormats?.length;\n\tconst { __unstableMarkLastChangeAsPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Must be set synchronously to make sure it applies to the last change.\n\tuseLayoutEffect( () => {\n\t\t// Ignore mount.\n\t\tif ( ! previousTextRef.current ) {\n\t\t\tpreviousTextRef.current = value.text;\n\t\t\treturn;\n\t\t}\n\n\t\t// Text input, so don't create an undo level for every character.\n\t\t// Create an undo level after 1 second of no input.\n\t\tif ( previousTextRef.current !== value.text ) {\n\t\t\tconst timeout = window.setTimeout( () => {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}, 1000 );\n\t\t\tpreviousTextRef.current = value.text;\n\t\t\treturn () => {\n\t\t\t\twindow.clearTimeout( timeout );\n\t\t\t};\n\t\t}\n\n\t\t__unstableMarkLastChangeAsPersistent();\n\t}, [ html, hasActiveFormats ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,EAAEC,MAAM,QAAQ,oBAAoB;AAC5D,SAASC,WAAW,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,SAASC,iBAAiBA,CAAE;EAAEC,IAAI;EAAEC;AAAM,CAAC,EAAG;EACpD,MAAMC,eAAe,GAAGP,MAAM,CAAC,CAAC;EAChC,MAAMQ,gBAAgB,GAAG,CAAC,CAAEF,KAAK,CAACG,aAAa,EAAEC,MAAM;EACvD,MAAM;IAAEC;EAAqC,CAAC,GAC7CV,WAAW,CAAEE,gBAAiB,CAAC;;EAEhC;EACAJ,eAAe,CAAE,MAAM;IACtB;IACA,IAAK,CAAEQ,eAAe,CAACK,OAAO,EAAG;MAChCL,eAAe,CAACK,OAAO,GAAGN,KAAK,CAACO,IAAI;MACpC;IACD;;IAEA;IACA;IACA,IAAKN,eAAe,CAACK,OAAO,KAAKN,KAAK,CAACO,IAAI,EAAG;MAC7C,MAAMC,OAAO,GAAGC,MAAM,CAACC,UAAU,CAAE,MAAM;QACxCL,oCAAoC,CAAC,CAAC;MACvC,CAAC,EAAE,IAAK,CAAC;MACTJ,eAAe,CAACK,OAAO,GAAGN,KAAK,CAACO,IAAI;MACpC,OAAO,MAAM;QACZE,MAAM,CAACE,YAAY,CAAEH,OAAQ,CAAC;MAC/B,CAAC;IACF;IAEAH,oCAAoC,CAAC,CAAC;EACvC,CAAC,EAAE,CAAEN,IAAI,EAAEG,gBAAgB,CAAG,CAAC;AAChC","ignoreList":[]}
@@ -23,7 +23,10 @@ export default function SkipToSelectedBlock() {
23
23
  const onClick = () => {
24
24
  ref.current?.focus();
25
25
  };
26
- return selectedBlockClientId ? /*#__PURE__*/_jsx(Button, {
26
+ return selectedBlockClientId ? /*#__PURE__*/_jsx(Button
27
+ // TODO: Switch to `true` (40px size) if possible
28
+ , {
29
+ __next40pxDefaultSize: false,
27
30
  variant: "secondary",
28
31
  className: "block-editor-skip-to-selected-block",
29
32
  onClick: onClick,
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","__","Button","useRef","store","blockEditorStore","useBlockElementRef","jsx","_jsx","SkipToSelectedBlock","selectedBlockClientId","select","getBlockSelectionStart","ref","onClick","current","focus","variant","className","children"],"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockElementRef } from '../block-list/use-block-props/use-block-refs';\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/skip-to-selected-block/README.md\n */\nexport default function SkipToSelectedBlock() {\n\tconst selectedBlockClientId = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockSelectionStart(),\n\t\t[]\n\t);\n\tconst ref = useRef();\n\tuseBlockElementRef( selectedBlockClientId, ref );\n\tconst onClick = () => {\n\t\tref.current?.focus();\n\t};\n\n\treturn selectedBlockClientId ? (\n\t\t<Button\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName=\"block-editor-skip-to-selected-block\"\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ __( 'Skip to the selected block' ) }\n\t\t</Button>\n\t) : null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,kBAAkB,QAAQ,8CAA8C;;AAEjF;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,eAAe,SAASC,mBAAmBA,CAAA,EAAG;EAC7C,MAAMC,qBAAqB,GAAGV,SAAS,CACpCW,MAAM,IAAMA,MAAM,CAAEN,gBAAiB,CAAC,CAACO,sBAAsB,CAAC,CAAC,EACjE,EACD,CAAC;EACD,MAAMC,GAAG,GAAGV,MAAM,CAAC,CAAC;EACpBG,kBAAkB,CAAEI,qBAAqB,EAAEG,GAAI,CAAC;EAChD,MAAMC,OAAO,GAAGA,CAAA,KAAM;IACrBD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,OAAON,qBAAqB,gBAC3BF,IAAA,CAACN,MAAM;IACNe,OAAO,EAAC,WAAW;IACnBC,SAAS,EAAC,qCAAqC;IAC/CJ,OAAO,EAAGA,OAAS;IAAAK,QAAA,EAEjBlB,EAAE,CAAE,4BAA6B;EAAC,CAC7B,CAAC,GACN,IAAI;AACT","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","__","Button","useRef","store","blockEditorStore","useBlockElementRef","jsx","_jsx","SkipToSelectedBlock","selectedBlockClientId","select","getBlockSelectionStart","ref","onClick","current","focus","__next40pxDefaultSize","variant","className","children"],"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockElementRef } from '../block-list/use-block-props/use-block-refs';\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/skip-to-selected-block/README.md\n */\nexport default function SkipToSelectedBlock() {\n\tconst selectedBlockClientId = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockSelectionStart(),\n\t\t[]\n\t);\n\tconst ref = useRef();\n\tuseBlockElementRef( selectedBlockClientId, ref );\n\tconst onClick = () => {\n\t\tref.current?.focus();\n\t};\n\n\treturn selectedBlockClientId ? (\n\t\t<Button\n\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t__next40pxDefaultSize={ false }\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName=\"block-editor-skip-to-selected-block\"\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ __( 'Skip to the selected block' ) }\n\t\t</Button>\n\t) : null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,kBAAkB,QAAQ,8CAA8C;;AAEjF;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,eAAe,SAASC,mBAAmBA,CAAA,EAAG;EAC7C,MAAMC,qBAAqB,GAAGV,SAAS,CACpCW,MAAM,IAAMA,MAAM,CAAEN,gBAAiB,CAAC,CAACO,sBAAsB,CAAC,CAAC,EACjE,EACD,CAAC;EACD,MAAMC,GAAG,GAAGV,MAAM,CAAC,CAAC;EACpBG,kBAAkB,CAAEI,qBAAqB,EAAEG,GAAI,CAAC;EAChD,MAAMC,OAAO,GAAGA,CAAA,KAAM;IACrBD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,OAAON,qBAAqB,gBAC3BF,IAAA,CAACN;EACA;EAAA;IACAe,qBAAqB,EAAG,KAAO;IAC/BC,OAAO,EAAC,WAAW;IACnBC,SAAS,EAAC,qCAAqC;IAC/CL,OAAO,EAAGA,OAAS;IAAAM,QAAA,EAEjBnB,EAAE,CAAE,4BAA6B;EAAC,CAC7B,CAAC,GACN,IAAI;AACT","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { BaseControl, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
5
5
  import { useState } from '@wordpress/element';
6
- import { __, _x, sprintf } from '@wordpress/i18n';
6
+ import { __, sprintf } from '@wordpress/i18n';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -11,7 +11,7 @@ import { __, _x, sprintf } from '@wordpress/i18n';
11
11
  import AxialInputControls from './input-controls/axial';
12
12
  import SeparatedInputControls from './input-controls/separated';
13
13
  import SingleInputControl from './input-controls/single';
14
- import SidesDropdown from './sides-dropdown';
14
+ import LinkedButton from './linked-button';
15
15
  import useSpacingSizes from './hooks/use-spacing-sizes';
16
16
  import { ALL_SIDES, DEFAULT_VALUES, LABELS, VIEWS, getInitialView } from './utils';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -33,6 +33,9 @@ export default function SpacingSizesControl({
33
33
  const hasOneSide = sides?.length === 1;
34
34
  const hasOnlyAxialSides = sides?.includes('horizontal') && sides?.includes('vertical') && sides?.length === 2;
35
35
  const [view, setView] = useState(getInitialView(inputValues, sides));
36
+ const toggleLinked = () => {
37
+ setView(view === VIEWS.axial ? VIEWS.custom : VIEWS.axial);
38
+ };
36
39
  const handleOnChange = nextValue => {
37
40
  const newValues = {
38
41
  ...values,
@@ -73,9 +76,6 @@ export default function SpacingSizesControl({
73
76
  const label = sprintf(
74
77
  // translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).
75
78
  __('%1$s %2$s'), labelProp, sideLabel).trim();
76
- const dropdownLabelText = sprintf(
77
- // translators: %s: The current spacing property e.g. "Padding", "Margin".
78
- _x('%s options', 'Button label to reveal side configuration options'), labelProp);
79
79
  return /*#__PURE__*/_jsxs("fieldset", {
80
80
  className: "spacing-sizes-control",
81
81
  children: [/*#__PURE__*/_jsxs(HStack, {
@@ -84,11 +84,10 @@ export default function SpacingSizesControl({
84
84
  as: "legend",
85
85
  className: "spacing-sizes-control__label",
86
86
  children: label
87
- }), !hasOneSide && !hasOnlyAxialSides && /*#__PURE__*/_jsx(SidesDropdown, {
88
- label: dropdownLabelText,
89
- onChange: setView,
90
- sides: sides,
91
- value: view
87
+ }), !hasOneSide && !hasOnlyAxialSides && /*#__PURE__*/_jsx(LinkedButton, {
88
+ label: labelProp,
89
+ onClick: toggleLinked,
90
+ isLinked: view === VIEWS.axial
92
91
  })]
93
92
  }), /*#__PURE__*/_jsx(VStack, {
94
93
  spacing: 0.5,
@@ -1 +1 @@
1
- {"version":3,"names":["BaseControl","__experimentalHStack","HStack","__experimentalVStack","VStack","useState","__","_x","sprintf","AxialInputControls","SeparatedInputControls","SingleInputControl","SidesDropdown","useSpacingSizes","ALL_SIDES","DEFAULT_VALUES","LABELS","VIEWS","getInitialView","jsx","_jsx","jsxs","_jsxs","SpacingSizesControl","inputProps","label","labelProp","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","sides","useSelect","values","spacingSizes","inputValues","hasOneSide","length","hasOnlyAxialSides","includes","view","setView","handleOnChange","nextValue","newValues","inputControlProps","type","renderControls","axial","custom","side","sideLabel","trim","dropdownLabelText","className","children","VisualLabel","as","value","spacing"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AxialInputControls from './input-controls/axial';\nimport SeparatedInputControls from './input-controls/separated';\nimport SingleInputControl from './input-controls/single';\nimport SidesDropdown from './sides-dropdown';\nimport useSpacingSizes from './hooks/use-spacing-sizes';\nimport {\n\tALL_SIDES,\n\tDEFAULT_VALUES,\n\tLABELS,\n\tVIEWS,\n\tgetInitialView,\n} from './utils';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tlabel: labelProp,\n\tminimumCustomValue = 0,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tsides = ALL_SIDES,\n\tuseSelect,\n\tvalues,\n} ) {\n\tconst spacingSizes = useSpacingSizes();\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasOneSide = sides?.length === 1;\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tconst [ view, setView ] = useState( getInitialView( inputValues, sides ) );\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tminimumCustomValue,\n\t\tonChange: handleOnChange,\n\t\tonMouseOut,\n\t\tonMouseOver,\n\t\tsides,\n\t\tspacingSizes,\n\t\ttype: labelProp,\n\t\tuseSelect,\n\t\tvalues: inputValues,\n\t};\n\n\tconst renderControls = () => {\n\t\tif ( view === VIEWS.axial ) {\n\t\t\treturn <AxialInputControls { ...inputControlProps } />;\n\t\t}\n\t\tif ( view === VIEWS.custom ) {\n\t\t\treturn <SeparatedInputControls { ...inputControlProps } />;\n\t\t}\n\t\treturn (\n\t\t\t<SingleInputControl\n\t\t\t\tside={ view }\n\t\t\t\t{ ...inputControlProps }\n\t\t\t\tshowSideInLabel={ showSideInLabel }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( view ) && showSideInLabel ? LABELS[ view ] : '';\n\n\tconst label = sprintf(\n\t\t// translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).\n\t\t__( '%1$s %2$s' ),\n\t\tlabelProp,\n\t\tsideLabel\n\t).trim();\n\n\tconst dropdownLabelText = sprintf(\n\t\t// translators: %s: The current spacing property e.g. \"Padding\", \"Margin\".\n\t\t_x( '%s options', 'Button label to reveal side configuration options' ),\n\t\tlabelProp\n\t);\n\n\treturn (\n\t\t<fieldset className=\"spacing-sizes-control\">\n\t\t\t<HStack className=\"spacing-sizes-control__header\">\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"spacing-sizes-control__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t{ ! hasOneSide && ! hasOnlyAxialSides && (\n\t\t\t\t\t<SidesDropdown\n\t\t\t\t\t\tlabel={ dropdownLabelText }\n\t\t\t\t\t\tonChange={ setView }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tvalue={ view }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 0.5 }>{ renderControls() }</VStack>\n\t\t</fieldset>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseControl","__experimentalHStack","HStack","__experimentalVStack","VStack","useState","__","sprintf","AxialInputControls","SeparatedInputControls","SingleInputControl","LinkedButton","useSpacingSizes","ALL_SIDES","DEFAULT_VALUES","LABELS","VIEWS","getInitialView","jsx","_jsx","jsxs","_jsxs","SpacingSizesControl","inputProps","label","labelProp","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","sides","useSelect","values","spacingSizes","inputValues","hasOneSide","length","hasOnlyAxialSides","includes","view","setView","toggleLinked","axial","custom","handleOnChange","nextValue","newValues","inputControlProps","type","renderControls","side","sideLabel","trim","className","children","VisualLabel","as","onClick","isLinked","spacing"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AxialInputControls from './input-controls/axial';\nimport SeparatedInputControls from './input-controls/separated';\nimport SingleInputControl from './input-controls/single';\nimport LinkedButton from './linked-button';\nimport useSpacingSizes from './hooks/use-spacing-sizes';\nimport {\n\tALL_SIDES,\n\tDEFAULT_VALUES,\n\tLABELS,\n\tVIEWS,\n\tgetInitialView,\n} from './utils';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tlabel: labelProp,\n\tminimumCustomValue = 0,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tsides = ALL_SIDES,\n\tuseSelect,\n\tvalues,\n} ) {\n\tconst spacingSizes = useSpacingSizes();\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasOneSide = sides?.length === 1;\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tconst [ view, setView ] = useState( getInitialView( inputValues, sides ) );\n\n\tconst toggleLinked = () => {\n\t\tsetView( view === VIEWS.axial ? VIEWS.custom : VIEWS.axial );\n\t};\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tminimumCustomValue,\n\t\tonChange: handleOnChange,\n\t\tonMouseOut,\n\t\tonMouseOver,\n\t\tsides,\n\t\tspacingSizes,\n\t\ttype: labelProp,\n\t\tuseSelect,\n\t\tvalues: inputValues,\n\t};\n\n\tconst renderControls = () => {\n\t\tif ( view === VIEWS.axial ) {\n\t\t\treturn <AxialInputControls { ...inputControlProps } />;\n\t\t}\n\t\tif ( view === VIEWS.custom ) {\n\t\t\treturn <SeparatedInputControls { ...inputControlProps } />;\n\t\t}\n\t\treturn (\n\t\t\t<SingleInputControl\n\t\t\t\tside={ view }\n\t\t\t\t{ ...inputControlProps }\n\t\t\t\tshowSideInLabel={ showSideInLabel }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( view ) && showSideInLabel ? LABELS[ view ] : '';\n\n\tconst label = sprintf(\n\t\t// translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).\n\t\t__( '%1$s %2$s' ),\n\t\tlabelProp,\n\t\tsideLabel\n\t).trim();\n\n\treturn (\n\t\t<fieldset className=\"spacing-sizes-control\">\n\t\t\t<HStack className=\"spacing-sizes-control__header\">\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"spacing-sizes-control__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t{ ! hasOneSide && ! hasOnlyAxialSides && (\n\t\t\t\t\t<LinkedButton\n\t\t\t\t\t\tlabel={ labelProp }\n\t\t\t\t\t\tonClick={ toggleLinked }\n\t\t\t\t\t\tisLinked={ view === VIEWS.axial }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 0.5 }>{ renderControls() }</VStack>\n\t\t</fieldset>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Button, Tooltip } from '@wordpress/components';
5
+ import { link, linkOff } from '@wordpress/icons';
6
+ import { __, sprintf } from '@wordpress/i18n';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export default function LinkedButton({
9
+ isLinked,
10
+ ...props
11
+ }) {
12
+ const label = isLinked ? sprintf(
13
+ // translators: 1. Type of spacing being modified (padding, margin, etc).
14
+ __('Unlink %1$s'), props.label.toLowerCase()).trim() : sprintf(
15
+ // translators: 1. Type of spacing being modified (padding, margin, etc).
16
+ __('Link %1$s'), props.label.toLowerCase()).trim();
17
+ return /*#__PURE__*/_jsx(Tooltip, {
18
+ text: label,
19
+ children: /*#__PURE__*/_jsx(Button, {
20
+ ...props,
21
+ size: "small",
22
+ icon: isLinked ? link : linkOff,
23
+ iconSize: 24,
24
+ "aria-label": label
25
+ })
26
+ });
27
+ }
28
+ //# sourceMappingURL=linked-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Button","Tooltip","link","linkOff","__","sprintf","jsx","_jsx","LinkedButton","isLinked","props","label","toLowerCase","trim","text","children","size","icon","iconSize"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Tooltip } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked\n\t\t? sprintf(\n\t\t\t\t// translators: 1. Type of spacing being modified (padding, margin, etc).\n\t\t\t\t__( 'Unlink %1$s' ),\n\t\t\t\tprops.label.toLowerCase()\n\t\t ).trim()\n\t\t: sprintf(\n\t\t\t\t// translators: 1. Type of spacing being modified (padding, margin, etc).\n\t\t\t\t__( 'Link %1$s' ),\n\t\t\t\tprops.label.toLowerCase()\n\t\t ).trim();\n\n\treturn (\n\t\t<Tooltip text={ label }>\n\t\t\t<Button\n\t\t\t\t{ ...props }\n\t\t\t\tsize=\"small\"\n\t\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\t\ticonSize={ 24 }\n\t\t\t\taria-label={ label }\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,EAAEC,OAAO,QAAQ,uBAAuB;AACvD,SAASC,IAAI,EAAEC,OAAO,QAAQ,kBAAkB;AAChD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE9C,eAAe,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GACnBJ,OAAO;EACP;EACAD,EAAE,CAAE,aAAc,CAAC,EACnBM,KAAK,CAACC,KAAK,CAACC,WAAW,CAAC,CACxB,CAAC,CAACC,IAAI,CAAC,CAAC,GACRR,OAAO;EACP;EACAD,EAAE,CAAE,WAAY,CAAC,EACjBM,KAAK,CAACC,KAAK,CAACC,WAAW,CAAC,CACxB,CAAC,CAACC,IAAI,CAAC,CAAC;EAEX,oBACCN,IAAA,CAACN,OAAO;IAACa,IAAI,EAAGH,KAAO;IAAAI,QAAA,eACtBR,IAAA,CAACP,MAAM;MAAA,GACDU,KAAK;MACVM,IAAI,EAAC,OAAO;MACZC,IAAI,EAAGR,QAAQ,GAAGP,IAAI,GAAGC,OAAS;MAClCe,QAAQ,EAAG,EAAI;MACf,cAAaP;IAAO,CACpB;EAAC,CACM,CAAC;AAEZ","ignoreList":[]}
@@ -324,25 +324,14 @@ export function getInitialView(values = {}, sides) {
324
324
  // - Has no values and the supported sides are balanced
325
325
  const hasMatchingAxialValues = top === bottom && left === right && (!!top || !!left);
326
326
  const hasNoValuesAndBalancedSides = !sideValues.length && hasBalancedSidesSupport(sides);
327
- if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
328
- return VIEWS.axial;
329
- }
330
-
331
- // Single side.
332
- // - Ensure the side returned is the first side that has a value.
333
- if (sideValues.length === 1) {
334
- let side;
335
- Object.entries(values).some(([key, value]) => {
336
- side = key;
337
- return value !== undefined;
338
- });
339
- return side;
340
- }
341
327
 
342
328
  // Only single side supported and no value defined.
343
- if (sides?.length === 1 && !sideValues.length) {
329
+ if (sides?.length === 1) {
344
330
  return sides[0];
345
331
  }
332
+ if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
333
+ return VIEWS.axial;
334
+ }
346
335
 
347
336
  // Default to the Custom (separated sides) view.
348
337
  return VIEWS.custom;