@wordpress/block-editor 16.0.1-next.v.202607070741.0 → 16.1.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 (679) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +8 -0
  3. package/build/components/alignment-control/ui.cjs +2 -4
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +40 -10
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +5 -3
  8. package/build/components/block-alignment-control/ui.cjs.map +2 -2
  9. package/build/components/block-canvas/index.cjs +6 -1
  10. package/build/components/block-canvas/index.cjs.map +2 -2
  11. package/build/components/block-controls/groups.cjs +3 -1
  12. package/build/components/block-controls/groups.cjs.map +2 -2
  13. package/build/components/block-edit/edit.cjs +10 -18
  14. package/build/components/block-edit/edit.cjs.map +2 -2
  15. package/build/components/block-inspector/index.cjs +73 -46
  16. package/build/components/block-inspector/index.cjs.map +2 -2
  17. package/build/components/block-list/block-html.cjs +4 -1
  18. package/build/components/block-list/block-html.cjs.map +2 -2
  19. package/build/components/block-list/block.cjs +9 -3
  20. package/build/components/block-list/block.cjs.map +3 -3
  21. package/build/components/block-list/index.cjs +1 -3
  22. package/build/components/block-list/index.cjs.map +2 -2
  23. package/build/components/block-list/use-block-props/index.cjs +7 -2
  24. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  25. package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
  26. package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
  27. package/build/components/block-list/use-block-props/use-focus-handler.cjs +11 -4
  28. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  29. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
  30. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
  31. package/build/components/block-parent-selector/index.cjs +2 -2
  32. package/build/components/block-parent-selector/index.cjs.map +2 -2
  33. package/build/components/block-toolbar/index.cjs +43 -24
  34. package/build/components/block-toolbar/index.cjs.map +2 -2
  35. package/build/components/block-toolbar/switch-section-style.cjs +4 -2
  36. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  37. package/build/components/block-tools/empty-block-inserter.cjs +2 -7
  38. package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
  39. package/build/components/block-tools/index.cjs +7 -2
  40. package/build/components/block-tools/index.cjs.map +2 -2
  41. package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
  42. package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
  43. package/build/components/block-visibility/modal.cjs +20 -6
  44. package/build/components/block-visibility/modal.cjs.map +2 -2
  45. package/build/components/block-visibility/use-block-visibility.cjs +16 -6
  46. package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
  47. package/build/components/block-visibility/utils.cjs +15 -2
  48. package/build/components/block-visibility/utils.cjs.map +3 -3
  49. package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
  50. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  51. package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
  52. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  53. package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
  54. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  55. package/build/components/border-radius-control/utils.cjs +8 -58
  56. package/build/components/border-radius-control/utils.cjs.map +2 -2
  57. package/build/components/child-layout-control/index.cjs +0 -4
  58. package/build/components/child-layout-control/index.cjs.map +2 -2
  59. package/build/components/colors-gradients/control.cjs +5 -3
  60. package/build/components/colors-gradients/control.cjs.map +2 -2
  61. package/build/components/dimension-control/index.cjs +30 -20
  62. package/build/components/dimension-control/index.cjs.map +3 -3
  63. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
  64. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  65. package/build/components/editor-styles/index.cjs +9 -1
  66. package/build/components/editor-styles/index.cjs.map +2 -2
  67. package/build/components/global-styles/background-panel.cjs +66 -25
  68. package/build/components/global-styles/background-panel.cjs.map +3 -3
  69. package/build/components/global-styles/border-panel.cjs +153 -55
  70. package/build/components/global-styles/border-panel.cjs.map +3 -3
  71. package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
  72. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
  73. package/build/components/global-styles/color-panel.cjs +63 -17
  74. package/build/components/global-styles/color-panel.cjs.map +2 -2
  75. package/build/components/global-styles/dimensions-panel.cjs +242 -64
  76. package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
  77. package/build/components/global-styles/filters-panel.cjs +59 -20
  78. package/build/components/global-styles/filters-panel.cjs.map +3 -3
  79. package/build/components/global-styles/hooks.cjs +4 -1
  80. package/build/components/global-styles/hooks.cjs.map +2 -2
  81. package/build/components/global-styles/inheritance/index.cjs +142 -0
  82. package/build/components/global-styles/inheritance/index.cjs.map +7 -0
  83. package/build/components/global-styles/inherited-value-context.cjs +173 -0
  84. package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
  85. package/build/components/global-styles/shadow-panel-components.cjs +38 -20
  86. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  87. package/build/components/global-styles/state-control-badges.cjs +39 -3
  88. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  89. package/build/components/global-styles/state-control.cjs +1 -1
  90. package/build/components/global-styles/state-control.cjs.map +2 -2
  91. package/build/components/global-styles/typography-panel.cjs +271 -79
  92. package/build/components/global-styles/typography-panel.cjs.map +3 -3
  93. package/build/components/image-size-control/index.cjs +2 -4
  94. package/build/components/image-size-control/index.cjs.map +2 -2
  95. package/build/components/inserter/media-tab/hooks.cjs +33 -6
  96. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  97. package/build/components/inserter/media-tab/media-panel.cjs +78 -16
  98. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  99. package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
  100. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
  101. package/build/components/keyboard-shortcuts/index.cjs +19 -11
  102. package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
  103. package/build/components/line-height-control/index.cjs +1 -2
  104. package/build/components/line-height-control/index.cjs.map +2 -2
  105. package/build/components/link-control/index.cjs +3 -1
  106. package/build/components/link-control/index.cjs.map +2 -2
  107. package/build/components/list-view/block.cjs +13 -4
  108. package/build/components/list-view/block.cjs.map +2 -2
  109. package/build/components/media-placeholder/index.cjs +0 -1
  110. package/build/components/media-placeholder/index.cjs.map +2 -2
  111. package/build/components/preset-input-control/index.cjs +2 -1
  112. package/build/components/preset-input-control/index.cjs.map +2 -2
  113. package/build/components/provider/block-refs-provider.cjs +8 -2
  114. package/build/components/provider/block-refs-provider.cjs.map +2 -2
  115. package/build/components/provider/index.cjs +1 -1
  116. package/build/components/provider/index.cjs.map +2 -2
  117. package/build/components/provider/use-block-sync.cjs +18 -6
  118. package/build/components/provider/use-block-sync.cjs.map +2 -2
  119. package/build/components/provider/use-media-upload-settings.cjs +3 -1
  120. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  121. package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
  122. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  123. package/build/components/rich-text/event-listeners/delete.cjs +2 -3
  124. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  125. package/build/components/rich-text/event-listeners/enter.cjs +3 -2
  126. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  127. package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
  128. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  129. package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
  130. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  131. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
  132. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  133. package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
  134. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  135. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
  136. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  137. package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
  138. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  139. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
  140. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  141. package/build/components/rich-text/index.cjs +76 -17
  142. package/build/components/rich-text/index.cjs.map +2 -2
  143. package/build/components/spacing-sizes-control/utils.cjs +6 -19
  144. package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
  145. package/build/components/text-indent-control/index.cjs +8 -2
  146. package/build/components/text-indent-control/index.cjs.map +2 -2
  147. package/build/components/typewriter/index.cjs +129 -136
  148. package/build/components/typewriter/index.cjs.map +3 -3
  149. package/build/components/url-input/index.cjs +303 -344
  150. package/build/components/url-input/index.cjs.map +3 -3
  151. package/build/components/use-block-commands/index.cjs +21 -17
  152. package/build/components/use-block-commands/index.cjs.map +2 -2
  153. package/build/components/use-on-block-drop/index.cjs +1 -1
  154. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  155. package/build/components/writing-flow/index.cjs +14 -1
  156. package/build/components/writing-flow/index.cjs.map +3 -3
  157. package/build/components/writing-flow/use-arrow-nav.cjs +42 -6
  158. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  159. package/build/components/writing-flow/use-click-selection.cjs +29 -3
  160. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  161. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  162. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  163. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  164. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  165. package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
  166. package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
  167. package/build/components/writing-flow/use-editable-root.cjs +75 -0
  168. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  169. package/build/components/writing-flow/use-home-end.cjs +64 -0
  170. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  171. package/build/components/writing-flow/use-input.cjs +15 -5
  172. package/build/components/writing-flow/use-input.cjs.map +2 -2
  173. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  174. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  175. package/build/components/writing-flow/use-select-all.cjs +14 -2
  176. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  177. package/build/components/writing-flow/use-selection-observer.cjs +132 -22
  178. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  179. package/build/components/writing-flow/utils.cjs +28 -2
  180. package/build/components/writing-flow/utils.cjs.map +2 -2
  181. package/build/hooks/background.cjs +14 -10
  182. package/build/hooks/background.cjs.map +2 -2
  183. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  184. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  185. package/build/hooks/block-style-variation.cjs +4 -45
  186. package/build/hooks/block-style-variation.cjs.map +3 -3
  187. package/build/hooks/border.cjs +19 -4
  188. package/build/hooks/border.cjs.map +2 -2
  189. package/build/hooks/custom-css.cjs +6 -2
  190. package/build/hooks/custom-css.cjs.map +2 -2
  191. package/build/hooks/dimensions.cjs +15 -4
  192. package/build/hooks/dimensions.cjs.map +2 -2
  193. package/build/hooks/duotone.cjs +26 -14
  194. package/build/hooks/duotone.cjs.map +3 -3
  195. package/build/hooks/elements.cjs +15 -5
  196. package/build/hooks/elements.cjs.map +2 -2
  197. package/build/hooks/grid-visualizer.cjs +5 -3
  198. package/build/hooks/grid-visualizer.cjs.map +2 -2
  199. package/build/hooks/layout-child.cjs +22 -12
  200. package/build/hooks/layout-child.cjs.map +3 -3
  201. package/build/hooks/layout.cjs +28 -13
  202. package/build/hooks/layout.cjs.map +3 -3
  203. package/build/hooks/line-height.cjs +1 -2
  204. package/build/hooks/line-height.cjs.map +2 -2
  205. package/build/hooks/states.cjs +27 -7
  206. package/build/hooks/states.cjs.map +3 -3
  207. package/build/hooks/style.cjs +31 -9
  208. package/build/hooks/style.cjs.map +3 -3
  209. package/build/hooks/text-align.cjs +36 -6
  210. package/build/hooks/text-align.cjs.map +3 -3
  211. package/build/hooks/typography.cjs +14 -5
  212. package/build/hooks/typography.cjs.map +2 -2
  213. package/build/layouts/constrained.cjs +14 -6
  214. package/build/layouts/constrained.cjs.map +2 -2
  215. package/build/layouts/flex.cjs +27 -19
  216. package/build/layouts/flex.cjs.map +2 -2
  217. package/build/layouts/grid.cjs +0 -2
  218. package/build/layouts/grid.cjs.map +2 -2
  219. package/build/private-apis.cjs +9 -5
  220. package/build/private-apis.cjs.map +3 -3
  221. package/build/store/actions.cjs +11 -6
  222. package/build/store/actions.cjs.map +2 -2
  223. package/build/store/private-selectors.cjs +41 -3
  224. package/build/store/private-selectors.cjs.map +3 -3
  225. package/build/store/reducer.cjs +6 -6
  226. package/build/store/reducer.cjs.map +2 -2
  227. package/build/store/selectors.cjs +23 -0
  228. package/build/store/selectors.cjs.map +2 -2
  229. package/build/utils/block-bindings.cjs +29 -0
  230. package/build/utils/block-bindings.cjs.map +2 -2
  231. package/build/utils/dom.cjs +14 -0
  232. package/build/utils/dom.cjs.map +2 -2
  233. package/build/{components/rich-text/input-event.cjs → utils/native-undo.cjs} +29 -24
  234. package/build/utils/native-undo.cjs.map +7 -0
  235. package/build-module/components/alignment-control/ui.mjs +2 -4
  236. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  237. package/build-module/components/background-image-control/index.mjs +43 -10
  238. package/build-module/components/background-image-control/index.mjs.map +2 -2
  239. package/build-module/components/block-alignment-control/ui.mjs +5 -3
  240. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  241. package/build-module/components/block-canvas/index.mjs +7 -2
  242. package/build-module/components/block-canvas/index.mjs.map +2 -2
  243. package/build-module/components/block-controls/groups.mjs +3 -1
  244. package/build-module/components/block-controls/groups.mjs.map +2 -2
  245. package/build-module/components/block-edit/edit.mjs +11 -18
  246. package/build-module/components/block-edit/edit.mjs.map +2 -2
  247. package/build-module/components/block-inspector/index.mjs +74 -46
  248. package/build-module/components/block-inspector/index.mjs.map +2 -2
  249. package/build-module/components/block-list/block-html.mjs +4 -1
  250. package/build-module/components/block-list/block-html.mjs.map +2 -2
  251. package/build-module/components/block-list/block.mjs +9 -3
  252. package/build-module/components/block-list/block.mjs.map +3 -3
  253. package/build-module/components/block-list/index.mjs +1 -3
  254. package/build-module/components/block-list/index.mjs.map +2 -2
  255. package/build-module/components/block-list/use-block-props/index.mjs +7 -2
  256. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  257. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  258. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  259. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +11 -4
  260. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  261. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
  262. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
  263. package/build-module/components/block-parent-selector/index.mjs +2 -2
  264. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  265. package/build-module/components/block-toolbar/index.mjs +43 -24
  266. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  267. package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
  268. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  269. package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
  270. package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
  271. package/build-module/components/block-tools/index.mjs +7 -2
  272. package/build-module/components/block-tools/index.mjs.map +2 -2
  273. package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
  274. package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
  275. package/build-module/components/block-visibility/modal.mjs +22 -10
  276. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  277. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  278. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  279. package/build-module/components/block-visibility/utils.mjs +18 -3
  280. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  281. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  282. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  283. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  284. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  285. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  286. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  287. package/build-module/components/border-radius-control/utils.mjs +11 -53
  288. package/build-module/components/border-radius-control/utils.mjs.map +2 -2
  289. package/build-module/components/child-layout-control/index.mjs +0 -4
  290. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  291. package/build-module/components/colors-gradients/control.mjs +5 -3
  292. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  293. package/build-module/components/dimension-control/index.mjs +30 -20
  294. package/build-module/components/dimension-control/index.mjs.map +2 -2
  295. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
  296. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  297. package/build-module/components/editor-styles/index.mjs +9 -1
  298. package/build-module/components/editor-styles/index.mjs.map +2 -2
  299. package/build-module/components/global-styles/background-panel.mjs +71 -29
  300. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  301. package/build-module/components/global-styles/border-panel.mjs +157 -56
  302. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  303. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
  304. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  305. package/build-module/components/global-styles/color-panel.mjs +63 -17
  306. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  307. package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
  308. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  309. package/build-module/components/global-styles/filters-panel.mjs +64 -21
  310. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  311. package/build-module/components/global-styles/hooks.mjs +4 -1
  312. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  313. package/build-module/components/global-styles/inheritance/index.mjs +108 -0
  314. package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
  315. package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
  316. package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
  317. package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
  318. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  319. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  320. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  321. package/build-module/components/global-styles/state-control.mjs +1 -1
  322. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  323. package/build-module/components/global-styles/typography-panel.mjs +276 -80
  324. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  325. package/build-module/components/image-size-control/index.mjs +2 -4
  326. package/build-module/components/image-size-control/index.mjs.map +2 -2
  327. package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
  328. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  329. package/build-module/components/inserter/media-tab/media-panel.mjs +86 -18
  330. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  331. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
  332. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  333. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  334. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  335. package/build-module/components/line-height-control/index.mjs +1 -2
  336. package/build-module/components/line-height-control/index.mjs.map +2 -2
  337. package/build-module/components/link-control/index.mjs +4 -2
  338. package/build-module/components/link-control/index.mjs.map +2 -2
  339. package/build-module/components/list-view/block.mjs +13 -4
  340. package/build-module/components/list-view/block.mjs.map +2 -2
  341. package/build-module/components/media-placeholder/index.mjs +0 -1
  342. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  343. package/build-module/components/preset-input-control/index.mjs +2 -1
  344. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  345. package/build-module/components/provider/block-refs-provider.mjs +8 -2
  346. package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
  347. package/build-module/components/provider/index.mjs +1 -1
  348. package/build-module/components/provider/index.mjs.map +2 -2
  349. package/build-module/components/provider/use-block-sync.mjs +18 -6
  350. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  351. package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
  352. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  353. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  354. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  355. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  356. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  357. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  358. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  359. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  360. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  361. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  362. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  363. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  364. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  365. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  366. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  367. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  368. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  369. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  370. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  371. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  372. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  373. package/build-module/components/rich-text/index.mjs +79 -14
  374. package/build-module/components/rich-text/index.mjs.map +2 -2
  375. package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
  376. package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
  377. package/build-module/components/text-indent-control/index.mjs +8 -2
  378. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  379. package/build-module/components/typewriter/index.mjs +129 -136
  380. package/build-module/components/typewriter/index.mjs.map +2 -2
  381. package/build-module/components/url-input/index.mjs +306 -353
  382. package/build-module/components/url-input/index.mjs.map +2 -2
  383. package/build-module/components/use-block-commands/index.mjs +21 -17
  384. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  385. package/build-module/components/use-on-block-drop/index.mjs +2 -2
  386. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  387. package/build-module/components/writing-flow/index.mjs +14 -1
  388. package/build-module/components/writing-flow/index.mjs.map +2 -2
  389. package/build-module/components/writing-flow/use-arrow-nav.mjs +43 -7
  390. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  391. package/build-module/components/writing-flow/use-click-selection.mjs +29 -3
  392. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  393. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  394. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  395. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  396. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  397. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
  398. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
  399. package/build-module/components/writing-flow/use-editable-root.mjs +54 -0
  400. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  401. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  402. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  403. package/build-module/components/writing-flow/use-input.mjs +15 -5
  404. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  405. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  406. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  407. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  408. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  409. package/build-module/components/writing-flow/use-selection-observer.mjs +134 -21
  410. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  411. package/build-module/components/writing-flow/utils.mjs +26 -1
  412. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  413. package/build-module/hooks/background.mjs +14 -10
  414. package/build-module/hooks/background.mjs.map +2 -2
  415. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  416. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  417. package/build-module/hooks/block-style-variation.mjs +8 -44
  418. package/build-module/hooks/block-style-variation.mjs.map +2 -2
  419. package/build-module/hooks/border.mjs +19 -4
  420. package/build-module/hooks/border.mjs.map +2 -2
  421. package/build-module/hooks/custom-css.mjs +7 -3
  422. package/build-module/hooks/custom-css.mjs.map +2 -2
  423. package/build-module/hooks/dimensions.mjs +15 -4
  424. package/build-module/hooks/dimensions.mjs.map +2 -2
  425. package/build-module/hooks/duotone.mjs +20 -9
  426. package/build-module/hooks/duotone.mjs.map +2 -2
  427. package/build-module/hooks/elements.mjs +15 -5
  428. package/build-module/hooks/elements.mjs.map +2 -2
  429. package/build-module/hooks/grid-visualizer.mjs +5 -3
  430. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  431. package/build-module/hooks/layout-child.mjs +22 -12
  432. package/build-module/hooks/layout-child.mjs.map +2 -2
  433. package/build-module/hooks/layout.mjs +28 -13
  434. package/build-module/hooks/layout.mjs.map +2 -2
  435. package/build-module/hooks/line-height.mjs +1 -2
  436. package/build-module/hooks/line-height.mjs.map +2 -2
  437. package/build-module/hooks/states.mjs +27 -7
  438. package/build-module/hooks/states.mjs.map +2 -2
  439. package/build-module/hooks/style.mjs +40 -11
  440. package/build-module/hooks/style.mjs.map +2 -2
  441. package/build-module/hooks/text-align.mjs +39 -10
  442. package/build-module/hooks/text-align.mjs.map +2 -2
  443. package/build-module/hooks/typography.mjs +14 -5
  444. package/build-module/hooks/typography.mjs.map +2 -2
  445. package/build-module/layouts/constrained.mjs +14 -6
  446. package/build-module/layouts/constrained.mjs.map +2 -2
  447. package/build-module/layouts/flex.mjs +27 -19
  448. package/build-module/layouts/flex.mjs.map +2 -2
  449. package/build-module/layouts/grid.mjs +0 -2
  450. package/build-module/layouts/grid.mjs.map +2 -2
  451. package/build-module/private-apis.mjs +7 -3
  452. package/build-module/private-apis.mjs.map +2 -2
  453. package/build-module/store/actions.mjs +12 -7
  454. package/build-module/store/actions.mjs.map +2 -2
  455. package/build-module/store/private-selectors.mjs +42 -3
  456. package/build-module/store/private-selectors.mjs.map +2 -2
  457. package/build-module/store/reducer.mjs +6 -6
  458. package/build-module/store/reducer.mjs.map +2 -2
  459. package/build-module/store/selectors.mjs +23 -0
  460. package/build-module/store/selectors.mjs.map +2 -2
  461. package/build-module/utils/block-bindings.mjs +28 -0
  462. package/build-module/utils/block-bindings.mjs.map +2 -2
  463. package/build-module/utils/dom.mjs +13 -0
  464. package/build-module/utils/dom.mjs.map +2 -2
  465. package/build-module/utils/native-undo.mjs +29 -0
  466. package/build-module/utils/native-undo.mjs.map +7 -0
  467. package/build-style/content-rtl.css +14 -27
  468. package/build-style/content.css +14 -27
  469. package/build-style/default-editor-styles-rtl.css +1 -1
  470. package/build-style/default-editor-styles.css +1 -1
  471. package/build-style/style-rtl.css +191 -61
  472. package/build-style/style.css +191 -61
  473. package/build-types/components/block-context/index.d.ts +7 -0
  474. package/build-types/components/block-context/index.d.ts.map +1 -1
  475. package/build-types/utils/block-bindings.d.ts +19 -0
  476. package/build-types/utils/block-bindings.d.ts.map +1 -1
  477. package/build-types/utils/dom.d.ts +11 -0
  478. package/build-types/utils/dom.d.ts.map +1 -1
  479. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  480. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  481. package/build-types/utils/pasting.d.ts +1 -1
  482. package/build-types/utils/pasting.d.ts.map +1 -1
  483. package/package.json +43 -44
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
  485. package/src/components/alignment-control/ui.js +2 -4
  486. package/src/components/background-image-control/index.js +74 -37
  487. package/src/components/background-image-control/style.scss +13 -4
  488. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
  489. package/src/components/block-alignment-control/test/index.js +1 -1
  490. package/src/components/block-alignment-control/ui.js +4 -2
  491. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
  492. package/src/components/block-canvas/index.js +9 -2
  493. package/src/components/block-card/style.scss +1 -1
  494. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  495. package/src/components/block-controls/groups.js +2 -0
  496. package/src/components/block-edit/edit.js +13 -31
  497. package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
  498. package/src/components/block-inspector/index.js +60 -31
  499. package/src/components/block-list/block-html.js +5 -0
  500. package/src/components/block-list/block.js +6 -0
  501. package/src/components/block-list/content.scss +1 -11
  502. package/src/components/block-list/index.js +0 -2
  503. package/src/components/block-list/use-block-props/index.js +7 -1
  504. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  505. package/src/components/block-list/use-block-props/use-focus-handler.js +35 -9
  506. package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
  507. package/src/components/block-lock/style.scss +1 -1
  508. package/src/components/block-manager/style.scss +1 -1
  509. package/src/components/block-navigation/style.scss +1 -1
  510. package/src/components/block-parent-selector/index.js +5 -2
  511. package/src/components/block-quick-navigation/style.scss +1 -3
  512. package/src/components/block-styles/style.scss +2 -2
  513. package/src/components/block-toolbar/index.js +41 -18
  514. package/src/components/block-toolbar/switch-section-style.js +5 -2
  515. package/src/components/block-tools/empty-block-inserter.js +3 -7
  516. package/src/components/block-tools/index.js +7 -0
  517. package/src/components/block-types-list/style.scss +0 -1
  518. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
  519. package/src/components/block-vertical-alignment-control/test/index.js +18 -2
  520. package/src/components/block-vertical-alignment-control/ui.js +3 -5
  521. package/src/components/block-visibility/modal.js +24 -10
  522. package/src/components/block-visibility/style.scss +1 -1
  523. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  524. package/src/components/block-visibility/test/utils.js +11 -0
  525. package/src/components/block-visibility/use-block-visibility.js +33 -11
  526. package/src/components/block-visibility/utils.js +31 -6
  527. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  528. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  529. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  530. package/src/components/border-radius-control/test/utils.js +0 -41
  531. package/src/components/border-radius-control/utils.js +16 -107
  532. package/src/components/button-block-appender/content.scss +7 -9
  533. package/src/components/child-layout-control/index.js +0 -4
  534. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -3
  535. package/src/components/colors-gradients/control.js +6 -3
  536. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
  537. package/src/components/dimension-control/index.js +13 -1
  538. package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
  539. package/src/components/editor-styles/index.js +16 -1
  540. package/src/components/font-family/stories/index.story.jsx +1 -1
  541. package/src/components/global-styles/background-panel.js +107 -34
  542. package/src/components/global-styles/border-panel.js +219 -48
  543. package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
  544. package/src/components/global-styles/color-panel.js +92 -11
  545. package/src/components/global-styles/dimensions-panel.js +422 -71
  546. package/src/components/global-styles/filters-panel.js +88 -28
  547. package/src/components/global-styles/hooks.js +8 -1
  548. package/src/components/global-styles/inheritance/index.js +204 -0
  549. package/src/components/global-styles/inheritance/style.scss +184 -0
  550. package/src/components/global-styles/inheritance/test/index.js +281 -0
  551. package/src/components/global-styles/inherited-value-context.js +271 -0
  552. package/src/components/global-styles/shadow-panel-components.js +48 -26
  553. package/src/components/global-styles/state-control-badges.js +45 -6
  554. package/src/components/global-styles/state-control.js +2 -2
  555. package/src/components/global-styles/style.scss +5 -0
  556. package/src/components/global-styles/test/background-panel.js +338 -1
  557. package/src/components/global-styles/test/border-panel.js +441 -0
  558. package/src/components/global-styles/test/color-panel.js +182 -2
  559. package/src/components/global-styles/test/dimensions-panel.js +753 -0
  560. package/src/components/global-styles/test/filters-panel.js +194 -0
  561. package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
  562. package/src/components/global-styles/test/inherited-value-context.js +454 -0
  563. package/src/components/global-styles/test/state-control-badges.js +65 -0
  564. package/src/components/global-styles/test/typography-panel-core.js +185 -0
  565. package/src/components/global-styles/test/typography-panel.js +849 -12
  566. package/src/components/global-styles/typography-panel.js +449 -101
  567. package/src/components/image-editor/style.scss +33 -0
  568. package/src/components/image-size-control/index.js +0 -2
  569. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  570. package/src/components/inserter/media-tab/hooks.js +55 -7
  571. package/src/components/inserter/media-tab/media-panel.js +117 -21
  572. package/src/components/inserter/media-tab/test/hooks.js +63 -0
  573. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  574. package/src/components/inserter/style.scss +19 -16
  575. package/src/components/inserter-list-item/style.scss +0 -15
  576. package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
  577. package/src/components/keyboard-shortcuts/index.js +28 -11
  578. package/src/components/line-height-control/index.js +1 -2
  579. package/src/components/link-control/index.js +7 -2
  580. package/src/components/link-control/style.scss +2 -2
  581. package/src/components/link-control/test/index.js +6 -6
  582. package/src/components/link-picker/style.scss +1 -2
  583. package/src/components/list-view/block.js +13 -4
  584. package/src/components/list-view/style.scss +4 -5
  585. package/src/components/media-placeholder/index.js +0 -1
  586. package/src/components/multi-selection-inspector/style.scss +1 -1
  587. package/src/components/preset-input-control/index.js +4 -1
  588. package/src/components/provider/block-refs-provider.js +12 -2
  589. package/src/components/provider/index.js +2 -2
  590. package/src/components/provider/use-block-sync.js +18 -6
  591. package/src/components/provider/use-media-upload-settings.js +2 -0
  592. package/src/components/responsive-block-control/style.scss +1 -1
  593. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  594. package/src/components/rich-text/event-listeners/delete.js +7 -4
  595. package/src/components/rich-text/event-listeners/enter.js +10 -4
  596. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  597. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  598. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  599. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  600. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  601. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  602. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  603. package/src/components/rich-text/index.js +116 -26
  604. package/src/components/skip-to-selected-block/style.scss +1 -1
  605. package/src/components/spacing-sizes-control/test/utils.js +16 -5
  606. package/src/components/spacing-sizes-control/utils.js +11 -28
  607. package/src/components/text-indent-control/index.js +8 -0
  608. package/src/components/typewriter/index.js +228 -224
  609. package/src/components/url-input/index.js +363 -431
  610. package/src/components/url-input/test/index.js +592 -0
  611. package/src/components/use-block-commands/index.js +27 -17
  612. package/src/components/use-on-block-drop/index.js +2 -2
  613. package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
  614. package/src/components/writing-flow/index.js +17 -1
  615. package/src/components/writing-flow/use-arrow-nav.js +90 -13
  616. package/src/components/writing-flow/use-click-selection.js +55 -5
  617. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  618. package/src/components/writing-flow/use-drag-selection.js +1 -14
  619. package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
  620. package/src/components/writing-flow/use-editable-root.js +112 -0
  621. package/src/components/writing-flow/use-home-end.js +71 -0
  622. package/src/components/writing-flow/use-input.js +25 -8
  623. package/src/components/writing-flow/use-multi-selection.js +2 -3
  624. package/src/components/writing-flow/use-select-all.js +33 -3
  625. package/src/components/writing-flow/use-selection-observer.js +218 -42
  626. package/src/components/writing-flow/utils.js +62 -0
  627. package/src/hooks/background.js +27 -24
  628. package/src/hooks/block-fields/link/styles.scss +1 -6
  629. package/src/hooks/block-fields/media/styles.scss +1 -6
  630. package/src/hooks/block-fields/rich-text/index.js +6 -9
  631. package/src/hooks/block-fields/rich-text/styles.scss +1 -1
  632. package/src/hooks/block-style-variation.js +8 -74
  633. package/src/hooks/border.js +19 -4
  634. package/src/hooks/custom-css.js +15 -6
  635. package/src/hooks/dimensions.js +17 -4
  636. package/src/hooks/duotone.js +26 -8
  637. package/src/hooks/elements.js +14 -4
  638. package/src/hooks/grid-visualizer.js +40 -36
  639. package/src/hooks/layout-child.js +19 -9
  640. package/src/hooks/layout.js +48 -31
  641. package/src/hooks/line-height.js +0 -1
  642. package/src/hooks/states.js +38 -9
  643. package/src/hooks/style.js +67 -17
  644. package/src/hooks/test/inherited-value-wiring.js +411 -0
  645. package/src/hooks/test/preset-round-trip.js +456 -0
  646. package/src/hooks/test/style.js +29 -0
  647. package/src/hooks/test/text-align.js +34 -1
  648. package/src/hooks/text-align.js +41 -10
  649. package/src/hooks/typography.js +35 -24
  650. package/src/layouts/constrained.js +5 -1
  651. package/src/layouts/flex.js +5 -1
  652. package/src/layouts/grid.js +0 -2
  653. package/src/private-apis.js +11 -2
  654. package/src/store/actions.js +53 -19
  655. package/src/store/private-selectors.js +82 -6
  656. package/src/store/reducer.js +9 -9
  657. package/src/store/selectors.js +56 -8
  658. package/src/store/test/actions.js +1 -1
  659. package/src/store/test/private-selectors.js +271 -1
  660. package/src/style.scss +2 -0
  661. package/src/utils/block-bindings.ts +50 -0
  662. package/src/utils/dom.ts +33 -0
  663. package/src/utils/native-undo.js +56 -0
  664. package/src/utils/test/block-bindings.js +181 -0
  665. package/build/components/duotone/utils.cjs +0 -87
  666. package/build/components/duotone/utils.cjs.map +0 -7
  667. package/build/components/rich-text/input-event.cjs.map +0 -7
  668. package/build/components/rich-text/shortcut.cjs +0 -51
  669. package/build/components/rich-text/shortcut.cjs.map +0 -7
  670. package/build-module/components/duotone/utils.mjs +0 -59
  671. package/build-module/components/duotone/utils.mjs.map +0 -7
  672. package/build-module/components/rich-text/input-event.mjs +0 -25
  673. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  674. package/build-module/components/rich-text/shortcut.mjs +0 -26
  675. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  676. package/src/components/duotone/utils.js +0 -90
  677. package/src/components/rich-text/input-event.js +0 -31
  678. package/src/components/rich-text/shortcut.js +0 -32
  679. package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/spacing-sizes-control/utils.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'bottom', 'left', 'right' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|spacing|' );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getSpacingPresetSlug( value );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Returns the slug section of the given spacing preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given spacing preset.\n */\nexport function getSpacingPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getSpacingPresetSlug( presetValue );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Only axial sides are supported and single value defined.\n\t// - Ensure the side returned is the first side that has a value.\n\tif ( hasOnlyAxialSides && sideValues.length === 1 ) {\n\t\tlet side;\n\n\t\tObject.entries( values ).some( ( [ key, value ] ) => {\n\t\t\tside = key;\n\t\t\treturn value !== undefined;\n\t\t} );\n\n\t\treturn side;\n\t}\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 && ! sideValues.length ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getPresetSlug, isValuePreset } from '../preset-input-control/utils';\n\nconst SPACING_PRESET_TYPE = 'spacing';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'bottom', 'left', 'right' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\treturn isValuePreset( value, SPACING_PRESET_TYPE );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getPresetSlug( value, SPACING_PRESET_TYPE );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value || typeof value !== 'string' ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getPresetSlug( presetValue, SPACING_PRESET_TYPE );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Only axial sides are supported and single value defined.\n\t// - Ensure the side returned is the first side that has a value.\n\tif ( hasOnlyAxialSides && sideValues.length === 1 ) {\n\t\tlet side;\n\n\t\tObject.entries( values ).some( ( [ key, value ] ) => {\n\t\t\tside = key;\n\t\t\treturn value !== undefined;\n\t\t} );\n\n\t\treturn side;\n\t}\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 && ! sideValues.length ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -20,6 +20,8 @@ function TextIndentControl({
