@wordpress/block-editor 12.16.0 → 12.16.1-next.79a6196f.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 (650) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -6
  3. package/build/components/block-canvas/index.js +0 -2
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-draggable/draggable-chip.js +6 -1
  8. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  9. package/build/components/block-draggable/index.js +76 -6
  10. package/build/components/block-draggable/index.js.map +1 -1
  11. package/build/components/block-draggable/index.native.js +0 -6
  12. package/build/components/block-draggable/index.native.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  14. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  15. package/build/components/block-editing-mode/index.js +2 -3
  16. package/build/components/block-editing-mode/index.js.map +1 -1
  17. package/build/components/block-inspector/index.js +1 -1
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-list-item-cell.native.js +1 -0
  20. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  21. package/build/components/block-list/block.js +245 -102
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/block.native.js +46 -20
  24. package/build/components/block-list/block.native.js.map +1 -1
  25. package/build/components/block-list/index.native.js +3 -5
  26. package/build/components/block-list/index.native.js.map +1 -1
  27. package/build/components/block-list/private-block-context.js +14 -0
  28. package/build/components/block-list/private-block-context.js.map +1 -0
  29. package/build/components/block-list/use-block-props/index.js +33 -96
  30. package/build/components/block-list/use-block-props/index.js.map +1 -1
  31. package/build/components/block-list/use-in-between-inserter.js +3 -2
  32. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  33. package/build/components/block-list/use-scroll-upon-insertion.native.js +41 -0
  34. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  35. package/build/components/block-lock/toolbar.js +21 -27
  36. package/build/components/block-lock/toolbar.js.map +1 -1
  37. package/build/components/block-mover/index.js +2 -1
  38. package/build/components/block-mover/index.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +4 -4
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-switcher/index.js +4 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +1 -2
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/block-toolbar-popover.js +0 -2
  46. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  47. package/build/components/block-variation-transforms/index.js +29 -2
  48. package/build/components/block-variation-transforms/index.js.map +1 -1
  49. package/build/components/border-radius-control/linked-button.js +1 -1
  50. package/build/components/border-radius-control/linked-button.js.map +1 -1
  51. package/build/components/colors/utils.js +10 -2
  52. package/build/components/colors/utils.js.map +1 -1
  53. package/build/components/colors/with-colors.js +6 -2
  54. package/build/components/colors/with-colors.js.map +1 -1
  55. package/build/components/font-sizes/utils.js +10 -2
  56. package/build/components/font-sizes/utils.js.map +1 -1
  57. package/build/components/global-styles/border-panel.js +2 -1
  58. package/build/components/global-styles/border-panel.js.map +1 -1
  59. package/build/components/global-styles/color-panel.js +2 -1
  60. package/build/components/global-styles/color-panel.js.map +1 -1
  61. package/build/components/global-styles/dimensions-panel.js +4 -3
  62. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  63. package/build/components/global-styles/effects-panel.js +2 -1
  64. package/build/components/global-styles/effects-panel.js.map +1 -1
  65. package/build/components/global-styles/filters-panel.js +1 -4
  66. package/build/components/global-styles/filters-panel.js.map +1 -1
  67. package/build/components/global-styles/get-global-styles-changes.js +192 -0
  68. package/build/components/global-styles/get-global-styles-changes.js.map +1 -0
  69. package/build/components/global-styles/hooks.js +3 -2
  70. package/build/components/global-styles/hooks.js.map +1 -1
  71. package/build/components/global-styles/image-settings-panel.js +7 -1
  72. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  73. package/build/components/global-styles/index.js +7 -0
  74. package/build/components/global-styles/index.js.map +1 -1
  75. package/build/components/global-styles/typography-panel.js +33 -15
  76. package/build/components/global-styles/typography-panel.js.map +1 -1
  77. package/build/components/global-styles/use-global-styles-output.js +22 -8
  78. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  79. package/build/components/global-styles/utils.js +8 -1
  80. package/build/components/global-styles/utils.js.map +1 -1
  81. package/build/components/height-control/index.js +6 -2
  82. package/build/components/height-control/index.js.map +1 -1
  83. package/build/components/image-size-control/index.js +2 -2
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.native.js +6 -5
  86. package/build/components/index.native.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +61 -22
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +18 -4
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  92. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  93. package/build/components/inner-blocks/use-nested-settings-update.js +5 -9
  94. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  95. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  96. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  97. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -9
  98. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab/patterns-filter.js +10 -10
  100. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  101. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +9 -9
  102. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  103. package/build/components/inserter/block-patterns-tab/utils.js +10 -14
  104. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  105. package/build/components/inserter/hooks/use-block-types-state.js +4 -14
  106. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  107. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  108. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  109. package/build/components/inserter/index.js +1 -2
  110. package/build/components/inserter/index.js.map +1 -1
  111. package/build/components/inserter/library.js +3 -7
  112. package/build/components/inserter/library.js.map +1 -1
  113. package/build/components/inserter/menu.js +14 -28
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/tabs.js +21 -21
  116. package/build/components/inserter/tabs.js.map +1 -1
  117. package/build/components/inserter-draggable-blocks/index.js +1 -1
  118. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +2 -4
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/block-support-tools-panel.js +3 -1
  122. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  123. package/build/components/inspector-controls-tabs/index.js +34 -23
  124. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  125. package/build/components/list-view/block-select-button.js +4 -0
  126. package/build/components/list-view/block-select-button.js.map +1 -1
  127. package/build/components/list-view/block.js +57 -3
  128. package/build/components/list-view/block.js.map +1 -1
  129. package/build/components/media-upload-progress/constants.js +19 -0
  130. package/build/components/media-upload-progress/constants.js.map +1 -0
  131. package/build/components/media-upload-progress/index.native.js +42 -17
  132. package/build/components/media-upload-progress/index.native.js.map +1 -1
  133. package/build/components/navigable-toolbar/index.js +9 -14
  134. package/build/components/navigable-toolbar/index.js.map +1 -1
  135. package/build/components/plain-text/index.native.js +8 -3
  136. package/build/components/plain-text/index.native.js.map +1 -1
  137. package/build/components/provider/index.js +3 -1
  138. package/build/components/provider/index.js.map +1 -1
  139. package/build/components/provider/use-block-sync.js +7 -1
  140. package/build/components/provider/use-block-sync.js.map +1 -1
  141. package/build/components/rich-text/index.js +17 -7
  142. package/build/components/rich-text/index.js.map +1 -1
  143. package/build/components/rich-text/native/index.native.js +16 -24
  144. package/build/components/rich-text/native/index.native.js.map +1 -1
  145. package/build/components/rich-text/use-input-rules.js +2 -2
  146. package/build/components/rich-text/use-input-rules.js.map +1 -1
  147. package/build/components/rich-text/use-mark-persistent.js +1 -1
  148. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  149. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  150. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  151. package/build/components/url-input/index.js +9 -6
  152. package/build/components/url-input/index.js.map +1 -1
  153. package/build/components/use-block-commands/index.js +14 -18
  154. package/build/components/use-block-commands/index.js.map +1 -1
  155. package/build/components/use-block-drop-zone/index.js +51 -22
  156. package/build/components/use-block-drop-zone/index.js.map +1 -1
  157. package/build/components/use-moving-animation/index.js +100 -92
  158. package/build/components/use-moving-animation/index.js.map +1 -1
  159. package/build/components/use-on-block-drop/index.js +8 -11
  160. package/build/components/use-on-block-drop/index.js.map +1 -1
  161. package/build/components/writing-flow/index.js +0 -1
  162. package/build/components/writing-flow/index.js.map +1 -1
  163. package/build/components/writing-flow/use-drag-selection.js +15 -4
  164. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  165. package/build/components/writing-flow/use-selection-observer.js +73 -27
  166. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  167. package/build/components/writing-flow/use-tab-nav.js +7 -4
  168. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  169. package/build/hooks/align.js +1 -1
  170. package/build/hooks/align.js.map +1 -1
  171. package/build/hooks/anchor.js +1 -1
  172. package/build/hooks/anchor.js.map +1 -1
  173. package/build/hooks/aria-label.js +9 -1
  174. package/build/hooks/aria-label.js.map +1 -1
  175. package/build/hooks/background.js +185 -20
  176. package/build/hooks/background.js.map +1 -1
  177. package/build/hooks/border.js +5 -10
  178. package/build/hooks/border.js.map +1 -1
  179. package/build/hooks/color.js +13 -11
  180. package/build/hooks/color.js.map +1 -1
  181. package/build/hooks/custom-class-name.js +1 -1
  182. package/build/hooks/custom-class-name.js.map +1 -1
  183. package/build/hooks/custom-class-name.native.js +9 -1
  184. package/build/hooks/custom-class-name.native.js.map +1 -1
  185. package/build/hooks/dimensions.js +4 -9
  186. package/build/hooks/dimensions.js.map +1 -1
  187. package/build/hooks/font-family.js +7 -3
  188. package/build/hooks/font-family.js.map +1 -1
  189. package/build/hooks/font-size.js +1 -1
  190. package/build/hooks/font-size.js.map +1 -1
  191. package/build/hooks/index.js +4 -4
  192. package/build/hooks/index.js.map +1 -1
  193. package/build/hooks/index.native.js +5 -3
  194. package/build/hooks/index.native.js.map +1 -1
  195. package/build/hooks/layout.js +10 -4
  196. package/build/hooks/layout.js.map +1 -1
  197. package/build/hooks/style.js +1 -1
  198. package/build/hooks/style.js.map +1 -1
  199. package/build/hooks/typography.js +4 -9
  200. package/build/hooks/typography.js.map +1 -1
  201. package/build/hooks/typography.native.js +43 -18
  202. package/build/hooks/typography.native.js.map +1 -1
  203. package/build/hooks/use-typography-props.js +10 -2
  204. package/build/hooks/use-typography-props.js.map +1 -1
  205. package/build/hooks/utils.js +48 -5
  206. package/build/hooks/utils.js.map +1 -1
  207. package/build/private-apis.js +2 -4
  208. package/build/private-apis.js.map +1 -1
  209. package/build/private-apis.native.js +0 -2
  210. package/build/private-apis.native.js.map +1 -1
  211. package/build/store/actions.js +0 -16
  212. package/build/store/actions.js.map +1 -1
  213. package/build/store/private-actions.js +51 -5
  214. package/build/store/private-actions.js.map +1 -1
  215. package/build/store/private-selectors.js +12 -0
  216. package/build/store/private-selectors.js.map +1 -1
  217. package/build/store/reducer.js +14 -6
  218. package/build/store/reducer.js.map +1 -1
  219. package/build/store/selectors.js +1 -13
  220. package/build/store/selectors.js.map +1 -1
  221. package/build/store/undo-ignore.js +12 -0
  222. package/build/store/undo-ignore.js.map +1 -0
  223. package/build/store/utils.js +1 -1
  224. package/build/store/utils.js.map +1 -1
  225. package/build/utils/get-px-from-css-unit.js +16 -0
  226. package/build/utils/get-px-from-css-unit.js.map +1 -0
  227. package/build/utils/index.js +2 -2
  228. package/build/utils/index.js.map +1 -1
  229. package/build/utils/object.js +17 -38
  230. package/build/utils/object.js.map +1 -1
  231. package/build/utils/use-can-block-toolbar-be-focused.js +46 -0
  232. package/build/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  233. package/build-module/components/block-canvas/index.js +0 -2
  234. package/build-module/components/block-canvas/index.js.map +1 -1
  235. package/build-module/components/block-card/index.js +1 -1
  236. package/build-module/components/block-card/index.js.map +1 -1
  237. package/build-module/components/block-draggable/draggable-chip.js +6 -1
  238. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  239. package/build-module/components/block-draggable/index.js +76 -6
  240. package/build-module/components/block-draggable/index.js.map +1 -1
  241. package/build-module/components/block-draggable/index.native.js +1 -7
  242. package/build-module/components/block-draggable/index.native.js.map +1 -1
  243. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  244. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  245. package/build-module/components/block-editing-mode/index.js +3 -4
  246. package/build-module/components/block-editing-mode/index.js.map +1 -1
  247. package/build-module/components/block-inspector/index.js +1 -1
  248. package/build-module/components/block-inspector/index.js.map +1 -1
  249. package/build-module/components/block-list/block-list-item-cell.native.js +1 -0
  250. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  251. package/build-module/components/block-list/block.js +249 -106
  252. package/build-module/components/block-list/block.js.map +1 -1
  253. package/build-module/components/block-list/block.native.js +48 -22
  254. package/build-module/components/block-list/block.native.js.map +1 -1
  255. package/build-module/components/block-list/index.native.js +3 -5
  256. package/build-module/components/block-list/index.native.js.map +1 -1
  257. package/build-module/components/block-list/private-block-context.js +6 -0
  258. package/build-module/components/block-list/private-block-context.js.map +1 -0
  259. package/build-module/components/block-list/use-block-props/index.js +34 -97
  260. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  261. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  262. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  263. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +33 -0
  264. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  265. package/build-module/components/block-lock/toolbar.js +22 -28
  266. package/build-module/components/block-lock/toolbar.js.map +1 -1
  267. package/build-module/components/block-mover/index.js +2 -1
  268. package/build-module/components/block-mover/index.js.map +1 -1
  269. package/build-module/components/block-patterns-list/index.js +5 -5
  270. package/build-module/components/block-patterns-list/index.js.map +1 -1
  271. package/build-module/components/block-switcher/index.js +4 -4
  272. package/build-module/components/block-switcher/index.js.map +1 -1
  273. package/build-module/components/block-toolbar/index.js +1 -2
  274. package/build-module/components/block-toolbar/index.js.map +1 -1
  275. package/build-module/components/block-tools/block-toolbar-popover.js +0 -2
  276. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  277. package/build-module/components/block-variation-transforms/index.js +30 -3
  278. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  279. package/build-module/components/border-radius-control/linked-button.js +1 -1
  280. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  281. package/build-module/components/colors/utils.js +9 -1
  282. package/build-module/components/colors/utils.js.map +1 -1
  283. package/build-module/components/colors/with-colors.js +5 -1
  284. package/build-module/components/colors/with-colors.js.map +1 -1
  285. package/build-module/components/font-sizes/utils.js +9 -1
  286. package/build-module/components/font-sizes/utils.js.map +1 -1
  287. package/build-module/components/global-styles/border-panel.js +3 -2
  288. package/build-module/components/global-styles/border-panel.js.map +1 -1
  289. package/build-module/components/global-styles/color-panel.js +3 -2
  290. package/build-module/components/global-styles/color-panel.js.map +1 -1
  291. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  292. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  293. package/build-module/components/global-styles/effects-panel.js +3 -2
  294. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  295. package/build-module/components/global-styles/filters-panel.js +2 -5
  296. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  297. package/build-module/components/global-styles/get-global-styles-changes.js +184 -0
  298. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +3 -2
  300. package/build-module/components/global-styles/hooks.js.map +1 -1
  301. package/build-module/components/global-styles/image-settings-panel.js +7 -1
  302. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  303. package/build-module/components/global-styles/index.js +1 -0
  304. package/build-module/components/global-styles/index.js.map +1 -1
  305. package/build-module/components/global-styles/typography-panel.js +35 -17
  306. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  307. package/build-module/components/global-styles/use-global-styles-output.js +15 -1
  308. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  309. package/build-module/components/global-styles/utils.js +7 -0
  310. package/build-module/components/global-styles/utils.js.map +1 -1
  311. package/build-module/components/height-control/index.js +6 -2
  312. package/build-module/components/height-control/index.js.map +1 -1
  313. package/build-module/components/image-size-control/index.js +2 -2
  314. package/build-module/components/image-size-control/index.js.map +1 -1
  315. package/build-module/components/index.native.js +2 -1
  316. package/build-module/components/index.native.js.map +1 -1
  317. package/build-module/components/inner-blocks/index.js +62 -23
  318. package/build-module/components/inner-blocks/index.js.map +1 -1
  319. package/build-module/components/inner-blocks/index.native.js +18 -4
  320. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  321. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  323. package/build-module/components/inner-blocks/use-nested-settings-update.js +6 -10
  324. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  325. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  326. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  327. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +11 -10
  328. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  329. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +11 -11
  330. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  331. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +11 -11
  332. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab/utils.js +7 -11
  334. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  335. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -14
  336. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -2
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +1 -2
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/library.js +3 -7
  342. package/build-module/components/inserter/library.js.map +1 -1
  343. package/build-module/components/inserter/menu.js +14 -28
  344. package/build-module/components/inserter/menu.js.map +1 -1
  345. package/build-module/components/inserter/tabs.js +22 -22
  346. package/build-module/components/inserter/tabs.js.map +1 -1
  347. package/build-module/components/inserter-draggable-blocks/index.js +2 -2
  348. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  349. package/build-module/components/inserter-list-item/index.js +2 -4
  350. package/build-module/components/inserter-list-item/index.js.map +1 -1
  351. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -1
  352. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  353. package/build-module/components/inspector-controls-tabs/index.js +35 -24
  354. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  355. package/build-module/components/list-view/block-select-button.js +4 -0
  356. package/build-module/components/list-view/block-select-button.js.map +1 -1
  357. package/build-module/components/list-view/block.js +58 -4
  358. package/build-module/components/list-view/block.js.map +1 -1
  359. package/build-module/components/media-upload-progress/constants.js +7 -0
  360. package/build-module/components/media-upload-progress/constants.js.map +1 -0
  361. package/build-module/components/media-upload-progress/index.native.js +37 -8
  362. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  363. package/build-module/components/navigable-toolbar/index.js +9 -14
  364. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  365. package/build-module/components/plain-text/index.native.js +6 -1
  366. package/build-module/components/plain-text/index.native.js.map +1 -1
  367. package/build-module/components/provider/index.js +3 -1
  368. package/build-module/components/provider/index.js.map +1 -1
  369. package/build-module/components/provider/use-block-sync.js +7 -1
  370. package/build-module/components/provider/use-block-sync.js.map +1 -1
  371. package/build-module/components/rich-text/index.js +17 -7
  372. package/build-module/components/rich-text/index.js.map +1 -1
  373. package/build-module/components/rich-text/native/index.native.js +16 -23
  374. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  375. package/build-module/components/rich-text/use-input-rules.js +2 -2
  376. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  377. package/build-module/components/rich-text/use-mark-persistent.js +1 -1
  378. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  379. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  380. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  381. package/build-module/components/url-input/index.js +9 -6
  382. package/build-module/components/url-input/index.js.map +1 -1
  383. package/build-module/components/use-block-commands/index.js +14 -18
  384. package/build-module/components/use-block-commands/index.js.map +1 -1
  385. package/build-module/components/use-block-drop-zone/index.js +51 -23
  386. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  387. package/build-module/components/use-moving-animation/index.js +102 -94
  388. package/build-module/components/use-moving-animation/index.js.map +1 -1
  389. package/build-module/components/use-on-block-drop/index.js +8 -11
  390. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  391. package/build-module/components/writing-flow/index.js +0 -1
  392. package/build-module/components/writing-flow/index.js.map +1 -1
  393. package/build-module/components/writing-flow/use-drag-selection.js +15 -4
  394. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  395. package/build-module/components/writing-flow/use-selection-observer.js +73 -27
  396. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  397. package/build-module/components/writing-flow/use-tab-nav.js +7 -4
  398. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  399. package/build-module/hooks/align.js +1 -1
  400. package/build-module/hooks/align.js.map +1 -1
  401. package/build-module/hooks/anchor.js +1 -1
  402. package/build-module/hooks/anchor.js.map +1 -1
  403. package/build-module/hooks/aria-label.js +7 -1
  404. package/build-module/hooks/aria-label.js.map +1 -1
  405. package/build-module/hooks/background.js +181 -19
  406. package/build-module/hooks/background.js.map +1 -1
  407. package/build-module/hooks/border.js +2 -8
  408. package/build-module/hooks/border.js.map +1 -1
  409. package/build-module/hooks/color.js +11 -9
  410. package/build-module/hooks/color.js.map +1 -1
  411. package/build-module/hooks/custom-class-name.js +1 -1
  412. package/build-module/hooks/custom-class-name.js.map +1 -1
  413. package/build-module/hooks/custom-class-name.native.js +7 -1
  414. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  415. package/build-module/hooks/dimensions.js +1 -7
  416. package/build-module/hooks/dimensions.js.map +1 -1
  417. package/build-module/hooks/font-family.js +6 -2
  418. package/build-module/hooks/font-family.js.map +1 -1
  419. package/build-module/hooks/font-size.js +1 -1
  420. package/build-module/hooks/font-size.js.map +1 -1
  421. package/build-module/hooks/index.js +5 -5
  422. package/build-module/hooks/index.js.map +1 -1
  423. package/build-module/hooks/index.native.js +6 -4
  424. package/build-module/hooks/index.native.js.map +1 -1
  425. package/build-module/hooks/layout.js +9 -3
  426. package/build-module/hooks/layout.js.map +1 -1
  427. package/build-module/hooks/style.js +1 -1
  428. package/build-module/hooks/style.js.map +1 -1
  429. package/build-module/hooks/typography.js +1 -7
  430. package/build-module/hooks/typography.js.map +1 -1
  431. package/build-module/hooks/typography.native.js +43 -17
  432. package/build-module/hooks/typography.native.js.map +1 -1
  433. package/build-module/hooks/use-typography-props.js +9 -1
  434. package/build-module/hooks/use-typography-props.js.map +1 -1
  435. package/build-module/hooks/utils.js +47 -5
  436. package/build-module/hooks/utils.js.map +1 -1
  437. package/build-module/private-apis.js +2 -4
  438. package/build-module/private-apis.js.map +1 -1
  439. package/build-module/private-apis.native.js +0 -2
  440. package/build-module/private-apis.native.js.map +1 -1
  441. package/build-module/store/actions.js +0 -15
  442. package/build-module/store/actions.js.map +1 -1
  443. package/build-module/store/private-actions.js +49 -4
  444. package/build-module/store/private-actions.js.map +1 -1
  445. package/build-module/store/private-selectors.js +11 -0
  446. package/build-module/store/private-selectors.js.map +1 -1
  447. package/build-module/store/reducer.js +14 -6
  448. package/build-module/store/reducer.js.map +1 -1
  449. package/build-module/store/selectors.js +1 -12
  450. package/build-module/store/selectors.js.map +1 -1
  451. package/build-module/store/undo-ignore.js +5 -0
  452. package/build-module/store/undo-ignore.js.map +1 -0
  453. package/build-module/store/utils.js +2 -2
  454. package/build-module/store/utils.js.map +1 -1
  455. package/build-module/utils/get-px-from-css-unit.js +9 -0
  456. package/build-module/utils/get-px-from-css-unit.js.map +1 -0
  457. package/build-module/utils/index.js +1 -1
  458. package/build-module/utils/index.js.map +1 -1
  459. package/build-module/utils/object.js +16 -37
  460. package/build-module/utils/object.js.map +1 -1
  461. package/build-module/utils/use-can-block-toolbar-be-focused.js +40 -0
  462. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  463. package/build-style/content-rtl.css +7 -6
  464. package/build-style/content.css +7 -6
  465. package/build-style/style-rtl.css +51 -8
  466. package/build-style/style.css +51 -8
  467. package/package.json +31 -31
  468. package/src/components/alignment-control/README.md +0 -5
  469. package/src/components/block-alignment-control/README.md +0 -5
  470. package/src/components/block-alignment-matrix-control/README.md +0 -10
  471. package/src/components/block-breadcrumb/README.md +0 -5
  472. package/src/components/block-canvas/index.js +0 -2
  473. package/src/components/block-canvas/style.scss +6 -0
  474. package/src/components/block-caption/README.md +0 -5
  475. package/src/components/block-card/README.md +0 -5
  476. package/src/components/block-card/index.js +1 -1
  477. package/src/components/block-draggable/draggable-chip.js +11 -1
  478. package/src/components/block-draggable/index.js +116 -4
  479. package/src/components/block-draggable/index.native.js +0 -5
  480. package/src/components/block-draggable/style.scss +35 -0
  481. package/src/components/block-draggable/test/helpers.native.js +8 -7
  482. package/src/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  483. package/src/components/block-editing-mode/index.js +3 -3
  484. package/src/components/block-icon/README.md +0 -5
  485. package/src/components/block-inspector/README.md +0 -5
  486. package/src/components/block-inspector/index.js +3 -1
  487. package/src/components/block-list/block-list-item-cell.native.js +5 -1
  488. package/src/components/block-list/block.js +290 -119
  489. package/src/components/block-list/block.native.js +55 -21
  490. package/src/components/block-list/content.scss +14 -10
  491. package/src/components/block-list/index.native.js +3 -5
  492. package/src/components/block-list/{block-list-block-context.js → private-block-context.js} +1 -1
  493. package/src/components/block-list/use-block-props/index.js +32 -128
  494. package/src/components/block-list/use-in-between-inserter.js +4 -1
  495. package/src/components/block-list/use-scroll-upon-insertion.native.js +52 -0
  496. package/src/components/block-lock/toolbar.js +23 -34
  497. package/src/components/block-mover/README.md +0 -5
  498. package/src/components/block-mover/index.js +1 -1
  499. package/src/components/block-parent-selector/README.md +0 -5
  500. package/src/components/block-patterns-list/README.md +0 -5
  501. package/src/components/block-patterns-list/index.js +8 -5
  502. package/src/components/block-switcher/index.js +49 -59
  503. package/src/components/block-toolbar/README.md +0 -5
  504. package/src/components/block-toolbar/index.js +1 -2
  505. package/src/components/block-tools/block-toolbar-popover.js +4 -10
  506. package/src/components/block-types-list/README.md +0 -5
  507. package/src/components/block-variation-picker/README.md +0 -5
  508. package/src/components/block-variation-transforms/README.md +0 -5
  509. package/src/components/block-variation-transforms/index.js +49 -3
  510. package/src/components/border-radius-control/linked-button.js +1 -1
  511. package/src/components/caption/README.md +0 -5
  512. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -1
  513. package/src/components/colors/utils.js +8 -1
  514. package/src/components/colors/with-colors.js +3 -1
  515. package/src/components/contrast-checker/README.md +0 -4
  516. package/src/components/copy-handler/README.md +0 -10
  517. package/src/components/font-sizes/utils.js +7 -1
  518. package/src/components/global-styles/border-panel.js +2 -1
  519. package/src/components/global-styles/color-panel.js +2 -1
  520. package/src/components/global-styles/dimensions-panel.js +4 -3
  521. package/src/components/global-styles/effects-panel.js +2 -1
  522. package/src/components/global-styles/filters-panel.js +2 -5
  523. package/src/components/global-styles/get-global-styles-changes.js +210 -0
  524. package/src/components/global-styles/hooks.js +5 -0
  525. package/src/components/global-styles/image-settings-panel.js +6 -0
  526. package/src/components/global-styles/index.js +1 -0
  527. package/src/components/global-styles/test/get-global-styles-changes.js +234 -0
  528. package/src/components/global-styles/typography-panel.js +47 -14
  529. package/src/components/global-styles/use-global-styles-output.js +9 -5
  530. package/src/components/global-styles/utils.js +7 -0
  531. package/src/components/height-control/README.md +2 -7
  532. package/src/components/height-control/index.js +4 -0
  533. package/src/components/image-size-control/index.js +5 -2
  534. package/src/components/index.native.js +2 -2
  535. package/src/components/inner-blocks/index.js +68 -29
  536. package/src/components/inner-blocks/index.native.js +19 -7
  537. package/src/components/inner-blocks/use-inner-block-template-sync.js +5 -7
  538. package/src/components/inner-blocks/use-nested-settings-update.js +6 -13
  539. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  540. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +15 -15
  541. package/src/components/inserter/block-patterns-tab/patterns-filter.js +15 -13
  542. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +15 -18
  543. package/src/components/inserter/block-patterns-tab/utils.js +11 -12
  544. package/src/components/inserter/hooks/use-block-types-state.js +9 -11
  545. package/src/components/inserter/hooks/use-patterns-state.js +2 -2
  546. package/src/components/inserter/index.js +0 -1
  547. package/src/components/inserter/library.js +2 -8
  548. package/src/components/inserter/menu.js +13 -31
  549. package/src/components/inserter/style.scss +6 -4
  550. package/src/components/inserter/tabs.js +34 -25
  551. package/src/components/inserter-draggable-blocks/index.js +2 -2
  552. package/src/components/inserter-list-item/index.js +6 -6
  553. package/src/components/inspector-controls/block-support-tools-panel.js +2 -0
  554. package/src/components/inspector-controls-tabs/index.js +39 -28
  555. package/src/components/inspector-controls-tabs/style.scss +3 -2
  556. package/src/components/letter-spacing-control/README.md +0 -5
  557. package/src/components/line-height-control/README.md +0 -5
  558. package/src/components/list-view/README.md +0 -5
  559. package/src/components/list-view/block-select-button.js +4 -0
  560. package/src/components/list-view/block.js +73 -2
  561. package/src/components/list-view/style.scss +6 -0
  562. package/src/components/media-upload-progress/constants.js +6 -0
  563. package/src/components/media-upload-progress/index.native.js +66 -14
  564. package/src/components/media-upload-progress/test/index.native.js +2 -2
  565. package/src/components/multi-selection-inspector/README.md +0 -5
  566. package/src/components/navigable-toolbar/index.js +13 -11
  567. package/src/components/plain-text/index.native.js +6 -1
  568. package/src/components/provider/index.js +1 -1
  569. package/src/components/provider/test/use-block-sync.js +20 -17
  570. package/src/components/provider/use-block-sync.js +6 -0
  571. package/src/components/rich-text/index.js +18 -6
  572. package/src/components/rich-text/native/index.native.js +16 -24
  573. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +3 -3
  574. package/src/components/rich-text/native/test/index.native.js +72 -5
  575. package/src/components/rich-text/use-input-rules.js +2 -2
  576. package/src/components/rich-text/use-mark-persistent.js +1 -2
  577. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  578. package/src/components/text-decoration-control/README.md +40 -0
  579. package/src/components/text-transform-control/README.md +0 -4
  580. package/src/components/ungroup-button/README.md +0 -5
  581. package/src/components/unit-control/README.md +0 -4
  582. package/src/components/url-input/index.js +11 -11
  583. package/src/components/use-block-commands/index.js +18 -21
  584. package/src/components/use-block-drop-zone/index.js +85 -34
  585. package/src/components/use-moving-animation/index.js +107 -103
  586. package/src/components/use-on-block-drop/index.js +7 -23
  587. package/src/components/use-on-block-drop/test/index.js +12 -26
  588. package/src/components/use-resize-canvas/README.md +0 -4
  589. package/src/components/use-settings/README.md +0 -4
  590. package/src/components/writing-flow/index.js +0 -1
  591. package/src/components/writing-flow/use-drag-selection.js +18 -4
  592. package/src/components/writing-flow/use-selection-observer.js +99 -37
  593. package/src/components/writing-flow/use-tab-nav.js +7 -7
  594. package/src/hooks/align.js +1 -5
  595. package/src/hooks/anchor.js +1 -5
  596. package/src/hooks/aria-label.js +8 -5
  597. package/src/hooks/background.js +253 -21
  598. package/src/hooks/border.js +2 -13
  599. package/src/hooks/color.js +19 -14
  600. package/src/hooks/custom-class-name.js +1 -5
  601. package/src/hooks/custom-class-name.native.js +8 -5
  602. package/src/hooks/dimensions.js +1 -7
  603. package/src/hooks/font-family.js +4 -7
  604. package/src/hooks/font-size.js +1 -6
  605. package/src/hooks/index.js +19 -5
  606. package/src/hooks/index.native.js +17 -4
  607. package/src/hooks/layout.js +5 -2
  608. package/src/hooks/style.js +1 -6
  609. package/src/hooks/test/anchor.js +4 -9
  610. package/src/hooks/test/custom-class-name.js +3 -8
  611. package/src/hooks/test/style.js +4 -14
  612. package/src/hooks/typography.js +1 -7
  613. package/src/hooks/typography.native.js +31 -33
  614. package/src/hooks/use-typography-props.js +7 -1
  615. package/src/hooks/utils.js +76 -6
  616. package/src/private-apis.js +2 -4
  617. package/src/private-apis.native.js +0 -2
  618. package/src/store/actions.js +0 -15
  619. package/src/store/private-actions.js +44 -4
  620. package/src/store/private-selectors.js +11 -0
  621. package/src/store/reducer.js +16 -5
  622. package/src/store/selectors.js +5 -13
  623. package/src/store/undo-ignore.js +4 -0
  624. package/src/store/utils.js +2 -2
  625. package/src/style.scss +1 -0
  626. package/src/utils/get-px-from-css-unit.js +8 -0
  627. package/src/utils/index.js +1 -1
  628. package/src/utils/object.js +16 -35
  629. package/src/utils/test/object.js +1 -96
  630. package/src/utils/use-can-block-toolbar-be-focused.js +48 -0
  631. package/build/components/block-list/block-list-block-context.js +0 -14
  632. package/build/components/block-list/block-list-block-context.js.map +0 -1
  633. package/build/hooks/custom-fields.js +0 -106
  634. package/build/hooks/custom-fields.js.map +0 -1
  635. package/build/utils/parse-css-unit-to-px.js +0 -302
  636. package/build/utils/parse-css-unit-to-px.js.map +0 -1
  637. package/build/utils/use-should-contextual-toolbar-show.js +0 -63
  638. package/build/utils/use-should-contextual-toolbar-show.js.map +0 -1
  639. package/build-module/components/block-list/block-list-block-context.js +0 -6
  640. package/build-module/components/block-list/block-list-block-context.js.map +0 -1
  641. package/build-module/hooks/custom-fields.js +0 -99
  642. package/build-module/hooks/custom-fields.js.map +0 -1
  643. package/build-module/utils/parse-css-unit-to-px.js +0 -294
  644. package/build-module/utils/parse-css-unit-to-px.js.map +0 -1
  645. package/build-module/utils/use-should-contextual-toolbar-show.js +0 -57
  646. package/build-module/utils/use-should-contextual-toolbar-show.js.map +0 -1
  647. package/src/hooks/custom-fields.js +0 -115
  648. package/src/utils/parse-css-unit-to-px.js +0 -329
  649. package/src/utils/test/parse-css-unit-to-px.js +0 -172
  650. package/src/utils/use-should-contextual-toolbar-show.js +0 -85
@@ -1,329 +0,0 @@
1
- /**
2
- * Converts string to object { value, unit }.
3
- *
4
- * @param {string} cssUnit
5
- * @return {Object} parsedUnit
6
- */
7
- function parseUnit( cssUnit ) {
8
- const match = cssUnit
9
- ?.trim()
10
- .match(
11
- /^(0?[-.]?\d*\.?\d+)(r?e[m|x]|v[h|w|min|max]+|p[x|t|c]|[c|m]m|%|in|ch|Q|lh)$/
12
- );
13
- if ( ! isNaN( cssUnit ) && ! isNaN( parseFloat( cssUnit ) ) ) {
14
- return { value: parseFloat( cssUnit ), unit: 'px' };
15
- }
16
- return match
17
- ? { value: parseFloat( match[ 1 ] ) || match[ 1 ], unit: match[ 2 ] }
18
- : { value: cssUnit, unit: undefined };
19
- }
20
- /**
21
- * Evaluate a math expression.
22
- *
23
- * @param {string} expression
24
- * @return {number} evaluated expression.
25
- */
26
- function calculate( expression ) {
27
- try {
28
- return Function( `'use strict'; return (${ expression })` )();
29
- } catch ( err ) {
30
- return null;
31
- }
32
- }
33
-
34
- /**
35
- * Calculates the css function value for the supported css functions such as max, min, clamp and calc.
36
- *
37
- * @param {string} functionUnitValue string should be in a particular format (for example min(12px,12px) ) no nested loops.
38
- * @param {Object} options
39
- * @return {string} unit containing the unit in PX.
40
- */
41
- function getFunctionUnitValue( functionUnitValue, options ) {
42
- const functionUnit = functionUnitValue.split( /[(),]/g ).filter( Boolean );
43
-
44
- const units = functionUnit
45
- .slice( 1 )
46
- .map( ( unit ) => parseUnit( getPxFromCssUnit( unit, options ) ).value )
47
- .filter( Boolean );
48
-
49
- switch ( functionUnit[ 0 ] ) {
50
- case 'min':
51
- return Math.min( ...units ) + 'px';
52
- case 'max':
53
- return Math.max( ...units ) + 'px';
54
- case 'clamp':
55
- if ( units.length !== 3 ) {
56
- return null;
57
- }
58
- if ( units[ 1 ] < units[ 0 ] ) {
59
- return units[ 0 ] + 'px';
60
- }
61
- if ( units[ 1 ] > units[ 2 ] ) {
62
- return units[ 2 ] + 'px';
63
- }
64
- return units[ 1 ] + 'px';
65
- case 'calc':
66
- return units[ 0 ] + 'px';
67
- }
68
- }
69
-
70
- /**
71
- * Take a css function such as min, max, calc, clamp and returns parsedUnit
72
- *
73
- * How this works for the nested function is that it first replaces the inner function call.
74
- * Then it tackles the outer onces.
75
- * So for example: min( max(25px, 35px), 40px )
76
- * in the first pass we would replace max(25px, 35px) with 35px.
77
- * then we would try to evaluate min( 35px, 40px )
78
- * and then finally return 35px.
79
- *
80
- * @param {string} cssUnit
81
- * @return {Object} parsedUnit object.
82
- */
83
- function parseUnitFunction( cssUnit ) {
84
- while ( true ) {
85
- const currentCssUnit = cssUnit;
86
- const regExp = /(max|min|calc|clamp)\(([^()]*)\)/g;
87
- const matches = regExp.exec( cssUnit ) || [];
88
- if ( matches[ 0 ] ) {
89
- const functionUnitValue = getFunctionUnitValue( matches[ 0 ] );
90
- cssUnit = cssUnit.replace( matches[ 0 ], functionUnitValue );
91
- }
92
-
93
- // If the unit hasn't been modified or we have a single value break free.
94
- if ( cssUnit === currentCssUnit || parseFloat( cssUnit ) ) {
95
- break;
96
- }
97
- }
98
-
99
- return parseUnit( cssUnit );
100
- }
101
- /**
102
- * Return true if we think this is a math expression.
103
- *
104
- * @param {string} cssUnit the cssUnit value being evaluted.
105
- * @return {boolean} Whether the cssUnit is a math expression.
106
- */
107
- function isMathExpression( cssUnit ) {
108
- for ( let i = 0; i < cssUnit.length; i++ ) {
109
- if ( [ '+', '-', '/', '*' ].includes( cssUnit[ i ] ) ) {
110
- return true;
111
- }
112
- }
113
- return false;
114
- }
115
- /**
116
- * Evaluates the math expression and return a px value.
117
- *
118
- * @param {string} cssUnit the cssUnit value being evaluted.
119
- * @return {string} return a converfted value to px.
120
- */
121
- function evalMathExpression( cssUnit ) {
122
- let errorFound = false;
123
- // Convert every part of the expression to px values.
124
- // The following regex matches numbers that have a following unit
125
- // E.g. 5.25rem, 1vw
126
- const cssUnitsBits = cssUnit.match( /\d+\.?\d*[a-zA-Z]+|\.\d+[a-zA-Z]+/g );
127
- if ( cssUnitsBits ) {
128
- for ( const unit of cssUnitsBits ) {
129
- // Standardize the unit to px and extract the value.
130
- const parsedUnit = parseUnit( getPxFromCssUnit( unit ) );
131
- if ( ! parseFloat( parsedUnit.value ) ) {
132
- errorFound = true;
133
- // End early since we are dealing with a null value.
134
- break;
135
- }
136
- cssUnit = cssUnit.replace( unit, parsedUnit.value );
137
- }
138
- } else {
139
- errorFound = true;
140
- }
141
-
142
- // For mixed math expressions wrapped within CSS expressions
143
- const expressionsMatches = cssUnit.match( /(max|min|clamp)/g );
144
- if ( ! errorFound && expressionsMatches ) {
145
- const values = cssUnit.split( ',' );
146
- for ( const currentValue of values ) {
147
- // Check for nested calc() and remove them to calculate the value.
148
- const rawCurrentValue = currentValue.replace( /\s|calc/g, '' );
149
-
150
- if ( isMathExpression( rawCurrentValue ) ) {
151
- const calculatedExpression = calculate( rawCurrentValue );
152
-
153
- if ( calculatedExpression ) {
154
- const calculatedValue =
155
- calculatedExpression.toFixed( 0 ) + 'px';
156
- cssUnit = cssUnit.replace( currentValue, calculatedValue );
157
- }
158
- }
159
- }
160
- const parsedValue = parseUnitFunction( cssUnit );
161
- return ! parsedValue ? null : parsedValue.value + parsedValue.unit;
162
- }
163
-
164
- if ( errorFound ) {
165
- return null;
166
- }
167
-
168
- const calculatedResult = calculate( cssUnit );
169
- return calculatedResult ? calculatedResult.toFixed( 0 ) + 'px' : null;
170
- }
171
-
172
- /**
173
- * Convert a parsedUnit object to px value.
174
- *
175
- * @param {Object} parsedUnit
176
- * @param {Object} options
177
- * @return {string} or {null} returns the converted with in a px value format.
178
- */
179
- function convertParsedUnitToPx( parsedUnit, options ) {
180
- const PIXELS_PER_INCH = 96;
181
- const ONE_PERCENT = 0.01;
182
-
183
- const defaultProperties = {
184
- fontSize: 16,
185
- lineHeight: 16,
186
- width: 375,
187
- height: 812,
188
- type: 'font',
189
- };
190
-
191
- const setOptions = Object.assign( {}, defaultProperties, options );
192
-
193
- const relativeUnits = {
194
- em: setOptions.fontSize,
195
- rem: setOptions.fontSize,
196
- vh: setOptions.height * ONE_PERCENT,
197
- vw: setOptions.width * ONE_PERCENT,
198
- vmin:
199
- ( setOptions.width < setOptions.height
200
- ? setOptions.width
201
- : setOptions.height ) * ONE_PERCENT,
202
- vmax:
203
- ( setOptions.width > setOptions.height
204
- ? setOptions.width
205
- : setOptions.height ) * ONE_PERCENT,
206
- '%':
207
- ( setOptions.type === 'font'
208
- ? setOptions.fontSize
209
- : setOptions.width ) * ONE_PERCENT,
210
- ch: 8, // The advance measure (width) of the glyph "0" of the element's font. Approximate
211
- ex: 7.15625, // X-height of the element's font. Approximate.
212
- lh: setOptions.lineHeight,
213
- };
214
- relativeUnits.svw = relativeUnits.vmin;
215
- relativeUnits.lvw = relativeUnits.vmax;
216
- relativeUnits.dvw = relativeUnits.vw;
217
- relativeUnits.svh = relativeUnits.vmin;
218
- relativeUnits.lvh = relativeUnits.vmax;
219
- relativeUnits.dvh = relativeUnits.vh;
220
- relativeUnits.vi = relativeUnits.vh;
221
- relativeUnits.svi = relativeUnits.vmin;
222
- relativeUnits.lvi = relativeUnits.vmax;
223
- relativeUnits.dvi = relativeUnits.vw;
224
- relativeUnits.vb = relativeUnits.vh;
225
- relativeUnits.svb = relativeUnits.vmin;
226
- relativeUnits.lvb = relativeUnits.vmax;
227
- relativeUnits.dvb = relativeUnits.vh;
228
- relativeUnits.svmin = relativeUnits.vmin;
229
- relativeUnits.lvmin = relativeUnits.vmin;
230
- relativeUnits.dvmin = relativeUnits.vmin;
231
- relativeUnits.svmax = relativeUnits.vmax;
232
- relativeUnits.lvmax = relativeUnits.vmax;
233
- relativeUnits.dvmax = relativeUnits.vmax;
234
-
235
- const absoluteUnits = {
236
- in: PIXELS_PER_INCH,
237
- cm: PIXELS_PER_INCH / 2.54,
238
- mm: PIXELS_PER_INCH / 25.4,
239
- pt: PIXELS_PER_INCH / 72,
240
- pc: PIXELS_PER_INCH / 6,
241
- px: 1,
242
- Q: PIXELS_PER_INCH / 2.54 / 40,
243
- };
244
-
245
- if ( relativeUnits[ parsedUnit.unit ] ) {
246
- return (
247
- ( relativeUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(
248
- 0
249
- ) + 'px'
250
- );
251
- }
252
-
253
- if ( absoluteUnits[ parsedUnit.unit ] ) {
254
- return (
255
- ( absoluteUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(
256
- 0
257
- ) + 'px'
258
- );
259
- }
260
-
261
- return null;
262
- }
263
-
264
- /**
265
- * Returns the px value of a cssUnit.
266
- *
267
- * @param {string} cssUnit
268
- * @param {Object} options
269
- * @return {string} returns the cssUnit value in a simple px format.
270
- */
271
- export function getPxFromCssUnit( cssUnit, options = {} ) {
272
- if ( Number.isFinite( cssUnit ) ) {
273
- return cssUnit.toFixed( 0 ) + 'px';
274
- }
275
- if ( cssUnit === undefined ) {
276
- return null;
277
- }
278
- let parsedUnit = parseUnit( cssUnit );
279
-
280
- if ( ! parsedUnit.unit ) {
281
- parsedUnit = parseUnitFunction( cssUnit );
282
- }
283
-
284
- if ( isMathExpression( cssUnit ) && ! parsedUnit.unit ) {
285
- return evalMathExpression( cssUnit );
286
- }
287
-
288
- return convertParsedUnitToPx( parsedUnit, options );
289
- }
290
-
291
- // Use simple cache.
292
- const cache = {};
293
- /**
294
- * Returns the px value of a cssUnit. The memoized version of getPxFromCssUnit;
295
- *
296
- * @param {string} cssUnit
297
- * @param {Object} options
298
- * @return {string} returns the cssUnit value in a simple px format.
299
- */
300
- function memoizedGetPxFromCssUnit( cssUnit, options = {} ) {
301
- const hash = cssUnit + hashOptions( options );
302
-
303
- if ( ! cache[ hash ] ) {
304
- cache[ hash ] = getPxFromCssUnit( cssUnit, options );
305
- }
306
- return cache[ hash ];
307
- }
308
-
309
- function hashOptions( options ) {
310
- let hash = '';
311
- if ( options.hasOwnProperty( 'fontSize' ) ) {
312
- hash = ':' + options.width;
313
- }
314
- if ( options.hasOwnProperty( 'lineHeight' ) ) {
315
- hash = ':' + options.lineHeight;
316
- }
317
- if ( options.hasOwnProperty( 'width' ) ) {
318
- hash = ':' + options.width;
319
- }
320
- if ( options.hasOwnProperty( 'height' ) ) {
321
- hash = ':' + options.height;
322
- }
323
- if ( options.hasOwnProperty( 'type' ) ) {
324
- hash = ':' + options.type;
325
- }
326
- return hash;
327
- }
328
-
329
- export default memoizedGetPxFromCssUnit;
@@ -1,172 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import {
5
- default as memoizedGetPxFromCssUnit,
6
- getPxFromCssUnit,
7
- } from '../parse-css-unit-to-px';
8
-
9
- describe( 'getPxFromCssUnit', () => {
10
- // Absolute units.
11
- describe( 'absolute unites should return px values', () => {
12
- const testData = [
13
- [ '25px', '25px' ],
14
- [ '25.5', '26px' ],
15
- [ '1cm', '38px' ],
16
- [ '10mm', '38px' ],
17
- [ '1in', '96px' ],
18
- [ '12pt', '16px' ],
19
- [ '1pc', '16px' ],
20
- [ '40Q', '38px' ], // 40 Q should be 1 cm.
21
- ];
22
-
23
- test.each( testData )( 'getPxFromCssUnit( %s )', ( unit, expected ) => {
24
- expect( getPxFromCssUnit( unit ) ).toBe( expected );
25
- } );
26
- test.each( testData )(
27
- 'memoizedGetPxFromCssUnit( %s )',
28
- ( unit, expected ) => {
29
- expect( memoizedGetPxFromCssUnit( unit ) ).toBe( expected );
30
- }
31
- );
32
- test.each( testData )(
33
- 'cached memoizedGetPxFromCssUnit( %s )',
34
- ( unit, expected ) => {
35
- expect( memoizedGetPxFromCssUnit( unit ) ).toBe( expected );
36
- }
37
- );
38
- } );
39
-
40
- describe( 'relative unites should return px values', () => {
41
- const settings = {
42
- fontSize: 10,
43
- width: 100,
44
- height: 200,
45
- lineHeight: 2,
46
- type: 'font',
47
- };
48
-
49
- const testData = [
50
- [ '2em', '20px' ],
51
- [ '2rem', '20px' ],
52
- [ '1.125rem', '11px' ],
53
- [ '20vw', '20px' ],
54
- [ '20vh', '40px' ],
55
- [ '20vmin', '20px' ],
56
- [ '20vmax', '40px' ],
57
- [ '20lh', '40px' ],
58
- [ '120%', '12px' ],
59
- ];
60
-
61
- test.each( testData )( 'getPxFromCssUnit( %s )', ( unit, expected ) => {
62
- expect( getPxFromCssUnit( unit, settings ) ).toBe( expected );
63
- } );
64
- test.each( testData )(
65
- 'memoizedGetPxFromCssUnit( %s )',
66
- ( unit, expected ) => {
67
- expect( memoizedGetPxFromCssUnit( unit, settings ) ).toBe(
68
- expected
69
- );
70
- }
71
- );
72
- test.each( testData )(
73
- 'cached memoizedGetPxFromCssUnit( %s )',
74
- ( unit, expected ) => {
75
- expect( memoizedGetPxFromCssUnit( unit, settings ) ).toBe(
76
- expected
77
- );
78
- }
79
- );
80
- } );
81
-
82
- // Function units.
83
-
84
- describe( 'function unites should return px values', () => {
85
- const settings = {
86
- fontSize: 10,
87
- width: 100,
88
- height: 200,
89
- lineHeight: 2,
90
- type: 'font',
91
- };
92
-
93
- const testData = [
94
- [ 'min(20px, 25px)', '20px' ],
95
- [ 'min(20px, 9px, 12pt, 25px)', '9px' ],
96
- [ 'max(20px, 25px)', '25px' ],
97
- [ 'clamp(10px, 9px, 25px)', '10px' ],
98
- [ 'clamp(10px, 35px, 25px)', '25px' ],
99
- [ 'clamp(10px, 15px, 25px)', '15px' ],
100
- [ 'min(max(20px,25px), 35px)', '25px' ],
101
- [ 'max(min(20px,25px), 35px)', '35px' ],
102
- [ '10px + 25px', '35px' ],
103
- [ 'calc(10px + 25px)', '35px' ],
104
- [ 'calc( 2 * 20px)', '40px' ],
105
- [ 'calc(25px - 10px)', '15px' ],
106
- [ 'min(10px + 25px, 55pt)', '35px' ],
107
- [ 'calc(12vw * 10px)', '450px' ],
108
- [ 'calc(45vw / 10px)', '17px' ],
109
- [ '', null ],
110
- [ undefined, null ],
111
- [ 123, '123px' ],
112
- [ 123.456, '123px' ],
113
- [ 'abc', null ],
114
- [ 'console.log("howdy"); + 10px', null ],
115
- [ 'calc(12vw * 10px', null ], // Missing closing bracket.
116
- [ 'calc( 1em + 0.875rem )', '30px' ], // Decimals
117
- [
118
- 'clamp(1.8rem, 1.8rem + ((1vw / 0.48rem + 1rem) * 2.885), 3rem)',
119
- '48px',
120
- ],
121
- [
122
- 'clamp(5rem, 5.25rem + ((1vw - 0.48rem) * 9.096), 8rem)',
123
- '80px',
124
- ],
125
- [
126
- 'clamp(2.625rem, calc(2.625rem + ((1vw - 0.48rem) * 8.4135)), 3.25rem)',
127
- '42px',
128
- ],
129
- [ 'var:preset|font-size|medium', null ],
130
- ];
131
-
132
- test.each( testData )( 'getPxFromCssUnit( %s )', ( unit, expected ) => {
133
- expect( getPxFromCssUnit( unit, settings ) ).toBe( expected );
134
- } );
135
- test.each( testData )(
136
- 'memoizedGetPxFromCssUnit( %s )',
137
- ( unit, expected ) => {
138
- expect( memoizedGetPxFromCssUnit( unit, settings ) ).toBe(
139
- expected
140
- );
141
- }
142
- );
143
- test.each( testData )(
144
- 'cached memoizedGetPxFromCssUnit( %s )',
145
- ( unit, expected ) => {
146
- expect( memoizedGetPxFromCssUnit( unit, settings ) ).toBe(
147
- expected
148
- );
149
- }
150
- );
151
- } );
152
- // Skip this test it might be useful in dev.
153
- it.skip( 'test performance of memoizedGetPxFromCssUnit function', () => {
154
- const start = Date.now();
155
- let i = 0;
156
- const intervals = 1000;
157
- while ( i < intervals ) {
158
- getPxFromCssUnit( 'max(25px, 35px)', { width: 200 } );
159
- i++;
160
- }
161
- const rawDuration = Date.now() - start;
162
-
163
- const startM = Date.now();
164
- i = 0;
165
- // The memoized Version should be at 10X better then the non default one.
166
- while ( i < intervals * 10 ) {
167
- memoizedGetPxFromCssUnit( 'max(25px, 35px)', { width: 201 } );
168
- i++;
169
- }
170
- expect( rawDuration > Date.now() - startM ).toBe( true );
171
- } );
172
- } );
@@ -1,85 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect } from '@wordpress/data';
5
- import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';
6
- import { useViewportMatch } from '@wordpress/compose';
7
-
8
- /**
9
- * Internal dependencies
10
- */
11
- import { store as blockEditorStore } from '../store';
12
- import { unlock } from '../lock-unlock';
13
-
14
- /**
15
- * Returns true if the contextual block toolbar should show, or false if it should be hidden.
16
- *
17
- * @return {boolean} Whether the block toolbar is hidden.
18
- */
19
- export function useShouldContextualToolbarShow() {
20
- const isLargeViewport = useViewportMatch( 'medium' );
21
-
22
- const {
23
- shouldShowContextualToolbar,
24
- canFocusHiddenToolbar,
25
- fixedToolbarCanBeFocused,
26
- } = useSelect(
27
- ( select ) => {
28
- const {
29
- __unstableGetEditorMode,
30
- isMultiSelecting,
31
- isTyping,
32
- isBlockInterfaceHidden,
33
- getBlock,
34
- getSettings,
35
- isNavigationMode,
36
- getSelectedBlockClientId,
37
- getFirstMultiSelectedBlockClientId,
38
- } = unlock( select( blockEditorStore ) );
39
-
40
- const isEditMode = __unstableGetEditorMode() === 'edit';
41
- const hasFixedToolbar = getSettings().hasFixedToolbar;
42
- const isDistractionFree = getSettings().isDistractionFree;
43
- const selectedBlockId =
44
- getFirstMultiSelectedBlockClientId() ||
45
- getSelectedBlockClientId();
46
- const hasSelectedBlockId = !! selectedBlockId;
47
- const isEmptyDefaultBlock = isUnmodifiedDefaultBlock(
48
- getBlock( selectedBlockId ) || {}
49
- );
50
-
51
- const _shouldShowContextualToolbar =
52
- isEditMode &&
53
- ! hasFixedToolbar &&
54
- ( ! isDistractionFree || isNavigationMode() ) &&
55
- isLargeViewport &&
56
- ! isMultiSelecting() &&
57
- ! isTyping() &&
58
- hasSelectedBlockId &&
59
- ! isEmptyDefaultBlock &&
60
- ! isBlockInterfaceHidden();
61
-
62
- const _canFocusHiddenToolbar =
63
- isEditMode &&
64
- hasSelectedBlockId &&
65
- ! _shouldShowContextualToolbar &&
66
- ! hasFixedToolbar &&
67
- ! isDistractionFree &&
68
- ! isEmptyDefaultBlock;
69
-
70
- return {
71
- shouldShowContextualToolbar: _shouldShowContextualToolbar,
72
- canFocusHiddenToolbar: _canFocusHiddenToolbar,
73
- fixedToolbarCanBeFocused:
74
- ( hasFixedToolbar || ! isLargeViewport ) && selectedBlockId,
75
- };
76
- },
77
- [ isLargeViewport ]
78
- );
79
-
80
- return {
81
- shouldShowContextualToolbar,
82
- canFocusHiddenToolbar,
83
- fixedToolbarCanBeFocused,
84
- };
85
- }