@wordpress/block-editor 10.1.1-next.4d3b314fd5.0 → 10.3.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 (327) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +41 -0
  3. package/build/components/block-controls/slot.js +2 -2
  4. package/build/components/block-controls/slot.js.map +1 -1
  5. package/build/components/block-draggable/draggable-chip.js +4 -2
  6. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  7. package/build/components/block-inspector/index.js +4 -5
  8. package/build/components/block-inspector/index.js.map +1 -1
  9. package/build/components/block-list/block-list-compact.native.js +1 -0
  10. package/build/components/block-list/block-list-compact.native.js.map +1 -1
  11. package/build/components/block-list/block.js +72 -14
  12. package/build/components/block-list/block.js.map +1 -1
  13. package/build/components/block-list/block.native.js +79 -12
  14. package/build/components/block-list/block.native.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +7 -23
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +9 -6
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-parent-selector/index.js +5 -5
  20. package/build/components/block-parent-selector/index.js.map +1 -1
  21. package/build/components/block-patterns-list/index.js +5 -4
  22. package/build/components/block-patterns-list/index.js.map +1 -1
  23. package/build/components/block-popover/drop-zone.js +85 -0
  24. package/build/components/block-popover/drop-zone.js.map +1 -0
  25. package/build/components/block-popover/inbetween.js +3 -1
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-popover/index.js +22 -17
  28. package/build/components/block-popover/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +2 -2
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +6 -9
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-preview/live.js +3 -7
  34. package/build/components/block-preview/live.js.map +1 -1
  35. package/build/components/block-selection-clearer/index.js +9 -1
  36. package/build/components/block-selection-clearer/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +22 -16
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/index.js +18 -42
  40. package/build/components/block-styles/index.js.map +1 -1
  41. package/build/components/block-toolbar/index.js +4 -4
  42. package/build/components/block-toolbar/index.js.map +1 -1
  43. package/build/components/block-tools/back-compat.js +2 -1
  44. package/build/components/block-tools/back-compat.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +50 -20
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +15 -3
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/colors-gradients/control.js +1 -1
  50. package/build/components/colors-gradients/control.js.map +1 -1
  51. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  52. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +256 -0
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -0
  55. package/build/components/font-sizes/index.js +8 -0
  56. package/build/components/font-sizes/index.js.map +1 -1
  57. package/build/components/image-editor/use-transform-image.js +2 -2
  58. package/build/components/image-editor/use-transform-image.js.map +1 -1
  59. package/build/components/index.js +0 -9
  60. package/build/components/index.js.map +1 -1
  61. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  62. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  63. package/build/components/inserter/block-patterns-tab.js +151 -78
  64. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  65. package/build/components/inserter/block-types-tab.js +1 -1
  66. package/build/components/inserter/block-types-tab.js.map +1 -1
  67. package/build/components/inserter/menu.js +14 -3
  68. package/build/components/inserter/menu.js.map +1 -1
  69. package/build/components/inserter/search-items.js +2 -17
  70. package/build/components/inserter/search-items.js.map +1 -1
  71. package/build/components/inserter-draggable-blocks/index.js +4 -2
  72. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  73. package/build/components/inspector-controls/slot.js +2 -1
  74. package/build/components/inspector-controls/slot.js.map +1 -1
  75. package/build/components/list-view/use-list-view-drop-zone.js +1 -14
  76. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  77. package/build/components/preview-options/index.js +2 -3
  78. package/build/components/preview-options/index.js.map +1 -1
  79. package/build/components/rich-text/index.js +17 -0
  80. package/build/components/rich-text/index.js.map +1 -1
  81. package/build/components/spacing-sizes-control/index.js +10 -2
  82. package/build/components/spacing-sizes-control/index.js.map +1 -1
  83. package/build/components/spacing-sizes-control/spacing-input-control.js +40 -9
  84. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  85. package/build/components/use-block-drop-zone/index.js +98 -57
  86. package/build/components/use-block-drop-zone/index.js.map +1 -1
  87. package/build/components/use-on-block-drop/index.js +12 -12
  88. package/build/components/use-on-block-drop/index.js.map +1 -1
  89. package/build/components/use-on-block-drop/types.js +6 -0
  90. package/build/components/use-on-block-drop/types.js.map +1 -0
  91. package/build/hooks/align.js +1 -3
  92. package/build/hooks/align.js.map +1 -1
  93. package/build/hooks/align.native.js +1 -7
  94. package/build/hooks/align.native.js.map +1 -1
  95. package/build/hooks/font-size.js +60 -0
  96. package/build/hooks/font-size.js.map +1 -1
  97. package/build/hooks/margin.js +6 -5
  98. package/build/hooks/margin.js.map +1 -1
  99. package/build/hooks/padding.js +2 -1
  100. package/build/hooks/padding.js.map +1 -1
  101. package/build/hooks/style.js +126 -4
  102. package/build/hooks/style.js.map +1 -1
  103. package/build/hooks/use-typography-props.js +17 -3
  104. package/build/hooks/use-typography-props.js.map +1 -1
  105. package/build/hooks/utils.js +1 -1
  106. package/build/hooks/utils.js.map +1 -1
  107. package/build/store/actions.js +59 -45
  108. package/build/store/actions.js.map +1 -1
  109. package/build/store/defaults.js +3 -0
  110. package/build/store/defaults.js.map +1 -1
  111. package/build/store/reducer.js +36 -18
  112. package/build/store/reducer.js.map +1 -1
  113. package/build/utils/math.js +14 -0
  114. package/build/utils/math.js.map +1 -1
  115. package/build/utils/pre-parse-patterns.js +19 -2
  116. package/build/utils/pre-parse-patterns.js.map +1 -1
  117. package/build-module/components/block-controls/slot.js +3 -3
  118. package/build-module/components/block-controls/slot.js.map +1 -1
  119. package/build-module/components/block-draggable/draggable-chip.js +7 -3
  120. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  121. package/build-module/components/block-inspector/index.js +5 -6
  122. package/build-module/components/block-inspector/index.js.map +1 -1
  123. package/build-module/components/block-list/block-list-compact.native.js +1 -0
  124. package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
  125. package/build-module/components/block-list/block.js +72 -14
  126. package/build-module/components/block-list/block.js.map +1 -1
  127. package/build-module/components/block-list/block.native.js +80 -13
  128. package/build-module/components/block-list/block.native.js.map +1 -1
  129. package/build-module/components/block-list/use-in-between-inserter.js +8 -24
  130. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  131. package/build-module/components/block-lock/modal.js +10 -8
  132. package/build-module/components/block-lock/modal.js.map +1 -1
  133. package/build-module/components/block-parent-selector/index.js +5 -5
  134. package/build-module/components/block-parent-selector/index.js.map +1 -1
  135. package/build-module/components/block-patterns-list/index.js +5 -4
  136. package/build-module/components/block-patterns-list/index.js.map +1 -1
  137. package/build-module/components/block-popover/drop-zone.js +70 -0
  138. package/build-module/components/block-popover/drop-zone.js.map +1 -0
  139. package/build-module/components/block-popover/inbetween.js +3 -1
  140. package/build-module/components/block-popover/inbetween.js.map +1 -1
  141. package/build-module/components/block-popover/index.js +22 -17
  142. package/build-module/components/block-popover/index.js.map +1 -1
  143. package/build-module/components/block-preview/auto.js +1 -1
  144. package/build-module/components/block-preview/auto.js.map +1 -1
  145. package/build-module/components/block-preview/index.js +6 -9
  146. package/build-module/components/block-preview/index.js.map +1 -1
  147. package/build-module/components/block-preview/live.js +3 -6
  148. package/build-module/components/block-preview/live.js.map +1 -1
  149. package/build-module/components/block-selection-clearer/index.js +9 -1
  150. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  151. package/build-module/components/block-settings-menu/block-settings-dropdown.js +25 -19
  152. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  153. package/build-module/components/block-styles/index.js +19 -44
  154. package/build-module/components/block-styles/index.js.map +1 -1
  155. package/build-module/components/block-toolbar/index.js +4 -4
  156. package/build-module/components/block-toolbar/index.js.map +1 -1
  157. package/build-module/components/block-tools/back-compat.js +2 -1
  158. package/build-module/components/block-tools/back-compat.js.map +1 -1
  159. package/build-module/components/block-tools/insertion-point.js +48 -20
  160. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  161. package/build-module/components/block-tools/selected-block-popover.js +15 -3
  162. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  163. package/build-module/components/colors-gradients/control.js +2 -2
  164. package/build-module/components/colors-gradients/control.js.map +1 -1
  165. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
  166. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  167. package/build-module/components/font-sizes/fluid-utils.js +245 -0
  168. package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
  169. package/build-module/components/font-sizes/index.js +1 -0
  170. package/build-module/components/font-sizes/index.js.map +1 -1
  171. package/build-module/components/image-editor/use-transform-image.js +2 -2
  172. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  173. package/build-module/components/index.js +0 -1
  174. package/build-module/components/index.js.map +1 -1
  175. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  176. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  177. package/build-module/components/inserter/block-patterns-tab.js +148 -81
  178. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  179. package/build-module/components/inserter/block-types-tab.js +3 -3
  180. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  181. package/build-module/components/inserter/menu.js +10 -3
  182. package/build-module/components/inserter/menu.js.map +1 -1
  183. package/build-module/components/inserter/search-items.js +3 -17
  184. package/build-module/components/inserter/search-items.js.map +1 -1
  185. package/build-module/components/inserter-draggable-blocks/index.js +4 -2
  186. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  187. package/build-module/components/inspector-controls/slot.js +3 -2
  188. package/build-module/components/inspector-controls/slot.js.map +1 -1
  189. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
  190. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  191. package/build-module/components/preview-options/index.js +2 -3
  192. package/build-module/components/preview-options/index.js.map +1 -1
  193. package/build-module/components/rich-text/index.js +17 -0
  194. package/build-module/components/rich-text/index.js.map +1 -1
  195. package/build-module/components/spacing-sizes-control/index.js +10 -3
  196. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  197. package/build-module/components/spacing-sizes-control/spacing-input-control.js +40 -10
  198. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  199. package/build-module/components/use-block-drop-zone/index.js +98 -58
  200. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  201. package/build-module/components/use-on-block-drop/index.js +12 -12
  202. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  203. package/build-module/components/use-on-block-drop/types.js +2 -0
  204. package/build-module/components/use-on-block-drop/types.js.map +1 -0
  205. package/build-module/hooks/align.js +1 -2
  206. package/build-module/hooks/align.js.map +1 -1
  207. package/build-module/hooks/align.native.js +1 -6
  208. package/build-module/hooks/align.native.js.map +1 -1
  209. package/build-module/hooks/font-size.js +59 -1
  210. package/build-module/hooks/font-size.js.map +1 -1
  211. package/build-module/hooks/margin.js +6 -5
  212. package/build-module/hooks/margin.js.map +1 -1
  213. package/build-module/hooks/padding.js +2 -1
  214. package/build-module/hooks/padding.js.map +1 -1
  215. package/build-module/hooks/style.js +124 -3
  216. package/build-module/hooks/style.js.map +1 -1
  217. package/build-module/hooks/use-typography-props.js +17 -4
  218. package/build-module/hooks/use-typography-props.js.map +1 -1
  219. package/build-module/hooks/utils.js +2 -2
  220. package/build-module/hooks/utils.js.map +1 -1
  221. package/build-module/store/actions.js +55 -42
  222. package/build-module/store/actions.js.map +1 -1
  223. package/build-module/store/defaults.js +3 -0
  224. package/build-module/store/defaults.js.map +1 -1
  225. package/build-module/store/reducer.js +36 -19
  226. package/build-module/store/reducer.js.map +1 -1
  227. package/build-module/utils/math.js +12 -0
  228. package/build-module/utils/math.js.map +1 -1
  229. package/build-module/utils/pre-parse-patterns.js +19 -2
  230. package/build-module/utils/pre-parse-patterns.js.map +1 -1
  231. package/build-style/style-rtl.css +256 -152
  232. package/build-style/style.css +256 -152
  233. package/package.json +28 -29
  234. package/src/components/block-breadcrumb/test/index.js +1 -1
  235. package/src/components/block-controls/slot.js +3 -3
  236. package/src/components/block-draggable/draggable-chip.js +4 -2
  237. package/src/components/block-inspector/index.js +8 -11
  238. package/src/components/block-list/block-list-compact.native.js +1 -0
  239. package/src/components/block-list/block.js +111 -7
  240. package/src/components/block-list/block.native.js +123 -9
  241. package/src/components/block-list/style.scss +93 -126
  242. package/src/components/block-list/use-in-between-inserter.js +8 -19
  243. package/src/components/block-lock/modal.js +12 -7
  244. package/src/components/block-mover/style.scss +0 -1
  245. package/src/components/block-parent-selector/index.js +5 -5
  246. package/src/components/block-patterns-list/index.js +9 -5
  247. package/src/components/block-patterns-list/style.scss +7 -3
  248. package/src/components/block-popover/README.md +8 -0
  249. package/src/components/block-popover/drop-zone.js +63 -0
  250. package/src/components/block-popover/inbetween.js +1 -1
  251. package/src/components/block-popover/index.js +39 -22
  252. package/src/components/block-popover/style.scss +17 -1
  253. package/src/components/block-preview/auto.js +1 -1
  254. package/src/components/block-preview/index.js +7 -8
  255. package/src/components/block-preview/live.js +2 -7
  256. package/src/components/block-preview/test/index.js +1 -7
  257. package/src/components/block-selection-clearer/index.js +7 -2
  258. package/src/components/block-selection-clearer/test/index.js +118 -0
  259. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -18
  260. package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
  261. package/src/components/block-styles/index.js +26 -49
  262. package/src/components/block-switcher/test/__snapshots__/index.js.snap +104 -33
  263. package/src/components/block-switcher/test/index.js +121 -61
  264. package/src/components/block-toolbar/index.js +4 -6
  265. package/src/components/block-toolbar/style.scss +38 -14
  266. package/src/components/block-tools/back-compat.js +1 -0
  267. package/src/components/block-tools/insertion-point.js +42 -17
  268. package/src/components/block-tools/selected-block-popover.js +14 -1
  269. package/src/components/button-block-appender/style.scss +5 -1
  270. package/src/components/color-palette/test/__snapshots__/control.js.snap +32 -52
  271. package/src/components/color-palette/test/control.js +11 -15
  272. package/src/components/colors-gradients/control.js +2 -2
  273. package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
  274. package/src/components/colors-gradients/test/control.js +49 -77
  275. package/src/components/font-sizes/fluid-utils.js +296 -0
  276. package/src/components/font-sizes/index.js +1 -0
  277. package/src/components/font-sizes/test/fluid-utils.js +168 -0
  278. package/src/components/image-editor/use-transform-image.js +2 -2
  279. package/src/components/image-size-control/test/index.js +47 -60
  280. package/src/components/index.js +0 -1
  281. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  282. package/src/components/inserter/block-patterns-tab.js +232 -98
  283. package/src/components/inserter/block-types-tab.js +3 -3
  284. package/src/components/inserter/menu.js +15 -2
  285. package/src/components/inserter/search-items.js +3 -15
  286. package/src/components/inserter/style.scss +94 -9
  287. package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
  288. package/src/components/inserter/test/search-items.js +4 -0
  289. package/src/components/inserter-draggable-blocks/index.js +12 -2
  290. package/src/components/inserter-list-item/style.scss +20 -1
  291. package/src/components/inspector-controls/slot.js +6 -2
  292. package/src/components/link-control/test/index.js +1 -1
  293. package/src/components/list-view/use-list-view-drop-zone.js +4 -18
  294. package/src/components/panel-color-settings/test/index.js +4 -4
  295. package/src/components/preview-options/index.js +2 -2
  296. package/src/components/preview-options/style.scss +1 -1
  297. package/src/components/provider/test/use-block-sync.js +131 -165
  298. package/src/components/responsive-block-control/test/index.js +77 -122
  299. package/src/components/rich-text/index.js +22 -0
  300. package/src/components/spacing-sizes-control/index.js +15 -3
  301. package/src/components/spacing-sizes-control/spacing-input-control.js +24 -9
  302. package/src/components/spacing-sizes-control/style.scss +42 -31
  303. package/src/components/use-block-drop-zone/index.js +136 -79
  304. package/src/components/use-block-drop-zone/test/index.js +333 -81
  305. package/src/components/use-on-block-drop/index.js +11 -12
  306. package/src/components/use-on-block-drop/types.ts +1 -0
  307. package/src/hooks/align.js +3 -2
  308. package/src/hooks/align.native.js +5 -8
  309. package/src/hooks/font-size.js +75 -0
  310. package/src/hooks/margin.js +5 -4
  311. package/src/hooks/padding.js +1 -0
  312. package/src/hooks/style.js +122 -3
  313. package/src/hooks/test/style.js +206 -1
  314. package/src/hooks/test/use-typography-props.js +22 -0
  315. package/src/hooks/use-typography-props.js +18 -3
  316. package/src/hooks/utils.js +6 -2
  317. package/src/store/actions.js +20 -12
  318. package/src/store/defaults.js +3 -0
  319. package/src/store/reducer.js +35 -28
  320. package/src/store/test/actions.js +0 -9
  321. package/src/utils/math.js +17 -0
  322. package/src/utils/pre-parse-patterns.js +12 -7
  323. package/build/components/inserter/pattern-panel.js +0 -87
  324. package/build/components/inserter/pattern-panel.js.map +0 -1
  325. package/build-module/components/inserter/pattern-panel.js +0 -74
  326. package/build-module/components/inserter/pattern-panel.js.map +0 -1
  327. package/src/components/inserter/pattern-panel.js +0 -93
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/fluid-utils.js"],"names":["DEFAULT_MAXIMUM_VIEWPORT_WIDTH","DEFAULT_MINIMUM_VIEWPORT_WIDTH","DEFAULT_SCALE_FACTOR","DEFAULT_MINIMUM_FONT_SIZE_FACTOR","DEFAULT_MAXIMUM_FONT_SIZE_FACTOR","DEFAULT_MINIMUM_FONT_SIZE_LIMIT","getComputedFluidTypographyValue","minimumFontSize","maximumFontSize","fontSize","minimumViewPortWidth","maximumViewPortWidth","scaleFactor","minimumFontSizeFactor","maximumFontSizeFactor","minimumFontSizeLimit","minimumFontSizeValue","fontSizeParsed","getTypographyValueAndUnit","unit","roundToPrecision","value","minimumFontSizeLimitParsed","coerceTo","minimumFontSizeParsed","fontSizeUnit","maximumFontSizeParsed","minimumFontSizeRem","maximumViewPortWidthParsed","minumumViewPortWidthParsed","minViewPortWidthOffsetValue","viewPortWidthOffset","linearFactor","linearFactorScaled","fluidTargetFontSize","rawValue","options","isFinite","rootSizeValue","acceptableUnits","acceptableUnitsGroup","join","regexUnits","RegExp","matches","match","length","returnValue","parseFloat","digits","base","Math","pow","Number","round","undefined"],"mappings":"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","sourcesContent":["/**\n * The fluid utilities must match the backend equivalent.\n * See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php\n * ---------------------------------------------------------------\n */\n\n// Defaults.\nconst DEFAULT_MAXIMUM_VIEWPORT_WIDTH = '1600px';\nconst DEFAULT_MINIMUM_VIEWPORT_WIDTH = '768px';\nconst DEFAULT_SCALE_FACTOR = 1;\nconst DEFAULT_MINIMUM_FONT_SIZE_FACTOR = 0.75;\nconst DEFAULT_MAXIMUM_FONT_SIZE_FACTOR = 1.5;\nconst DEFAULT_MINIMUM_FONT_SIZE_LIMIT = '14px';\n\n/**\n * Computes a fluid font-size value that uses clamp(). A minimum and maxinmum\n * font size OR a single font size can be specified.\n *\n * If a single font size is specified, it is scaled up and down by\n * minimumFontSizeFactor and maximumFontSizeFactor to arrive at the minimum and\n * maximum sizes.\n *\n * @example\n * ```js\n * // Calculate fluid font-size value from a minimum and maximum value.\n * const fontSize = getComputedFluidTypographyValue( {\n * minimumFontSize: '20px',\n * maximumFontSize: '45px'\n * } );\n * // Calculate fluid font-size value from a single font size.\n * const fontSize = getComputedFluidTypographyValue( {\n * fontSize: '30px',\n * } );\n * ```\n *\n * @param {Object} args\n * @param {?string} args.minimumViewPortWidth Minimum viewport size from which type will have fluidity. Optional if fontSize is specified.\n * @param {?string} args.maximumViewPortWidth Maximum size up to which type will have fluidity. Optional if fontSize is specified.\n * @param {string|number} [args.fontSize] Size to derive maximumFontSize and minimumFontSize from, if necessary. Optional if minimumFontSize and maximumFontSize are specified.\n * @param {?string} args.maximumFontSize Maximum font size for any clamp() calculation. Optional.\n * @param {?string} args.minimumFontSize Minimum font size for any clamp() calculation. Optional.\n * @param {?number} args.scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.\n * @param {?number} args.minimumFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.\n * @param {?number} args.maximumFontSizeFactor How much to scale defaultFontSize by to derive maximumFontSize. Optional.\n *\n * @return {string|null} A font-size value using clamp().\n */\nexport function getComputedFluidTypographyValue( {\n\tminimumFontSize,\n\tmaximumFontSize,\n\tfontSize,\n\tminimumViewPortWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,\n\tmaximumViewPortWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,\n\tscaleFactor = DEFAULT_SCALE_FACTOR,\n\tminimumFontSizeFactor = DEFAULT_MINIMUM_FONT_SIZE_FACTOR,\n\tmaximumFontSizeFactor = DEFAULT_MAXIMUM_FONT_SIZE_FACTOR,\n\tminimumFontSizeLimit = DEFAULT_MINIMUM_FONT_SIZE_LIMIT,\n} ) {\n\t/*\n\t * Caches minimumFontSize in minimumFontSizeValue\n\t * so we can check if minimumFontSize exists later.\n\t */\n\tlet minimumFontSizeValue = minimumFontSize;\n\n\t/*\n\t * Calculates missing minimumFontSize and maximumFontSize from\n\t * defaultFontSize if provided.\n\t */\n\tif ( fontSize ) {\n\t\t// Parses default font size.\n\t\tconst fontSizeParsed = getTypographyValueAndUnit( fontSize );\n\n\t\t// Protect against invalid units.\n\t\tif ( ! fontSizeParsed?.unit ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If no minimumFontSize is provided, derive using min scale factor.\n\t\tif ( ! minimumFontSizeValue ) {\n\t\t\tminimumFontSizeValue =\n\t\t\t\troundToPrecision(\n\t\t\t\t\tfontSizeParsed.value * minimumFontSizeFactor,\n\t\t\t\t\t3\n\t\t\t\t) + fontSizeParsed.unit;\n\t\t}\n\n\t\t// Parses the minimum font size limit, so we can perform checks using it.\n\t\tconst minimumFontSizeLimitParsed = getTypographyValueAndUnit(\n\t\t\tminimumFontSizeLimit,\n\t\t\t{\n\t\t\t\tcoerceTo: fontSizeParsed.unit,\n\t\t\t}\n\t\t);\n\n\t\tif ( !! minimumFontSizeLimitParsed?.value ) {\n\t\t\t/*\n\t\t\t * If a minimum size was not passed to this function\n\t\t\t * and the user-defined font size is lower than `minimumFontSizeLimit`,\n\t\t\t * then uses the user-defined font size as the minimum font-size.\n\t\t\t */\n\t\t\tif (\n\t\t\t\t! minimumFontSize &&\n\t\t\t\tfontSizeParsed?.value < minimumFontSizeLimitParsed?.value\n\t\t\t) {\n\t\t\t\tminimumFontSizeValue = `${ fontSizeParsed.value }${ fontSizeParsed.unit }`;\n\t\t\t} else {\n\t\t\t\tconst minimumFontSizeParsed = getTypographyValueAndUnit(\n\t\t\t\t\tminimumFontSizeValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tcoerceTo: fontSizeParsed.unit,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t/*\n\t\t\t\t * Otherwise, if the passed or calculated minimum font size is lower than `minimumFontSizeLimit`\n\t\t\t\t * use `minimumFontSizeLimit` instead.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\t!! minimumFontSizeParsed?.value &&\n\t\t\t\t\tminimumFontSizeParsed.value <\n\t\t\t\t\t\tminimumFontSizeLimitParsed.value\n\t\t\t\t) {\n\t\t\t\t\tminimumFontSizeValue = `${ minimumFontSizeLimitParsed.value }${ minimumFontSizeLimitParsed.unit }`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If no maximumFontSize is provided, derive using max scale factor.\n\t\tif ( ! maximumFontSize ) {\n\t\t\tmaximumFontSize =\n\t\t\t\troundToPrecision(\n\t\t\t\t\tfontSizeParsed.value * maximumFontSizeFactor,\n\t\t\t\t\t3\n\t\t\t\t) + fontSizeParsed.unit;\n\t\t}\n\t}\n\n\t// Return early if one of the provided inputs is not provided.\n\tif ( ! minimumFontSizeValue || ! maximumFontSize ) {\n\t\treturn null;\n\t}\n\n\t// Grab the minimum font size and normalize it in order to use the value for calculations.\n\tconst minimumFontSizeParsed =\n\t\tgetTypographyValueAndUnit( minimumFontSizeValue );\n\n\t// We get a 'preferred' unit to keep units consistent when calculating,\n\t// otherwise the result will not be accurate.\n\tconst fontSizeUnit = minimumFontSizeParsed?.unit || 'rem';\n\n\t// Grabs the maximum font size and normalize it in order to use the value for calculations.\n\tconst maximumFontSizeParsed = getTypographyValueAndUnit( maximumFontSize, {\n\t\tcoerceTo: fontSizeUnit,\n\t} );\n\n\t// Checks for mandatory min and max sizes, and protects against unsupported units.\n\tif ( ! minimumFontSizeParsed || ! maximumFontSizeParsed ) {\n\t\treturn null;\n\t}\n\n\t// Uses rem for accessible fluid target font scaling.\n\tconst minimumFontSizeRem = getTypographyValueAndUnit(\n\t\tminimumFontSizeValue,\n\t\t{\n\t\t\tcoerceTo: 'rem',\n\t\t}\n\t);\n\n\t// Viewport widths defined for fluid typography. Normalize units\n\tconst maximumViewPortWidthParsed = getTypographyValueAndUnit(\n\t\tmaximumViewPortWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\tconst minumumViewPortWidthParsed = getTypographyValueAndUnit(\n\t\tminimumViewPortWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\n\t// Protect against unsupported units.\n\tif (\n\t\t! maximumViewPortWidthParsed ||\n\t\t! minumumViewPortWidthParsed ||\n\t\t! minimumFontSizeRem\n\t) {\n\t\treturn null;\n\t}\n\n\t// Build CSS rule.\n\t// Borrowed from https://websemantics.uk/tools/responsive-font-calculator/.\n\tconst minViewPortWidthOffsetValue = roundToPrecision(\n\t\tminumumViewPortWidthParsed.value / 100,\n\t\t3\n\t);\n\n\tconst viewPortWidthOffset =\n\t\troundToPrecision( minViewPortWidthOffsetValue, 3 ) + fontSizeUnit;\n\tconst linearFactor =\n\t\t100 *\n\t\t( ( maximumFontSizeParsed.value - minimumFontSizeParsed.value ) /\n\t\t\t( maximumViewPortWidthParsed.value -\n\t\t\t\tminumumViewPortWidthParsed.value ) );\n\tconst linearFactorScaled = roundToPrecision(\n\t\t( linearFactor || 1 ) * scaleFactor,\n\t\t3\n\t);\n\tconst fluidTargetFontSize = `${ minimumFontSizeRem.value }${ minimumFontSizeRem.unit } + ((1vw - ${ viewPortWidthOffset }) * ${ linearFactorScaled })`;\n\n\treturn `clamp(${ minimumFontSizeValue }, ${ fluidTargetFontSize }, ${ maximumFontSize })`;\n}\n\n/**\n * Internal method that checks a string for a unit and value and returns an array consisting of `'value'` and `'unit'`, e.g., [ '42', 'rem' ].\n * A raw font size of `value + unit` is expected. If the value is an integer, it will convert to `value + 'px'`.\n *\n * @param {string|number} rawValue Raw size value from theme.json.\n * @param {Object|undefined} options Calculation options.\n *\n * @return {{ unit: string, value: number }|null} An object consisting of `'value'` and `'unit'` properties.\n */\nexport function getTypographyValueAndUnit( rawValue, options = {} ) {\n\tif ( typeof rawValue !== 'string' && typeof rawValue !== 'number' ) {\n\t\treturn null;\n\t}\n\n\t// Converts numeric values to pixel values by default.\n\tif ( isFinite( rawValue ) ) {\n\t\trawValue = `${ rawValue }px`;\n\t}\n\n\tconst { coerceTo, rootSizeValue, acceptableUnits } = {\n\t\tcoerceTo: '',\n\t\t// Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( \"html\" ) ).fontSize`.\n\t\trootSizeValue: 16,\n\t\tacceptableUnits: [ 'rem', 'px', 'em' ],\n\t\t...options,\n\t};\n\n\tconst acceptableUnitsGroup = acceptableUnits?.join( '|' );\n\tconst regexUnits = new RegExp(\n\t\t`^(\\\\d*\\\\.?\\\\d+)(${ acceptableUnitsGroup }){1,1}$`\n\t);\n\n\tconst matches = rawValue.match( regexUnits );\n\n\t// We need a number value and a unit.\n\tif ( ! matches || matches.length < 3 ) {\n\t\treturn null;\n\t}\n\n\tlet [ , value, unit ] = matches;\n\n\tlet returnValue = parseFloat( value );\n\n\tif ( 'px' === coerceTo && ( 'em' === unit || 'rem' === unit ) ) {\n\t\treturnValue = returnValue * rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\tif ( 'px' === unit && ( 'em' === coerceTo || 'rem' === coerceTo ) ) {\n\t\treturnValue = returnValue / rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\t/*\n\t * No calculation is required if swapping between em and rem yet,\n\t * since we assume a root size value. Later we might like to differentiate between\n\t * :root font size (rem) and parent element font size (em) relativity.\n\t */\n\tif (\n\t\t( 'em' === coerceTo || 'rem' === coerceTo ) &&\n\t\t( 'em' === unit || 'rem' === unit )\n\t) {\n\t\tunit = coerceTo;\n\t}\n\n\treturn {\n\t\tvalue: roundToPrecision( returnValue, 3 ),\n\t\tunit,\n\t};\n}\n\n/**\n * Returns a value rounded to defined precision.\n * Returns `undefined` if the value is not a valid finite number.\n *\n * @param {number} value Raw value.\n * @param {number} digits The number of digits to appear after the decimal point\n *\n * @return {number|undefined} Value rounded to standard precision.\n */\nexport function roundToPrecision( value, digits = 3 ) {\n\tconst base = Math.pow( 10, digits );\n\treturn Number.isFinite( value )\n\t\t? parseFloat( Math.round( value * base ) / base )\n\t\t: undefined;\n}\n"]}
@@ -11,6 +11,12 @@ Object.defineProperty(exports, "FontSizePicker", {
11
11
  return _fontSizePicker.default;
12
12
  }
13
13
  });