20
20
  withSlider = false,
21
21
  hasBottomMargin = false,
22
22
  help,
23
+ className,
24
+ placeholder,
23
25
  ...otherProps
24
26
  }) {
25
27
  const [availableUnits] = useSettings("spacing.units");
@@ -50,7 +52,9 @@ function TextIndentControl({
50
52
  __unstableInputWidth,
51
53
  units,
52
54
  onChange,
53
- help
55
+ help,
56
+ className,
57
+ placeholder
54
58
  }
55
59
  );
56
60
  }
@@ -67,7 +71,9 @@ function TextIndentControl({
67
71
  onChange,
68
72
  units,
69
73
  __unstableInputWidth,
70
- min: 0
74
+ min: 0,
75
+ className,
76
+ placeholder
71
77
  }
72
78
  ) }),
73
79
  withSlider && /* @__PURE__ */ jsx(FlexItem, { isBlock: true, children: /* @__PURE__ */ jsx(Spacer, { marginX: 2, marginBottom: 0, children: /* @__PURE__ */ jsx(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/text-indent-control/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalView as View,\n\tRangeControl,\n\t__experimentalSpacer as Spacer,\n\tFlex,\n\tFlexItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../../components/use-settings';\n\n/**\n * Control for line text indent.\n *\n * @param {Object} props Component props.\n * @param {string} props.value Currently selected text indent.\n * @param {Function} props.onChange Handles change in text indent selection.\n * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.\n * @param {boolean} props.withSlider Whether to show the slider control.\n * @param {boolean} props.hasBottomMargin Whether to add bottom margin below the control.\n * @param {string} props.help Help text to display below the control.\n *\n * @return {Element} Text indent control.\n */\nexport default function TextIndentControl( {\n\tvalue,\n\tonChange,\n\t__unstableInputWidth = '60px',\n\twithSlider = false,\n\thasBottomMargin = false,\n\thelp,\n\t...otherProps\n} ) {\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'ch',\n\t\t\t'%',\n\t\t\t'vw',\n\t\t\t'vh',\n\t\t],\n\t\tdefaultValues: { px: 16, em: 2, rem: 2, ch: 2 },\n\t} );\n\n\tconst [ valueQuantity, valueUnit ] = parseQuantityAndUnitFromRawValue(\n\t\tvalue,\n\t\tunits\n\t);\n\tconst isValueUnitRelative =\n\t\t!! valueUnit &&\n\t\t[ 'em', 'rem', '%', 'ch', 'vw', 'vh' ].includes( valueUnit );\n\n\tif ( ! withSlider ) {\n\t\treturn (\n\t\t\t<UnitControl\n\t\t\t\t{ ...otherProps }\n\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\tvalue={ value }\n\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\tunits={ units }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thelp={ help }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<View style={ hasBottomMargin ? { marginBottom: 12 } : undefined }>\n\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t{ __( 'Line indent' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t{ withSlider && (\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tvalue={ valueQuantity }\n\t\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tif ( newValue === undefined ) {\n\t\t\t\t\t\t\t\t\t\tonChange?.( undefined );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tonChange?.(\n\t\t\t\t\t\t\t\t\t\t\tnewValue + ( valueUnit ?? 'px' )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tmax={ isValueUnitRelative ? 10 : 100 }\n\t\t\t\t\t\t\t\tstep={ isValueUnitRelative ? 0.1 : 1 }\n\t\t\t\t\t\t\t\tinitialPosition={ 0 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Spacer>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t\t{ help && (\n\t\t\t\t<p className=\"components-base-control__help\">{ help }</p>\n\t\t\t) }\n\t\t</View>\n\t);\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC,6BAA6B;AAAA,EAC7B,gCAAgC;AAAA,EAChC,kDAAkD;AAAA,EAClD,sBAAsB;AAAA,EACtB;AAAA,EACA,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AAKnB,SAAS,mBAAmB;AAgDzB,cAiBA,YAjBA;AAjCY,SAAR,kBAAoC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM,CAAE,cAAe,IAAI,YAAa,eAAgB;AACxD,QAAM,QAAQ,eAAgB;AAAA,IAC7B,gBAAgB,kBAAkB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,eAAe,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE;AAAA,EAC/C,CAAE;AAEF,QAAM,CAAE,eAAe,SAAU,IAAI;AAAA,IACpC;AAAA,IACA;AAAA,EACD;AACA,QAAM,sBACL,CAAC,CAAE,aACH,CAAE,MAAM,OAAO,KAAK,MAAM,MAAM,IAAK,EAAE,SAAU,SAAU;AAE5D,MAAK,CAAE,YAAa;AACnB,WACC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACL,OAAQ,GAAI,aAAc;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,SACC,qBAAC,QAAK,OAAQ,kBAAkB,EAAE,cAAc,GAAG,IAAI,QACtD;AAAA,wBAAC,YAAY,aAAZ,EACE,aAAI,aAAc,GACrB;AAAA,IACA,qBAAC,QACA;AAAA,0BAAC,YAAS,SAAO,MAChB;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,aAAc;AAAA,UAC1B,eAAc;AAAA,UACd,qBAAmB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,KAAM;AAAA;AAAA,MACP,GACD;AAAA,MACE,cACD,oBAAC,YAAS,SAAO,MAChB,8BAAC,UAAO,SAAU,GAAI,cAAe,GACpC;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,aAAc;AAAA,UAC1B,qBAAmB;AAAA,UACnB,OAAQ;AAAA,UACR,gBAAiB;AAAA,UACjB,UAAW,CAAE,aAAc;AAC1B,gBAAK,aAAa,QAAY;AAC7B,yBAAY,MAAU;AAAA,YACvB,OAAO;AACN;AAAA,gBACC,YAAa,aAAa;AAAA,cAC3B;AAAA,YACD;AAAA,UACD;AAAA,UACA,KAAM;AAAA,UACN,KAAM,sBAAsB,KAAK;AAAA,UACjC,MAAO,sBAAsB,MAAM;AAAA,UACnC,iBAAkB;AAAA;AAAA,MACnB,GACD,GACD;AAAA,OAEF;AAAA,IACE,QACD,oBAAC,OAAE,WAAU,iCAAkC,gBAAM;AAAA,KAEvD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalView as View,\n\tRangeControl,\n\t__experimentalSpacer as Spacer,\n\tFlex,\n\tFlexItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../../components/use-settings';\n\n/**\n * Control for line text indent.\n *\n * @param {Object} props Component props.\n * @param {string} props.value Currently selected text indent.\n * @param {Function} props.onChange Handles change in text indent selection.\n * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.\n * @param {boolean} props.withSlider Whether to show the slider control.\n * @param {boolean} props.hasBottomMargin Whether to add bottom margin below the control.\n * @param {string} props.help Help text to display below the control.\n * @param {string} props.className Class name to add to the inner UnitControl.\n * @param {string} props.placeholder Placeholder for the inner UnitControl.\n *\n * @return {Element} Text indent control.\n */\nexport default function TextIndentControl( {\n\tvalue,\n\tonChange,\n\t__unstableInputWidth = '60px',\n\twithSlider = false,\n\thasBottomMargin = false,\n\thelp,\n\tclassName,\n\tplaceholder,\n\t...otherProps\n} ) {\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'ch',\n\t\t\t'%',\n\t\t\t'vw',\n\t\t\t'vh',\n\t\t],\n\t\tdefaultValues: { px: 16, em: 2, rem: 2, ch: 2 },\n\t} );\n\n\tconst [ valueQuantity, valueUnit ] = parseQuantityAndUnitFromRawValue(\n\t\tvalue,\n\t\tunits\n\t);\n\tconst isValueUnitRelative =\n\t\t!! valueUnit &&\n\t\t[ 'em', 'rem', '%', 'ch', 'vw', 'vh' ].includes( valueUnit );\n\n\tif ( ! withSlider ) {\n\t\treturn (\n\t\t\t<UnitControl\n\t\t\t\t{ ...otherProps }\n\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\tvalue={ value }\n\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\tunits={ units }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thelp={ help }\n\t\t\t\tclassName={ className }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<View style={ hasBottomMargin ? { marginBottom: 12 } : undefined }>\n\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t{ __( 'Line indent' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t{ withSlider && (\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Line indent' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tvalue={ valueQuantity }\n\t\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tif ( newValue === undefined ) {\n\t\t\t\t\t\t\t\t\t\tonChange?.( undefined );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tonChange?.(\n\t\t\t\t\t\t\t\t\t\t\tnewValue + ( valueUnit ?? 'px' )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tmax={ isValueUnitRelative ? 10 : 100 }\n\t\t\t\t\t\t\t\tstep={ isValueUnitRelative ? 0.1 : 1 }\n\t\t\t\t\t\t\t\tinitialPosition={ 0 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Spacer>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t\t{ help && (\n\t\t\t\t<p className=\"components-base-control__help\">{ help }</p>\n\t\t\t) }\n\t\t</View>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC,6BAA6B;AAAA,EAC7B,gCAAgC;AAAA,EAChC,kDAAkD;AAAA,EAClD,sBAAsB;AAAA,EACtB;AAAA,EACA,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AAKnB,SAAS,mBAAmB;AAoDzB,cAmBA,YAnBA;AAnCY,SAAR,kBAAoC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM,CAAE,cAAe,IAAI,YAAa,eAAgB;AACxD,QAAM,QAAQ,eAAgB;AAAA,IAC7B,gBAAgB,kBAAkB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,eAAe,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE;AAAA,EAC/C,CAAE;AAEF,QAAM,CAAE,eAAe,SAAU,IAAI;AAAA,IACpC;AAAA,IACA;AAAA,EACD;AACA,QAAM,sBACL,CAAC,CAAE,aACH,CAAE,MAAM,OAAO,KAAK,MAAM,MAAM,IAAK,EAAE,SAAU,SAAU;AAE5D,MAAK,CAAE,YAAa;AACnB,WACC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACL,OAAQ,GAAI,aAAc;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,SACC,qBAAC,QAAK,OAAQ,kBAAkB,EAAE,cAAc,GAAG,IAAI,QACtD;AAAA,wBAAC,YAAY,aAAZ,EACE,aAAI,aAAc,GACrB;AAAA,IACA,qBAAC,QACA;AAAA,0BAAC,YAAS,SAAO,MAChB;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,aAAc;AAAA,UAC1B,eAAc;AAAA,UACd,qBAAmB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,KAAM;AAAA,UACN;AAAA,UACA;AAAA;AAAA,MACD,GACD;AAAA,MACE,cACD,oBAAC,YAAS,SAAO,MAChB,8BAAC,UAAO,SAAU,GAAI,cAAe,GACpC;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,aAAc;AAAA,UAC1B,qBAAmB;AAAA,UACnB,OAAQ;AAAA,UACR,gBAAiB;AAAA,UACjB,UAAW,CAAE,aAAc;AAC1B,gBAAK,aAAa,QAAY;AAC7B,yBAAY,MAAU;AAAA,YACvB,OAAO;AACN;AAAA,gBACC,YAAa,aAAa;AAAA,cAC3B;AAAA,YACD;AAAA,UACD;AAAA,UACA,KAAM;AAAA,UACN,KAAM,sBAAsB,KAAK;AAAA,UACjC,MAAO,sBAAsB,MAAM;AAAA,UACnC,iBAAkB;AAAA;AAAA,MACnB,GACD,GACD;AAAA,OAEF;AAAA,IACE,QACD,oBAAC,OAAE,WAAU,iCAAkC,gBAAM;AAAA,KAEvD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -1,158 +1,151 @@
1
1
  // packages/block-editor/src/components/typewriter/index.js
2
2
  import { useRefEffect } from "@wordpress/compose";
3
3
  import { computeCaretRect, getScrollContainer } from "@wordpress/dom";
4
- import { useSelect } from "@wordpress/data";
5
4
  import { UP, DOWN, LEFT, RIGHT } from "@wordpress/keycodes";
6
- import { store as blockEditorStore } from "../../store/index.mjs";
7
5
  import { jsx } from "react/jsx-runtime";
8
6
  var isIE = window.navigator.userAgent.indexOf("Trident") !== -1;
9
7
  var arrowKeyCodes = /* @__PURE__ */ new Set([UP, DOWN, LEFT, RIGHT]);
10
8
  var initialTriggerPercentage = 0.75;
11
9
  function useTypewriter() {
12
- const hasSelectedBlock = useSelect(
13
- (select) => select(blockEditorStore).hasSelectedBlock(),
14
- []
15
- );
16
- return useRefEffect(
17
- (node) => {
18
- if (!hasSelectedBlock) {
10
+ return useRefEffect((node) => {
11
+ const { ownerDocument } = node;
12
+ const { defaultView } = ownerDocument;
13
+ let scrollResizeRafId;
14
+ let onKeyDownRafId;
15
+ let caretRect;
16
+ function onScrollResize() {
17
+ if (scrollResizeRafId) {
19
18
  return;
20
19
  }
21
- const { ownerDocument } = node;
22
- const { defaultView } = ownerDocument;
23
- let scrollResizeRafId;
24
- let onKeyDownRafId;
25
- let caretRect;
26
- function onScrollResize() {
27
- if (scrollResizeRafId) {
28
- return;
29
- }
30
- scrollResizeRafId = defaultView.requestAnimationFrame(() => {
31
- computeCaretRectangle();
32
- scrollResizeRafId = null;
33
- });
20
+ scrollResizeRafId = defaultView.requestAnimationFrame(() => {
21
+ computeCaretRectangle();
22
+ scrollResizeRafId = null;
23
+ });
24
+ }
25
+ function onKeyDown(event) {
26
+ if (onKeyDownRafId) {
27
+ defaultView.cancelAnimationFrame(onKeyDownRafId);
34
28
  }
35
- function onKeyDown(event) {
36
- if (onKeyDownRafId) {
37
- defaultView.cancelAnimationFrame(onKeyDownRafId);
38
- }
39
- onKeyDownRafId = defaultView.requestAnimationFrame(() => {
40
- maintainCaretPosition(event);
41
- onKeyDownRafId = null;
42
- });
29
+ onKeyDownRafId = defaultView.requestAnimationFrame(() => {
30
+ maintainCaretPosition(event);
31
+ onKeyDownRafId = null;
32
+ });
33
+ }
34
+ function maintainCaretPosition({ keyCode }) {
35
+ if (!isSelectionEligibleForScroll()) {
36
+ return;
43
37
  }
44
- function maintainCaretPosition({ keyCode }) {
45
- if (!isSelectionEligibleForScroll()) {
46
- return;
47
- }
48
- const currentCaretRect = computeCaretRect(defaultView);
49
- if (!currentCaretRect) {
50
- return;
51
- }
52
- if (!caretRect) {
53
- caretRect = currentCaretRect;
54
- return;
55
- }
56
- if (arrowKeyCodes.has(keyCode)) {
57
- caretRect = currentCaretRect;
58
- return;
59
- }
60
- const diff = currentCaretRect.top - caretRect.top;
61
- if (diff === 0) {
62
- return;
63
- }
64
- const scrollContainer = getScrollContainer(node);
65
- if (!scrollContainer) {
66
- return;
67
- }
68
- const windowScroll = scrollContainer === ownerDocument.body || scrollContainer === ownerDocument.documentElement;
69
- const scrollY = windowScroll ? defaultView.scrollY : scrollContainer.scrollTop;
70
- const scrollContainerY = windowScroll ? 0 : scrollContainer.getBoundingClientRect().top;
71
- const relativeScrollPosition = windowScroll ? caretRect.top / defaultView.innerHeight : (caretRect.top - scrollContainerY) / (defaultView.innerHeight - scrollContainerY);
72
- if (scrollY === 0 && relativeScrollPosition < initialTriggerPercentage && isLastEditableNode()) {
73
- caretRect = currentCaretRect;
74
- return;
75
- }
76
- const scrollContainerHeight = windowScroll ? defaultView.innerHeight : scrollContainer.clientHeight;
77
- if (
78
- // The caret is under the lower fold.
79
- caretRect.top + caretRect.height > scrollContainerY + scrollContainerHeight || // The caret is above the upper fold.
80
- caretRect.top < scrollContainerY
81
- ) {
82
- caretRect = currentCaretRect;
83
- return;
84
- }
85
- if (windowScroll) {
86
- defaultView.scrollBy(0, diff);
87
- } else {
88
- scrollContainer.scrollTop += diff;
89
- }
38
+ const currentCaretRect = computeCaretRect(defaultView);
39
+ if (!currentCaretRect) {
40
+ return;
90
41
  }
91
- function addSelectionChangeListener() {
92
- ownerDocument.addEventListener(
93
- "selectionchange",
94
- computeCaretRectOnSelectionChange
95
- );
42
+ if (!caretRect) {
43
+ caretRect = currentCaretRect;
44
+ return;
96
45
  }
97
- function computeCaretRectOnSelectionChange() {
98
- ownerDocument.removeEventListener(
99
- "selectionchange",
100
- computeCaretRectOnSelectionChange
101
- );
102
- computeCaretRectangle();
46
+ if (arrowKeyCodes.has(keyCode)) {
47
+ caretRect = currentCaretRect;
48
+ return;
49
+ }
50
+ const diff = currentCaretRect.top - caretRect.top;
51
+ if (diff === 0) {
52
+ return;
103
53
  }
104
- function computeCaretRectangle() {
105
- if (isSelectionEligibleForScroll()) {
106
- caretRect = computeCaretRect(defaultView);
107
- }
54
+ const scrollContainer = getScrollContainer(node);
55
+ if (!scrollContainer) {
56
+ return;
108
57
  }
109
- function isSelectionEligibleForScroll() {
110
- return node.contains(ownerDocument.activeElement) && ownerDocument.activeElement.isContentEditable;
58
+ const windowScroll = scrollContainer === ownerDocument.body || scrollContainer === ownerDocument.documentElement;
59
+ const scrollY = windowScroll ? defaultView.scrollY : scrollContainer.scrollTop;
60
+ const scrollContainerY = windowScroll ? 0 : scrollContainer.getBoundingClientRect().top;
61
+ const relativeScrollPosition = windowScroll ? caretRect.top / defaultView.innerHeight : (caretRect.top - scrollContainerY) / (defaultView.innerHeight - scrollContainerY);
62
+ if (scrollY === 0 && relativeScrollPosition < initialTriggerPercentage && isLastEditableNode()) {
63
+ caretRect = currentCaretRect;
64
+ return;
111
65
  }
112
- function isLastEditableNode() {
113
- const editableNodes = node.querySelectorAll(
114
- '[contenteditable="true"]'
115
- );
116
- const lastEditableNode = editableNodes[editableNodes.length - 1];
117
- return lastEditableNode === ownerDocument.activeElement;
66
+ const scrollContainerHeight = windowScroll ? defaultView.innerHeight : scrollContainer.clientHeight;
67
+ if (
68
+ // The caret is under the lower fold.
69
+ caretRect.top + caretRect.height > scrollContainerY + scrollContainerHeight || // The caret is above the upper fold.
70
+ caretRect.top < scrollContainerY
71
+ ) {
72
+ caretRect = currentCaretRect;
73
+ return;
118
74
  }
119
- defaultView.addEventListener("scroll", onScrollResize, true);
120
- defaultView.addEventListener("resize", onScrollResize, true);
121
- node.addEventListener("keydown", onKeyDown);
122
- node.addEventListener("keyup", maintainCaretPosition);
123
- node.addEventListener("mousedown", addSelectionChangeListener);
124
- node.addEventListener("touchstart", addSelectionChangeListener);
125
- return () => {
126
- defaultView.removeEventListener(
127
- "scroll",
128
- onScrollResize,
129
- true
130
- );
131
- defaultView.removeEventListener(
132
- "resize",
133
- onScrollResize,
134
- true
135
- );
136
- node.removeEventListener("keydown", onKeyDown);
137
- node.removeEventListener("keyup", maintainCaretPosition);
138
- node.removeEventListener(
139
- "mousedown",
140
- addSelectionChangeListener
141
- );
142
- node.removeEventListener(
143
- "touchstart",
144
- addSelectionChangeListener
145
- );
146
- ownerDocument.removeEventListener(
147
- "selectionchange",
148
- computeCaretRectOnSelectionChange
149
- );
150
- defaultView.cancelAnimationFrame(scrollResizeRafId);
151
- defaultView.cancelAnimationFrame(onKeyDownRafId);
152
- };
153
- },
154
- [hasSelectedBlock]
155
- );
75
+ if (windowScroll) {
76
+ defaultView.scrollBy(0, diff);
77
+ } else {
78
+ scrollContainer.scrollTop += diff;
79
+ }
80
+ }
81
+ function addSelectionChangeListener() {
82
+ ownerDocument.addEventListener(
83
+ "selectionchange",
84
+ computeCaretRectOnSelectionChange
85
+ );
86
+ }
87
+ function computeCaretRectOnSelectionChange() {
88
+ ownerDocument.removeEventListener(
89
+ "selectionchange",
90
+ computeCaretRectOnSelectionChange
91
+ );
92
+ computeCaretRectangle();
93
+ }
94
+ function computeCaretRectangle() {
95
+ if (isSelectionEligibleForScroll()) {
96
+ caretRect = computeCaretRect(defaultView);
97
+ }
98
+ }
99
+ function getActiveEditableElement() {
100
+ const { activeElement } = ownerDocument;
101
+ if (!activeElement) {
102
+ return null;
103
+ }
104
+ if (!activeElement.isContentEditable || !activeElement.contains(node)) {
105
+ return activeElement;
106
+ }
107
+ const { anchorNode } = defaultView.getSelection();
108
+ if (!anchorNode) {
109
+ return null;
110
+ }
111
+ const element = anchorNode.nodeType === anchorNode.ELEMENT_NODE ? anchorNode : anchorNode.parentElement;
112
+ return element?.closest('[contenteditable="true"]') ?? null;
113
+ }
114
+ function isSelectionEligibleForScroll() {
115
+ const activeEditableElement = getActiveEditableElement();
116
+ return !!activeEditableElement && node.contains(activeEditableElement) && activeEditableElement.isContentEditable;
117
+ }
118
+ function isLastEditableNode() {
119
+ const editableNodes = node.querySelectorAll(
120
+ '[contenteditable="true"]'
121
+ );
122
+ const lastEditableNode = editableNodes[editableNodes.length - 1];
123
+ return lastEditableNode === getActiveEditableElement();
124
+ }
125
+ defaultView.addEventListener("scroll", onScrollResize, true);
126
+ defaultView.addEventListener("resize", onScrollResize, true);
127
+ node.addEventListener("keydown", onKeyDown);
128
+ node.addEventListener("keyup", maintainCaretPosition);
129
+ node.addEventListener("mousedown", addSelectionChangeListener);
130
+ node.addEventListener("touchstart", addSelectionChangeListener);
131
+ return () => {
132
+ defaultView.removeEventListener("scroll", onScrollResize, true);
133
+ defaultView.removeEventListener("resize", onScrollResize, true);
134
+ node.removeEventListener("keydown", onKeyDown);
135
+ node.removeEventListener("keyup", maintainCaretPosition);
136
+ node.removeEventListener("mousedown", addSelectionChangeListener);
137
+ node.removeEventListener(
138
+ "touchstart",
139
+ addSelectionChangeListener
140
+ );
141
+ ownerDocument.removeEventListener(
142
+ "selectionchange",
143
+ computeCaretRectOnSelectionChange
144
+ );
145
+ defaultView.cancelAnimationFrame(scrollResizeRafId);
146
+ defaultView.cancelAnimationFrame(onKeyDownRafId);
147
+ };
148
+ }, []);
156
149
  }
157
150
  function Typewriter({ children }) {
158
151
  return /* @__PURE__ */ jsx("div", { ref: useTypewriter(), className: "block-editor__typewriter", children });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/typewriter/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { computeCaretRect, getScrollContainer } from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\nimport { UP, DOWN, LEFT, RIGHT } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst isIE = window.navigator.userAgent.indexOf( 'Trident' ) !== -1;\nconst arrowKeyCodes = new Set( [ UP, DOWN, LEFT, RIGHT ] );\nconst initialTriggerPercentage = 0.75;\n\nexport function useTypewriter() {\n\tconst hasSelectedBlock = useSelect(\n\t\t( select ) => select( blockEditorStore ).hasSelectedBlock(),\n\t\t[]\n\t);\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! hasSelectedBlock ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\tlet scrollResizeRafId;\n\t\t\tlet onKeyDownRafId;\n\n\t\t\tlet caretRect;\n\n\t\t\tfunction onScrollResize() {\n\t\t\t\tif ( scrollResizeRafId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tscrollResizeRafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\t\tcomputeCaretRectangle();\n\t\t\t\t\tscrollResizeRafId = null;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\t// Ensure the any remaining request is cancelled.\n\t\t\t\tif ( onKeyDownRafId ) {\n\t\t\t\t\tdefaultView.cancelAnimationFrame( onKeyDownRafId );\n\t\t\t\t}\n\n\t\t\t\t// Use an animation frame for a smooth result.\n\t\t\t\tonKeyDownRafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\t\tmaintainCaretPosition( event );\n\t\t\t\t\tonKeyDownRafId = null;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Maintains the scroll position after a selection change caused by a\n\t\t\t * keyboard event.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keyboard event.\n\t\t\t */\n\t\t\tfunction maintainCaretPosition( { keyCode } ) {\n\t\t\t\tif ( ! isSelectionEligibleForScroll() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst currentCaretRect = computeCaretRect( defaultView );\n\n\t\t\t\tif ( ! currentCaretRect ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If for some reason there is no position set to be scrolled to, let\n\t\t\t\t// this be the position to be scrolled to in the future.\n\t\t\t\tif ( ! caretRect ) {\n\t\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Even though enabling the typewriter effect for arrow keys results in\n\t\t\t\t// a pleasant experience, it may not be the case for everyone, so, for\n\t\t\t\t// now, let's disable it.\n\t\t\t\tif ( arrowKeyCodes.has( keyCode ) ) {\n\t\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst diff = currentCaretRect.top - caretRect.top;\n\n\t\t\t\tif ( diff === 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst scrollContainer = getScrollContainer( node );\n\n\t\t\t\t// The page must be scrollable.\n\t\t\t\tif ( ! scrollContainer ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst windowScroll =\n\t\t\t\t\tscrollContainer === ownerDocument.body ||\n\t\t\t\t\tscrollContainer === ownerDocument.documentElement;\n\t\t\t\tconst scrollY = windowScroll\n\t\t\t\t\t? defaultView.scrollY\n\t\t\t\t\t: scrollContainer.scrollTop;\n\t\t\t\tconst scrollContainerY = windowScroll\n\t\t\t\t\t? 0\n\t\t\t\t\t: scrollContainer.getBoundingClientRect().top;\n\t\t\t\tconst relativeScrollPosition = windowScroll\n\t\t\t\t\t? caretRect.top / defaultView.innerHeight\n\t\t\t\t\t: ( caretRect.top - scrollContainerY ) /\n\t\t\t\t\t ( defaultView.innerHeight - scrollContainerY );\n\n\t\t\t\t// If the scroll position is at the start, the active editable element\n\t\t\t\t// is the last one, and the caret is positioned within the initial\n\t\t\t\t// trigger percentage of the page, do not scroll the page.\n\t\t\t\t// The typewriter effect should not kick in until an empty page has been\n\t\t\t\t// filled with the initial trigger percentage or the user scrolls\n\t\t\t\t// intentionally down.\n\t\t\t\tif (\n\t\t\t\t\tscrollY === 0 &&\n\t\t\t\t\trelativeScrollPosition < initialTriggerPercentage &&\n\t\t\t\t\tisLastEditableNode()\n\t\t\t\t) {\n\t\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst scrollContainerHeight = windowScroll\n\t\t\t\t\t? defaultView.innerHeight\n\t\t\t\t\t: scrollContainer.clientHeight;\n\n\t\t\t\t// Abort if the target scroll position would scroll the caret out of\n\t\t\t\t// view.\n\t\t\t\tif (\n\t\t\t\t\t// The caret is under the lower fold.\n\t\t\t\t\tcaretRect.top + caretRect.height >\n\t\t\t\t\t\tscrollContainerY + scrollContainerHeight ||\n\t\t\t\t\t// The caret is above the upper fold.\n\t\t\t\t\tcaretRect.top < scrollContainerY\n\t\t\t\t) {\n\t\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( windowScroll ) {\n\t\t\t\t\tdefaultView.scrollBy( 0, diff );\n\t\t\t\t} else {\n\t\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Adds a `selectionchange` listener to reset the scroll position to be\n\t\t\t * maintained.\n\t\t\t */\n\t\t\tfunction addSelectionChangeListener() {\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Resets the scroll position to be maintained during a `selectionchange`\n\t\t\t * event. Also removes the listener, so it acts as a one-time listener.\n\t\t\t */\n\t\t\tfunction computeCaretRectOnSelectionChange() {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t\t);\n\t\t\t\tcomputeCaretRectangle();\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Resets the scroll position to be maintained.\n\t\t\t */\n\t\t\tfunction computeCaretRectangle() {\n\t\t\t\tif ( isSelectionEligibleForScroll() ) {\n\t\t\t\t\tcaretRect = computeCaretRect( defaultView );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Checks if the current situation is eligible for scroll:\n\t\t\t * - There should be one and only one block selected.\n\t\t\t * - The component must contain the selection.\n\t\t\t * - The active element must be contenteditable.\n\t\t\t */\n\t\t\tfunction isSelectionEligibleForScroll() {\n\t\t\t\treturn (\n\t\t\t\t\tnode.contains( ownerDocument.activeElement ) &&\n\t\t\t\t\townerDocument.activeElement.isContentEditable\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction isLastEditableNode() {\n\t\t\t\tconst editableNodes = node.querySelectorAll(\n\t\t\t\t\t'[contenteditable=\"true\"]'\n\t\t\t\t);\n\t\t\t\tconst lastEditableNode =\n\t\t\t\t\teditableNodes[ editableNodes.length - 1 ];\n\t\t\t\treturn lastEditableNode === ownerDocument.activeElement;\n\t\t\t}\n\n\t\t\t// When the user scrolls or resizes, the scroll position should be\n\t\t\t// reset.\n\t\t\tdefaultView.addEventListener( 'scroll', onScrollResize, true );\n\t\t\tdefaultView.addEventListener( 'resize', onScrollResize, true );\n\n\t\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\t\tnode.addEventListener( 'keyup', maintainCaretPosition );\n\t\t\tnode.addEventListener( 'mousedown', addSelectionChangeListener );\n\t\t\tnode.addEventListener( 'touchstart', addSelectionChangeListener );\n\n\t\t\treturn () => {\n\t\t\t\tdefaultView.removeEventListener(\n\t\t\t\t\t'scroll',\n\t\t\t\t\tonScrollResize,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tdefaultView.removeEventListener(\n\t\t\t\t\t'resize',\n\t\t\t\t\tonScrollResize,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\n\t\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tnode.removeEventListener( 'keyup', maintainCaretPosition );\n\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t'mousedown',\n\t\t\t\t\taddSelectionChangeListener\n\t\t\t\t);\n\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t'touchstart',\n\t\t\t\t\taddSelectionChangeListener\n\t\t\t\t);\n\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t\t);\n\n\t\t\t\tdefaultView.cancelAnimationFrame( scrollResizeRafId );\n\t\t\t\tdefaultView.cancelAnimationFrame( onKeyDownRafId );\n\t\t\t};\n\t\t},\n\t\t[ hasSelectedBlock ]\n\t);\n}\n\nfunction Typewriter( { children } ) {\n\treturn (\n\t\t<div ref={ useTypewriter() } className=\"block-editor__typewriter\">\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\n/**\n * The exported component. The implementation of Typewriter faced technical\n * challenges in Internet Explorer, and is simply skipped, rendering the given\n * props children instead.\n *\n * @type {Component}\n */\nconst TypewriterOrIEBypass = isIE ? ( props ) => props.children : Typewriter;\n\n/**\n * Ensures that the text selection keeps the same vertical distance from the\n * viewport during keyboard events within this component. The vertical distance\n * can vary. It is the last clicked or scrolled to position.\n */\nexport default TypewriterOrIEBypass;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { computeCaretRect, getScrollContainer } from '@wordpress/dom';\nimport { UP, DOWN, LEFT, RIGHT } from '@wordpress/keycodes';\n\nconst isIE = window.navigator.userAgent.indexOf( 'Trident' ) !== -1;\nconst arrowKeyCodes = new Set( [ UP, DOWN, LEFT, RIGHT ] );\nconst initialTriggerPercentage = 0.75;\n\nexport function useTypewriter() {\n\treturn useRefEffect( ( node ) => {\n\t\tconst { ownerDocument } = node;\n\t\tconst { defaultView } = ownerDocument;\n\n\t\tlet scrollResizeRafId;\n\t\tlet onKeyDownRafId;\n\n\t\tlet caretRect;\n\n\t\tfunction onScrollResize() {\n\t\t\tif ( scrollResizeRafId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tscrollResizeRafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\tcomputeCaretRectangle();\n\t\t\t\tscrollResizeRafId = null;\n\t\t\t} );\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\t\t\t// Ensure the any remaining request is cancelled.\n\t\t\tif ( onKeyDownRafId ) {\n\t\t\t\tdefaultView.cancelAnimationFrame( onKeyDownRafId );\n\t\t\t}\n\n\t\t\t// Use an animation frame for a smooth result.\n\t\t\tonKeyDownRafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\tmaintainCaretPosition( event );\n\t\t\t\tonKeyDownRafId = null;\n\t\t\t} );\n\t\t}\n\n\t\t/**\n\t\t * Maintains the scroll position after a selection change caused by a\n\t\t * keyboard event.\n\t\t *\n\t\t * @param {KeyboardEvent} event Keyboard event.\n\t\t */\n\t\tfunction maintainCaretPosition( { keyCode } ) {\n\t\t\tif ( ! isSelectionEligibleForScroll() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentCaretRect = computeCaretRect( defaultView );\n\n\t\t\tif ( ! currentCaretRect ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If for some reason there is no position set to be scrolled to, let\n\t\t\t// this be the position to be scrolled to in the future.\n\t\t\tif ( ! caretRect ) {\n\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Even though enabling the typewriter effect for arrow keys results in\n\t\t\t// a pleasant experience, it may not be the case for everyone, so, for\n\t\t\t// now, let's disable it.\n\t\t\tif ( arrowKeyCodes.has( keyCode ) ) {\n\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst diff = currentCaretRect.top - caretRect.top;\n\n\t\t\tif ( diff === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst scrollContainer = getScrollContainer( node );\n\n\t\t\t// The page must be scrollable.\n\t\t\tif ( ! scrollContainer ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst windowScroll =\n\t\t\t\tscrollContainer === ownerDocument.body ||\n\t\t\t\tscrollContainer === ownerDocument.documentElement;\n\t\t\tconst scrollY = windowScroll\n\t\t\t\t? defaultView.scrollY\n\t\t\t\t: scrollContainer.scrollTop;\n\t\t\tconst scrollContainerY = windowScroll\n\t\t\t\t? 0\n\t\t\t\t: scrollContainer.getBoundingClientRect().top;\n\t\t\tconst relativeScrollPosition = windowScroll\n\t\t\t\t? caretRect.top / defaultView.innerHeight\n\t\t\t\t: ( caretRect.top - scrollContainerY ) /\n\t\t\t\t ( defaultView.innerHeight - scrollContainerY );\n\n\t\t\t// If the scroll position is at the start, the active editable element\n\t\t\t// is the last one, and the caret is positioned within the initial\n\t\t\t// trigger percentage of the page, do not scroll the page.\n\t\t\t// The typewriter effect should not kick in until an empty page has been\n\t\t\t// filled with the initial trigger percentage or the user scrolls\n\t\t\t// intentionally down.\n\t\t\tif (\n\t\t\t\tscrollY === 0 &&\n\t\t\t\trelativeScrollPosition < initialTriggerPercentage &&\n\t\t\t\tisLastEditableNode()\n\t\t\t) {\n\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst scrollContainerHeight = windowScroll\n\t\t\t\t? defaultView.innerHeight\n\t\t\t\t: scrollContainer.clientHeight;\n\n\t\t\t// Abort if the target scroll position would scroll the caret out of\n\t\t\t// view.\n\t\t\tif (\n\t\t\t\t// The caret is under the lower fold.\n\t\t\t\tcaretRect.top + caretRect.height >\n\t\t\t\t\tscrollContainerY + scrollContainerHeight ||\n\t\t\t\t// The caret is above the upper fold.\n\t\t\t\tcaretRect.top < scrollContainerY\n\t\t\t) {\n\t\t\t\t// Reset the caret position to maintain.\n\t\t\t\tcaretRect = currentCaretRect;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( windowScroll ) {\n\t\t\t\tdefaultView.scrollBy( 0, diff );\n\t\t\t} else {\n\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Adds a `selectionchange` listener to reset the scroll position to be\n\t\t * maintained.\n\t\t */\n\t\tfunction addSelectionChangeListener() {\n\t\t\townerDocument.addEventListener(\n\t\t\t\t'selectionchange',\n\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Resets the scroll position to be maintained during a `selectionchange`\n\t\t * event. Also removes the listener, so it acts as a one-time listener.\n\t\t */\n\t\tfunction computeCaretRectOnSelectionChange() {\n\t\t\townerDocument.removeEventListener(\n\t\t\t\t'selectionchange',\n\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t);\n\t\t\tcomputeCaretRectangle();\n\t\t}\n\n\t\t/**\n\t\t * Resets the scroll position to be maintained.\n\t\t */\n\t\tfunction computeCaretRectangle() {\n\t\t\tif ( isSelectionEligibleForScroll() ) {\n\t\t\t\tcaretRect = computeCaretRect( defaultView );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Returns the editable element owning the selection: the active\n\t\t * element, or, when a focused editing host contains the node\n\t\t * (a selected block supports `editableRoot`), the editable\n\t\t * element containing the selection.\n\t\t */\n\t\tfunction getActiveEditableElement() {\n\t\t\tconst { activeElement } = ownerDocument;\n\n\t\t\tif ( ! activeElement ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t! activeElement.isContentEditable ||\n\t\t\t\t! activeElement.contains( node )\n\t\t\t) {\n\t\t\t\treturn activeElement;\n\t\t\t}\n\n\t\t\tconst { anchorNode } = defaultView.getSelection();\n\n\t\t\tif ( ! anchorNode ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst element =\n\t\t\t\tanchorNode.nodeType === anchorNode.ELEMENT_NODE\n\t\t\t\t\t? anchorNode\n\t\t\t\t\t: anchorNode.parentElement;\n\t\t\treturn element?.closest( '[contenteditable=\"true\"]' ) ?? null;\n\t\t}\n\n\t\t/**\n\t\t * Checks if the current situation is eligible for scroll:\n\t\t * - The component must contain the selection.\n\t\t * - The active element must be contenteditable.\n\t\t */\n\t\tfunction isSelectionEligibleForScroll() {\n\t\t\tconst activeEditableElement = getActiveEditableElement();\n\t\t\treturn (\n\t\t\t\t!! activeEditableElement &&\n\t\t\t\tnode.contains( activeEditableElement ) &&\n\t\t\t\tactiveEditableElement.isContentEditable\n\t\t\t);\n\t\t}\n\n\t\tfunction isLastEditableNode() {\n\t\t\tconst editableNodes = node.querySelectorAll(\n\t\t\t\t'[contenteditable=\"true\"]'\n\t\t\t);\n\t\t\tconst lastEditableNode = editableNodes[ editableNodes.length - 1 ];\n\t\t\treturn lastEditableNode === getActiveEditableElement();\n\t\t}\n\n\t\t// When the user scrolls or resizes, the scroll position should be\n\t\t// reset.\n\t\tdefaultView.addEventListener( 'scroll', onScrollResize, true );\n\t\tdefaultView.addEventListener( 'resize', onScrollResize, true );\n\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\tnode.addEventListener( 'keyup', maintainCaretPosition );\n\t\tnode.addEventListener( 'mousedown', addSelectionChangeListener );\n\t\tnode.addEventListener( 'touchstart', addSelectionChangeListener );\n\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'scroll', onScrollResize, true );\n\t\t\tdefaultView.removeEventListener( 'resize', onScrollResize, true );\n\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\tnode.removeEventListener( 'keyup', maintainCaretPosition );\n\t\t\tnode.removeEventListener( 'mousedown', addSelectionChangeListener );\n\t\t\tnode.removeEventListener(\n\t\t\t\t'touchstart',\n\t\t\t\taddSelectionChangeListener\n\t\t\t);\n\n\t\t\townerDocument.removeEventListener(\n\t\t\t\t'selectionchange',\n\t\t\t\tcomputeCaretRectOnSelectionChange\n\t\t\t);\n\n\t\t\tdefaultView.cancelAnimationFrame( scrollResizeRafId );\n\t\t\tdefaultView.cancelAnimationFrame( onKeyDownRafId );\n\t\t};\n\t}, [] );\n}\n\nfunction Typewriter( { children } ) {\n\treturn (\n\t\t<div ref={ useTypewriter() } className=\"block-editor__typewriter\">\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\n/**\n * The exported component. The implementation of Typewriter faced technical\n * challenges in Internet Explorer, and is simply skipped, rendering the given\n * props children instead.\n *\n * @type {Component}\n */\nconst TypewriterOrIEBypass = isIE ? ( props ) => props.children : Typewriter;\n\n/**\n * Ensures that the text selection keeps the same vertical distance from the\n * viewport during keyboard events within this component. The vertical distance\n * can vary. It is the last clicked or scrolled to position.\n */\nexport default TypewriterOrIEBypass;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }