@wordpress/block-editor 12.11.1 → 12.12.2-next.f8d8eceb.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 (453) hide show
  1. package/CHANGELOG.md +14 -10
  2. package/README.md +35 -3
  3. package/build/components/block-alignment-control/use-available-alignments.js +30 -28
  4. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  5. package/build/components/block-controls/hook.js +4 -1
  6. package/build/components/block-controls/hook.js.map +1 -1
  7. package/build/components/block-list/block-outline.native.js +1 -1
  8. package/build/components/block-list/block-outline.native.js.map +1 -1
  9. package/build/components/block-list/block.js +2 -0
  10. package/build/components/block-list/block.js.map +1 -1
  11. package/build/components/block-list/block.native.js +4 -4
  12. package/build/components/block-list/block.native.js.map +1 -1
  13. package/build/components/block-list/layout.js +2 -3
  14. package/build/components/block-list/layout.js.map +1 -1
  15. package/build/components/block-preview/index.js +4 -1
  16. package/build/components/block-preview/index.js.map +1 -1
  17. package/build/components/block-styles/index.js +1 -2
  18. package/build/components/block-styles/index.js.map +1 -1
  19. package/build/components/block-switcher/pattern-transformations-menu.js +2 -4
  20. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  21. package/build/components/block-tools/block-contextual-toolbar.js +1 -0
  22. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  23. package/build/components/border-radius-control/index.js +3 -2
  24. package/build/components/border-radius-control/index.js.map +1 -1
  25. package/build/components/color-palette/with-color-context.js +6 -6
  26. package/build/components/color-palette/with-color-context.js.map +1 -1
  27. package/build/components/colors/with-colors.js +2 -8
  28. package/build/components/colors/with-colors.js.map +1 -1
  29. package/build/components/colors-gradients/control.js +6 -7
  30. package/build/components/colors-gradients/control.js.map +1 -1
  31. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -13
  32. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  33. package/build/components/dimensions-tool/index.js +22 -22
  34. package/build/components/dimensions-tool/index.js.map +1 -1
  35. package/build/components/dimensions-tool/scale-tool.js +1 -1
  36. package/build/components/dimensions-tool/scale-tool.js.map +1 -1
  37. package/build/components/font-family/index.js +2 -3
  38. package/build/components/font-family/index.js.map +1 -1
  39. package/build/components/font-sizes/font-size-picker.js +3 -5
  40. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  41. package/build/components/font-sizes/with-font-sizes.js +3 -4
  42. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  43. package/build/components/global-styles/filters-panel.js +7 -8
  44. package/build/components/global-styles/filters-panel.js.map +1 -1
  45. package/build/components/global-styles/image-settings-panel.js +2 -2
  46. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +1 -1
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/gradients/use-gradient.js +2 -5
  50. package/build/components/gradients/use-gradient.js.map +1 -1
  51. package/build/components/height-control/index.js +93 -5
  52. package/build/components/height-control/index.js.map +1 -1
  53. package/build/components/iframe/index.js +9 -1
  54. package/build/components/iframe/index.js.map +1 -1
  55. package/build/components/image-editor/aspect-ratio-dropdown.js +0 -6
  56. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  57. package/build/components/index.js +9 -2
  58. package/build/components/index.js.map +1 -1
  59. package/build/components/index.native.js +17 -2
  60. package/build/components/index.native.js.map +1 -1
  61. package/build/components/inner-blocks/index.js +2 -2
  62. package/build/components/inner-blocks/index.js.map +1 -1
  63. package/build/components/letter-spacing-control/index.js +3 -3
  64. package/build/components/letter-spacing-control/index.js.map +1 -1
  65. package/build/components/link-control/link-preview.js +5 -2
  66. package/build/components/link-control/link-preview.js.map +1 -1
  67. package/build/components/link-control/search-item.js +11 -0
  68. package/build/components/link-control/search-item.js.map +1 -1
  69. package/build/components/link-control/search-results.js +2 -1
  70. package/build/components/link-control/search-results.js.map +1 -1
  71. package/build/components/link-control/use-internal-value.js +14 -8
  72. package/build/components/link-control/use-internal-value.js.map +1 -1
  73. package/build/components/link-control/use-search-handler.js +10 -5
  74. package/build/components/link-control/use-search-handler.js.map +1 -1
  75. package/build/components/list-view/index.js +6 -5
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/media-replace-flow/index.js +2 -4
  78. package/build/components/media-replace-flow/index.js.map +1 -1
  79. package/build/components/provider/use-block-sync.js +2 -2
  80. package/build/components/provider/use-block-sync.js.map +1 -1
  81. package/build/components/rich-text/index.js +1 -1
  82. package/build/components/rich-text/index.js.map +1 -1
  83. package/build/components/rich-text/index.native.js +14 -3
  84. package/build/components/rich-text/index.native.js.map +1 -1
  85. package/build/components/rich-text/use-delete.js +1 -1
  86. package/build/components/rich-text/use-delete.js.map +1 -1
  87. package/build/components/rich-text/use-paste-handler.js +25 -22
  88. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  89. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -3
  90. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  91. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +91 -3
  92. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  93. package/build/components/tool-selector/index.js +1 -2
  94. package/build/components/tool-selector/index.js.map +1 -1
  95. package/build/components/unit-control/index.js +3 -3
  96. package/build/components/unit-control/index.js.map +1 -1
  97. package/build/components/use-block-commands/index.js +96 -47
  98. package/build/components/use-block-commands/index.js.map +1 -1
  99. package/build/components/use-settings/index.js +212 -0
  100. package/build/components/use-settings/index.js.map +1 -0
  101. package/build/components/writing-flow/use-arrow-nav.js +4 -0
  102. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  103. package/build/hooks/align.js +51 -35
  104. package/build/hooks/align.js.map +1 -1
  105. package/build/hooks/anchor.js +37 -32
  106. package/build/hooks/anchor.js.map +1 -1
  107. package/build/hooks/background.js +4 -4
  108. package/build/hooks/background.js.map +1 -1
  109. package/build/hooks/block-rename-ui.js +5 -5
  110. package/build/hooks/block-rename-ui.js.map +1 -1
  111. package/build/hooks/{metadata-name.js → block-renaming.js} +3 -7
  112. package/build/hooks/block-renaming.js.map +1 -0
  113. package/build/hooks/color.js +2 -4
  114. package/build/hooks/color.js.map +1 -1
  115. package/build/hooks/custom-class-name.js +28 -21
  116. package/build/hooks/custom-class-name.js.map +1 -1
  117. package/build/hooks/duotone.js +33 -8
  118. package/build/hooks/duotone.js.map +1 -1
  119. package/build/hooks/font-size.js +4 -4
  120. package/build/hooks/font-size.js.map +1 -1
  121. package/build/hooks/index.js +1 -1
  122. package/build/hooks/index.js.map +1 -1
  123. package/build/hooks/layout.js +16 -17
  124. package/build/hooks/layout.js.map +1 -1
  125. package/build/hooks/line-height.js +3 -3
  126. package/build/hooks/line-height.js.map +1 -1
  127. package/build/hooks/metadata.js +6 -27
  128. package/build/hooks/metadata.js.map +1 -1
  129. package/build/hooks/position.js +2 -3
  130. package/build/hooks/position.js.map +1 -1
  131. package/build/hooks/use-color-props.js +3 -11
  132. package/build/hooks/use-color-props.js.map +1 -1
  133. package/build/hooks/utils.js +2 -43
  134. package/build/hooks/utils.js.map +1 -1
  135. package/build/layouts/constrained.js +3 -3
  136. package/build/layouts/constrained.js.map +1 -1
  137. package/build/layouts/grid.js +25 -3
  138. package/build/layouts/grid.js.map +1 -1
  139. package/build/layouts/utils.js +1 -1
  140. package/build/layouts/utils.js.map +1 -1
  141. package/build/lock-unlock.js +1 -1
  142. package/build/lock-unlock.js.map +1 -1
  143. package/build/store/actions.js +13 -5
  144. package/build/store/actions.js.map +1 -1
  145. package/build/utils/object.js +4 -1
  146. package/build/utils/object.js.map +1 -1
  147. package/build/utils/parse-css-unit-to-px.js +20 -0
  148. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  149. package/build/utils/pasting.js +1 -1
  150. package/build/utils/pasting.js.map +1 -1
  151. package/build/utils/transform-styles/index.js +19 -24
  152. package/build/utils/transform-styles/index.js.map +1 -1
  153. package/build-module/components/block-alignment-control/use-available-alignments.js +30 -28
  154. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  155. package/build-module/components/block-controls/hook.js +4 -1
  156. package/build-module/components/block-controls/hook.js.map +1 -1
  157. package/build-module/components/block-list/block-outline.native.js +1 -1
  158. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  159. package/build-module/components/block-list/block.js +2 -0
  160. package/build-module/components/block-list/block.js.map +1 -1
  161. package/build-module/components/block-list/block.native.js +4 -4
  162. package/build-module/components/block-list/block.native.js.map +1 -1
  163. package/build-module/components/block-list/layout.js +2 -2
  164. package/build-module/components/block-list/layout.js.map +1 -1
  165. package/build-module/components/block-preview/index.js +4 -1
  166. package/build-module/components/block-preview/index.js.map +1 -1
  167. package/build-module/components/block-styles/index.js +1 -2
  168. package/build-module/components/block-styles/index.js.map +1 -1
  169. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -4
  170. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  171. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -0
  172. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  173. package/build-module/components/border-radius-control/index.js +3 -2
  174. package/build-module/components/border-radius-control/index.js.map +1 -1
  175. package/build-module/components/color-palette/with-color-context.js +6 -5
  176. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  177. package/build-module/components/colors/with-colors.js +2 -7
  178. package/build-module/components/colors/with-colors.js.map +1 -1
  179. package/build-module/components/colors-gradients/control.js +6 -7
  180. package/build-module/components/colors-gradients/control.js.map +1 -1
  181. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -12
  182. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  183. package/build-module/components/dimensions-tool/index.js +22 -22
  184. package/build-module/components/dimensions-tool/index.js.map +1 -1
  185. package/build-module/components/dimensions-tool/scale-tool.js +1 -1
  186. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
  187. package/build-module/components/font-family/index.js +2 -2
  188. package/build-module/components/font-family/index.js.map +1 -1
  189. package/build-module/components/font-sizes/font-size-picker.js +3 -4
  190. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  191. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  192. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  193. package/build-module/components/global-styles/filters-panel.js +7 -8
  194. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  195. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  196. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  197. package/build-module/components/global-styles/typography-panel.js +1 -1
  198. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  199. package/build-module/components/gradients/use-gradient.js +2 -4
  200. package/build-module/components/gradients/use-gradient.js.map +1 -1
  201. package/build-module/components/height-control/index.js +93 -4
  202. package/build-module/components/height-control/index.js.map +1 -1
  203. package/build-module/components/iframe/index.js +9 -1
  204. package/build-module/components/iframe/index.js.map +1 -1
  205. package/build-module/components/image-editor/aspect-ratio-dropdown.js +0 -6
  206. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/index.js +2 -2
  212. package/build-module/components/inner-blocks/index.js.map +1 -1
  213. package/build-module/components/letter-spacing-control/index.js +3 -2
  214. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  215. package/build-module/components/link-control/link-preview.js +6 -3
  216. package/build-module/components/link-control/link-preview.js.map +1 -1
  217. package/build-module/components/link-control/search-item.js +12 -1
  218. package/build-module/components/link-control/search-item.js.map +1 -1
  219. package/build-module/components/link-control/search-results.js +2 -1
  220. package/build-module/components/link-control/search-results.js.map +1 -1
  221. package/build-module/components/link-control/use-internal-value.js +14 -9
  222. package/build-module/components/link-control/use-internal-value.js.map +1 -1
  223. package/build-module/components/link-control/use-search-handler.js +10 -5
  224. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  225. package/build-module/components/list-view/index.js +7 -6
  226. package/build-module/components/list-view/index.js.map +1 -1
  227. package/build-module/components/media-replace-flow/index.js +3 -5
  228. package/build-module/components/media-replace-flow/index.js.map +1 -1
  229. package/build-module/components/provider/use-block-sync.js +2 -2
  230. package/build-module/components/provider/use-block-sync.js.map +1 -1
  231. package/build-module/components/rich-text/index.js +1 -1
  232. package/build-module/components/rich-text/index.js.map +1 -1
  233. package/build-module/components/rich-text/index.native.js +15 -4
  234. package/build-module/components/rich-text/index.native.js.map +1 -1
  235. package/build-module/components/rich-text/use-delete.js +1 -1
  236. package/build-module/components/rich-text/use-delete.js.map +1 -1
  237. package/build-module/components/rich-text/use-paste-handler.js +25 -22
  238. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  239. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -2
  240. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  241. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +91 -2
  242. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  243. package/build-module/components/tool-selector/index.js +1 -2
  244. package/build-module/components/tool-selector/index.js.map +1 -1
  245. package/build-module/components/unit-control/index.js +3 -2
  246. package/build-module/components/unit-control/index.js.map +1 -1
  247. package/build-module/components/use-block-commands/index.js +95 -47
  248. package/build-module/components/use-block-commands/index.js.map +1 -1
  249. package/build-module/components/use-settings/index.js +203 -0
  250. package/build-module/components/use-settings/index.js.map +1 -0
  251. package/build-module/components/writing-flow/use-arrow-nav.js +4 -0
  252. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  253. package/build-module/hooks/align.js +51 -35
  254. package/build-module/hooks/align.js.map +1 -1
  255. package/build-module/hooks/anchor.js +37 -32
  256. package/build-module/hooks/anchor.js.map +1 -1
  257. package/build-module/hooks/background.js +4 -4
  258. package/build-module/hooks/background.js.map +1 -1
  259. package/build-module/hooks/block-rename-ui.js +6 -6
  260. package/build-module/hooks/block-rename-ui.js.map +1 -1
  261. package/build-module/hooks/{metadata-name.js → block-renaming.js} +3 -6
  262. package/build-module/hooks/block-renaming.js.map +1 -0
  263. package/build-module/hooks/color.js +2 -4
  264. package/build-module/hooks/color.js.map +1 -1
  265. package/build-module/hooks/custom-class-name.js +28 -21
  266. package/build-module/hooks/custom-class-name.js.map +1 -1
  267. package/build-module/hooks/duotone.js +34 -9
  268. package/build-module/hooks/duotone.js.map +1 -1
  269. package/build-module/hooks/font-size.js +4 -4
  270. package/build-module/hooks/font-size.js.map +1 -1
  271. package/build-module/hooks/index.js +1 -1
  272. package/build-module/hooks/index.js.map +1 -1
  273. package/build-module/hooks/layout.js +16 -17
  274. package/build-module/hooks/layout.js.map +1 -1
  275. package/build-module/hooks/line-height.js +3 -3
  276. package/build-module/hooks/line-height.js.map +1 -1
  277. package/build-module/hooks/metadata.js +6 -25
  278. package/build-module/hooks/metadata.js.map +1 -1
  279. package/build-module/hooks/position.js +2 -3
  280. package/build-module/hooks/position.js.map +1 -1
  281. package/build-module/hooks/use-color-props.js +3 -11
  282. package/build-module/hooks/use-color-props.js.map +1 -1
  283. package/build-module/hooks/utils.js +3 -44
  284. package/build-module/hooks/utils.js.map +1 -1
  285. package/build-module/layouts/constrained.js +3 -2
  286. package/build-module/layouts/constrained.js.map +1 -1
  287. package/build-module/layouts/grid.js +25 -3
  288. package/build-module/layouts/grid.js.map +1 -1
  289. package/build-module/layouts/utils.js +1 -1
  290. package/build-module/layouts/utils.js.map +1 -1
  291. package/build-module/lock-unlock.js +1 -1
  292. package/build-module/lock-unlock.js.map +1 -1
  293. package/build-module/store/actions.js +14 -6
  294. package/build-module/store/actions.js.map +1 -1
  295. package/build-module/utils/object.js +3 -1
  296. package/build-module/utils/object.js.map +1 -1
  297. package/build-module/utils/parse-css-unit-to-px.js +20 -0
  298. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  299. package/build-module/utils/pasting.js +1 -1
  300. package/build-module/utils/pasting.js.map +1 -1
  301. package/build-module/utils/transform-styles/index.js +20 -24
  302. package/build-module/utils/transform-styles/index.js.map +1 -1
  303. package/build-style/style-rtl.css +24 -12
  304. package/build-style/style.css +24 -12
  305. package/package.json +36 -34
  306. package/src/components/block-alignment-control/use-available-alignments.js +49 -34
  307. package/src/components/block-controls/hook.js +6 -3
  308. package/src/components/block-list/block-outline.native.js +1 -1
  309. package/src/components/block-list/block.js +2 -0
  310. package/src/components/block-list/block.native.js +4 -4
  311. package/src/components/block-list/layout.js +2 -2
  312. package/src/components/block-preview/index.js +7 -1
  313. package/src/components/block-styles/index.js +1 -4
  314. package/src/components/block-styles/style.scss +1 -1
  315. package/src/components/block-switcher/pattern-transformations-menu.js +1 -4
  316. package/src/components/block-switcher/style.scss +6 -0
  317. package/src/components/block-tools/block-contextual-toolbar.js +1 -0
  318. package/src/components/block-tools/style.scss +0 -1
  319. package/src/components/border-radius-control/index.js +3 -2
  320. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -1
  321. package/src/components/color-palette/with-color-context.js +9 -9
  322. package/src/components/colors/with-colors.js +6 -7
  323. package/src/components/colors-gradients/control.js +10 -7
  324. package/src/components/colors-gradients/style.scss +4 -2
  325. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +29 -15
  326. package/src/components/dimensions-tool/index.js +25 -25
  327. package/src/components/dimensions-tool/scale-tool.js +1 -1
  328. package/src/components/font-family/index.js +2 -2
  329. package/src/components/font-sizes/font-size-picker.js +6 -4
  330. package/src/components/font-sizes/with-font-sizes.js +3 -5
  331. package/src/components/global-styles/filters-panel.js +9 -15
  332. package/src/components/global-styles/image-settings-panel.js +2 -2
  333. package/src/components/global-styles/typography-panel.js +1 -1
  334. package/src/components/gradients/use-gradient.js +10 -4
  335. package/src/components/height-control/index.js +53 -4
  336. package/src/components/iframe/index.js +8 -1
  337. package/src/components/image-editor/aspect-ratio-dropdown.js +0 -8
  338. package/src/components/index.js +1 -1
  339. package/src/components/index.native.js +2 -1
  340. package/src/components/inner-blocks/index.js +2 -2
  341. package/src/components/inserter/style.scss +9 -1
  342. package/src/components/letter-spacing-control/index.js +3 -2
  343. package/src/components/link-control/README.md +43 -0
  344. package/src/components/link-control/link-preview.js +11 -5
  345. package/src/components/link-control/search-item.js +14 -0
  346. package/src/components/link-control/search-results.js +1 -0
  347. package/src/components/link-control/style.scss +3 -3
  348. package/src/components/link-control/test/index.js +19 -0
  349. package/src/components/link-control/use-internal-value.js +14 -10
  350. package/src/components/link-control/use-search-handler.js +22 -15
  351. package/src/components/list-view/index.js +13 -3
  352. package/src/components/media-replace-flow/index.js +9 -14
  353. package/src/components/provider/test/use-block-sync.js +1 -1
  354. package/src/components/provider/use-block-sync.js +2 -2
  355. package/src/components/rich-text/index.js +1 -1
  356. package/src/components/rich-text/index.native.js +19 -3
  357. package/src/components/rich-text/use-delete.js +1 -1
  358. package/src/components/rich-text/use-paste-handler.js +27 -24
  359. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -5
  360. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +25 -2
  361. package/src/components/tool-selector/index.js +1 -1
  362. package/src/components/unit-control/index.js +3 -8
  363. package/src/components/use-block-commands/index.js +93 -47
  364. package/src/components/{use-setting → use-settings}/README.md +9 -10
  365. package/src/components/use-settings/index.js +272 -0
  366. package/src/components/{use-setting → use-settings}/test/index.js +47 -5
  367. package/src/components/writing-flow/use-arrow-nav.js +4 -0
  368. package/src/hooks/align.js +79 -54
  369. package/src/hooks/anchor.js +75 -65
  370. package/src/hooks/background.js +7 -9
  371. package/src/hooks/block-rename-ui.js +5 -14
  372. package/src/hooks/{metadata-name.js → block-renaming.js} +4 -7
  373. package/src/hooks/color.js +7 -4
  374. package/src/hooks/custom-class-name.js +36 -31
  375. package/src/hooks/duotone.js +51 -14
  376. package/src/hooks/font-size.js +4 -4
  377. package/src/hooks/index.js +1 -1
  378. package/src/hooks/layout.js +17 -17
  379. package/src/hooks/line-height.js +3 -3
  380. package/src/hooks/metadata.js +6 -38
  381. package/src/hooks/position.js +5 -3
  382. package/src/hooks/use-color-props.js +21 -14
  383. package/src/hooks/utils.js +90 -43
  384. package/src/layouts/constrained.js +3 -8
  385. package/src/layouts/grid.js +50 -2
  386. package/src/layouts/utils.js +2 -1
  387. package/src/lock-unlock.js +1 -1
  388. package/src/store/actions.js +25 -8
  389. package/src/utils/object.js +4 -1
  390. package/src/utils/parse-css-unit-to-px.js +20 -0
  391. package/src/utils/pasting.js +1 -4
  392. package/src/utils/test/__snapshots__/transform-styles.js.snap +103 -0
  393. package/src/utils/test/pasting.js +12 -19
  394. package/src/utils/test/transform-styles.js +217 -0
  395. package/src/utils/transform-styles/index.js +25 -25
  396. package/build/components/use-setting/index.js +0 -159
  397. package/build/components/use-setting/index.js.map +0 -1
  398. package/build/hooks/metadata-name.js.map +0 -1
  399. package/build/utils/transform-styles/ast/index.js +0 -21
  400. package/build/utils/transform-styles/ast/index.js.map +0 -1
  401. package/build/utils/transform-styles/ast/parse.js +0 -660
  402. package/build/utils/transform-styles/ast/parse.js.map +0 -1
  403. package/build/utils/transform-styles/ast/stringify/compiler.js +0 -52
  404. package/build/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  405. package/build/utils/transform-styles/ast/stringify/compress.js +0 -178
  406. package/build/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  407. package/build/utils/transform-styles/ast/stringify/identity.js +0 -207
  408. package/build/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  409. package/build/utils/transform-styles/ast/stringify/index.js +0 -36
  410. package/build/utils/transform-styles/ast/stringify/index.js.map +0 -1
  411. package/build/utils/transform-styles/transforms/url-rewrite.js +0 -130
  412. package/build/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  413. package/build/utils/transform-styles/transforms/wrap.js +0 -59
  414. package/build/utils/transform-styles/transforms/wrap.js.map +0 -1
  415. package/build/utils/transform-styles/traverse.js +0 -37
  416. package/build/utils/transform-styles/traverse.js.map +0 -1
  417. package/build-module/components/use-setting/index.js +0 -152
  418. package/build-module/components/use-setting/index.js.map +0 -1
  419. package/build-module/hooks/metadata-name.js.map +0 -1
  420. package/build-module/utils/transform-styles/ast/index.js +0 -6
  421. package/build-module/utils/transform-styles/ast/index.js.map +0 -1
  422. package/build-module/utils/transform-styles/ast/parse.js +0 -654
  423. package/build-module/utils/transform-styles/ast/parse.js.map +0 -1
  424. package/build-module/utils/transform-styles/ast/stringify/compiler.js +0 -49
  425. package/build-module/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  426. package/build-module/utils/transform-styles/ast/stringify/compress.js +0 -176
  427. package/build-module/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  428. package/build-module/utils/transform-styles/ast/stringify/identity.js +0 -206
  429. package/build-module/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  430. package/build-module/utils/transform-styles/ast/stringify/index.js +0 -29
  431. package/build-module/utils/transform-styles/ast/stringify/index.js.map +0 -1
  432. package/build-module/utils/transform-styles/transforms/url-rewrite.js +0 -123
  433. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  434. package/build-module/utils/transform-styles/transforms/wrap.js +0 -52
  435. package/build-module/utils/transform-styles/transforms/wrap.js.map +0 -1
  436. package/build-module/utils/transform-styles/traverse.js +0 -28
  437. package/build-module/utils/transform-styles/traverse.js.map +0 -1
  438. package/src/components/use-setting/index.js +0 -213
  439. package/src/utils/transform-styles/ast/index.js +0 -5
  440. package/src/utils/transform-styles/ast/parse.js +0 -732
  441. package/src/utils/transform-styles/ast/stringify/compiler.js +0 -50
  442. package/src/utils/transform-styles/ast/stringify/compress.js +0 -238
  443. package/src/utils/transform-styles/ast/stringify/identity.js +0 -286
  444. package/src/utils/transform-styles/ast/stringify/index.js +0 -32
  445. package/src/utils/transform-styles/test/__snapshots__/traverse.js.snap +0 -7
  446. package/src/utils/transform-styles/test/traverse.js +0 -24
  447. package/src/utils/transform-styles/transforms/test/__snapshots__/url-rewrite.js.snap +0 -25
  448. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +0 -64
  449. package/src/utils/transform-styles/transforms/test/url-rewrite.js +0 -39
  450. package/src/utils/transform-styles/transforms/test/wrap.js +0 -95
  451. package/src/utils/transform-styles/transforms/url-rewrite.js +0 -139
  452. package/src/utils/transform-styles/transforms/wrap.js +0 -56
  453. package/src/utils/transform-styles/traverse.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"names":["parseUnit","cssUnit","match","trim","isNaN","parseFloat","value","unit","undefined","calculate","expression","Function","err","getFunctionUnitValue","functionUnitValue","options","functionUnit","split","filter","Boolean","units","slice","map","getPxFromCssUnit","Math","min","max","length","parseUnitFunction","currentCssUnit","regExp","matches","exec","replace","isMathExpression","i","includes","evalMathExpression","errorFound","cssUnitsBits","parsedUnit","expressionsMatches","values","currentValue","rawCurrentValue","calculatedExpression","calculatedValue","toFixed","parsedValue","calculatedResult","convertParsedUnitToPx","PIXELS_PER_INCH","ONE_PERCENT","defaultProperties","fontSize","lineHeight","width","height","type","setOptions","Object","assign","relativeUnits","em","rem","vh","vw","vmin","vmax","ch","ex","lh","absoluteUnits","in","cm","mm","pt","pc","px","Q","Number","isFinite","cache","memoizedGetPxFromCssUnit","hash","hashOptions","hasOwnProperty","_default","exports","default"],"sources":["@wordpress/block-editor/src/utils/parse-css-unit-to-px.js"],"sourcesContent":["/**\n * Converts string to object { value, unit }.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit\n */\nfunction parseUnit( cssUnit ) {\n\tconst match = cssUnit\n\t\t?.trim()\n\t\t.match(\n\t\t\t/^(0?[-.]?\\d*\\.?\\d+)(r?e[m|x]|v[h|w|min|max]+|p[x|t|c]|[c|m]m|%|in|ch|Q|lh)$/\n\t\t);\n\tif ( ! isNaN( cssUnit ) && ! isNaN( parseFloat( cssUnit ) ) ) {\n\t\treturn { value: parseFloat( cssUnit ), unit: 'px' };\n\t}\n\treturn match\n\t\t? { value: parseFloat( match[ 1 ] ) || match[ 1 ], unit: match[ 2 ] }\n\t\t: { value: cssUnit, unit: undefined };\n}\n/**\n * Evaluate a math expression.\n *\n * @param {string} expression\n * @return {number} evaluated expression.\n */\nfunction calculate( expression ) {\n\ttry {\n\t\treturn Function( `'use strict'; return (${ expression })` )();\n\t} catch ( err ) {\n\t\treturn null;\n\t}\n}\n\n/**\n * Calculates the css function value for the supported css functions such as max, min, clamp and calc.\n *\n * @param {string} functionUnitValue string should be in a particular format (for example min(12px,12px) ) no nested loops.\n * @param {Object} options\n * @return {string} unit containing the unit in PX.\n */\nfunction getFunctionUnitValue( functionUnitValue, options ) {\n\tconst functionUnit = functionUnitValue.split( /[(),]/g ).filter( Boolean );\n\n\tconst units = functionUnit\n\t\t.slice( 1 )\n\t\t.map( ( unit ) => parseUnit( getPxFromCssUnit( unit, options ) ).value )\n\t\t.filter( Boolean );\n\n\tswitch ( functionUnit[ 0 ] ) {\n\t\tcase 'min':\n\t\t\treturn Math.min( ...units ) + 'px';\n\t\tcase 'max':\n\t\t\treturn Math.max( ...units ) + 'px';\n\t\tcase 'clamp':\n\t\t\tif ( units.length !== 3 ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif ( units[ 1 ] < units[ 0 ] ) {\n\t\t\t\treturn units[ 0 ] + 'px';\n\t\t\t}\n\t\t\tif ( units[ 1 ] > units[ 2 ] ) {\n\t\t\t\treturn units[ 2 ] + 'px';\n\t\t\t}\n\t\t\treturn units[ 1 ] + 'px';\n\t\tcase 'calc':\n\t\t\treturn units[ 0 ] + 'px';\n\t}\n}\n\n/**\n * Take a css function such as min, max, calc, clamp and returns parsedUnit\n *\n * How this works for the nested function is that it first replaces the inner function call.\n * Then it tackles the outer onces.\n * So for example: min( max(25px, 35px), 40px )\n * in the first pass we would replace max(25px, 35px) with 35px.\n * then we would try to evaluate min( 35px, 40px )\n * and then finally return 35px.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit object.\n */\nfunction parseUnitFunction( cssUnit ) {\n\twhile ( true ) {\n\t\tconst currentCssUnit = cssUnit;\n\t\tconst regExp = /(max|min|calc|clamp)\\(([^()]*)\\)/g;\n\t\tconst matches = regExp.exec( cssUnit ) || [];\n\t\tif ( matches[ 0 ] ) {\n\t\t\tconst functionUnitValue = getFunctionUnitValue( matches[ 0 ] );\n\t\t\tcssUnit = cssUnit.replace( matches[ 0 ], functionUnitValue );\n\t\t}\n\n\t\t// If the unit hasn't been modified or we have a single value break free.\n\t\tif ( cssUnit === currentCssUnit || parseFloat( cssUnit ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parseUnit( cssUnit );\n}\n/**\n * Return true if we think this is a math expression.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {boolean} Whether the cssUnit is a math expression.\n */\nfunction isMathExpression( cssUnit ) {\n\tfor ( let i = 0; i < cssUnit.length; i++ ) {\n\t\tif ( [ '+', '-', '/', '*' ].includes( cssUnit[ i ] ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n * Evaluates the math expression and return a px value.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {string} return a converfted value to px.\n */\nfunction evalMathExpression( cssUnit ) {\n\tlet errorFound = false;\n\t// Convert every part of the expression to px values.\n\t// The following regex matches numbers that have a following unit\n\t// E.g. 5.25rem, 1vw\n\tconst cssUnitsBits = cssUnit.match( /\\d+\\.?\\d*[a-zA-Z]+|\\.\\d+[a-zA-Z]+/g );\n\tif ( cssUnitsBits ) {\n\t\tfor ( const unit of cssUnitsBits ) {\n\t\t\t// Standardize the unit to px and extract the value.\n\t\t\tconst parsedUnit = parseUnit( getPxFromCssUnit( unit ) );\n\t\t\tif ( ! parseFloat( parsedUnit.value ) ) {\n\t\t\t\terrorFound = true;\n\t\t\t\t// End early since we are dealing with a null value.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcssUnit = cssUnit.replace( unit, parsedUnit.value );\n\t\t}\n\t} else {\n\t\terrorFound = true;\n\t}\n\n\t// For mixed math expressions wrapped within CSS expressions\n\tconst expressionsMatches = cssUnit.match( /(max|min|clamp)/g );\n\tif ( ! errorFound && expressionsMatches ) {\n\t\tconst values = cssUnit.split( ',' );\n\t\tfor ( const currentValue of values ) {\n\t\t\t// Check for nested calc() and remove them to calculate the value.\n\t\t\tconst rawCurrentValue = currentValue.replace( /\\s|calc/g, '' );\n\n\t\t\tif ( isMathExpression( rawCurrentValue ) ) {\n\t\t\t\tconst calculatedExpression = calculate( rawCurrentValue );\n\n\t\t\t\tif ( calculatedExpression ) {\n\t\t\t\t\tconst calculatedValue =\n\t\t\t\t\t\tcalculatedExpression.toFixed( 0 ) + 'px';\n\t\t\t\t\tcssUnit = cssUnit.replace( currentValue, calculatedValue );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst parsedValue = parseUnitFunction( cssUnit );\n\t\treturn ! parsedValue ? null : parsedValue.value + parsedValue.unit;\n\t}\n\n\tif ( errorFound ) {\n\t\treturn null;\n\t}\n\n\tconst calculatedResult = calculate( cssUnit );\n\treturn calculatedResult ? calculatedResult.toFixed( 0 ) + 'px' : null;\n}\n\n/**\n * Convert a parsedUnit object to px value.\n *\n * @param {Object} parsedUnit\n * @param {Object} options\n * @return {string} or {null} returns the converted with in a px value format.\n */\nfunction convertParsedUnitToPx( parsedUnit, options ) {\n\tconst PIXELS_PER_INCH = 96;\n\tconst ONE_PERCENT = 0.01;\n\n\tconst defaultProperties = {\n\t\tfontSize: 16,\n\t\tlineHeight: 16,\n\t\twidth: 375,\n\t\theight: 812,\n\t\ttype: 'font',\n\t};\n\n\tconst setOptions = Object.assign( {}, defaultProperties, options );\n\n\tconst relativeUnits = {\n\t\tem: setOptions.fontSize,\n\t\trem: setOptions.fontSize,\n\t\tvh: setOptions.height * ONE_PERCENT,\n\t\tvw: setOptions.width * ONE_PERCENT,\n\t\tvmin:\n\t\t\t( setOptions.width < setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\tvmax:\n\t\t\t( setOptions.width > setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\t'%':\n\t\t\t( setOptions.type === 'font'\n\t\t\t\t? setOptions.fontSize\n\t\t\t\t: setOptions.width ) * ONE_PERCENT,\n\t\tch: 8, // The advance measure (width) of the glyph \"0\" of the element's font. Approximate\n\t\tex: 7.15625, // X-height of the element's font. Approximate.\n\t\tlh: setOptions.lineHeight,\n\t};\n\n\tconst absoluteUnits = {\n\t\tin: PIXELS_PER_INCH,\n\t\tcm: PIXELS_PER_INCH / 2.54,\n\t\tmm: PIXELS_PER_INCH / 25.4,\n\t\tpt: PIXELS_PER_INCH / 72,\n\t\tpc: PIXELS_PER_INCH / 6,\n\t\tpx: 1,\n\t\tQ: PIXELS_PER_INCH / 2.54 / 40,\n\t};\n\n\tif ( relativeUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( relativeUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\tif ( absoluteUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( absoluteUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns the px value of a cssUnit.\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nexport function getPxFromCssUnit( cssUnit, options = {} ) {\n\tif ( Number.isFinite( cssUnit ) ) {\n\t\treturn cssUnit.toFixed( 0 ) + 'px';\n\t}\n\tif ( cssUnit === undefined ) {\n\t\treturn null;\n\t}\n\tlet parsedUnit = parseUnit( cssUnit );\n\n\tif ( ! parsedUnit.unit ) {\n\t\tparsedUnit = parseUnitFunction( cssUnit );\n\t}\n\n\tif ( isMathExpression( cssUnit ) && ! parsedUnit.unit ) {\n\t\treturn evalMathExpression( cssUnit );\n\t}\n\n\treturn convertParsedUnitToPx( parsedUnit, options );\n}\n\n// Use simple cache.\nconst cache = {};\n/**\n * Returns the px value of a cssUnit. The memoized version of getPxFromCssUnit;\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nfunction memoizedGetPxFromCssUnit( cssUnit, options = {} ) {\n\tconst hash = cssUnit + hashOptions( options );\n\n\tif ( ! cache[ hash ] ) {\n\t\tcache[ hash ] = getPxFromCssUnit( cssUnit, options );\n\t}\n\treturn cache[ hash ];\n}\n\nfunction hashOptions( options ) {\n\tlet hash = '';\n\tif ( options.hasOwnProperty( 'fontSize' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'lineHeight' ) ) {\n\t\thash = ':' + options.lineHeight;\n\t}\n\tif ( options.hasOwnProperty( 'width' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'height' ) ) {\n\t\thash = ':' + options.height;\n\t}\n\tif ( options.hasOwnProperty( 'type' ) ) {\n\t\thash = ':' + options.type;\n\t}\n\treturn hash;\n}\n\nexport default memoizedGetPxFromCssUnit;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAASA,CAAEC,OAAO,EAAG;EAC7B,MAAMC,KAAK,GAAGD,OAAO,EAClBE,IAAI,CAAC,CAAC,CACPD,KAAK,CACL,6EACD,CAAC;EACF,IAAK,CAAEE,KAAK,CAAEH,OAAQ,CAAC,IAAI,CAAEG,KAAK,CAAEC,UAAU,CAAEJ,OAAQ,CAAE,CAAC,EAAG;IAC7D,OAAO;MAAEK,KAAK,EAAED,UAAU,CAAEJ,OAAQ,CAAC;MAAEM,IAAI,EAAE;IAAK,CAAC;EACpD;EACA,OAAOL,KAAK,GACT;IAAEI,KAAK,EAAED,UAAU,CAAEH,KAAK,CAAE,CAAC,CAAG,CAAC,IAAIA,KAAK,CAAE,CAAC,CAAE;IAAEK,IAAI,EAAEL,KAAK,CAAE,CAAC;EAAG,CAAC,GACnE;IAAEI,KAAK,EAAEL,OAAO;IAAEM,IAAI,EAAEC;EAAU,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAEC,UAAU,EAAG;EAChC,IAAI;IACH,OAAOC,QAAQ,CAAG,yBAAyBD,UAAY,GAAG,CAAC,CAAC,CAAC;EAC9D,CAAC,CAAC,OAAQE,GAAG,EAAG;IACf,OAAO,IAAI;EACZ;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAAEC,iBAAiB,EAAEC,OAAO,EAAG;EAC3D,MAAMC,YAAY,GAAGF,iBAAiB,CAACG,KAAK,CAAE,QAAS,CAAC,CAACC,MAAM,CAAEC,OAAQ,CAAC;EAE1E,MAAMC,KAAK,GAAGJ,YAAY,CACxBK,KAAK,CAAE,CAAE,CAAC,CACVC,GAAG,CAAIf,IAAI,IAAMP,SAAS,CAAEuB,gBAAgB,CAAEhB,IAAI,EAAEQ,OAAQ,CAAE,CAAC,CAACT,KAAM,CAAC,CACvEY,MAAM,CAAEC,OAAQ,CAAC;EAEnB,QAASH,YAAY,CAAE,CAAC,CAAE;IACzB,KAAK,KAAK;MACT,OAAOQ,IAAI,CAACC,GAAG,CAAE,GAAGL,KAAM,CAAC,GAAG,IAAI;IACnC,KAAK,KAAK;MACT,OAAOI,IAAI,CAACE,GAAG,CAAE,GAAGN,KAAM,CAAC,GAAG,IAAI;IACnC,KAAK,OAAO;MACX,IAAKA,KAAK,CAACO,MAAM,KAAK,CAAC,EAAG;QACzB,OAAO,IAAI;MACZ;MACA,IAAKP,KAAK,CAAE,CAAC,CAAE,GAAGA,KAAK,CAAE,CAAC,CAAE,EAAG;QAC9B,OAAOA,KAAK,CAAE,CAAC,CAAE,GAAG,IAAI;MACzB;MACA,IAAKA,KAAK,CAAE,CAAC,CAAE,GAAGA,KAAK,CAAE,CAAC,CAAE,EAAG;QAC9B,OAAOA,KAAK,CAAE,CAAC,CAAE,GAAG,IAAI;MACzB;MACA,OAAOA,KAAK,CAAE,CAAC,CAAE,GAAG,IAAI;IACzB,KAAK,MAAM;MACV,OAAOA,KAAK,CAAE,CAAC,CAAE,GAAG,IAAI;EAC1B;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASQ,iBAAiBA,CAAE3B,OAAO,EAAG;EACrC,OAAQ,IAAI,EAAG;IACd,MAAM4B,cAAc,GAAG5B,OAAO;IAC9B,MAAM6B,MAAM,GAAG,mCAAmC;IAClD,MAAMC,OAAO,GAAGD,MAAM,CAACE,IAAI,CAAE/B,OAAQ,CAAC,IAAI,EAAE;IAC5C,IAAK8B,OAAO,CAAE,CAAC,CAAE,EAAG;MACnB,MAAMjB,iBAAiB,GAAGD,oBAAoB,CAAEkB,OAAO,CAAE,CAAC,CAAG,CAAC;MAC9D9B,OAAO,GAAGA,OAAO,CAACgC,OAAO,CAAEF,OAAO,CAAE,CAAC,CAAE,EAAEjB,iBAAkB,CAAC;IAC7D;;IAEA;IACA,IAAKb,OAAO,KAAK4B,cAAc,IAAIxB,UAAU,CAAEJ,OAAQ,CAAC,EAAG;MAC1D;IACD;EACD;EAEA,OAAOD,SAAS,CAAEC,OAAQ,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiC,gBAAgBA,CAAEjC,OAAO,EAAG;EACpC,KAAM,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,OAAO,CAAC0B,MAAM,EAAEQ,CAAC,EAAE,EAAG;IAC1C,IAAK,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAACC,QAAQ,CAAEnC,OAAO,CAAEkC,CAAC,CAAG,CAAC,EAAG;MACtD,OAAO,IAAI;IACZ;EACD;EACA,OAAO,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,kBAAkBA,CAAEpC,OAAO,EAAG;EACtC,IAAIqC,UAAU,GAAG,KAAK;EACtB;EACA;EACA;EACA,MAAMC,YAAY,GAAGtC,OAAO,CAACC,KAAK,CAAE,oCAAqC,CAAC;EAC1E,IAAKqC,YAAY,EAAG;IACnB,KAAM,MAAMhC,IAAI,IAAIgC,YAAY,EAAG;MAClC;MACA,MAAMC,UAAU,GAAGxC,SAAS,CAAEuB,gBAAgB,CAAEhB,IAAK,CAAE,CAAC;MACxD,IAAK,CAAEF,UAAU,CAAEmC,UAAU,CAAClC,KAAM,CAAC,EAAG;QACvCgC,UAAU,GAAG,IAAI;QACjB;QACA;MACD;MACArC,OAAO,GAAGA,OAAO,CAACgC,OAAO,CAAE1B,IAAI,EAAEiC,UAAU,CAAClC,KAAM,CAAC;IACpD;EACD,CAAC,MAAM;IACNgC,UAAU,GAAG,IAAI;EAClB;;EAEA;EACA,MAAMG,kBAAkB,GAAGxC,OAAO,CAACC,KAAK,CAAE,kBAAmB,CAAC;EAC9D,IAAK,CAAEoC,UAAU,IAAIG,kBAAkB,EAAG;IACzC,MAAMC,MAAM,GAAGzC,OAAO,CAACgB,KAAK,CAAE,GAAI,CAAC;IACnC,KAAM,MAAM0B,YAAY,IAAID,MAAM,EAAG;MACpC;MACA,MAAME,eAAe,GAAGD,YAAY,CAACV,OAAO,CAAE,UAAU,EAAE,EAAG,CAAC;MAE9D,IAAKC,gBAAgB,CAAEU,eAAgB,CAAC,EAAG;QAC1C,MAAMC,oBAAoB,GAAGpC,SAAS,CAAEmC,eAAgB,CAAC;QAEzD,IAAKC,oBAAoB,EAAG;UAC3B,MAAMC,eAAe,GACpBD,oBAAoB,CAACE,OAAO,CAAE,CAAE,CAAC,GAAG,IAAI;UACzC9C,OAAO,GAAGA,OAAO,CAACgC,OAAO,CAAEU,YAAY,EAAEG,eAAgB,CAAC;QAC3D;MACD;IACD;IACA,MAAME,WAAW,GAAGpB,iBAAiB,CAAE3B,OAAQ,CAAC;IAChD,OAAO,CAAE+C,WAAW,GAAG,IAAI,GAAGA,WAAW,CAAC1C,KAAK,GAAG0C,WAAW,CAACzC,IAAI;EACnE;EAEA,IAAK+B,UAAU,EAAG;IACjB,OAAO,IAAI;EACZ;EAEA,MAAMW,gBAAgB,GAAGxC,SAAS,CAAER,OAAQ,CAAC;EAC7C,OAAOgD,gBAAgB,GAAGA,gBAAgB,CAACF,OAAO,CAAE,CAAE,CAAC,GAAG,IAAI,GAAG,IAAI;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,qBAAqBA,CAAEV,UAAU,EAAEzB,OAAO,EAAG;EACrD,MAAMoC,eAAe,GAAG,EAAE;EAC1B,MAAMC,WAAW,GAAG,IAAI;EAExB,MAAMC,iBAAiB,GAAG;IACzBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXC,IAAI,EAAE;EACP,CAAC;EAED,MAAMC,UAAU,GAAGC,MAAM,CAACC,MAAM,CAAE,CAAC,CAAC,EAAER,iBAAiB,EAAEtC,OAAQ,CAAC;EAElE,MAAM+C,aAAa,GAAG;IACrBC,EAAE,EAAEJ,UAAU,CAACL,QAAQ;IACvBU,GAAG,EAAEL,UAAU,CAACL,QAAQ;IACxBW,EAAE,EAAEN,UAAU,CAACF,MAAM,GAAGL,WAAW;IACnCc,EAAE,EAAEP,UAAU,CAACH,KAAK,GAAGJ,WAAW;IAClCe,IAAI,EACH,CAAER,UAAU,CAACH,KAAK,GAAGG,UAAU,CAACF,MAAM,GACnCE,UAAU,CAACH,KAAK,GAChBG,UAAU,CAACF,MAAM,IAAKL,WAAW;IACrCgB,IAAI,EACH,CAAET,UAAU,CAACH,KAAK,GAAGG,UAAU,CAACF,MAAM,GACnCE,UAAU,CAACH,KAAK,GAChBG,UAAU,CAACF,MAAM,IAAKL,WAAW;IACrC,GAAG,EACF,CAAEO,UAAU,CAACD,IAAI,KAAK,MAAM,GACzBC,UAAU,CAACL,QAAQ,GACnBK,UAAU,CAACH,KAAK,IAAKJ,WAAW;IACpCiB,EAAE,EAAE,CAAC;IAAE;IACPC,EAAE,EAAE,OAAO;IAAE;IACbC,EAAE,EAAEZ,UAAU,CAACJ;EAChB,CAAC;EAED,MAAMiB,aAAa,GAAG;IACrBC,EAAE,EAAEtB,eAAe;IACnBuB,EAAE,EAAEvB,eAAe,GAAG,IAAI;IAC1BwB,EAAE,EAAExB,eAAe,GAAG,IAAI;IAC1ByB,EAAE,EAAEzB,eAAe,GAAG,EAAE;IACxB0B,EAAE,EAAE1B,eAAe,GAAG,CAAC;IACvB2B,EAAE,EAAE,CAAC;IACLC,CAAC,EAAE5B,eAAe,GAAG,IAAI,GAAG;EAC7B,CAAC;EAED,IAAKW,aAAa,CAAEtB,UAAU,CAACjC,IAAI,CAAE,EAAG;IACvC,OACC,CAAEuD,aAAa,CAAEtB,UAAU,CAACjC,IAAI,CAAE,GAAGiC,UAAU,CAAClC,KAAK,EAAGyC,OAAO,CAC9D,CACD,CAAC,GAAG,IAAI;EAEV;EAEA,IAAKyB,aAAa,CAAEhC,UAAU,CAACjC,IAAI,CAAE,EAAG;IACvC,OACC,CAAEiE,aAAa,CAAEhC,UAAU,CAACjC,IAAI,CAAE,GAAGiC,UAAU,CAAClC,KAAK,EAAGyC,OAAO,CAC9D,CACD,CAAC,GAAG,IAAI;EAEV;EAEA,OAAO,IAAI;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASxB,gBAAgBA,CAAEtB,OAAO,EAAEc,OAAO,GAAG,CAAC,CAAC,EAAG;EACzD,IAAKiE,MAAM,CAACC,QAAQ,CAAEhF,OAAQ,CAAC,EAAG;IACjC,OAAOA,OAAO,CAAC8C,OAAO,CAAE,CAAE,CAAC,GAAG,IAAI;EACnC;EACA,IAAK9C,OAAO,KAAKO,SAAS,EAAG;IAC5B,OAAO,IAAI;EACZ;EACA,IAAIgC,UAAU,GAAGxC,SAAS,CAAEC,OAAQ,CAAC;EAErC,IAAK,CAAEuC,UAAU,CAACjC,IAAI,EAAG;IACxBiC,UAAU,GAAGZ,iBAAiB,CAAE3B,OAAQ,CAAC;EAC1C;EAEA,IAAKiC,gBAAgB,CAAEjC,OAAQ,CAAC,IAAI,CAAEuC,UAAU,CAACjC,IAAI,EAAG;IACvD,OAAO8B,kBAAkB,CAAEpC,OAAQ,CAAC;EACrC;EAEA,OAAOiD,qBAAqB,CAAEV,UAAU,EAAEzB,OAAQ,CAAC;AACpD;;AAEA;AACA,MAAMmE,KAAK,GAAG,CAAC,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAAElF,OAAO,EAAEc,OAAO,GAAG,CAAC,CAAC,EAAG;EAC1D,MAAMqE,IAAI,GAAGnF,OAAO,GAAGoF,WAAW,CAAEtE,OAAQ,CAAC;EAE7C,IAAK,CAAEmE,KAAK,CAAEE,IAAI,CAAE,EAAG;IACtBF,KAAK,CAAEE,IAAI,CAAE,GAAG7D,gBAAgB,CAAEtB,OAAO,EAAEc,OAAQ,CAAC;EACrD;EACA,OAAOmE,KAAK,CAAEE,IAAI,CAAE;AACrB;AAEA,SAASC,WAAWA,CAAEtE,OAAO,EAAG;EAC/B,IAAIqE,IAAI,GAAG,EAAE;EACb,IAAKrE,OAAO,CAACuE,cAAc,CAAE,UAAW,CAAC,EAAG;IAC3CF,IAAI,GAAG,GAAG,GAAGrE,OAAO,CAACyC,KAAK;EAC3B;EACA,IAAKzC,OAAO,CAACuE,cAAc,CAAE,YAAa,CAAC,EAAG;IAC7CF,IAAI,GAAG,GAAG,GAAGrE,OAAO,CAACwC,UAAU;EAChC;EACA,IAAKxC,OAAO,CAACuE,cAAc,CAAE,OAAQ,CAAC,EAAG;IACxCF,IAAI,GAAG,GAAG,GAAGrE,OAAO,CAACyC,KAAK;EAC3B;EACA,IAAKzC,OAAO,CAACuE,cAAc,CAAE,QAAS,CAAC,EAAG;IACzCF,IAAI,GAAG,GAAG,GAAGrE,OAAO,CAAC0C,MAAM;EAC5B;EACA,IAAK1C,OAAO,CAACuE,cAAc,CAAE,MAAO,CAAC,EAAG;IACvCF,IAAI,GAAG,GAAG,GAAGrE,OAAO,CAAC2C,IAAI;EAC1B;EACA,OAAO0B,IAAI;AACZ;AAAC,IAAAG,QAAA,GAEcJ,wBAAwB;AAAAK,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["parseUnit","cssUnit","match","trim","isNaN","parseFloat","value","unit","undefined","calculate","expression","Function","err","getFunctionUnitValue","functionUnitValue","options","functionUnit","split","filter","Boolean","units","slice","map","getPxFromCssUnit","Math","min","max","length","parseUnitFunction","currentCssUnit","regExp","matches","exec","replace","isMathExpression","i","includes","evalMathExpression","errorFound","cssUnitsBits","parsedUnit","expressionsMatches","values","currentValue","rawCurrentValue","calculatedExpression","calculatedValue","toFixed","parsedValue","calculatedResult","convertParsedUnitToPx","PIXELS_PER_INCH","ONE_PERCENT","defaultProperties","fontSize","lineHeight","width","height","type","setOptions","Object","assign","relativeUnits","em","rem","vh","vw","vmin","vmax","ch","ex","lh","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","svmin","lvmin","dvmin","svmax","lvmax","dvmax","absoluteUnits","in","cm","mm","pt","pc","px","Q","Number","isFinite","cache","memoizedGetPxFromCssUnit","hash","hashOptions","hasOwnProperty","_default","exports","default"],"sources":["@wordpress/block-editor/src/utils/parse-css-unit-to-px.js"],"sourcesContent":["/**\n * Converts string to object { value, unit }.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit\n */\nfunction parseUnit( cssUnit ) {\n\tconst match = cssUnit\n\t\t?.trim()\n\t\t.match(\n\t\t\t/^(0?[-.]?\\d*\\.?\\d+)(r?e[m|x]|v[h|w|min|max]+|p[x|t|c]|[c|m]m|%|in|ch|Q|lh)$/\n\t\t);\n\tif ( ! isNaN( cssUnit ) && ! isNaN( parseFloat( cssUnit ) ) ) {\n\t\treturn { value: parseFloat( cssUnit ), unit: 'px' };\n\t}\n\treturn match\n\t\t? { value: parseFloat( match[ 1 ] ) || match[ 1 ], unit: match[ 2 ] }\n\t\t: { value: cssUnit, unit: undefined };\n}\n/**\n * Evaluate a math expression.\n *\n * @param {string} expression\n * @return {number} evaluated expression.\n */\nfunction calculate( expression ) {\n\ttry {\n\t\treturn Function( `'use strict'; return (${ expression })` )();\n\t} catch ( err ) {\n\t\treturn null;\n\t}\n}\n\n/**\n * Calculates the css function value for the supported css functions such as max, min, clamp and calc.\n *\n * @param {string} functionUnitValue string should be in a particular format (for example min(12px,12px) ) no nested loops.\n * @param {Object} options\n * @return {string} unit containing the unit in PX.\n */\nfunction getFunctionUnitValue( functionUnitValue, options ) {\n\tconst functionUnit = functionUnitValue.split( /[(),]/g ).filter( Boolean );\n\n\tconst units = functionUnit\n\t\t.slice( 1 )\n\t\t.map( ( unit ) => parseUnit( getPxFromCssUnit( unit, options ) ).value )\n\t\t.filter( Boolean );\n\n\tswitch ( functionUnit[ 0 ] ) {\n\t\tcase 'min':\n\t\t\treturn Math.min( ...units ) + 'px';\n\t\tcase 'max':\n\t\t\treturn Math.max( ...units ) + 'px';\n\t\tcase 'clamp':\n\t\t\tif ( units.length !== 3 ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif ( units[ 1 ] < units[ 0 ] ) {\n\t\t\t\treturn units[ 0 ] + 'px';\n\t\t\t}\n\t\t\tif ( units[ 1 ] > units[ 2 ] ) {\n\t\t\t\treturn units[ 2 ] + 'px';\n\t\t\t}\n\t\t\treturn units[ 1 ] + 'px';\n\t\tcase 'calc':\n\t\t\treturn units[ 0 ] + 'px';\n\t}\n}\n\n/**\n * Take a css function such as min, max, calc, clamp and returns parsedUnit\n *\n * How this works for the nested function is that it first replaces the inner function call.\n * Then it tackles the outer onces.\n * So for example: min( max(25px, 35px), 40px )\n * in the first pass we would replace max(25px, 35px) with 35px.\n * then we would try to evaluate min( 35px, 40px )\n * and then finally return 35px.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit object.\n */\nfunction parseUnitFunction( cssUnit ) {\n\twhile ( true ) {\n\t\tconst currentCssUnit = cssUnit;\n\t\tconst regExp = /(max|min|calc|clamp)\\(([^()]*)\\)/g;\n\t\tconst matches = regExp.exec( cssUnit ) || [];\n\t\tif ( matches[ 0 ] ) {\n\t\t\tconst functionUnitValue = getFunctionUnitValue( matches[ 0 ] );\n\t\t\tcssUnit = cssUnit.replace( matches[ 0 ], functionUnitValue );\n\t\t}\n\n\t\t// If the unit hasn't been modified or we have a single value break free.\n\t\tif ( cssUnit === currentCssUnit || parseFloat( cssUnit ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parseUnit( cssUnit );\n}\n/**\n * Return true if we think this is a math expression.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {boolean} Whether the cssUnit is a math expression.\n */\nfunction isMathExpression( cssUnit ) {\n\tfor ( let i = 0; i < cssUnit.length; i++ ) {\n\t\tif ( [ '+', '-', '/', '*' ].includes( cssUnit[ i ] ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n * Evaluates the math expression and return a px value.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {string} return a converfted value to px.\n */\nfunction evalMathExpression( cssUnit ) {\n\tlet errorFound = false;\n\t// Convert every part of the expression to px values.\n\t// The following regex matches numbers that have a following unit\n\t// E.g. 5.25rem, 1vw\n\tconst cssUnitsBits = cssUnit.match( /\\d+\\.?\\d*[a-zA-Z]+|\\.\\d+[a-zA-Z]+/g );\n\tif ( cssUnitsBits ) {\n\t\tfor ( const unit of cssUnitsBits ) {\n\t\t\t// Standardize the unit to px and extract the value.\n\t\t\tconst parsedUnit = parseUnit( getPxFromCssUnit( unit ) );\n\t\t\tif ( ! parseFloat( parsedUnit.value ) ) {\n\t\t\t\terrorFound = true;\n\t\t\t\t// End early since we are dealing with a null value.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcssUnit = cssUnit.replace( unit, parsedUnit.value );\n\t\t}\n\t} else {\n\t\terrorFound = true;\n\t}\n\n\t// For mixed math expressions wrapped within CSS expressions\n\tconst expressionsMatches = cssUnit.match( /(max|min|clamp)/g );\n\tif ( ! errorFound && expressionsMatches ) {\n\t\tconst values = cssUnit.split( ',' );\n\t\tfor ( const currentValue of values ) {\n\t\t\t// Check for nested calc() and remove them to calculate the value.\n\t\t\tconst rawCurrentValue = currentValue.replace( /\\s|calc/g, '' );\n\n\t\t\tif ( isMathExpression( rawCurrentValue ) ) {\n\t\t\t\tconst calculatedExpression = calculate( rawCurrentValue );\n\n\t\t\t\tif ( calculatedExpression ) {\n\t\t\t\t\tconst calculatedValue =\n\t\t\t\t\t\tcalculatedExpression.toFixed( 0 ) + 'px';\n\t\t\t\t\tcssUnit = cssUnit.replace( currentValue, calculatedValue );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst parsedValue = parseUnitFunction( cssUnit );\n\t\treturn ! parsedValue ? null : parsedValue.value + parsedValue.unit;\n\t}\n\n\tif ( errorFound ) {\n\t\treturn null;\n\t}\n\n\tconst calculatedResult = calculate( cssUnit );\n\treturn calculatedResult ? calculatedResult.toFixed( 0 ) + 'px' : null;\n}\n\n/**\n * Convert a parsedUnit object to px value.\n *\n * @param {Object} parsedUnit\n * @param {Object} options\n * @return {string} or {null} returns the converted with in a px value format.\n */\nfunction convertParsedUnitToPx( parsedUnit, options ) {\n\tconst PIXELS_PER_INCH = 96;\n\tconst ONE_PERCENT = 0.01;\n\n\tconst defaultProperties = {\n\t\tfontSize: 16,\n\t\tlineHeight: 16,\n\t\twidth: 375,\n\t\theight: 812,\n\t\ttype: 'font',\n\t};\n\n\tconst setOptions = Object.assign( {}, defaultProperties, options );\n\n\tconst relativeUnits = {\n\t\tem: setOptions.fontSize,\n\t\trem: setOptions.fontSize,\n\t\tvh: setOptions.height * ONE_PERCENT,\n\t\tvw: setOptions.width * ONE_PERCENT,\n\t\tvmin:\n\t\t\t( setOptions.width < setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\tvmax:\n\t\t\t( setOptions.width > setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\t'%':\n\t\t\t( setOptions.type === 'font'\n\t\t\t\t? setOptions.fontSize\n\t\t\t\t: setOptions.width ) * ONE_PERCENT,\n\t\tch: 8, // The advance measure (width) of the glyph \"0\" of the element's font. Approximate\n\t\tex: 7.15625, // X-height of the element's font. Approximate.\n\t\tlh: setOptions.lineHeight,\n\t};\n\trelativeUnits.svw = relativeUnits.vmin;\n\trelativeUnits.lvw = relativeUnits.vmax;\n\trelativeUnits.dvw = relativeUnits.vw;\n\trelativeUnits.svh = relativeUnits.vmin;\n\trelativeUnits.lvh = relativeUnits.vmax;\n\trelativeUnits.dvh = relativeUnits.vh;\n\trelativeUnits.vi = relativeUnits.vh;\n\trelativeUnits.svi = relativeUnits.vmin;\n\trelativeUnits.lvi = relativeUnits.vmax;\n\trelativeUnits.dvi = relativeUnits.vw;\n\trelativeUnits.vb = relativeUnits.vh;\n\trelativeUnits.svb = relativeUnits.vmin;\n\trelativeUnits.lvb = relativeUnits.vmax;\n\trelativeUnits.dvb = relativeUnits.vh;\n\trelativeUnits.svmin = relativeUnits.vmin;\n\trelativeUnits.lvmin = relativeUnits.vmin;\n\trelativeUnits.dvmin = relativeUnits.vmin;\n\trelativeUnits.svmax = relativeUnits.vmax;\n\trelativeUnits.lvmax = relativeUnits.vmax;\n\trelativeUnits.dvmax = relativeUnits.vmax;\n\n\tconst absoluteUnits = {\n\t\tin: PIXELS_PER_INCH,\n\t\tcm: PIXELS_PER_INCH / 2.54,\n\t\tmm: PIXELS_PER_INCH / 25.4,\n\t\tpt: PIXELS_PER_INCH / 72,\n\t\tpc: PIXELS_PER_INCH / 6,\n\t\tpx: 1,\n\t\tQ: PIXELS_PER_INCH / 2.54 / 40,\n\t};\n\n\tif ( relativeUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( relativeUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\tif ( absoluteUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( absoluteUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns the px value of a cssUnit.\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nexport function getPxFromCssUnit( cssUnit, options = {} ) {\n\tif ( Number.isFinite( cssUnit ) ) {\n\t\treturn cssUnit.toFixed( 0 ) + 'px';\n\t}\n\tif ( cssUnit === undefined ) {\n\t\treturn null;\n\t}\n\tlet parsedUnit = parseUnit( cssUnit );\n\n\tif ( ! parsedUnit.unit ) {\n\t\tparsedUnit = parseUnitFunction( cssUnit );\n\t}\n\n\tif ( isMathExpression( cssUnit ) && ! parsedUnit.unit ) {\n\t\treturn evalMathExpression( cssUnit );\n\t}\n\n\treturn convertParsedUnitToPx( parsedUnit, options );\n}\n\n// Use simple cache.\nconst cache = {};\n/**\n * Returns the px value of a cssUnit. The memoized version of getPxFromCssUnit;\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nfunction memoizedGetPxFromCssUnit( cssUnit, options = {} ) {\n\tconst hash = cssUnit + hashOptions( options );\n\n\tif ( ! cache[ hash ] ) {\n\t\tcache[ hash ] = getPxFromCssUnit( cssUnit, options );\n\t}\n\treturn cache[ hash ];\n}\n\nfunction hashOptions( options ) {\n\tlet hash = '';\n\tif ( options.hasOwnProperty( 'fontSize' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'lineHeight' ) ) {\n\t\thash = ':' + options.lineHeight;\n\t}\n\tif ( options.hasOwnProperty( 'width' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'height' ) ) {\n\t\thash = ':' + options.height;\n\t}\n\tif ( options.hasOwnProperty( 'type' ) ) {\n\t\thash = ':' + options.type;\n\t}\n\treturn hash;\n}\n\nexport default memoizedGetPxFromCssUnit;\n"],"mappings":"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"}
@@ -79,7 +79,7 @@ function getPasteEventData({
79
79
  // Strip meta tag.
80
80
  html = removeCharsetMetaTag(html);
81
81
  const files = (0, _dom.getFilesFromDataTransfer)(clipboardData);
82
- if (files.length && !shouldDismissPastedFiles(files, html, plainText)) {
82
+ if (files.length && !shouldDismissPastedFiles(files, html)) {
83
83
  return {
84
84
  files
85
85
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_dom","require","removeWindowsFragments","html","startStr","startIdx","indexOf","substring","length","endStr","endIdx","removeCharsetMetaTag","metaTag","startsWith","slice","getPasteEventData","clipboardData","plainText","getData","error1","error2","files","getFilesFromDataTransfer","shouldDismissPastedFiles","type","IMAGE_TAG","match","IMG_WITH_LOCAL_SRC"],"sources":["@wordpress/block-editor/src/utils/pasting.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\n/**\n * Normalizes a given string of HTML to remove the Windows-specific \"Fragment\"\n * comments and any preceding and trailing content.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startStr = '<!--StartFragment-->';\n\tconst startIdx = html.indexOf( startStr );\n\tif ( startIdx > -1 ) {\n\t\thtml = html.substring( startIdx + startStr.length );\n\t} else {\n\t\t// No point looking for EndFragment\n\t\treturn html;\n\t}\n\n\tconst endStr = '<!--EndFragment-->';\n\tconst endIdx = html.indexOf( endStr );\n\tif ( endIdx > -1 ) {\n\t\thtml = html.substring( 0, endIdx );\n\t}\n\n\treturn html;\n}\n\n/**\n * Removes the charset meta tag inserted by Chromium.\n * See:\n * - https://github.com/WordPress/gutenberg/issues/33585\n * - https://bugs.chromium.org/p/chromium/issues/detail?id=1264616#c4\n *\n * @param {string} html the html to be stripped of the meta tag.\n * @return {string} the cleaned html\n */\nfunction removeCharsetMetaTag( html ) {\n\tconst metaTag = `<meta charset='utf-8'>`;\n\n\tif ( html.startsWith( metaTag ) ) {\n\t\treturn html.slice( metaTag.length );\n\t}\n\n\treturn html;\n}\n\nexport function getPasteEventData( { clipboardData } ) {\n\tlet plainText = '';\n\tlet html = '';\n\n\t// IE11 only supports `Text` as an argument for `getData` and will\n\t// otherwise throw an invalid argument error, so we try the standard\n\t// arguments first, then fallback to `Text` if they fail.\n\ttry {\n\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\thtml = clipboardData.getData( 'text/html' );\n\t} catch ( error1 ) {\n\t\ttry {\n\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t} catch ( error2 ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Remove Windows-specific metadata appended within copied HTML text.\n\thtml = removeWindowsFragments( html );\n\n\t// Strip meta tag.\n\thtml = removeCharsetMetaTag( html );\n\n\tconst files = getFilesFromDataTransfer( clipboardData );\n\n\tif (\n\t\tfiles.length &&\n\t\t! shouldDismissPastedFiles( files, html, plainText )\n\t) {\n\t\treturn { files };\n\t}\n\n\treturn { html, plainText, files: [] };\n}\n\n/**\n * Given a collection of DataTransfer files and HTML and plain text strings,\n * determine whether the files are to be dismissed in favor of the HTML.\n *\n * Certain office-type programs, like Microsoft Word or Apple Numbers,\n * will, upon copy, generate a screenshot of the content being copied and\n * attach it to the clipboard alongside the actual rich text that the user\n * sought to copy. In those cases, we should let Gutenberg handle the rich text\n * content and not the screenshot, since this allows Gutenberg to insert\n * meaningful blocks, like paragraphs, lists or even tables.\n *\n * @param {File[]} files File objects obtained from a paste event\n * @param {string} html HTML content obtained from a paste event\n * @return {boolean} True if the files should be dismissed\n */\nexport function shouldDismissPastedFiles( files, html /*, plainText */ ) {\n\t// The question is only relevant when there is actual HTML content and when\n\t// there is exactly one image file.\n\tif (\n\t\thtml &&\n\t\tfiles?.length === 1 &&\n\t\tfiles[ 0 ].type.indexOf( 'image/' ) === 0\n\t) {\n\t\t// A single <img> tag found in the HTML source suggests that the\n\t\t// content being pasted revolves around an image. Sometimes there are\n\t\t// other elements found, like <figure>, but we assume that the user's\n\t\t// intention is to paste the actual image file.\n\t\tconst IMAGE_TAG = /<\\s*img\\b/gi;\n\t\tif ( html.match( IMAGE_TAG )?.length !== 1 ) return true;\n\n\t\t// Even when there is exactly one <img> tag in the HTML payload, we\n\t\t// choose to weed out local images, i.e. those whose source starts with\n\t\t// \"file://\". These payloads occur in specific configurations, such as\n\t\t// when copying an entire document from Microsoft Word, that contains\n\t\t// text and exactly one image, and pasting that content using Google\n\t\t// Chrome.\n\t\tconst IMG_WITH_LOCAL_SRC = /<\\s*img\\b[^>]*\\bsrc=\"file:\\/\\//i;\n\t\tif ( html.match( IMG_WITH_LOCAL_SRC ) ) return true;\n\t}\n\n\treturn false;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dom","require","removeWindowsFragments","html","startStr","startIdx","indexOf","substring","length","endStr","endIdx","removeCharsetMetaTag","metaTag","startsWith","slice","getPasteEventData","clipboardData","plainText","getData","error1","error2","files","getFilesFromDataTransfer","shouldDismissPastedFiles","type","IMAGE_TAG","match","IMG_WITH_LOCAL_SRC"],"sources":["@wordpress/block-editor/src/utils/pasting.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\n/**\n * Normalizes a given string of HTML to remove the Windows-specific \"Fragment\"\n * comments and any preceding and trailing content.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startStr = '<!--StartFragment-->';\n\tconst startIdx = html.indexOf( startStr );\n\tif ( startIdx > -1 ) {\n\t\thtml = html.substring( startIdx + startStr.length );\n\t} else {\n\t\t// No point looking for EndFragment\n\t\treturn html;\n\t}\n\n\tconst endStr = '<!--EndFragment-->';\n\tconst endIdx = html.indexOf( endStr );\n\tif ( endIdx > -1 ) {\n\t\thtml = html.substring( 0, endIdx );\n\t}\n\n\treturn html;\n}\n\n/**\n * Removes the charset meta tag inserted by Chromium.\n * See:\n * - https://github.com/WordPress/gutenberg/issues/33585\n * - https://bugs.chromium.org/p/chromium/issues/detail?id=1264616#c4\n *\n * @param {string} html the html to be stripped of the meta tag.\n * @return {string} the cleaned html\n */\nfunction removeCharsetMetaTag( html ) {\n\tconst metaTag = `<meta charset='utf-8'>`;\n\n\tif ( html.startsWith( metaTag ) ) {\n\t\treturn html.slice( metaTag.length );\n\t}\n\n\treturn html;\n}\n\nexport function getPasteEventData( { clipboardData } ) {\n\tlet plainText = '';\n\tlet html = '';\n\n\t// IE11 only supports `Text` as an argument for `getData` and will\n\t// otherwise throw an invalid argument error, so we try the standard\n\t// arguments first, then fallback to `Text` if they fail.\n\ttry {\n\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\thtml = clipboardData.getData( 'text/html' );\n\t} catch ( error1 ) {\n\t\ttry {\n\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t} catch ( error2 ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Remove Windows-specific metadata appended within copied HTML text.\n\thtml = removeWindowsFragments( html );\n\n\t// Strip meta tag.\n\thtml = removeCharsetMetaTag( html );\n\n\tconst files = getFilesFromDataTransfer( clipboardData );\n\n\tif ( files.length && ! shouldDismissPastedFiles( files, html ) ) {\n\t\treturn { files };\n\t}\n\n\treturn { html, plainText, files: [] };\n}\n\n/**\n * Given a collection of DataTransfer files and HTML and plain text strings,\n * determine whether the files are to be dismissed in favor of the HTML.\n *\n * Certain office-type programs, like Microsoft Word or Apple Numbers,\n * will, upon copy, generate a screenshot of the content being copied and\n * attach it to the clipboard alongside the actual rich text that the user\n * sought to copy. In those cases, we should let Gutenberg handle the rich text\n * content and not the screenshot, since this allows Gutenberg to insert\n * meaningful blocks, like paragraphs, lists or even tables.\n *\n * @param {File[]} files File objects obtained from a paste event\n * @param {string} html HTML content obtained from a paste event\n * @return {boolean} True if the files should be dismissed\n */\nexport function shouldDismissPastedFiles( files, html /*, plainText */ ) {\n\t// The question is only relevant when there is actual HTML content and when\n\t// there is exactly one image file.\n\tif (\n\t\thtml &&\n\t\tfiles?.length === 1 &&\n\t\tfiles[ 0 ].type.indexOf( 'image/' ) === 0\n\t) {\n\t\t// A single <img> tag found in the HTML source suggests that the\n\t\t// content being pasted revolves around an image. Sometimes there are\n\t\t// other elements found, like <figure>, but we assume that the user's\n\t\t// intention is to paste the actual image file.\n\t\tconst IMAGE_TAG = /<\\s*img\\b/gi;\n\t\tif ( html.match( IMAGE_TAG )?.length !== 1 ) return true;\n\n\t\t// Even when there is exactly one <img> tag in the HTML payload, we\n\t\t// choose to weed out local images, i.e. those whose source starts with\n\t\t// \"file://\". These payloads occur in specific configurations, such as\n\t\t// when copying an entire document from Microsoft Word, that contains\n\t\t// text and exactly one image, and pasting that content using Google\n\t\t// Chrome.\n\t\tconst IMG_WITH_LOCAL_SRC = /<\\s*img\\b[^>]*\\bsrc=\"file:\\/\\//i;\n\t\tif ( html.match( IMG_WITH_LOCAL_SRC ) ) return true;\n\t}\n\n\treturn false;\n}\n"],"mappings":"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"}
@@ -5,41 +5,36 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _compose = require("@wordpress/compose");
9
- var _traverse = _interopRequireDefault(require("./traverse"));
10
- var _urlRewrite = _interopRequireDefault(require("./transforms/url-rewrite"));
11
- var _wrap = _interopRequireDefault(require("./transforms/wrap"));
8
+ var _postcss = _interopRequireDefault(require("postcss"));
9
+ var _postcssPrefixwrap = _interopRequireDefault(require("postcss-prefixwrap"));
10
+ var _postcssUrlrebase = _interopRequireDefault(require("postcss-urlrebase"));
12
11
  /**
13
- * WordPress dependencies
14
- */
15
-
16
- /**
17
- * Internal dependencies
12
+ * External dependencies
18
13
  */
19
14
 
20
15
  /**
21
16
  * Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
22
17
  *
23
- * @param {Object|Array} styles CSS rules.
24
- * @param {string} wrapperClassName Wrapper Class Name.
18
+ * @typedef {Object} EditorStyle
19
+ * @property {string} css the CSS block(s), as a single string.
20
+ * @property {?string} baseURL the base URL to be used as the reference when rewritting urls.
21
+ * @property {?string[]} ignoredSelectors the selectors not to wrap.
22
+ *
23
+ * @param {EditorStyle[]} styles CSS rules.
24
+ * @param {string} wrapperSelector Wrapper selector.
25
25
  * @return {Array} converted rules.
26
26
  */
27
- const transformStyles = (styles, wrapperClassName = '') => {
28
- return Object.values(styles !== null && styles !== void 0 ? styles : []).map(({
27
+ const transformStyles = (styles, wrapperSelector = '') => {
28
+ return styles.map(({
29
29
  css,
30
+ ignoredSelectors = [],
30
31
  baseURL
31
32
  }) => {
32
- const transforms = [];
33
- if (wrapperClassName) {
34
- transforms.push((0, _wrap.default)(wrapperClassName));
35
- }
36
- if (baseURL) {
37
- transforms.push((0, _urlRewrite.default)(baseURL));
38
- }
39
- if (transforms.length) {
40
- return (0, _traverse.default)(css, (0, _compose.compose)(transforms));
41
- }
42
- return css;
33
+ return (0, _postcss.default)([wrapperSelector && (0, _postcssPrefixwrap.default)(wrapperSelector, {
34
+ ignoredSelectors: [...ignoredSelectors, wrapperSelector]
35
+ }), baseURL && (0, _postcssUrlrebase.default)({
36
+ rootUrl: baseURL
37
+ })].filter(Boolean)).process(css, {}).css; // use sync PostCSS API
43
38
  });
44
39
  };
45
40
  var _default = transformStyles;
@@ -1 +1 @@
1
- {"version":3,"names":["_compose","require","_traverse","_interopRequireDefault","_urlRewrite","_wrap","transformStyles","styles","wrapperClassName","Object","values","map","css","baseURL","transforms","push","wrap","urlRewrite","length","traverse","compose","_default","exports","default"],"sources":["@wordpress/block-editor/src/utils/transform-styles/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport traverse from './traverse';\nimport urlRewrite from './transforms/url-rewrite';\nimport wrap from './transforms/wrap';\n\n/**\n * Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.\n *\n * @param {Object|Array} styles CSS rules.\n * @param {string} wrapperClassName Wrapper Class Name.\n * @return {Array} converted rules.\n */\nconst transformStyles = ( styles, wrapperClassName = '' ) => {\n\treturn Object.values( styles ?? [] ).map( ( { css, baseURL } ) => {\n\t\tconst transforms = [];\n\t\tif ( wrapperClassName ) {\n\t\t\ttransforms.push( wrap( wrapperClassName ) );\n\t\t}\n\t\tif ( baseURL ) {\n\t\t\ttransforms.push( urlRewrite( baseURL ) );\n\t\t}\n\t\tif ( transforms.length ) {\n\t\t\treturn traverse( css, compose( transforms ) );\n\t\t}\n\n\t\treturn css;\n\t} );\n};\n\nexport default transformStyles;\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,KAAA,GAAAF,sBAAA,CAAAF,OAAA;AAVA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,eAAe,GAAGA,CAAEC,MAAM,EAAEC,gBAAgB,GAAG,EAAE,KAAM;EAC5D,OAAOC,MAAM,CAACC,MAAM,CAAEH,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAG,CAAC,CAACI,GAAG,CAAE,CAAE;IAAEC,GAAG;IAAEC;EAAQ,CAAC,KAAM;IACjE,MAAMC,UAAU,GAAG,EAAE;IACrB,IAAKN,gBAAgB,EAAG;MACvBM,UAAU,CAACC,IAAI,CAAE,IAAAC,aAAI,EAAER,gBAAiB,CAAE,CAAC;IAC5C;IACA,IAAKK,OAAO,EAAG;MACdC,UAAU,CAACC,IAAI,CAAE,IAAAE,mBAAU,EAAEJ,OAAQ,CAAE,CAAC;IACzC;IACA,IAAKC,UAAU,CAACI,MAAM,EAAG;MACxB,OAAO,IAAAC,iBAAQ,EAAEP,GAAG,EAAE,IAAAQ,gBAAO,EAAEN,UAAW,CAAE,CAAC;IAC9C;IAEA,OAAOF,GAAG;EACX,CAAE,CAAC;AACJ,CAAC;AAAC,IAAAS,QAAA,GAEaf,eAAe;AAAAgB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["_postcss","_interopRequireDefault","require","_postcssPrefixwrap","_postcssUrlrebase","transformStyles","styles","wrapperSelector","map","css","ignoredSelectors","baseURL","postcss","wrap","rebaseUrl","rootUrl","filter","Boolean","process","_default","exports","default"],"sources":["@wordpress/block-editor/src/utils/transform-styles/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport postcss from 'postcss';\nimport wrap from 'postcss-prefixwrap';\nimport rebaseUrl from 'postcss-urlrebase';\n\n/**\n * Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.\n *\n * @typedef {Object} EditorStyle\n * @property {string} css the CSS block(s), as a single string.\n * @property {?string} baseURL the base URL to be used as the reference when rewritting urls.\n * @property {?string[]} ignoredSelectors the selectors not to wrap.\n *\n * @param {EditorStyle[]} styles CSS rules.\n * @param {string} wrapperSelector Wrapper selector.\n * @return {Array} converted rules.\n */\nconst transformStyles = ( styles, wrapperSelector = '' ) => {\n\treturn styles.map( ( { css, ignoredSelectors = [], baseURL } ) => {\n\t\treturn postcss(\n\t\t\t[\n\t\t\t\twrapperSelector &&\n\t\t\t\t\twrap( wrapperSelector, {\n\t\t\t\t\t\tignoredSelectors: [\n\t\t\t\t\t\t\t...ignoredSelectors,\n\t\t\t\t\t\t\twrapperSelector,\n\t\t\t\t\t\t],\n\t\t\t\t\t} ),\n\t\t\t\tbaseURL && rebaseUrl( { rootUrl: baseURL } ),\n\t\t\t].filter( Boolean )\n\t\t).process( css, {} ).css; // use sync PostCSS API\n\t} );\n};\n\nexport default transformStyles;\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,iBAAA,GAAAH,sBAAA,CAAAC,OAAA;AALA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,eAAe,GAAGA,CAAEC,MAAM,EAAEC,eAAe,GAAG,EAAE,KAAM;EAC3D,OAAOD,MAAM,CAACE,GAAG,CAAE,CAAE;IAAEC,GAAG;IAAEC,gBAAgB,GAAG,EAAE;IAAEC;EAAQ,CAAC,KAAM;IACjE,OAAO,IAAAC,gBAAO,EACb,CACCL,eAAe,IACd,IAAAM,0BAAI,EAAEN,eAAe,EAAE;MACtBG,gBAAgB,EAAE,CACjB,GAAGA,gBAAgB,EACnBH,eAAe;IAEjB,CAAE,CAAC,EACJI,OAAO,IAAI,IAAAG,yBAAS,EAAE;MAAEC,OAAO,EAAEJ;IAAQ,CAAE,CAAC,CAC5C,CAACK,MAAM,CAAEC,OAAQ,CACnB,CAAC,CAACC,OAAO,CAAET,GAAG,EAAE,CAAC,CAAE,CAAC,CAACA,GAAG,CAAC,CAAC;EAC3B,CAAE,CAAC;AACJ,CAAC;AAAC,IAAAU,QAAA,GAEad,eAAe;AAAAe,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -17,28 +17,27 @@ export default function useAvailableAlignments(controls = DEFAULT_CONTROLS) {
17
17
  if (!controls.includes('none')) {
18
18
  controls = ['none', ...controls];
19
19
  }
20
- const {
21
- wideControlsEnabled = false,
22
- themeSupportsLayout,
23
- isBlockBasedTheme
24
- } = useSelect(select => {
25
- const {
26
- getSettings
27
- } = select(blockEditorStore);
28
- const settings = getSettings();
29
- return {
30
- wideControlsEnabled: settings.alignWide,
31
- themeSupportsLayout: settings.supportsLayout,
32
- isBlockBasedTheme: settings.__unstableIsBlockBasedTheme
33
- };
34
- }, []);
20
+ const isNoneOnly = controls.length === 1 && controls[0] === 'none';
21
+ const [wideControlsEnabled, themeSupportsLayout, isBlockBasedTheme] = useSelect(select => {
22
+ var _settings$alignWide;
23
+ // If `isNoneOnly` is true, we'll be returning early because there is
24
+ // nothing to filter on an empty array. We won't need the info from
25
+ // the `useSelect` but we must call it anyway because Rules of Hooks.
26
+ // So the callback returns early to avoid block editor subscription.
27
+ if (isNoneOnly) {
28
+ return [false, false, false];
29
+ }
30
+ const settings = select(blockEditorStore).getSettings();
31
+ return [(_settings$alignWide = settings.alignWide) !== null && _settings$alignWide !== void 0 ? _settings$alignWide : false, settings.supportsLayout, settings.__unstableIsBlockBasedTheme];
32
+ }, [isNoneOnly]);
35
33
  const layout = useLayout();
34
+ if (isNoneOnly) {
35
+ return EMPTY_ARRAY;
36
+ }
36
37
  const layoutType = getLayoutType(layout?.type);
37
- const layoutAlignments = layoutType.getAlignments(layout, isBlockBasedTheme);
38
38
  if (themeSupportsLayout) {
39
- const alignments = layoutAlignments.filter(({
40
- name: alignmentName
41
- }) => controls.includes(alignmentName));
39
+ const layoutAlignments = layoutType.getAlignments(layout, isBlockBasedTheme);
40
+ const alignments = layoutAlignments.filter(alignment => controls.includes(alignment.name));
42
41
  // While we treat `none` as an alignment, we shouldn't return it if no
43
42
  // other alignments exist.
44
43
  if (alignments.length === 1 && alignments[0].name === 'none') {
@@ -51,20 +50,23 @@ export default function useAvailableAlignments(controls = DEFAULT_CONTROLS) {
51
50
  if (layoutType.name !== 'default' && layoutType.name !== 'constrained') {
52
51
  return EMPTY_ARRAY;
53
52
  }
54
- const {
55
- alignments: availableAlignments = DEFAULT_CONTROLS
56
- } = layout;
57
- const enabledControls = controls.filter(control => (layout.alignments ||
58
- // Ignore the global wideAlignment check if the layout explicitely defines alignments.
59
- wideControlsEnabled || !WIDE_CONTROLS.includes(control)) && availableAlignments.includes(control)).map(enabledControl => ({
60
- name: enabledControl
53
+ const alignments = controls.filter(control => {
54
+ if (layout.alignments) {
55
+ return layout.alignments.includes(control);
56
+ }
57
+ if (!wideControlsEnabled && WIDE_CONTROLS.includes(control)) {
58
+ return false;
59
+ }
60
+ return DEFAULT_CONTROLS.includes(control);
61
+ }).map(name => ({
62
+ name
61
63
  }));
62
64
 
63
65
  // While we treat `none` as an alignment, we shouldn't return it if no
64
66
  // other alignments exist.
65
- if (enabledControls.length === 1 && enabledControls[0].name === 'none') {
67
+ if (alignments.length === 1 && alignments[0].name === 'none') {
66
68
  return EMPTY_ARRAY;
67
69
  }
68
- return enabledControls;
70
+ return alignments;
69
71
  }
70
72
  //# sourceMappingURL=use-available-alignments.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useLayout","store","blockEditorStore","getLayoutType","EMPTY_ARRAY","DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","wideControlsEnabled","themeSupportsLayout","isBlockBasedTheme","select","getSettings","settings","alignWide","supportsLayout","__unstableIsBlockBasedTheme","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","name","alignmentName","length","availableAlignments","enabledControls","control","map","enabledControl"],"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst EMPTY_ARRAY = [];\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst {\n\t\twideControlsEnabled = false,\n\t\tthemeSupportsLayout,\n\t\tisBlockBasedTheme,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\twideControlsEnabled: settings.alignWide,\n\t\t\tthemeSupportsLayout: settings.supportsLayout,\n\t\t\tisBlockBasedTheme: settings.__unstableIsBlockBasedTheme,\n\t\t};\n\t}, [] );\n\tconst layout = useLayout();\n\tconst layoutType = getLayoutType( layout?.type );\n\tconst layoutAlignments = layoutType.getAlignments(\n\t\tlayout,\n\t\tisBlockBasedTheme\n\t);\n\n\tif ( themeSupportsLayout ) {\n\t\tconst alignments = layoutAlignments.filter(\n\t\t\t( { name: alignmentName } ) => controls.includes( alignmentName )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' && layoutType.name !== 'constrained' ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\tconst { alignments: availableAlignments = DEFAULT_CONTROLS } = layout;\n\tconst enabledControls = controls\n\t\t.filter(\n\t\t\t( control ) =>\n\t\t\t\t( layout.alignments || // Ignore the global wideAlignment check if the layout explicitely defines alignments.\n\t\t\t\t\twideControlsEnabled ||\n\t\t\t\t\t! WIDE_CONTROLS.includes( control ) ) &&\n\t\t\t\tavailableAlignments.includes( control )\n\t\t)\n\t\t.map( ( enabledControl ) => ( { name: enabledControl } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif (\n\t\tenabledControls.length === 1 &&\n\t\tenabledControls[ 0 ].name === 'none'\n\t) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\treturn enabledControls;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,aAAa,QAAQ,eAAe;AAE7C,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,gBAAgB,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAE;AAC9E,MAAMC,aAAa,GAAG,CAAE,MAAM,EAAE,MAAM,CAAE;AAExC,eAAe,SAASC,sBAAsBA,CAAEC,QAAQ,GAAGH,gBAAgB,EAAG;EAC7E;EACA,IAAK,CAAEG,QAAQ,CAACC,QAAQ,CAAE,MAAO,CAAC,EAAG;IACpCD,QAAQ,GAAG,CAAE,MAAM,EAAE,GAAGA,QAAQ,CAAE;EACnC;EACA,MAAM;IACLE,mBAAmB,GAAG,KAAK;IAC3BC,mBAAmB;IACnBC;EACD,CAAC,GAAGb,SAAS,CAAIc,MAAM,IAAM;IAC5B,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEX,gBAAiB,CAAC;IAClD,MAAMa,QAAQ,GAAGD,WAAW,CAAC,CAAC;IAC9B,OAAO;MACNJ,mBAAmB,EAAEK,QAAQ,CAACC,SAAS;MACvCL,mBAAmB,EAAEI,QAAQ,CAACE,cAAc;MAC5CL,iBAAiB,EAAEG,QAAQ,CAACG;IAC7B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMC,MAAM,GAAGnB,SAAS,CAAC,CAAC;EAC1B,MAAMoB,UAAU,GAAGjB,aAAa,CAAEgB,MAAM,EAAEE,IAAK,CAAC;EAChD,MAAMC,gBAAgB,GAAGF,UAAU,CAACG,aAAa,CAChDJ,MAAM,EACNP,iBACD,CAAC;EAED,IAAKD,mBAAmB,EAAG;IAC1B,MAAMa,UAAU,GAAGF,gBAAgB,CAACG,MAAM,CACzC,CAAE;MAAEC,IAAI,EAAEC;IAAc,CAAC,KAAMnB,QAAQ,CAACC,QAAQ,CAAEkB,aAAc,CACjE,CAAC;IACD;IACA;IACA,IAAKH,UAAU,CAACI,MAAM,KAAK,CAAC,IAAIJ,UAAU,CAAE,CAAC,CAAE,CAACE,IAAI,KAAK,MAAM,EAAG;MACjE,OAAOtB,WAAW;IACnB;IACA,OAAOoB,UAAU;EAClB;;EAEA;EACA,IAAKJ,UAAU,CAACM,IAAI,KAAK,SAAS,IAAIN,UAAU,CAACM,IAAI,KAAK,aAAa,EAAG;IACzE,OAAOtB,WAAW;EACnB;EACA,MAAM;IAAEoB,UAAU,EAAEK,mBAAmB,GAAGxB;EAAiB,CAAC,GAAGc,MAAM;EACrE,MAAMW,eAAe,GAAGtB,QAAQ,CAC9BiB,MAAM,CACJM,OAAO,IACR,CAAEZ,MAAM,CAACK,UAAU;EAAI;EACtBd,mBAAmB,IACnB,CAAEJ,aAAa,CAACG,QAAQ,CAAEsB,OAAQ,CAAC,KACpCF,mBAAmB,CAACpB,QAAQ,CAAEsB,OAAQ,CACxC,CAAC,CACAC,GAAG,CAAIC,cAAc,KAAQ;IAAEP,IAAI,EAAEO;EAAe,CAAC,CAAG,CAAC;;EAE3D;EACA;EACA,IACCH,eAAe,CAACF,MAAM,KAAK,CAAC,IAC5BE,eAAe,CAAE,CAAC,CAAE,CAACJ,IAAI,KAAK,MAAM,EACnC;IACD,OAAOtB,WAAW;EACnB;EAEA,OAAO0B,eAAe;AACvB"}
1
+ {"version":3,"names":["useSelect","useLayout","store","blockEditorStore","getLayoutType","EMPTY_ARRAY","DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","isNoneOnly","length","wideControlsEnabled","themeSupportsLayout","isBlockBasedTheme","select","_settings$alignWide","settings","getSettings","alignWide","supportsLayout","__unstableIsBlockBasedTheme","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","alignment","name","control","map"],"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst EMPTY_ARRAY = [];\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst isNoneOnly = controls.length === 1 && controls[ 0 ] === 'none';\n\n\tconst [ wideControlsEnabled, themeSupportsLayout, isBlockBasedTheme ] =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\t// If `isNoneOnly` is true, we'll be returning early because there is\n\t\t\t\t// nothing to filter on an empty array. We won't need the info from\n\t\t\t\t// the `useSelect` but we must call it anyway because Rules of Hooks.\n\t\t\t\t// So the callback returns early to avoid block editor subscription.\n\t\t\t\tif ( isNoneOnly ) {\n\t\t\t\t\treturn [ false, false, false ];\n\t\t\t\t}\n\n\t\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\t\treturn [\n\t\t\t\t\tsettings.alignWide ?? false,\n\t\t\t\t\tsettings.supportsLayout,\n\t\t\t\t\tsettings.__unstableIsBlockBasedTheme,\n\t\t\t\t];\n\t\t\t},\n\t\t\t[ isNoneOnly ]\n\t\t);\n\tconst layout = useLayout();\n\n\tif ( isNoneOnly ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst layoutType = getLayoutType( layout?.type );\n\n\tif ( themeSupportsLayout ) {\n\t\tconst layoutAlignments = layoutType.getAlignments(\n\t\t\tlayout,\n\t\t\tisBlockBasedTheme\n\t\t);\n\t\tconst alignments = layoutAlignments.filter( ( alignment ) =>\n\t\t\tcontrols.includes( alignment.name )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' && layoutType.name !== 'constrained' ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst alignments = controls\n\t\t.filter( ( control ) => {\n\t\t\tif ( layout.alignments ) {\n\t\t\t\treturn layout.alignments.includes( control );\n\t\t\t}\n\n\t\t\tif ( ! wideControlsEnabled && WIDE_CONTROLS.includes( control ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn DEFAULT_CONTROLS.includes( control );\n\t\t} )\n\t\t.map( ( name ) => ( { name } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\treturn alignments;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,aAAa,QAAQ,eAAe;AAE7C,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,gBAAgB,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAE;AAC9E,MAAMC,aAAa,GAAG,CAAE,MAAM,EAAE,MAAM,CAAE;AAExC,eAAe,SAASC,sBAAsBA,CAAEC,QAAQ,GAAGH,gBAAgB,EAAG;EAC7E;EACA,IAAK,CAAEG,QAAQ,CAACC,QAAQ,CAAE,MAAO,CAAC,EAAG;IACpCD,QAAQ,GAAG,CAAE,MAAM,EAAE,GAAGA,QAAQ,CAAE;EACnC;EACA,MAAME,UAAU,GAAGF,QAAQ,CAACG,MAAM,KAAK,CAAC,IAAIH,QAAQ,CAAE,CAAC,CAAE,KAAK,MAAM;EAEpE,MAAM,CAAEI,mBAAmB,EAAEC,mBAAmB,EAAEC,iBAAiB,CAAE,GACpEf,SAAS,CACNgB,MAAM,IAAM;IAAA,IAAAC,mBAAA;IACb;IACA;IACA;IACA;IACA,IAAKN,UAAU,EAAG;MACjB,OAAO,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE;IAC/B;IAEA,MAAMO,QAAQ,GAAGF,MAAM,CAAEb,gBAAiB,CAAC,CAACgB,WAAW,CAAC,CAAC;IACzD,OAAO,EAAAF,mBAAA,GACNC,QAAQ,CAACE,SAAS,cAAAH,mBAAA,cAAAA,mBAAA,GAAI,KAAK,EAC3BC,QAAQ,CAACG,cAAc,EACvBH,QAAQ,CAACI,2BAA2B,CACpC;EACF,CAAC,EACD,CAAEX,UAAU,CACb,CAAC;EACF,MAAMY,MAAM,GAAGtB,SAAS,CAAC,CAAC;EAE1B,IAAKU,UAAU,EAAG;IACjB,OAAON,WAAW;EACnB;EAEA,MAAMmB,UAAU,GAAGpB,aAAa,CAAEmB,MAAM,EAAEE,IAAK,CAAC;EAEhD,IAAKX,mBAAmB,EAAG;IAC1B,MAAMY,gBAAgB,GAAGF,UAAU,CAACG,aAAa,CAChDJ,MAAM,EACNR,iBACD,CAAC;IACD,MAAMa,UAAU,GAAGF,gBAAgB,CAACG,MAAM,CAAIC,SAAS,IACtDrB,QAAQ,CAACC,QAAQ,CAAEoB,SAAS,CAACC,IAAK,CACnC,CAAC;IACD;IACA;IACA,IAAKH,UAAU,CAAChB,MAAM,KAAK,CAAC,IAAIgB,UAAU,CAAE,CAAC,CAAE,CAACG,IAAI,KAAK,MAAM,EAAG;MACjE,OAAO1B,WAAW;IACnB;IACA,OAAOuB,UAAU;EAClB;;EAEA;EACA,IAAKJ,UAAU,CAACO,IAAI,KAAK,SAAS,IAAIP,UAAU,CAACO,IAAI,KAAK,aAAa,EAAG;IACzE,OAAO1B,WAAW;EACnB;EAEA,MAAMuB,UAAU,GAAGnB,QAAQ,CACzBoB,MAAM,CAAIG,OAAO,IAAM;IACvB,IAAKT,MAAM,CAACK,UAAU,EAAG;MACxB,OAAOL,MAAM,CAACK,UAAU,CAAClB,QAAQ,CAAEsB,OAAQ,CAAC;IAC7C;IAEA,IAAK,CAAEnB,mBAAmB,IAAIN,aAAa,CAACG,QAAQ,CAAEsB,OAAQ,CAAC,EAAG;MACjE,OAAO,KAAK;IACb;IAEA,OAAO1B,gBAAgB,CAACI,QAAQ,CAAEsB,OAAQ,CAAC;EAC5C,CAAE,CAAC,CACFC,GAAG,CAAIF,IAAI,KAAQ;IAAEA;EAAK,CAAC,CAAG,CAAC;;EAEjC;EACA;EACA,IAAKH,UAAU,CAAChB,MAAM,KAAK,CAAC,IAAIgB,UAAU,CAAE,CAAC,CAAE,CAACG,IAAI,KAAK,MAAM,EAAG;IACjE,OAAO1B,WAAW;EACnB;EAEA,OAAOuB,UAAU;AAClB"}
@@ -17,6 +17,9 @@ export default function useBlockControlsFill(group, shareWithChildBlocks) {
17
17
  clientId
18
18
  } = useBlockEditContext();
19
19
  const isParentDisplayed = useSelect(select => {
20
+ if (!shareWithChildBlocks) {
21
+ return false;
22
+ }
20
23
  const {
21
24
  getBlockName,
22
25
  hasSelectedInnerBlock
@@ -24,7 +27,7 @@ export default function useBlockControlsFill(group, shareWithChildBlocks) {
24
27
  const {
25
28
  hasBlockSupport
26
29
  } = select(blocksStore);
27
- return shareWithChildBlocks && hasBlockSupport(getBlockName(clientId), '__experimentalExposeControlsToChildren', false) && hasSelectedInnerBlock(clientId);
30
+ return hasBlockSupport(getBlockName(clientId), '__experimentalExposeControlsToChildren', false) && hasSelectedInnerBlock(clientId);
28
31
  }, [shareWithChildBlocks, clientId]);
29
32
  if (isDisplayed) {
30
33
  return groups[group]?.Fill;
@@ -1 +1 @@
1
- {"version":3,"names":["store","blocksStore","useSelect","groups","blockEditorStore","useBlockEditContext","useDisplayBlockControls","useBlockControlsFill","group","shareWithChildBlocks","isDisplayed","clientId","isParentDisplayed","select","getBlockName","hasSelectedInnerBlock","hasBlockSupport","Fill","parent"],"sources":["@wordpress/block-editor/src/components/block-controls/hook.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useDisplayBlockControls from '../use-display-block-controls';\n\nexport default function useBlockControlsFill( group, shareWithChildBlocks ) {\n\tconst isDisplayed = useDisplayBlockControls();\n\tconst { clientId } = useBlockEditContext();\n\tconst isParentDisplayed = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\t\treturn (\n\t\t\t\tshareWithChildBlocks &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t) &&\n\t\t\t\thasSelectedInnerBlock( clientId )\n\t\t\t);\n\t\t},\n\t\t[ shareWithChildBlocks, clientId ]\n\t);\n\n\tif ( isDisplayed ) {\n\t\treturn groups[ group ]?.Fill;\n\t}\n\tif ( isParentDisplayed ) {\n\t\treturn groups.parent.Fill;\n\t}\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASH,KAAK,IAAII,gBAAgB,QAAQ,aAAa;AACvD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,OAAOC,uBAAuB,MAAM,+BAA+B;AAEnE,eAAe,SAASC,oBAAoBA,CAAEC,KAAK,EAAEC,oBAAoB,EAAG;EAC3E,MAAMC,WAAW,GAAGJ,uBAAuB,CAAC,CAAC;EAC7C,MAAM;IAAEK;EAAS,CAAC,GAAGN,mBAAmB,CAAC,CAAC;EAC1C,MAAMO,iBAAiB,GAAGV,SAAS,CAChCW,MAAM,IAAM;IACb,MAAM;MAAEC,YAAY;MAAEC;IAAsB,CAAC,GAC5CF,MAAM,CAAET,gBAAiB,CAAC;IAC3B,MAAM;MAAEY;IAAgB,CAAC,GAAGH,MAAM,CAAEZ,WAAY,CAAC;IACjD,OACCQ,oBAAoB,IACpBO,eAAe,CACdF,YAAY,CAAEH,QAAS,CAAC,EACxB,wCAAwC,EACxC,KACD,CAAC,IACDI,qBAAqB,CAAEJ,QAAS,CAAC;EAEnC,CAAC,EACD,CAAEF,oBAAoB,EAAEE,QAAQ,CACjC,CAAC;EAED,IAAKD,WAAW,EAAG;IAClB,OAAOP,MAAM,CAAEK,KAAK,CAAE,EAAES,IAAI;EAC7B;EACA,IAAKL,iBAAiB,EAAG;IACxB,OAAOT,MAAM,CAACe,MAAM,CAACD,IAAI;EAC1B;EACA,OAAO,IAAI;AACZ"}
1
+ {"version":3,"names":["store","blocksStore","useSelect","groups","blockEditorStore","useBlockEditContext","useDisplayBlockControls","useBlockControlsFill","group","shareWithChildBlocks","isDisplayed","clientId","isParentDisplayed","select","getBlockName","hasSelectedInnerBlock","hasBlockSupport","Fill","parent"],"sources":["@wordpress/block-editor/src/components/block-controls/hook.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useDisplayBlockControls from '../use-display-block-controls';\n\nexport default function useBlockControlsFill( group, shareWithChildBlocks ) {\n\tconst isDisplayed = useDisplayBlockControls();\n\tconst { clientId } = useBlockEditContext();\n\tconst isParentDisplayed = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! shareWithChildBlocks ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { getBlockName, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { hasBlockSupport } = select( blocksStore );\n\n\t\t\treturn (\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t) && hasSelectedInnerBlock( clientId )\n\t\t\t);\n\t\t},\n\t\t[ shareWithChildBlocks, clientId ]\n\t);\n\n\tif ( isDisplayed ) {\n\t\treturn groups[ group ]?.Fill;\n\t}\n\tif ( isParentDisplayed ) {\n\t\treturn groups.parent.Fill;\n\t}\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASH,KAAK,IAAII,gBAAgB,QAAQ,aAAa;AACvD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,OAAOC,uBAAuB,MAAM,+BAA+B;AAEnE,eAAe,SAASC,oBAAoBA,CAAEC,KAAK,EAAEC,oBAAoB,EAAG;EAC3E,MAAMC,WAAW,GAAGJ,uBAAuB,CAAC,CAAC;EAC7C,MAAM;IAAEK;EAAS,CAAC,GAAGN,mBAAmB,CAAC,CAAC;EAC1C,MAAMO,iBAAiB,GAAGV,SAAS,CAChCW,MAAM,IAAM;IACb,IAAK,CAAEJ,oBAAoB,EAAG;MAC7B,OAAO,KAAK;IACb;IAEA,MAAM;MAAEK,YAAY;MAAEC;IAAsB,CAAC,GAC5CF,MAAM,CAAET,gBAAiB,CAAC;IAC3B,MAAM;MAAEY;IAAgB,CAAC,GAAGH,MAAM,CAAEZ,WAAY,CAAC;IAEjD,OACCe,eAAe,CACdF,YAAY,CAAEH,QAAS,CAAC,EACxB,wCAAwC,EACxC,KACD,CAAC,IAAII,qBAAqB,CAAEJ,QAAS,CAAC;EAExC,CAAC,EACD,CAAEF,oBAAoB,EAAEE,QAAQ,CACjC,CAAC;EAED,IAAKD,WAAW,EAAG;IAClB,OAAOP,MAAM,CAAEK,KAAK,CAAE,EAAES,IAAI;EAC7B;EACA,IAAKL,iBAAiB,EAAG;IACxB,OAAOT,MAAM,CAACe,MAAM,CAACD,IAAI;EAC1B;EACA,OAAO,IAAI;AACZ"}
@@ -13,7 +13,7 @@ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
13
13
  * Internal dependencies
14
14
  */
15
15
  import styles from './block.scss';
16
- const TEXT_BLOCKS_WITH_OUTLINE = ['core/missing'];
16
+ const TEXT_BLOCKS_WITH_OUTLINE = ['core/missing', 'core/freeform'];
17
17
  function BlockOutline({
18
18
  blockCategory,
19
19
  hasInnerBlocks,
@@ -1 +1 @@
1
- {"version":3,"names":["View","usePreferredColorSchemeStyle","styles","TEXT_BLOCKS_WITH_OUTLINE","BlockOutline","blockCategory","hasInnerBlocks","isRootList","isSelected","name","textBlockWithOutline","includes","socialBlockWithOutline","hasBlockTextCategory","hasBlockMediaCategory","shouldShowCompactOutline","styleSolidBorder","solidBorder","solidBorderColor","solidBorderColorDark","solidBorderCompact","solidBorderTextContent","shoudlShowOutline","createElement","pointerEvents","style"],"sources":["@wordpress/block-editor/src/components/block-list/block-outline.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './block.scss';\n\nconst TEXT_BLOCKS_WITH_OUTLINE = [ 'core/missing' ];\n\nfunction BlockOutline( {\n\tblockCategory,\n\thasInnerBlocks,\n\tisRootList,\n\tisSelected,\n\tname,\n} ) {\n\tconst textBlockWithOutline = TEXT_BLOCKS_WITH_OUTLINE.includes( name );\n\tconst socialBlockWithOutline = name.includes( 'core/social-link' );\n\n\tconst hasBlockTextCategory =\n\t\tblockCategory === 'text' && ! textBlockWithOutline;\n\tconst hasBlockMediaCategory =\n\t\tblockCategory === 'media' ||\n\t\tblockCategory === 'embed' ||\n\t\t! blockCategory;\n\tconst shouldShowCompactOutline =\n\t\t( hasBlockMediaCategory && ! hasInnerBlocks ) || textBlockWithOutline;\n\n\tconst styleSolidBorder = [\n\t\tstyles.solidBorder,\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.solidBorderColor,\n\t\t\tstyles.solidBorderColorDark\n\t\t),\n\t\tshouldShowCompactOutline && styles.solidBorderCompact,\n\t\thasBlockTextCategory && styles.solidBorderTextContent,\n\t];\n\n\tconst shoudlShowOutline =\n\t\tisSelected &&\n\t\t( ( hasBlockTextCategory && hasInnerBlocks ) ||\n\t\t\t( ! hasBlockTextCategory && hasInnerBlocks ) ||\n\t\t\t( ! hasBlockTextCategory && isRootList ) ||\n\t\t\tsocialBlockWithOutline ||\n\t\t\ttextBlockWithOutline );\n\n\treturn (\n\t\tshoudlShowOutline && (\n\t\t\t<View pointerEvents=\"box-none\" style={ styleSolidBorder } />\n\t\t)\n\t);\n}\n\nexport default BlockOutline;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;;AAEnC;AACA;AACA;AACA,SAASC,4BAA4B,QAAQ,oBAAoB;;AAEjE;AACA;AACA;AACA,OAAOC,MAAM,MAAM,cAAc;AAEjC,MAAMC,wBAAwB,GAAG,CAAE,cAAc,CAAE;AAEnD,SAASC,YAAYA,CAAE;EACtBC,aAAa;EACbC,cAAc;EACdC,UAAU;EACVC,UAAU;EACVC;AACD,CAAC,EAAG;EACH,MAAMC,oBAAoB,GAAGP,wBAAwB,CAACQ,QAAQ,CAAEF,IAAK,CAAC;EACtE,MAAMG,sBAAsB,GAAGH,IAAI,CAACE,QAAQ,CAAE,kBAAmB,CAAC;EAElE,MAAME,oBAAoB,GACzBR,aAAa,KAAK,MAAM,IAAI,CAAEK,oBAAoB;EACnD,MAAMI,qBAAqB,GAC1BT,aAAa,KAAK,OAAO,IACzBA,aAAa,KAAK,OAAO,IACzB,CAAEA,aAAa;EAChB,MAAMU,wBAAwB,GAC3BD,qBAAqB,IAAI,CAAER,cAAc,IAAMI,oBAAoB;EAEtE,MAAMM,gBAAgB,GAAG,CACxBd,MAAM,CAACe,WAAW,EAClBhB,4BAA4B,CAC3BC,MAAM,CAACgB,gBAAgB,EACvBhB,MAAM,CAACiB,oBACR,CAAC,EACDJ,wBAAwB,IAAIb,MAAM,CAACkB,kBAAkB,EACrDP,oBAAoB,IAAIX,MAAM,CAACmB,sBAAsB,CACrD;EAED,MAAMC,iBAAiB,GACtBd,UAAU,KACNK,oBAAoB,IAAIP,cAAc,IACvC,CAAEO,oBAAoB,IAAIP,cAAgB,IAC1C,CAAEO,oBAAoB,IAAIN,UAAY,IACxCK,sBAAsB,IACtBF,oBAAoB,CAAE;EAExB,OACCY,iBAAiB,IAChBC,aAAA,CAACvB,IAAI;IAACwB,aAAa,EAAC,UAAU;IAACC,KAAK,EAAGT;EAAkB,CAAE,CAC3D;AAEH;AAEA,eAAeZ,YAAY"}
1
+ {"version":3,"names":["View","usePreferredColorSchemeStyle","styles","TEXT_BLOCKS_WITH_OUTLINE","BlockOutline","blockCategory","hasInnerBlocks","isRootList","isSelected","name","textBlockWithOutline","includes","socialBlockWithOutline","hasBlockTextCategory","hasBlockMediaCategory","shouldShowCompactOutline","styleSolidBorder","solidBorder","solidBorderColor","solidBorderColorDark","solidBorderCompact","solidBorderTextContent","shoudlShowOutline","createElement","pointerEvents","style"],"sources":["@wordpress/block-editor/src/components/block-list/block-outline.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './block.scss';\n\nconst TEXT_BLOCKS_WITH_OUTLINE = [ 'core/missing', 'core/freeform' ];\n\nfunction BlockOutline( {\n\tblockCategory,\n\thasInnerBlocks,\n\tisRootList,\n\tisSelected,\n\tname,\n} ) {\n\tconst textBlockWithOutline = TEXT_BLOCKS_WITH_OUTLINE.includes( name );\n\tconst socialBlockWithOutline = name.includes( 'core/social-link' );\n\n\tconst hasBlockTextCategory =\n\t\tblockCategory === 'text' && ! textBlockWithOutline;\n\tconst hasBlockMediaCategory =\n\t\tblockCategory === 'media' ||\n\t\tblockCategory === 'embed' ||\n\t\t! blockCategory;\n\tconst shouldShowCompactOutline =\n\t\t( hasBlockMediaCategory && ! hasInnerBlocks ) || textBlockWithOutline;\n\n\tconst styleSolidBorder = [\n\t\tstyles.solidBorder,\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.solidBorderColor,\n\t\t\tstyles.solidBorderColorDark\n\t\t),\n\t\tshouldShowCompactOutline && styles.solidBorderCompact,\n\t\thasBlockTextCategory && styles.solidBorderTextContent,\n\t];\n\n\tconst shoudlShowOutline =\n\t\tisSelected &&\n\t\t( ( hasBlockTextCategory && hasInnerBlocks ) ||\n\t\t\t( ! hasBlockTextCategory && hasInnerBlocks ) ||\n\t\t\t( ! hasBlockTextCategory && isRootList ) ||\n\t\t\tsocialBlockWithOutline ||\n\t\t\ttextBlockWithOutline );\n\n\treturn (\n\t\tshoudlShowOutline && (\n\t\t\t<View pointerEvents=\"box-none\" style={ styleSolidBorder } />\n\t\t)\n\t);\n}\n\nexport default BlockOutline;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;;AAEnC;AACA;AACA;AACA,SAASC,4BAA4B,QAAQ,oBAAoB;;AAEjE;AACA;AACA;AACA,OAAOC,MAAM,MAAM,cAAc;AAEjC,MAAMC,wBAAwB,GAAG,CAAE,cAAc,EAAE,eAAe,CAAE;AAEpE,SAASC,YAAYA,CAAE;EACtBC,aAAa;EACbC,cAAc;EACdC,UAAU;EACVC,UAAU;EACVC;AACD,CAAC,EAAG;EACH,MAAMC,oBAAoB,GAAGP,wBAAwB,CAACQ,QAAQ,CAAEF,IAAK,CAAC;EACtE,MAAMG,sBAAsB,GAAGH,IAAI,CAACE,QAAQ,CAAE,kBAAmB,CAAC;EAElE,MAAME,oBAAoB,GACzBR,aAAa,KAAK,MAAM,IAAI,CAAEK,oBAAoB;EACnD,MAAMI,qBAAqB,GAC1BT,aAAa,KAAK,OAAO,IACzBA,aAAa,KAAK,OAAO,IACzB,CAAEA,aAAa;EAChB,MAAMU,wBAAwB,GAC3BD,qBAAqB,IAAI,CAAER,cAAc,IAAMI,oBAAoB;EAEtE,MAAMM,gBAAgB,GAAG,CACxBd,MAAM,CAACe,WAAW,EAClBhB,4BAA4B,CAC3BC,MAAM,CAACgB,gBAAgB,EACvBhB,MAAM,CAACiB,oBACR,CAAC,EACDJ,wBAAwB,IAAIb,MAAM,CAACkB,kBAAkB,EACrDP,oBAAoB,IAAIX,MAAM,CAACmB,sBAAsB,CACrD;EAED,MAAMC,iBAAiB,GACtBd,UAAU,KACNK,oBAAoB,IAAIP,cAAc,IACvC,CAAEO,oBAAoB,IAAIP,cAAgB,IAC1C,CAAEO,oBAAoB,IAAIN,UAAY,IACxCK,sBAAsB,IACtBF,oBAAoB,CAAE;EAExB,OACCY,iBAAiB,IAChBC,aAAA,CAACvB,IAAI;IAACwB,aAAa,EAAC,UAAU;IAACC,KAAK,EAAGT;EAAkB,CAAE,CAC3D;AAEH;AAEA,eAAeZ,YAAY"}
@@ -398,6 +398,8 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, registry) => {
398
398
  }
399
399
  }
400
400
  moveFirstItemUp(rootClientId);
401
+ } else {
402
+ removeBlock(clientId);
401
403
  }
402
404
  }
403
405
  },
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","getDefaultBlockName","isUnmodifiedBlock","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","store","blockEditorStore","useLayout","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","createElement","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","themeSupportsLayout","isTemporarilyEditingAsBlocks","blockEditingMode","select","getSettings","__unstableGetTemporarilyEditingAsBlocks","getBlockEditingMode","supportsLayout","removeBlock","onRemove","parentLayout","blockEdit","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","Fragment","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","Provider","fallback","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","every","key","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback, RawHTML } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { BlockListBlockContext } from './block-list-block-context';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( blockEditingMode === 'disabled' ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-editing-disabled': blockEditingMode === 'disabled',\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","getDefaultBlockName","isUnmodifiedBlock","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","store","blockEditorStore","useLayout","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","createElement","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","themeSupportsLayout","isTemporarilyEditingAsBlocks","blockEditingMode","select","getSettings","__unstableGetTemporarilyEditingAsBlocks","getBlockEditingMode","supportsLayout","removeBlock","onRemove","parentLayout","blockEdit","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","Fragment","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","Provider","fallback","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","every","key","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback, RawHTML } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { BlockListBlockContext } from './block-list-block-context';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( blockEditingMode === 'disabled' ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-editing-disabled': blockEditingMode === 'disabled',\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"],"mappings":"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"}