14
+ Object.defineProperty(exports, "getComputedFluidTypographyValue", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _fluidUtils.getComputedFluidTypographyValue;
18
+ }
19
+ });
14
20
  Object.defineProperty(exports, "getFontSize", {
15
21
  enumerable: true,
16
22
  get: function () {
@@ -38,6 +44,8 @@ Object.defineProperty(exports, "withFontSizes", {
38
44
 
39
45
  var _utils = require("./utils");
40
46
 
47
+ var _fluidUtils = require("./fluid-utils");
48
+
41
49
  var _fontSizePicker = _interopRequireDefault(require("./font-size-picker"));
42
50
 
43
51
  var _withFontSizes = _interopRequireDefault(require("./with-font-sizes"));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA;;AACA","sourcesContent":["export {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n} from './utils';\nexport { default as FontSizePicker } from './font-size-picker';\nexport { default as withFontSizes } from './with-font-sizes';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA;;AACA;;AACA","sourcesContent":["export {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n} from './utils';\nexport { getComputedFluidTypographyValue } from './fluid-utils';\nexport { default as FontSizePicker } from './font-size-picker';\nexport { default as withFontSizes } from './with-font-sizes';\n"]}
@@ -49,7 +49,7 @@ function useTransformState(_ref) {
49
49
  if (angle === 0) {
50
50
  setEditedUrl();
51
51
  setRotation(angle);
52
- setAspect(1 / aspect);
52
+ setAspect(naturalWidth / naturalHeight);
53
53
  setPosition({
54
54
  x: -(position.y * naturalAspectRatio),
55
55
  y: position.x * naturalAspectRatio
@@ -85,7 +85,7 @@ function useTransformState(_ref) {
85
85
  canvas.toBlob(blob => {
86
86
  setEditedUrl(URL.createObjectURL(blob));
87
87
  setRotation(angle);
88
- setAspect(1 / aspect);
88
+ setAspect(canvas.width / canvas.height);
89
89
  setPosition({
90
90
  x: -(position.y * naturalAspectRatio),
91
91
  y: position.x * naturalAspectRatio
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/use-transform-image.js"],"names":["useTransformState","url","naturalWidth","naturalHeight","editedUrl","setEditedUrl","crop","setCrop","position","setPosition","x","y","zoom","setZoom","rotation","setRotation","aspect","setAspect","defaultAspect","setDefaultAspect","initializeTransformValues","rotateClockwise","angle","naturalAspectRatio","editImage","event","canvas","document","createElement","translateX","translateY","width","target","height","context","getContext","translate","rotate","Math","PI","drawImage","toBlob","blob","URL","createObjectURL","el","window","Image","src","onload","imgCrossOrigin","undefined","crossOrigin","useTransformImage","imageProperties","isEditing","transformState"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useMemo, useState } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\n\nfunction useTransformState( { url, naturalWidth, naturalHeight } ) {\n\tconst [ editedUrl, setEditedUrl ] = useState();\n\tconst [ crop, setCrop ] = useState();\n\tconst [ position, setPosition ] = useState( { x: 0, y: 0 } );\n\tconst [ zoom, setZoom ] = useState();\n\tconst [ rotation, setRotation ] = useState();\n\tconst [ aspect, setAspect ] = useState();\n\tconst [ defaultAspect, setDefaultAspect ] = useState();\n\n\tconst initializeTransformValues = useCallback( () => {\n\t\tsetPosition( { x: 0, y: 0 } );\n\t\tsetZoom( 100 );\n\t\tsetRotation( 0 );\n\t\tsetAspect( naturalWidth / naturalHeight );\n\t\tsetDefaultAspect( naturalWidth / naturalHeight );\n\t}, [\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetPosition,\n\t\tsetZoom,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetDefaultAspect,\n\t] );\n\n\tconst rotateClockwise = useCallback( () => {\n\t\tconst angle = ( rotation + 90 ) % 360;\n\n\t\tlet naturalAspectRatio = naturalWidth / naturalHeight;\n\n\t\tif ( rotation % 180 === 90 ) {\n\t\t\tnaturalAspectRatio = naturalHeight / naturalWidth;\n\t\t}\n\n\t\tif ( angle === 0 ) {\n\t\t\tsetEditedUrl();\n\t\t\tsetRotation( angle );\n\t\t\tsetAspect( 1 / aspect );\n\t\t\tsetPosition( {\n\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfunction editImage( event ) {\n\t\t\tconst canvas = document.createElement( 'canvas' );\n\n\t\t\tlet translateX = 0;\n\t\t\tlet translateY = 0;\n\n\t\t\tif ( angle % 180 ) {\n\t\t\t\tcanvas.width = event.target.height;\n\t\t\t\tcanvas.height = event.target.width;\n\t\t\t} else {\n\t\t\t\tcanvas.width = event.target.width;\n\t\t\t\tcanvas.height = event.target.height;\n\t\t\t}\n\n\t\t\tif ( angle === 90 || angle === 180 ) {\n\t\t\t\ttranslateX = canvas.width;\n\t\t\t}\n\n\t\t\tif ( angle === 270 || angle === 180 ) {\n\t\t\t\ttranslateY = canvas.height;\n\t\t\t}\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\n\t\t\tcontext.translate( translateX, translateY );\n\t\t\tcontext.rotate( ( angle * Math.PI ) / 180 );\n\t\t\tcontext.drawImage( event.target, 0, 0 );\n\n\t\t\tcanvas.toBlob( ( blob ) => {\n\t\t\t\tsetEditedUrl( URL.createObjectURL( blob ) );\n\t\t\t\tsetRotation( angle );\n\t\t\t\tsetAspect( 1 / aspect );\n\t\t\t\tsetPosition( {\n\t\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tconst el = new window.Image();\n\t\tel.src = url;\n\t\tel.onload = editImage;\n\n\t\tconst imgCrossOrigin = applyFilters(\n\t\t\t'media.crossOrigin',\n\t\t\tundefined,\n\t\t\turl\n\t\t);\n\t\tif ( typeof imgCrossOrigin === 'string' ) {\n\t\t\tel.crossOrigin = imgCrossOrigin;\n\t\t}\n\t}, [\n\t\trotation,\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetEditedUrl,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetPosition,\n\t] );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t} ),\n\t\t[\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t]\n\t);\n}\n\nexport default function useTransformImage( imageProperties, isEditing ) {\n\tconst transformState = useTransformState( imageProperties );\n\tconst { initializeTransformValues } = transformState;\n\n\tuseEffect( () => {\n\t\tif ( isEditing ) {\n\t\t\tinitializeTransformValues();\n\t\t}\n\t}, [ isEditing, initializeTransformValues ] );\n\n\treturn transformState;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/image-editor/use-transform-image.js"],"names":["useTransformState","url","naturalWidth","naturalHeight","editedUrl","setEditedUrl","crop","setCrop","position","setPosition","x","y","zoom","setZoom","rotation","setRotation","aspect","setAspect","defaultAspect","setDefaultAspect","initializeTransformValues","rotateClockwise","angle","naturalAspectRatio","editImage","event","canvas","document","createElement","translateX","translateY","width","target","height","context","getContext","translate","rotate","Math","PI","drawImage","toBlob","blob","URL","createObjectURL","el","window","Image","src","onload","imgCrossOrigin","undefined","crossOrigin","useTransformImage","imageProperties","isEditing","transformState"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIA,SAASA,iBAAT,OAAmE;AAAA,MAAvC;AAAEC,IAAAA,GAAF;AAAOC,IAAAA,YAAP;AAAqBC,IAAAA;AAArB,GAAuC;AAClE,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,wBAApC;AACA,QAAM,CAAEC,IAAF,EAAQC,OAAR,IAAoB,wBAA1B;AACA,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,uBAAU;AAAEC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAAV,CAAlC;AACA,QAAM,CAAEC,IAAF,EAAQC,OAAR,IAAoB,wBAA1B;AACA,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,wBAAlC;AACA,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwB,wBAA9B;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AAEA,QAAMC,yBAAyB,GAAG,0BAAa,MAAM;AACpDX,IAAAA,WAAW,CAAE;AAAEC,MAAAA,CAAC,EAAE,CAAL;AAAQC,MAAAA,CAAC,EAAE;AAAX,KAAF,CAAX;AACAE,IAAAA,OAAO,CAAE,GAAF,CAAP;AACAE,IAAAA,WAAW,CAAE,CAAF,CAAX;AACAE,IAAAA,SAAS,CAAEf,YAAY,GAAGC,aAAjB,CAAT;AACAgB,IAAAA,gBAAgB,CAAEjB,YAAY,GAAGC,aAAjB,CAAhB;AACA,GANiC,EAM/B,CACFD,YADE,EAEFC,aAFE,EAGFM,WAHE,EAIFI,OAJE,EAKFE,WALE,EAMFE,SANE,EAOFE,gBAPE,CAN+B,CAAlC;AAgBA,QAAME,eAAe,GAAG,0BAAa,MAAM;AAC1C,UAAMC,KAAK,GAAG,CAAER,QAAQ,GAAG,EAAb,IAAoB,GAAlC;AAEA,QAAIS,kBAAkB,GAAGrB,YAAY,GAAGC,aAAxC;;AAEA,QAAKW,QAAQ,GAAG,GAAX,KAAmB,EAAxB,EAA6B;AAC5BS,MAAAA,kBAAkB,GAAGpB,aAAa,GAAGD,YAArC;AACA;;AAED,QAAKoB,KAAK,KAAK,CAAf,EAAmB;AAClBjB,MAAAA,YAAY;AACZU,MAAAA,WAAW,CAAEO,KAAF,CAAX;AACAL,MAAAA,SAAS,CAAEf,YAAY,GAAGC,aAAjB,CAAT;AACAM,MAAAA,WAAW,CAAE;AACZC,QAAAA,CAAC,EAAE,EAAGF,QAAQ,CAACG,CAAT,GAAaY,kBAAhB,CADS;AAEZZ,QAAAA,CAAC,EAAEH,QAAQ,CAACE,CAAT,GAAaa;AAFJ,OAAF,CAAX;AAIA;AACA;;AAED,aAASC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,YAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAwB,QAAxB,CAAf;AAEA,UAAIC,UAAU,GAAG,CAAjB;AACA,UAAIC,UAAU,GAAG,CAAjB;;AAEA,UAAKR,KAAK,GAAG,GAAb,EAAmB;AAClBI,QAAAA,MAAM,CAACK,KAAP,GAAeN,KAAK,CAACO,MAAN,CAAaC,MAA5B;AACAP,QAAAA,MAAM,CAACO,MAAP,GAAgBR,KAAK,CAACO,MAAN,CAAaD,KAA7B;AACA,OAHD,MAGO;AACNL,QAAAA,MAAM,CAACK,KAAP,GAAeN,KAAK,CAACO,MAAN,CAAaD,KAA5B;AACAL,QAAAA,MAAM,CAACO,MAAP,GAAgBR,KAAK,CAACO,MAAN,CAAaC,MAA7B;AACA;;AAED,UAAKX,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,GAA/B,EAAqC;AACpCO,QAAAA,UAAU,GAAGH,MAAM,CAACK,KAApB;AACA;;AAED,UAAKT,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAAhC,EAAsC;AACrCQ,QAAAA,UAAU,GAAGJ,MAAM,CAACO,MAApB;AACA;;AAED,YAAMC,OAAO,GAAGR,MAAM,CAACS,UAAP,CAAmB,IAAnB,CAAhB;AAEAD,MAAAA,OAAO,CAACE,SAAR,CAAmBP,UAAnB,EAA+BC,UAA/B;AACAI,MAAAA,OAAO,CAACG,MAAR,CAAkBf,KAAK,GAAGgB,IAAI,CAACC,EAAf,GAAsB,GAAtC;AACAL,MAAAA,OAAO,CAACM,SAAR,CAAmBf,KAAK,CAACO,MAAzB,EAAiC,CAAjC,EAAoC,CAApC;AAEAN,MAAAA,MAAM,CAACe,MAAP,CAAiBC,IAAF,IAAY;AAC1BrC,QAAAA,YAAY,CAAEsC,GAAG,CAACC,eAAJ,CAAqBF,IAArB,CAAF,CAAZ;AACA3B,QAAAA,WAAW,CAAEO,KAAF,CAAX;AACAL,QAAAA,SAAS,CAAES,MAAM,CAACK,KAAP,GAAeL,MAAM,CAACO,MAAxB,CAAT;AACAxB,QAAAA,WAAW,CAAE;AACZC,UAAAA,CAAC,EAAE,EAAGF,QAAQ,CAACG,CAAT,GAAaY,kBAAhB,CADS;AAEZZ,UAAAA,CAAC,EAAEH,QAAQ,CAACE,CAAT,GAAaa;AAFJ,SAAF,CAAX;AAIA,OARD;AASA;;AAED,UAAMsB,EAAE,GAAG,IAAIC,MAAM,CAACC,KAAX,EAAX;AACAF,IAAAA,EAAE,CAACG,GAAH,GAAS/C,GAAT;AACA4C,IAAAA,EAAE,CAACI,MAAH,GAAYzB,SAAZ;AAEA,UAAM0B,cAAc,GAAG,yBACtB,mBADsB,EAEtBC,SAFsB,EAGtBlD,GAHsB,CAAvB;;AAKA,QAAK,OAAOiD,cAAP,KAA0B,QAA/B,EAA0C;AACzCL,MAAAA,EAAE,CAACO,WAAH,GAAiBF,cAAjB;AACA;AACD,GAvEuB,EAuErB,CACFpC,QADE,EAEFZ,YAFE,EAGFC,aAHE,EAIFE,YAJE,EAKFU,WALE,EAMFE,SANE,EAOFR,WAPE,CAvEqB,CAAxB;AAiFA,SAAO,sBACN,OAAQ;AACPL,IAAAA,SADO;AAEPC,IAAAA,YAFO;AAGPC,IAAAA,IAHO;AAIPC,IAAAA,OAJO;AAKPC,IAAAA,QALO;AAMPC,IAAAA,WANO;AAOPG,IAAAA,IAPO;AAQPC,IAAAA,OARO;AASPC,IAAAA,QATO;AAUPC,IAAAA,WAVO;AAWPM,IAAAA,eAXO;AAYPL,IAAAA,MAZO;AAaPC,IAAAA,SAbO;AAcPC,IAAAA,aAdO;AAePE,IAAAA;AAfO,GAAR,CADM,EAkBN,CACChB,SADD,EAECC,YAFD,EAGCC,IAHD,EAICC,OAJD,EAKCC,QALD,EAMCC,WAND,EAOCG,IAPD,EAQCC,OARD,EASCC,QATD,EAUCC,WAVD,EAWCM,eAXD,EAYCL,MAZD,EAaCC,SAbD,EAcCC,aAdD,EAeCE,yBAfD,CAlBM,CAAP;AAoCA;;AAEc,SAASiC,iBAAT,CAA4BC,eAA5B,EAA6CC,SAA7C,EAAyD;AACvE,QAAMC,cAAc,GAAGxD,iBAAiB,CAAEsD,eAAF,CAAxC;AACA,QAAM;AAAElC,IAAAA;AAAF,MAAgCoC,cAAtC;AAEA,0BAAW,MAAM;AAChB,QAAKD,SAAL,EAAiB;AAChBnC,MAAAA,yBAAyB;AACzB;AACD,GAJD,EAIG,CAAEmC,SAAF,EAAanC,yBAAb,CAJH;AAMA,SAAOoC,cAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useMemo, useState } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\n\nfunction useTransformState( { url, naturalWidth, naturalHeight } ) {\n\tconst [ editedUrl, setEditedUrl ] = useState();\n\tconst [ crop, setCrop ] = useState();\n\tconst [ position, setPosition ] = useState( { x: 0, y: 0 } );\n\tconst [ zoom, setZoom ] = useState();\n\tconst [ rotation, setRotation ] = useState();\n\tconst [ aspect, setAspect ] = useState();\n\tconst [ defaultAspect, setDefaultAspect ] = useState();\n\n\tconst initializeTransformValues = useCallback( () => {\n\t\tsetPosition( { x: 0, y: 0 } );\n\t\tsetZoom( 100 );\n\t\tsetRotation( 0 );\n\t\tsetAspect( naturalWidth / naturalHeight );\n\t\tsetDefaultAspect( naturalWidth / naturalHeight );\n\t}, [\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetPosition,\n\t\tsetZoom,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetDefaultAspect,\n\t] );\n\n\tconst rotateClockwise = useCallback( () => {\n\t\tconst angle = ( rotation + 90 ) % 360;\n\n\t\tlet naturalAspectRatio = naturalWidth / naturalHeight;\n\n\t\tif ( rotation % 180 === 90 ) {\n\t\t\tnaturalAspectRatio = naturalHeight / naturalWidth;\n\t\t}\n\n\t\tif ( angle === 0 ) {\n\t\t\tsetEditedUrl();\n\t\t\tsetRotation( angle );\n\t\t\tsetAspect( naturalWidth / naturalHeight );\n\t\t\tsetPosition( {\n\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfunction editImage( event ) {\n\t\t\tconst canvas = document.createElement( 'canvas' );\n\n\t\t\tlet translateX = 0;\n\t\t\tlet translateY = 0;\n\n\t\t\tif ( angle % 180 ) {\n\t\t\t\tcanvas.width = event.target.height;\n\t\t\t\tcanvas.height = event.target.width;\n\t\t\t} else {\n\t\t\t\tcanvas.width = event.target.width;\n\t\t\t\tcanvas.height = event.target.height;\n\t\t\t}\n\n\t\t\tif ( angle === 90 || angle === 180 ) {\n\t\t\t\ttranslateX = canvas.width;\n\t\t\t}\n\n\t\t\tif ( angle === 270 || angle === 180 ) {\n\t\t\t\ttranslateY = canvas.height;\n\t\t\t}\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\n\t\t\tcontext.translate( translateX, translateY );\n\t\t\tcontext.rotate( ( angle * Math.PI ) / 180 );\n\t\t\tcontext.drawImage( event.target, 0, 0 );\n\n\t\t\tcanvas.toBlob( ( blob ) => {\n\t\t\t\tsetEditedUrl( URL.createObjectURL( blob ) );\n\t\t\t\tsetRotation( angle );\n\t\t\t\tsetAspect( canvas.width / canvas.height );\n\t\t\t\tsetPosition( {\n\t\t\t\t\tx: -( position.y * naturalAspectRatio ),\n\t\t\t\t\ty: position.x * naturalAspectRatio,\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\tconst el = new window.Image();\n\t\tel.src = url;\n\t\tel.onload = editImage;\n\n\t\tconst imgCrossOrigin = applyFilters(\n\t\t\t'media.crossOrigin',\n\t\t\tundefined,\n\t\t\turl\n\t\t);\n\t\tif ( typeof imgCrossOrigin === 'string' ) {\n\t\t\tel.crossOrigin = imgCrossOrigin;\n\t\t}\n\t}, [\n\t\trotation,\n\t\tnaturalWidth,\n\t\tnaturalHeight,\n\t\tsetEditedUrl,\n\t\tsetRotation,\n\t\tsetAspect,\n\t\tsetPosition,\n\t] );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t} ),\n\t\t[\n\t\t\teditedUrl,\n\t\t\tsetEditedUrl,\n\t\t\tcrop,\n\t\t\tsetCrop,\n\t\t\tposition,\n\t\t\tsetPosition,\n\t\t\tzoom,\n\t\t\tsetZoom,\n\t\t\trotation,\n\t\t\tsetRotation,\n\t\t\trotateClockwise,\n\t\t\taspect,\n\t\t\tsetAspect,\n\t\t\tdefaultAspect,\n\t\t\tinitializeTransformValues,\n\t\t]\n\t);\n}\n\nexport default function useTransformImage( imageProperties, isEditing ) {\n\tconst transformState = useTransformState( imageProperties );\n\tconst { initializeTransformValues } = transformState;\n\n\tuseEffect( () => {\n\t\tif ( isEditing ) {\n\t\t\tinitializeTransformValues();\n\t\t}\n\t}, [ isEditing, initializeTransformValues ] );\n\n\treturn transformState;\n}\n"]}
@@ -124,7 +124,6 @@ var _exportNames = {
124
124
  __experimentalBlockPatternsList: true,
125
125
  __experimentalPublishDateTimePicker: true,
126
126
  __experimentalInspectorPopoverHeader: true,
127
- __experimentalUseOnBlockDrop: true,
128
127
  BlockEditorProvider: true,
129
128
  useSetting: true
130
129
  };
@@ -734,12 +733,6 @@ Object.defineProperty(exports, "__experimentalUseMultipleOriginColorsAndGradient
734
733
  return _useMultipleOriginColorsAndGradients.default;
735
734
  }
736
735
  });
737
- Object.defineProperty(exports, "__experimentalUseOnBlockDrop", {
738
- enumerable: true,
739
- get: function () {
740
- return _useOnBlockDrop.default;
741
- }
742
- });
743
736
  Object.defineProperty(exports, "__experimentalUseResizeCanvas", {
744
737
  enumerable: true,
745
738
  get: function () {
@@ -1107,8 +1100,6 @@ var _publishDateTimePicker = _interopRequireDefault(require("./publish-date-time
1107
1100
 
1108
1101
  var _inspectorPopoverHeader = _interopRequireDefault(require("./inspector-popover-header"));
1109
1102
 
1110
- var _useOnBlockDrop = _interopRequireDefault(require("./use-on-block-drop"));
1111
-
1112
1103
  var _provider = _interopRequireDefault(require("./provider"));
1113
1104
 
1114
1105
  var _useSetting = _interopRequireDefault(require("./use-setting"));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AAMA;;AACA","sourcesContent":["/*\n * Block Creation Components\n */\n\nexport * from './colors';\nexport * from './gradients';\nexport * from './font-sizes';\nexport * from './duotone';\nexport { AlignmentControl, AlignmentToolbar } from './alignment-control';\nexport { default as Autocomplete } from './autocomplete';\nexport {\n\tBlockAlignmentControl,\n\tBlockAlignmentToolbar,\n} from './block-alignment-control';\nexport { default as __experimentalBlockFullHeightAligmentControl } from './block-full-height-alignment-control';\nexport { default as __experimentalBlockAlignmentMatrixControl } from './block-alignment-matrix-control';\nexport { default as BlockBreadcrumb } from './block-breadcrumb';\nexport { default as __experimentalUseBlockOverlayActive } from './block-content-overlay';\nexport { BlockContextProvider } from './block-context';\nexport {\n\tdefault as BlockControls,\n\tBlockFormatControls,\n} from './block-controls';\nexport { default as BlockColorsStyleSelector } from './color-style-selector';\nexport { default as BlockEdit, useBlockEditContext } from './block-edit';\nexport { default as BlockIcon } from './block-icon';\nexport { default as BlockNavigationDropdown } from './block-navigation/dropdown';\nexport { default as BlockStyles } from './block-styles';\nexport { default as __experimentalBlockVariationPicker } from './block-variation-picker';\nexport { default as __experimentalBlockPatternSetup } from './block-pattern-setup';\nexport { default as __experimentalBlockVariationTransforms } from './block-variation-transforms';\nexport {\n\tBlockVerticalAlignmentToolbar,\n\tBlockVerticalAlignmentControl,\n} from './block-vertical-alignment-control';\nexport { default as __experimentalBorderRadiusControl } from './border-radius-control';\nexport {\n\t// This is a typo, but kept here for back-compat.\n\tButtonBlockerAppender,\n\tdefault as ButtonBlockAppender,\n} from './button-block-appender';\nexport { default as ColorPalette } from './color-palette';\nexport { default as ColorPaletteControl } from './color-palette/control';\nexport { default as ContrastChecker } from './contrast-checker';\nexport { default as __experimentalDateFormatPicker } from './date-format-picker';\nexport { default as __experimentalDuotoneControl } from './duotone-control';\nexport { default as __experimentalFontAppearanceControl } from './font-appearance-control';\nexport { default as __experimentalFontFamilyControl } from './font-family';\nexport { default as __experimentalLetterSpacingControl } from './letter-spacing-control';\nexport { default as __experimentalTextDecorationControl } from './text-decoration-control';\nexport { default as __experimentalTextTransformControl } from './text-transform-control';\nexport { default as __experimentalColorGradientControl } from './colors-gradients/control';\nexport { default as __experimentalColorGradientSettingsDropdown } from './colors-gradients/dropdown';\nexport { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';\nexport { default as __experimentalUseMultipleOriginColorsAndGradients } from './colors-gradients/use-multiple-origin-colors-and-gradients';\nexport {\n\tdefault as __experimentalImageEditor,\n\tImageEditingProvider as __experimentalImageEditingProvider,\n} from './image-editor';\nexport { default as __experimentalImageSizeControl } from './image-size-control';\nexport { default as InnerBlocks, useInnerBlocksProps } from './inner-blocks';\nexport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from './inspector-controls';\nexport {\n\tJustifyToolbar,\n\tJustifyContentControl,\n} from './justify-content-control';\nexport { default as __experimentalLinkControl } from './link-control';\nexport { default as __experimentalLinkControlSearchInput } from './link-control/search-input';\nexport { default as __experimentalLinkControlSearchResults } from './link-control/search-results';\nexport { default as __experimentalLinkControlSearchItem } from './link-control/search-item';\nexport { default as LineHeightControl } from './line-height-control';\nexport { default as __experimentalListView } from './list-view';\nexport { default as MediaReplaceFlow } from './media-replace-flow';\nexport { default as MediaPlaceholder } from './media-placeholder';\nexport { default as MediaUpload } from './media-upload';\nexport { default as MediaUploadCheck } from './media-upload/check';\nexport { default as PanelColorSettings } from './panel-color-settings';\nexport { default as PlainText } from './plain-text';\nexport { default as __experimentalResponsiveBlockControl } from './responsive-block-control';\nexport {\n\tdefault as RichText,\n\tRichTextShortcut,\n\tRichTextToolbarButton,\n\t__unstableRichTextInputEvent,\n} from './rich-text';\nexport { default as ToolSelector } from './tool-selector';\nexport { default as __experimentalUnitControl } from './unit-control';\nexport { default as URLInput } from './url-input';\nexport { default as URLInputButton } from './url-input/button';\nexport { default as URLPopover } from './url-popover';\nexport { __experimentalImageURLInputUI } from './url-popover/image-url-input-ui';\nexport { default as withColorContext } from './color-palette/with-color-context';\nexport { default as __experimentalSpacingSizesControl } from './spacing-sizes-control';\n\n/*\n * Content Related Components\n */\n\nexport { default as __unstableBlockSettingsMenuFirstItem } from './block-settings-menu/block-settings-menu-first-item';\nexport { default as __unstableBlockToolbarLastItem } from './block-toolbar/block-toolbar-last-item';\nexport { default as __unstableBlockNameContext } from './block-toolbar/block-name-context';\nexport { default as __unstableInserterMenuExtension } from './inserter-menu-extension';\nexport { default as __experimentalPreviewOptions } from './preview-options';\nexport { default as __experimentalUseResizeCanvas } from './use-resize-canvas';\nexport { default as BlockInspector } from './block-inspector';\nexport { default as BlockList } from './block-list';\nexport { useBlockProps } from './block-list/use-block-props';\nexport { LayoutStyle as __experimentalLayoutStyle } from './block-list/layout';\nexport { default as BlockMover } from './block-mover';\nexport {\n\tdefault as BlockPreview,\n\tuseBlockPreview as __experimentalUseBlockPreview,\n} from './block-preview';\nexport {\n\tdefault as BlockSelectionClearer,\n\tuseBlockSelectionClearer as __unstableUseBlockSelectionClearer,\n} from './block-selection-clearer';\nexport { default as BlockSettingsMenu } from './block-settings-menu';\nexport { default as BlockSettingsMenuControls } from './block-settings-menu-controls';\nexport { default as BlockTitle } from './block-title';\nexport { default as BlockToolbar } from './block-toolbar';\nexport { default as BlockTools } from './block-tools';\nexport {\n\tdefault as CopyHandler,\n\tuseClipboardHandler as __unstableUseClipboardHandler,\n} from './copy-handler';\nexport { default as DefaultBlockAppender } from './default-block-appender';\nexport { default as __unstableEditorStyles } from './editor-styles';\nexport { default as Inserter } from './inserter';\nexport { default as __experimentalLibrary } from './inserter/library';\nexport { default as BlockEditorKeyboardShortcuts } from './keyboard-shortcuts';\nexport { MultiSelectScrollIntoView } from './selection-scroll-into-view';\nexport { default as NavigableToolbar } from './navigable-toolbar';\nexport {\n\tdefault as ObserveTyping,\n\tuseTypingObserver as __unstableUseTypingObserver,\n\tuseMouseMoveTypingReset as __unstableUseMouseMoveTypingReset,\n} from './observe-typing';\nexport { default as SkipToSelectedBlock } from './skip-to-selected-block';\nexport {\n\tdefault as Typewriter,\n\tuseTypewriter as __unstableUseTypewriter,\n} from './typewriter';\nexport { default as Warning } from './warning';\nexport { default as WritingFlow } from './writing-flow';\nexport { default as useBlockDisplayInformation } from './use-block-display-information';\nexport { default as __unstableIframe } from './iframe';\nexport {\n\tRecursionProvider as __experimentalRecursionProvider,\n\tuseHasRecursion as __experimentalUseHasRecursion,\n} from './recursion-provider';\nexport { default as __experimentalBlockPatternsList } from './block-patterns-list';\nexport { default as __experimentalPublishDateTimePicker } from './publish-date-time-picker';\nexport { default as __experimentalInspectorPopoverHeader } from './inspector-popover-header';\nexport { default as __experimentalUseOnBlockDrop } from './use-on-block-drop';\n\n/*\n * State Related Components\n */\n\nexport { default as BlockEditorProvider } from './provider';\nexport { default as useSetting } from './use-setting';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AAMA;;AACA","sourcesContent":["/*\n * Block Creation Components\n */\n\nexport * from './colors';\nexport * from './gradients';\nexport * from './font-sizes';\nexport * from './duotone';\nexport { AlignmentControl, AlignmentToolbar } from './alignment-control';\nexport { default as Autocomplete } from './autocomplete';\nexport {\n\tBlockAlignmentControl,\n\tBlockAlignmentToolbar,\n} from './block-alignment-control';\nexport { default as __experimentalBlockFullHeightAligmentControl } from './block-full-height-alignment-control';\nexport { default as __experimentalBlockAlignmentMatrixControl } from './block-alignment-matrix-control';\nexport { default as BlockBreadcrumb } from './block-breadcrumb';\nexport { default as __experimentalUseBlockOverlayActive } from './block-content-overlay';\nexport { BlockContextProvider } from './block-context';\nexport {\n\tdefault as BlockControls,\n\tBlockFormatControls,\n} from './block-controls';\nexport { default as BlockColorsStyleSelector } from './color-style-selector';\nexport { default as BlockEdit, useBlockEditContext } from './block-edit';\nexport { default as BlockIcon } from './block-icon';\nexport { default as BlockNavigationDropdown } from './block-navigation/dropdown';\nexport { default as BlockStyles } from './block-styles';\nexport { default as __experimentalBlockVariationPicker } from './block-variation-picker';\nexport { default as __experimentalBlockPatternSetup } from './block-pattern-setup';\nexport { default as __experimentalBlockVariationTransforms } from './block-variation-transforms';\nexport {\n\tBlockVerticalAlignmentToolbar,\n\tBlockVerticalAlignmentControl,\n} from './block-vertical-alignment-control';\nexport { default as __experimentalBorderRadiusControl } from './border-radius-control';\nexport {\n\t// This is a typo, but kept here for back-compat.\n\tButtonBlockerAppender,\n\tdefault as ButtonBlockAppender,\n} from './button-block-appender';\nexport { default as ColorPalette } from './color-palette';\nexport { default as ColorPaletteControl } from './color-palette/control';\nexport { default as ContrastChecker } from './contrast-checker';\nexport { default as __experimentalDateFormatPicker } from './date-format-picker';\nexport { default as __experimentalDuotoneControl } from './duotone-control';\nexport { default as __experimentalFontAppearanceControl } from './font-appearance-control';\nexport { default as __experimentalFontFamilyControl } from './font-family';\nexport { default as __experimentalLetterSpacingControl } from './letter-spacing-control';\nexport { default as __experimentalTextDecorationControl } from './text-decoration-control';\nexport { default as __experimentalTextTransformControl } from './text-transform-control';\nexport { default as __experimentalColorGradientControl } from './colors-gradients/control';\nexport { default as __experimentalColorGradientSettingsDropdown } from './colors-gradients/dropdown';\nexport { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';\nexport { default as __experimentalUseMultipleOriginColorsAndGradients } from './colors-gradients/use-multiple-origin-colors-and-gradients';\nexport {\n\tdefault as __experimentalImageEditor,\n\tImageEditingProvider as __experimentalImageEditingProvider,\n} from './image-editor';\nexport { default as __experimentalImageSizeControl } from './image-size-control';\nexport { default as InnerBlocks, useInnerBlocksProps } from './inner-blocks';\nexport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from './inspector-controls';\nexport {\n\tJustifyToolbar,\n\tJustifyContentControl,\n} from './justify-content-control';\nexport { default as __experimentalLinkControl } from './link-control';\nexport { default as __experimentalLinkControlSearchInput } from './link-control/search-input';\nexport { default as __experimentalLinkControlSearchResults } from './link-control/search-results';\nexport { default as __experimentalLinkControlSearchItem } from './link-control/search-item';\nexport { default as LineHeightControl } from './line-height-control';\nexport { default as __experimentalListView } from './list-view';\nexport { default as MediaReplaceFlow } from './media-replace-flow';\nexport { default as MediaPlaceholder } from './media-placeholder';\nexport { default as MediaUpload } from './media-upload';\nexport { default as MediaUploadCheck } from './media-upload/check';\nexport { default as PanelColorSettings } from './panel-color-settings';\nexport { default as PlainText } from './plain-text';\nexport { default as __experimentalResponsiveBlockControl } from './responsive-block-control';\nexport {\n\tdefault as RichText,\n\tRichTextShortcut,\n\tRichTextToolbarButton,\n\t__unstableRichTextInputEvent,\n} from './rich-text';\nexport { default as ToolSelector } from './tool-selector';\nexport { default as __experimentalUnitControl } from './unit-control';\nexport { default as URLInput } from './url-input';\nexport { default as URLInputButton } from './url-input/button';\nexport { default as URLPopover } from './url-popover';\nexport { __experimentalImageURLInputUI } from './url-popover/image-url-input-ui';\nexport { default as withColorContext } from './color-palette/with-color-context';\nexport { default as __experimentalSpacingSizesControl } from './spacing-sizes-control';\n\n/*\n * Content Related Components\n */\n\nexport { default as __unstableBlockSettingsMenuFirstItem } from './block-settings-menu/block-settings-menu-first-item';\nexport { default as __unstableBlockToolbarLastItem } from './block-toolbar/block-toolbar-last-item';\nexport { default as __unstableBlockNameContext } from './block-toolbar/block-name-context';\nexport { default as __unstableInserterMenuExtension } from './inserter-menu-extension';\nexport { default as __experimentalPreviewOptions } from './preview-options';\nexport { default as __experimentalUseResizeCanvas } from './use-resize-canvas';\nexport { default as BlockInspector } from './block-inspector';\nexport { default as BlockList } from './block-list';\nexport { useBlockProps } from './block-list/use-block-props';\nexport { LayoutStyle as __experimentalLayoutStyle } from './block-list/layout';\nexport { default as BlockMover } from './block-mover';\nexport {\n\tdefault as BlockPreview,\n\tuseBlockPreview as __experimentalUseBlockPreview,\n} from './block-preview';\nexport {\n\tdefault as BlockSelectionClearer,\n\tuseBlockSelectionClearer as __unstableUseBlockSelectionClearer,\n} from './block-selection-clearer';\nexport { default as BlockSettingsMenu } from './block-settings-menu';\nexport { default as BlockSettingsMenuControls } from './block-settings-menu-controls';\nexport { default as BlockTitle } from './block-title';\nexport { default as BlockToolbar } from './block-toolbar';\nexport { default as BlockTools } from './block-tools';\nexport {\n\tdefault as CopyHandler,\n\tuseClipboardHandler as __unstableUseClipboardHandler,\n} from './copy-handler';\nexport { default as DefaultBlockAppender } from './default-block-appender';\nexport { default as __unstableEditorStyles } from './editor-styles';\nexport { default as Inserter } from './inserter';\nexport { default as __experimentalLibrary } from './inserter/library';\nexport { default as BlockEditorKeyboardShortcuts } from './keyboard-shortcuts';\nexport { MultiSelectScrollIntoView } from './selection-scroll-into-view';\nexport { default as NavigableToolbar } from './navigable-toolbar';\nexport {\n\tdefault as ObserveTyping,\n\tuseTypingObserver as __unstableUseTypingObserver,\n\tuseMouseMoveTypingReset as __unstableUseMouseMoveTypingReset,\n} from './observe-typing';\nexport { default as SkipToSelectedBlock } from './skip-to-selected-block';\nexport {\n\tdefault as Typewriter,\n\tuseTypewriter as __unstableUseTypewriter,\n} from './typewriter';\nexport { default as Warning } from './warning';\nexport { default as WritingFlow } from './writing-flow';\nexport { default as useBlockDisplayInformation } from './use-block-display-information';\nexport { default as __unstableIframe } from './iframe';\nexport {\n\tRecursionProvider as __experimentalRecursionProvider,\n\tuseHasRecursion as __experimentalUseHasRecursion,\n} from './recursion-provider';\nexport { default as __experimentalBlockPatternsList } from './block-patterns-list';\nexport { default as __experimentalPublishDateTimePicker } from './publish-date-time-picker';\nexport { default as __experimentalInspectorPopoverHeader } from './inspector-popover-header';\n\n/*\n * State Related Components\n */\n\nexport { default as BlockEditorProvider } from './provider';\nexport { default as useSetting } from './use-setting';\n"]}
@@ -48,7 +48,8 @@ var _store = require("../../store");
48
48
  */
49
49
  function useInnerBlockTemplateSync(clientId, template, templateLock, templateInsertUpdatesSelection) {
50
50
  const {
51
- getSelectedBlocksInitialCaretPosition
51
+ getSelectedBlocksInitialCaretPosition,
52
+ isBlockSelected
52
53
  } = (0, _data.useSelect)(_store.store);
53
54
  const {
54
55
  replaceInnerBlocks
@@ -79,7 +80,7 @@ function useInnerBlockTemplateSync(clientId, template, templateLock, templateIns
79
80
  const nextBlocks = (0, _blocks.synchronizeBlocksWithTemplate)(currentInnerBlocks, template);
80
81
 
81
82
  if (!(0, _lodash.isEqual)(nextBlocks, currentInnerBlocks)) {
82
- replaceInnerBlocks(clientId, nextBlocks, currentInnerBlocks.length === 0 && templateInsertUpdatesSelection && nextBlocks.length !== 0, // This ensures the "initialPosition" doesn't change when applying the template
83
+ replaceInnerBlocks(clientId, nextBlocks, currentInnerBlocks.length === 0 && templateInsertUpdatesSelection && nextBlocks.length !== 0 && isBlockSelected(clientId), // This ensures the "initialPosition" doesn't change when applying the template
83
84
  // If we're supposed to focus the block, we'll focus the first inner block
84
85
  // otherwise, we won't apply any auto-focus.
85
86
  // This ensures for instance that the focus stays in the inserter when inserting the "buttons" block.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inner-blocks/use-inner-block-template-sync.js"],"names":["useInnerBlockTemplateSync","clientId","template","templateLock","templateInsertUpdatesSelection","getSelectedBlocksInitialCaretPosition","blockEditorStore","replaceInnerBlocks","innerBlocks","select","getBlocks","existingTemplate","window","queueMicrotask","currentInnerBlocks","shouldApplyTemplate","length","hasTemplateChanged","current","nextBlocks"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAKA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,QADc,EAEdC,QAFc,EAGdC,YAHc,EAIdC,8BAJc,EAKb;AACD,QAAM;AAAEC,IAAAA;AAAF,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAyB,uBAAaD,YAAb,CAA/B;AACA,QAAME,WAAW,GAAG,qBACjBC,MAAF,IAAcA,MAAM,CAAEH,YAAF,CAAN,CAA2BI,SAA3B,CAAsCT,QAAtC,CADK,EAEnB,CAAEA,QAAF,CAFmB,CAApB;AAIA,QAAM;AAAES,IAAAA;AAAF,MAAgB,qBAAWJ,YAAX,CAAtB,CARC,CAUD;;AACA,QAAMK,gBAAgB,GAAG,qBAAQ,IAAR,CAAzB;AACA,gCAAiB,MAAM;AACtB;AACA;AACA;AACA;AACAC,IAAAA,MAAM,CAACC,cAAP,CAAuB,MAAM;AAC5B;AACA;AACA,YAAMC,kBAAkB,GAAGJ,SAAS,CAAET,QAAF,CAApC;AACA,YAAMc,mBAAmB,GACxBD,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACAb,YAAY,KAAK,KADjB,IAEAA,YAAY,KAAK,aAHlB;AAKA,YAAMc,kBAAkB,GAAG,CAAE,qBAC5Bf,QAD4B,EAE5BS,gBAAgB,CAACO,OAFW,CAA7B;;AAKA,UAAK,CAAEH,mBAAF,IAAyB,CAAEE,kBAAhC,EAAqD;AACpD;AACA;;AAEDN,MAAAA,gBAAgB,CAACO,OAAjB,GAA2BhB,QAA3B;AACA,YAAMiB,UAAU,GAAG,2CAClBL,kBADkB,EAElBZ,QAFkB,CAAnB;;AAKA,UAAK,CAAE,qBAASiB,UAAT,EAAqBL,kBAArB,CAAP,EAAmD;AAClDP,QAAAA,kBAAkB,CACjBN,QADiB,EAEjBkB,UAFiB,EAGjBL,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACCZ,8BADD,IAECe,UAAU,CAACH,MAAX,KAAsB,CALN,EAMjB;AACA;AACA;AACA;AACAX,QAAAA,qCAAqC,EAVpB,CAAlB;AAYA;AACD,KAtCD;AAuCA,GA5CD,EA4CG,CAAEG,WAAF,EAAeN,QAAf,EAAyBC,YAAzB,EAAuCF,QAAvC,CA5CH;AA6CA","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useLayoutEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { synchronizeBlocksWithTemplate } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * This hook makes sure that a block's inner blocks stay in sync with the given\n * block \"template\". The template is a block hierarchy to which inner blocks must\n * conform. If the blocks get \"out of sync\" with the template and the template\n * is meant to be locked (e.g. templateLock = \"all\" or templateLock = \"contentOnly\"),\n * then we replace the inner blocks with the correct value after synchronizing it with the template.\n *\n * @param {string} clientId The block client ID.\n * @param {Object} template The template to match.\n * @param {string} templateLock The template lock state for the inner blocks. For\n * example, if the template lock is set to \"all\",\n * then the inner blocks will stay in sync with the\n * template. If not defined or set to false, then\n * the inner blocks will not be synchronized with\n * the given template.\n * @param {boolean} templateInsertUpdatesSelection Whether or not to update the\n * block-editor selection state when inner blocks\n * are replaced after template synchronization.\n */\nexport default function useInnerBlockTemplateSync(\n\tclientId,\n\ttemplate,\n\ttemplateLock,\n\ttemplateInsertUpdatesSelection\n) {\n\tconst { getSelectedBlocksInitialCaretPosition } =\n\t\tuseSelect( blockEditorStore );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst innerBlocks = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlocks( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { getBlocks } = useSelect( blockEditorStore );\n\n\t// Maintain a reference to the previous value so we can do a deep equality check.\n\tconst existingTemplate = useRef( null );\n\tuseLayoutEffect( () => {\n\t\t// There's an implicit dependency between useInnerBlockTemplateSync and useNestedSettingsUpdate\n\t\t// The former needs to happen after the latter and since the latter is using microtasks to batch updates (performance optimization),\n\t\t// we need to schedule this one in a microtask as well.\n\t\t// Exemple: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.\n\t\twindow.queueMicrotask( () => {\n\t\t\t// Only synchronize innerBlocks with template if innerBlocks are empty\n\t\t\t// or a locking \"all\" or \"contentOnly\" exists directly on the block.\n\t\t\tconst currentInnerBlocks = getBlocks( clientId );\n\t\t\tconst shouldApplyTemplate =\n\t\t\t\tcurrentInnerBlocks.length === 0 ||\n\t\t\t\ttemplateLock === 'all' ||\n\t\t\t\ttemplateLock === 'contentOnly';\n\n\t\t\tconst hasTemplateChanged = ! isEqual(\n\t\t\t\ttemplate,\n\t\t\t\texistingTemplate.current\n\t\t\t);\n\n\t\t\tif ( ! shouldApplyTemplate || ! hasTemplateChanged ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\texistingTemplate.current = template;\n\t\t\tconst nextBlocks = synchronizeBlocksWithTemplate(\n\t\t\t\tcurrentInnerBlocks,\n\t\t\t\ttemplate\n\t\t\t);\n\n\t\t\tif ( ! isEqual( nextBlocks, currentInnerBlocks ) ) {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tclientId,\n\t\t\t\t\tnextBlocks,\n\t\t\t\t\tcurrentInnerBlocks.length === 0 &&\n\t\t\t\t\t\ttemplateInsertUpdatesSelection &&\n\t\t\t\t\t\tnextBlocks.length !== 0,\n\t\t\t\t\t// This ensures the \"initialPosition\" doesn't change when applying the template\n\t\t\t\t\t// If we're supposed to focus the block, we'll focus the first inner block\n\t\t\t\t\t// otherwise, we won't apply any auto-focus.\n\t\t\t\t\t// This ensures for instance that the focus stays in the inserter when inserting the \"buttons\" block.\n\t\t\t\t\tgetSelectedBlocksInitialCaretPosition()\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t}, [ innerBlocks, template, templateLock, clientId ] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inner-blocks/use-inner-block-template-sync.js"],"names":["useInnerBlockTemplateSync","clientId","template","templateLock","templateInsertUpdatesSelection","getSelectedBlocksInitialCaretPosition","isBlockSelected","blockEditorStore","replaceInnerBlocks","innerBlocks","select","getBlocks","existingTemplate","window","queueMicrotask","currentInnerBlocks","shouldApplyTemplate","length","hasTemplateChanged","current","nextBlocks"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAKA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,QADc,EAEdC,QAFc,EAGdC,YAHc,EAIdC,8BAJc,EAKb;AACD,QAAM;AAAEC,IAAAA,qCAAF;AAAyCC,IAAAA;AAAzC,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAyB,uBAAaD,YAAb,CAA/B;AACA,QAAME,WAAW,GAAG,qBACjBC,MAAF,IAAcA,MAAM,CAAEH,YAAF,CAAN,CAA2BI,SAA3B,CAAsCV,QAAtC,CADK,EAEnB,CAAEA,QAAF,CAFmB,CAApB;AAIA,QAAM;AAAEU,IAAAA;AAAF,MAAgB,qBAAWJ,YAAX,CAAtB,CARC,CAUD;;AACA,QAAMK,gBAAgB,GAAG,qBAAQ,IAAR,CAAzB;AACA,gCAAiB,MAAM;AACtB;AACA;AACA;AACA;AACAC,IAAAA,MAAM,CAACC,cAAP,CAAuB,MAAM;AAC5B;AACA;AACA,YAAMC,kBAAkB,GAAGJ,SAAS,CAAEV,QAAF,CAApC;AACA,YAAMe,mBAAmB,GACxBD,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACAd,YAAY,KAAK,KADjB,IAEAA,YAAY,KAAK,aAHlB;AAKA,YAAMe,kBAAkB,GAAG,CAAE,qBAC5BhB,QAD4B,EAE5BU,gBAAgB,CAACO,OAFW,CAA7B;;AAKA,UAAK,CAAEH,mBAAF,IAAyB,CAAEE,kBAAhC,EAAqD;AACpD;AACA;;AAEDN,MAAAA,gBAAgB,CAACO,OAAjB,GAA2BjB,QAA3B;AACA,YAAMkB,UAAU,GAAG,2CAClBL,kBADkB,EAElBb,QAFkB,CAAnB;;AAKA,UAAK,CAAE,qBAASkB,UAAT,EAAqBL,kBAArB,CAAP,EAAmD;AAClDP,QAAAA,kBAAkB,CACjBP,QADiB,EAEjBmB,UAFiB,EAGjBL,kBAAkB,CAACE,MAAnB,KAA8B,CAA9B,IACCb,8BADD,IAECgB,UAAU,CAACH,MAAX,KAAsB,CAFvB,IAGCX,eAAe,CAAEL,QAAF,CANC,EAOjB;AACA;AACA;AACA;AACAI,QAAAA,qCAAqC,EAXpB,CAAlB;AAaA;AACD,KAvCD;AAwCA,GA7CD,EA6CG,CAAEI,WAAF,EAAeP,QAAf,EAAyBC,YAAzB,EAAuCF,QAAvC,CA7CH;AA8CA","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useLayoutEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { synchronizeBlocksWithTemplate } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * This hook makes sure that a block's inner blocks stay in sync with the given\n * block \"template\". The template is a block hierarchy to which inner blocks must\n * conform. If the blocks get \"out of sync\" with the template and the template\n * is meant to be locked (e.g. templateLock = \"all\" or templateLock = \"contentOnly\"),\n * then we replace the inner blocks with the correct value after synchronizing it with the template.\n *\n * @param {string} clientId The block client ID.\n * @param {Object} template The template to match.\n * @param {string} templateLock The template lock state for the inner blocks. For\n * example, if the template lock is set to \"all\",\n * then the inner blocks will stay in sync with the\n * template. If not defined or set to false, then\n * the inner blocks will not be synchronized with\n * the given template.\n * @param {boolean} templateInsertUpdatesSelection Whether or not to update the\n * block-editor selection state when inner blocks\n * are replaced after template synchronization.\n */\nexport default function useInnerBlockTemplateSync(\n\tclientId,\n\ttemplate,\n\ttemplateLock,\n\ttemplateInsertUpdatesSelection\n) {\n\tconst { getSelectedBlocksInitialCaretPosition, isBlockSelected } =\n\t\tuseSelect( blockEditorStore );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst innerBlocks = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlocks( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { getBlocks } = useSelect( blockEditorStore );\n\n\t// Maintain a reference to the previous value so we can do a deep equality check.\n\tconst existingTemplate = useRef( null );\n\tuseLayoutEffect( () => {\n\t\t// There's an implicit dependency between useInnerBlockTemplateSync and useNestedSettingsUpdate\n\t\t// The former needs to happen after the latter and since the latter is using microtasks to batch updates (performance optimization),\n\t\t// we need to schedule this one in a microtask as well.\n\t\t// Exemple: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.\n\t\twindow.queueMicrotask( () => {\n\t\t\t// Only synchronize innerBlocks with template if innerBlocks are empty\n\t\t\t// or a locking \"all\" or \"contentOnly\" exists directly on the block.\n\t\t\tconst currentInnerBlocks = getBlocks( clientId );\n\t\t\tconst shouldApplyTemplate =\n\t\t\t\tcurrentInnerBlocks.length === 0 ||\n\t\t\t\ttemplateLock === 'all' ||\n\t\t\t\ttemplateLock === 'contentOnly';\n\n\t\t\tconst hasTemplateChanged = ! isEqual(\n\t\t\t\ttemplate,\n\t\t\t\texistingTemplate.current\n\t\t\t);\n\n\t\t\tif ( ! shouldApplyTemplate || ! hasTemplateChanged ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\texistingTemplate.current = template;\n\t\t\tconst nextBlocks = synchronizeBlocksWithTemplate(\n\t\t\t\tcurrentInnerBlocks,\n\t\t\t\ttemplate\n\t\t\t);\n\n\t\t\tif ( ! isEqual( nextBlocks, currentInnerBlocks ) ) {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tclientId,\n\t\t\t\t\tnextBlocks,\n\t\t\t\t\tcurrentInnerBlocks.length === 0 &&\n\t\t\t\t\t\ttemplateInsertUpdatesSelection &&\n\t\t\t\t\t\tnextBlocks.length !== 0 &&\n\t\t\t\t\t\tisBlockSelected( clientId ),\n\t\t\t\t\t// This ensures the \"initialPosition\" doesn't change when applying the template\n\t\t\t\t\t// If we're supposed to focus the block, we'll focus the first inner block\n\t\t\t\t\t// otherwise, we won't apply any auto-focus.\n\t\t\t\t\t// This ensures for instance that the focus stays in the inserter when inserting the \"buttons\" block.\n\t\t\t\t\tgetSelectedBlocksInitialCaretPosition()\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t}, [ innerBlocks, template, templateLock, clientId ] );\n}\n"]}
@@ -5,6 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.BlockPatternsCategoryDialog = BlockPatternsCategoryDialog;
9
+ exports.BlockPatternsCategoryPanel = BlockPatternsCategoryPanel;
8
10
  exports.default = void 0;
9
11
 
10
12
  var _element = require("@wordpress/element");
@@ -13,7 +15,11 @@ var _i18n = require("@wordpress/i18n");
13
15
 
14
16
  var _compose = require("@wordpress/compose");
15
17
 
16
- var _patternPanel = _interopRequireDefault(require("./pattern-panel"));
18
+ var _components = require("@wordpress/components");
19
+
20
+ var _icons = require("@wordpress/icons");
21
+
22
+ var _dom = require("@wordpress/dom");
17
23
 
18
24
  var _usePatternsState = _interopRequireDefault(require("./hooks/use-patterns-state"));
19
25
 
@@ -28,67 +34,7 @@ var _explorer = _interopRequireDefault(require("./block-patterns-explorer/explor
28
34
  /**
29
35
  * Internal dependencies
30
36
  */
31
- function BlockPatternsCategory(_ref) {
32
- let {
33
- rootClientId,
34
- onInsert,
35
- selectedCategory,
36
- populatedCategories
37
- } = _ref;
38
- const [allPatterns,, onClick] = (0, _usePatternsState.default)(onInsert, rootClientId);
39
- const getPatternIndex = (0, _element.useCallback)(pattern => {
40
- var _pattern$categories;
41
-
42
- if (!((_pattern$categories = pattern.categories) !== null && _pattern$categories !== void 0 && _pattern$categories.length)) {
43
- return Infinity;
44
- }
45
-
46
- const indexedCategories = populatedCategories.reduce((accumulator, _ref2, index) => {
47
- let {
48
- name
49
- } = _ref2;
50
- accumulator[name] = index;
51
- return accumulator;
52
- }, {});
53
- return Math.min(...pattern.categories.map(cat => indexedCategories[cat] !== undefined ? indexedCategories[cat] : Infinity));
54
- }, [populatedCategories]);
55
- const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
56
- var _pattern$categories2;
57
-
58
- return selectedCategory.name === 'uncategorized' ? getPatternIndex(pattern) === Infinity : (_pattern$categories2 = pattern.categories) === null || _pattern$categories2 === void 0 ? void 0 : _pattern$categories2.includes(selectedCategory.name);
59
- }), [allPatterns, selectedCategory]); // Ordering the patterns is important for the async rendering.
60
-
61
- const orderedPatterns = (0, _element.useMemo)(() => {
62
- return currentCategoryPatterns.sort((a, b) => {
63
- return getPatternIndex(a) - getPatternIndex(b);
64
- });
65
- }, [currentCategoryPatterns, getPatternIndex]);
66
- const currentShownPatterns = (0, _compose.useAsyncList)(orderedPatterns);
67
-
68
- if (!currentCategoryPatterns.length) {
69
- return null;
70
- }
71
-
72
- return (0, _element.createElement)("div", {
73
- className: "block-editor-inserter__panel-content"
74
- }, (0, _element.createElement)(_blockPatternsList.default, {
75
- shownPatterns: currentShownPatterns,
76
- blockPatterns: currentCategoryPatterns,
77
- onClickPattern: onClick,
78
- label: selectedCategory.label,
79
- orientation: "vertical",
80
- isDraggable: true
81
- }));
82
- }
83
-
84
- function BlockPatternsTabs(_ref3) {
85
- let {
86
- rootClientId,
87
- onInsert,
88
- onClickCategory,
89
- selectedCategory
90
- } = _ref3;
91
- const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
37
+ function usePatternsCategories() {
92
38
  const [allPatterns, allCategories] = (0, _usePatternsState.default)();
93
39
  const hasRegisteredCategory = (0, _element.useCallback)(pattern => {
94
40
  if (!pattern.categories || !pattern.categories.length) {
@@ -100,16 +46,16 @@ function BlockPatternsTabs(_ref3) {
100
46
 
101
47
  const populatedCategories = (0, _element.useMemo)(() => {
102
48
  const categories = allCategories.filter(category => allPatterns.some(pattern => {
103
- var _pattern$categories3;
49
+ var _pattern$categories;
104
50
 
105
- return (_pattern$categories3 = pattern.categories) === null || _pattern$categories3 === void 0 ? void 0 : _pattern$categories3.includes(category.name);
106
- })).sort((_ref4, _ref5) => {
51
+ return (_pattern$categories = pattern.categories) === null || _pattern$categories === void 0 ? void 0 : _pattern$categories.includes(category.name);
52
+ })).sort((_ref, _ref2) => {
107
53
  let {
108
54
  name: currentName
109
- } = _ref4;
55
+ } = _ref;
110
56
  let {
111
57
  name: nextName
112
- } = _ref5;
58
+ } = _ref2;
113
59
 
114
60
  if (![currentName, nextName].includes('featured')) {
115
61
  return 0;
@@ -127,24 +73,151 @@ function BlockPatternsTabs(_ref3) {
127
73
 
128
74
  return categories;
129
75
  }, [allPatterns, allCategories]);
130
- const patternCategory = selectedCategory ? selectedCategory : populatedCategories[0];
131
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_patternPanel.default, {
132
- selectedCategory: patternCategory,
133
- patternCategories: populatedCategories,
134
- onClickCategory: onClickCategory,
135
- openPatternExplorer: () => setShowPatternsExplorer(true)
136
- }), !showPatternsExplorer && (0, _element.createElement)(BlockPatternsCategory, {
76
+ return populatedCategories;
77
+ }
78
+
79
+ function BlockPatternsCategoryDialog(_ref3) {
80
+ let {
81
+ rootClientId,
82
+ onInsert,
83
+ category
84
+ } = _ref3;
85
+ const container = (0, _element.useRef)();
86
+ (0, _element.useEffect)(() => {
87
+ const timeout = setTimeout(() => {
88
+ const [firstTabbable] = _dom.focus.tabbable.find(container.current);
89
+
90
+ firstTabbable === null || firstTabbable === void 0 ? void 0 : firstTabbable.focus();
91
+ });
92
+ return () => clearTimeout(timeout);
93
+ }, [category]);
94
+ return (0, _element.createElement)("div", {
95
+ ref: container,
96
+ className: "block-editor-inserter__patterns-category-panel"
97
+ }, (0, _element.createElement)(BlockPatternsCategoryPanel, {
137
98
  rootClientId: rootClientId,
138
99
  onInsert: onInsert,
139
- selectedCategory: patternCategory,
140
- populatedCategories: populatedCategories
100
+ category: category
101
+ }));
102
+ }
103
+
104
+ function BlockPatternsCategoryPanel(_ref4) {
105
+ let {
106
+ rootClientId,
107
+ onInsert,
108
+ category
109
+ } = _ref4;
110
+ const [allPatterns,, onClick] = (0, _usePatternsState.default)(onInsert, rootClientId);
111
+ const availableCategories = usePatternsCategories();
112
+ const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
113
+ var _pattern$categories$f, _pattern$categories3;
114
+
115
+ if (category.name !== 'uncategorized') {
116
+ var _pattern$categories2;
117
+
118
+ return (_pattern$categories2 = pattern.categories) === null || _pattern$categories2 === void 0 ? void 0 : _pattern$categories2.includes(category.name);
119
+ } // The uncategorized category should show all the patterns without any category
120
+ // or with no available category.
121
+
122
+
123
+ const availablePatternCategories = (_pattern$categories$f = (_pattern$categories3 = pattern.categories) === null || _pattern$categories3 === void 0 ? void 0 : _pattern$categories3.filter(cat => availableCategories.find(availableCategory => availableCategory.name === cat))) !== null && _pattern$categories$f !== void 0 ? _pattern$categories$f : [];
124
+ return availablePatternCategories.length === 0;
125
+ }), [allPatterns, category]);
126
+ const currentShownPatterns = (0, _compose.useAsyncList)(currentCategoryPatterns);
127
+
128
+ if (!currentCategoryPatterns.length) {
129
+ return null;
130
+ }
131
+
132
+ return (0, _element.createElement)("div", null, (0, _element.createElement)("div", {
133
+ className: "block-editor-inserter__patterns-category-panel-title"
134
+ }, category.label), (0, _element.createElement)("p", null, category.description), (0, _element.createElement)(_blockPatternsList.default, {
135
+ shownPatterns: currentShownPatterns,
136
+ blockPatterns: currentCategoryPatterns,
137
+ onClickPattern: onClick,
138
+ label: category.label,
139
+ orientation: "vertical",
140
+ category: category.label,
141
+ isDraggable: true
142
+ }));
143
+ }
144
+
145
+ function BlockPatternsTabs(_ref5) {
146
+ let {
147
+ onSelectCategory,
148
+ selectedCategory,
149
+ onInsert,
150
+ rootClientId
151
+ } = _ref5;
152
+ const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
153
+ const categories = usePatternsCategories();
154
+ const isMobile = (0, _compose.useViewportMatch)('medium', '<');
155
+ return (0, _element.createElement)(_element.Fragment, null, !isMobile && (0, _element.createElement)("div", {
156
+ className: "block-editor-inserter__block-patterns-tabs-container"
157
+ }, (0, _element.createElement)("nav", {
158
+ "aria-label": (0, _i18n.__)('Block pattern categories')
159
+ }, (0, _element.createElement)(_components.__experimentalItemGroup, {
160
+ role: "list",
161
+ className: "block-editor-inserter__block-patterns-tabs"
162
+ }, categories.map(category => (0, _element.createElement)(_components.__experimentalItem, {
163
+ role: "listitem",
164
+ key: category.name,
165
+ onClick: () => onSelectCategory(category),
166
+ className: category === selectedCategory ? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category' : 'block-editor-inserter__patterns-category',
167
+ "aria-label": category.label,
168
+ "aria-current": category === selectedCategory ? 'true' : undefined
169
+ }, (0, _element.createElement)(_components.__experimentalHStack, null, (0, _element.createElement)(_components.FlexBlock, null, category.label), (0, _element.createElement)(_icons.Icon, {
170
+ icon: _icons.chevronRight
171
+ })))), (0, _element.createElement)("div", {
172
+ role: "presentation",
173
+ className: "block-editor-inserter__patterns-fill-space"
174
+ }), (0, _element.createElement)("div", {
175
+ role: "listitem"
176
+ }, (0, _element.createElement)(_components.Button, {
177
+ className: "block-editor-inserter__patterns-explore-button",
178
+ onClick: () => setShowPatternsExplorer(true),
179
+ variant: "secondary"
180
+ }, (0, _i18n.__)('Explore all patterns')))))), isMobile && (0, _element.createElement)(BlockPatternsTabNavigation, {
181
+ onInsert: onInsert,
182
+ rootClientId: rootClientId
141
183
  }), showPatternsExplorer && (0, _element.createElement)(_explorer.default, {
142
- initialCategory: patternCategory,
143
- patternCategories: populatedCategories,
184
+ initialCategory: selectedCategory,
185
+ patternCategories: categories,
144
186
  onModalClose: () => setShowPatternsExplorer(false)
145
187
  }));
146
188
  }
147
189
 
190
+ function BlockPatternsTabNavigation(_ref6) {
191
+ let {
192
+ onInsert,
193
+ rootClientId
194
+ } = _ref6;
195
+ const categories = usePatternsCategories();
196
+ return (0, _element.createElement)(_components.__experimentalNavigatorProvider, {
197
+ initialPath: "/"
198
+ }, (0, _element.createElement)(_components.__experimentalNavigatorScreen, {
199
+ path: "/"
200
+ }, (0, _element.createElement)(_components.__experimentalItemGroup, null, categories.map(category => (0, _element.createElement)(_components.__experimentalNavigatorButton, {
201
+ key: category.name,
202
+ path: `/category/${category.name}`,
203
+ as: _components.__experimentalItem,
204
+ isAction: true
205
+ }, (0, _element.createElement)(_components.__experimentalHStack, null, (0, _element.createElement)(_components.FlexBlock, null, category.label), (0, _element.createElement)(_icons.Icon, {
206
+ icon: (0, _i18n.isRTL)() ? _icons.chevronLeft : _icons.chevronRight
207
+ })))))), categories.map(category => (0, _element.createElement)(_components.__experimentalNavigatorScreen, {
208
+ key: category.name,
209
+ path: `/category/${category.name}`
210
+ }, (0, _element.createElement)(_components.__experimentalNavigatorBackButton, {
211
+ icon: (0, _i18n.isRTL)() ? _icons.chevronRight : _icons.chevronLeft,
212
+ isSmall: true,
213
+ "aria-label": (0, _i18n.__)('Navigate to the categories list')
214
+ }, (0, _i18n.__)('Back')), (0, _element.createElement)(BlockPatternsCategoryPanel, {
215
+ category: category,
216
+ rootClientId: rootClientId,
217
+ onInsert: onInsert
218
+ }))));
219
+ }
220
+
148
221
  var _default = BlockPatternsTabs;
149
222
  exports.default = _default;
150
223
  //# sourceMappingURL=block-patterns-tab.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["BlockPatternsCategory","rootClientId","onInsert","selectedCategory","populatedCategories","allPatterns","onClick","getPatternIndex","pattern","categories","length","Infinity","indexedCategories","reduce","accumulator","index","name","Math","min","map","cat","undefined","currentCategoryPatterns","filter","includes","orderedPatterns","sort","a","b","currentShownPatterns","label","BlockPatternsTabs","onClickCategory","showPatternsExplorer","setShowPatternsExplorer","allCategories","hasRegisteredCategory","some","category","currentName","nextName","find","push","patternCategory"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState, useCallback } from '@wordpress/element';\nimport { _x } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PatternInserterPanel from './pattern-panel';\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\n\nfunction BlockPatternsCategory( {\n\trootClientId,\n\tonInsert,\n\tselectedCategory,\n\tpopulatedCategories,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst getPatternIndex = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories?.length ) {\n\t\t\t\treturn Infinity;\n\t\t\t}\n\t\t\tconst indexedCategories = populatedCategories.reduce(\n\t\t\t\t( accumulator, { name }, index ) => {\n\t\t\t\t\taccumulator[ name ] = index;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t\treturn Math.min(\n\t\t\t\t...pattern.categories.map( ( cat ) =>\n\t\t\t\t\tindexedCategories[ cat ] !== undefined\n\t\t\t\t\t\t? indexedCategories[ cat ]\n\t\t\t\t\t\t: Infinity\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\t[ populatedCategories ]\n\t);\n\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) =>\n\t\t\t\tselectedCategory.name === 'uncategorized'\n\t\t\t\t\t? getPatternIndex( pattern ) === Infinity\n\t\t\t\t\t: pattern.categories?.includes( selectedCategory.name )\n\t\t\t),\n\t\t[ allPatterns, selectedCategory ]\n\t);\n\n\t// Ordering the patterns is important for the async rendering.\n\tconst orderedPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.sort( ( a, b ) => {\n\t\t\treturn getPatternIndex( a ) - getPatternIndex( b );\n\t\t} );\n\t}, [ currentCategoryPatterns, getPatternIndex ] );\n\n\tconst currentShownPatterns = useAsyncList( orderedPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__panel-content\">\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ selectedCategory.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tisDraggable\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\trootClientId,\n\tonInsert,\n\tonClickCategory,\n\tselectedCategory,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst [ allPatterns, allCategories ] = usePatternsState();\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif ( ! [ currentName, nextName ].includes( 'featured' ) ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn currentName === 'featured' ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\tconst patternCategory = selectedCategory\n\t\t? selectedCategory\n\t\t: populatedCategories[ 0 ];\n\n\treturn (\n\t\t<>\n\t\t\t<PatternInserterPanel\n\t\t\t\tselectedCategory={ patternCategory }\n\t\t\t\tpatternCategories={ populatedCategories }\n\t\t\t\tonClickCategory={ onClickCategory }\n\t\t\t\topenPatternExplorer={ () => setShowPatternsExplorer( true ) }\n\t\t\t/>\n\t\t\t{ ! showPatternsExplorer && (\n\t\t\t\t<BlockPatternsCategory\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tselectedCategory={ patternCategory }\n\t\t\t\t\tpopulatedCategories={ populatedCategories }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ patternCategory }\n\t\t\t\t\tpatternCategories={ populatedCategories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["usePatternsCategories","allPatterns","allCategories","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","find","push","label","BlockPatternsCategoryDialog","rootClientId","onInsert","container","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","isMobile","map","undefined","chevronRight","BlockPatternsTabNavigation","Item","chevronLeft"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, isRTL } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorButton as NavigatorButton,\n\t__experimentalNavigatorBackButton as NavigatorBackButton,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\n\nfunction usePatternsCategories() {\n\tconst [ allPatterns, allCategories ] = usePatternsState();\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif ( ! [ currentName, nextName ].includes( 'featured' ) ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn currentName === 'featured' ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-panel\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-fill-space\"\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<BlockPatternsTabNavigation\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction BlockPatternsTabNavigation( { onInsert, rootClientId } ) {\n\tconst categories = usePatternsCategories();\n\n\treturn (\n\t\t<NavigatorProvider initialPath=\"/\">\n\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t<NavigatorButton\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t\t\t\tas={ Item }\n\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t<FlexBlock>{ category.label }</FlexBlock>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronLeft : chevronRight\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</NavigatorButton>\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</NavigatorScreen>\n\n\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t<NavigatorScreen\n\t\t\t\t\tkey={ category.name }\n\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t>\n\t\t\t\t\t<NavigatorBackButton\n\t\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\t\tisSmall\n\t\t\t\t\t\taria-label={ __( 'Navigate to the categories list' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</NavigatorBackButton>\n\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t/>\n\t\t\t\t</NavigatorScreen>\n\t\t\t) ) }\n\t\t</NavigatorProvider>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}