@wordpress/block-editor 12.13.0 → 12.14.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 (344) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-heading-level-dropdown/index.js +1 -1
  3. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  4. package/build/components/block-list/index.js +2 -9
  5. package/build/components/block-list/index.js.map +1 -1
  6. package/build/components/block-list-appender/index.js +16 -3
  7. package/build/components/block-list-appender/index.js.map +1 -1
  8. package/build/components/block-quick-navigation/index.js +6 -4
  9. package/build/components/block-quick-navigation/index.js.map +1 -1
  10. package/build/components/block-styles/index.js +0 -8
  11. package/build/components/block-styles/index.js.map +1 -1
  12. package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
  13. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  14. package/build/components/block-tools/back-compat.js +2 -2
  15. package/build/components/block-tools/back-compat.js.map +1 -1
  16. package/build/components/block-tools/block-contextual-toolbar.js +11 -81
  17. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  18. package/build/components/block-tools/empty-block-inserter.js +56 -0
  19. package/build/components/block-tools/empty-block-inserter.js.map +1 -0
  20. package/build/components/block-tools/index.js +48 -9
  21. package/build/components/block-tools/index.js.map +1 -1
  22. package/build/components/block-tools/selected-block-tools.js +113 -0
  23. package/build/components/block-tools/selected-block-tools.js.map +1 -0
  24. package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
  25. package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  26. package/build/components/editable-text/index.js +1 -2
  27. package/build/components/editable-text/index.js.map +1 -1
  28. package/build/components/iframe/index.js +4 -3
  29. package/build/components/iframe/index.js.map +1 -1
  30. package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
  31. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
  32. package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  33. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  34. package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
  35. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  36. package/build/components/inserter/block-patterns-tab/index.js +75 -0
  37. package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
  38. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  39. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  40. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
  41. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  42. package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
  43. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  44. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
  45. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  46. package/build/components/inserter/block-patterns-tab/utils.js +70 -0
  47. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
  48. package/build/components/inserter/media-tab/media-list.js +9 -5
  49. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  50. package/build/components/inserter/media-tab/media-preview.js +15 -12
  51. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  52. package/build/components/inserter/menu.js +3 -4
  53. package/build/components/inserter/menu.js.map +1 -1
  54. package/build/components/link-control/index.js +6 -5
  55. package/build/components/link-control/index.js.map +1 -1
  56. package/build/components/list-view/block-select-button.js +39 -0
  57. package/build/components/list-view/block-select-button.js.map +1 -1
  58. package/build/components/list-view/block.js +16 -3
  59. package/build/components/list-view/block.js.map +1 -1
  60. package/build/components/list-view/index.js +3 -2
  61. package/build/components/list-view/index.js.map +1 -1
  62. package/build/components/navigable-toolbar/index.js +69 -18
  63. package/build/components/navigable-toolbar/index.js.map +1 -1
  64. package/build/components/provider/use-block-sync.js +1 -14
  65. package/build/components/provider/use-block-sync.js.map +1 -1
  66. package/build/components/rich-text/index.js +0 -1
  67. package/build/components/rich-text/index.js.map +1 -1
  68. package/build/components/rich-text/index.native.js +3 -1
  69. package/build/components/rich-text/index.native.js.map +1 -1
  70. package/build/components/rich-text/native/format-edit.js +45 -0
  71. package/build/components/rich-text/native/format-edit.js.map +1 -0
  72. package/build/components/rich-text/native/get-format-colors.native.js +41 -0
  73. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
  74. package/build/components/rich-text/native/index.js +9 -0
  75. package/build/components/rich-text/native/index.js.map +1 -0
  76. package/build/components/rich-text/native/index.native.js +1158 -0
  77. package/build/components/rich-text/native/index.native.js.map +1 -0
  78. package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
  79. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  80. package/build/components/rich-text/native/use-format-types.js +111 -0
  81. package/build/components/rich-text/native/use-format-types.js.map +1 -0
  82. package/build/components/rich-text/use-paste-handler.js +2 -5
  83. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  84. package/build/components/url-popover/image-url-input-ui.js +2 -1
  85. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  86. package/build/components/writing-flow/use-tab-nav.js +7 -3
  87. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  88. package/build/hooks/align.js +10 -10
  89. package/build/hooks/align.js.map +1 -1
  90. package/build/hooks/align.native.js +2 -2
  91. package/build/hooks/align.native.js.map +1 -1
  92. package/build/hooks/anchor.js +7 -6
  93. package/build/hooks/anchor.js.map +1 -1
  94. package/build/hooks/background.js +16 -4
  95. package/build/hooks/background.js.map +1 -1
  96. package/build/hooks/block-hooks.js +7 -8
  97. package/build/hooks/block-hooks.js.map +1 -1
  98. package/build/hooks/block-rename-ui.js +7 -5
  99. package/build/hooks/block-rename-ui.js.map +1 -1
  100. package/build/hooks/content-lock-ui.js +5 -5
  101. package/build/hooks/content-lock-ui.js.map +1 -1
  102. package/build/hooks/custom-class-name.js +8 -7
  103. package/build/hooks/custom-class-name.js.map +1 -1
  104. package/build/hooks/custom-fields.js +4 -4
  105. package/build/hooks/custom-fields.js.map +1 -1
  106. package/build/hooks/duotone.js +9 -20
  107. package/build/hooks/duotone.js.map +1 -1
  108. package/build/hooks/layout.js +90 -86
  109. package/build/hooks/layout.js.map +1 -1
  110. package/build/hooks/position.js +10 -9
  111. package/build/hooks/position.js.map +1 -1
  112. package/build/hooks/style.js +10 -13
  113. package/build/hooks/style.js.map +1 -1
  114. package/build/hooks/utils.js +30 -0
  115. package/build/hooks/utils.js.map +1 -1
  116. package/build/private-apis.js +3 -0
  117. package/build/private-apis.js.map +1 -1
  118. package/build/store/actions.js +30 -37
  119. package/build/store/actions.js.map +1 -1
  120. package/build/store/reducer.js +18 -0
  121. package/build/store/reducer.js.map +1 -1
  122. package/build/store/selectors.js +16 -13
  123. package/build/store/selectors.js.map +1 -1
  124. package/build-module/components/block-heading-level-dropdown/index.js +1 -1
  125. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  126. package/build-module/components/block-list/index.js +3 -10
  127. package/build-module/components/block-list/index.js.map +1 -1
  128. package/build-module/components/block-list-appender/index.js +16 -3
  129. package/build-module/components/block-list-appender/index.js.map +1 -1
  130. package/build-module/components/block-quick-navigation/index.js +7 -5
  131. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  132. package/build-module/components/block-styles/index.js +0 -8
  133. package/build-module/components/block-styles/index.js.map +1 -1
  134. package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
  135. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  136. package/build-module/components/block-tools/back-compat.js +1 -1
  137. package/build-module/components/block-tools/back-compat.js.map +1 -1
  138. package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
  139. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  140. package/build-module/components/block-tools/empty-block-inserter.js +48 -0
  141. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
  142. package/build-module/components/block-tools/index.js +48 -9
  143. package/build-module/components/block-tools/index.js.map +1 -1
  144. package/build-module/components/block-tools/selected-block-tools.js +105 -0
  145. package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
  146. package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
  147. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  148. package/build-module/components/editable-text/index.js +1 -2
  149. package/build-module/components/editable-text/index.js.map +1 -1
  150. package/build-module/components/iframe/index.js +4 -3
  151. package/build-module/components/iframe/index.js.map +1 -1
  152. package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
  153. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
  154. package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  155. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  156. package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +2 -2
  157. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  158. package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
  159. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
  160. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
  161. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  162. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
  163. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  164. package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
  165. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  166. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
  167. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  168. package/build-module/components/inserter/block-patterns-tab/utils.js +58 -0
  169. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
  170. package/build-module/components/inserter/media-tab/media-list.js +9 -5
  171. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  172. package/build-module/components/inserter/media-tab/media-preview.js +15 -12
  173. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  174. package/build-module/components/inserter/menu.js +4 -3
  175. package/build-module/components/inserter/menu.js.map +1 -1
  176. package/build-module/components/link-control/index.js +7 -6
  177. package/build-module/components/link-control/index.js.map +1 -1
  178. package/build-module/components/list-view/block-select-button.js +39 -0
  179. package/build-module/components/list-view/block-select-button.js.map +1 -1
  180. package/build-module/components/list-view/block.js +16 -3
  181. package/build-module/components/list-view/block.js.map +1 -1
  182. package/build-module/components/list-view/index.js +3 -2
  183. package/build-module/components/list-view/index.js.map +1 -1
  184. package/build-module/components/navigable-toolbar/index.js +69 -17
  185. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  186. package/build-module/components/provider/use-block-sync.js +1 -14
  187. package/build-module/components/provider/use-block-sync.js.map +1 -1
  188. package/build-module/components/rich-text/index.js +0 -1
  189. package/build-module/components/rich-text/index.js.map +1 -1
  190. package/build-module/components/rich-text/index.native.js +3 -1
  191. package/build-module/components/rich-text/index.native.js.map +1 -1
  192. package/build-module/components/rich-text/native/format-edit.js +38 -0
  193. package/build-module/components/rich-text/native/format-edit.js.map +1 -0
  194. package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
  195. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
  196. package/build-module/components/rich-text/native/index.js +2 -0
  197. package/build-module/components/rich-text/native/index.js.map +1 -0
  198. package/build-module/components/rich-text/native/index.native.js +1148 -0
  199. package/build-module/components/rich-text/native/index.native.js.map +1 -0
  200. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
  201. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  202. package/build-module/components/rich-text/native/use-format-types.js +104 -0
  203. package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
  204. package/build-module/components/rich-text/use-paste-handler.js +2 -5
  205. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  206. package/build-module/components/url-popover/image-url-input-ui.js +2 -1
  207. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  208. package/build-module/components/writing-flow/use-tab-nav.js +7 -3
  209. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  210. package/build-module/hooks/align.js +8 -8
  211. package/build-module/hooks/align.js.map +1 -1
  212. package/build-module/hooks/align.native.js +2 -2
  213. package/build-module/hooks/align.native.js.map +1 -1
  214. package/build-module/hooks/anchor.js +5 -4
  215. package/build-module/hooks/anchor.js.map +1 -1
  216. package/build-module/hooks/background.js +17 -5
  217. package/build-module/hooks/background.js.map +1 -1
  218. package/build-module/hooks/block-hooks.js +5 -6
  219. package/build-module/hooks/block-hooks.js.map +1 -1
  220. package/build-module/hooks/block-rename-ui.js +5 -3
  221. package/build-module/hooks/block-rename-ui.js.map +1 -1
  222. package/build-module/hooks/content-lock-ui.js +3 -3
  223. package/build-module/hooks/content-lock-ui.js.map +1 -1
  224. package/build-module/hooks/custom-class-name.js +6 -5
  225. package/build-module/hooks/custom-class-name.js.map +1 -1
  226. package/build-module/hooks/custom-fields.js +4 -4
  227. package/build-module/hooks/custom-fields.js.map +1 -1
  228. package/build-module/hooks/duotone.js +10 -21
  229. package/build-module/hooks/duotone.js.map +1 -1
  230. package/build-module/hooks/layout.js +90 -86
  231. package/build-module/hooks/layout.js.map +1 -1
  232. package/build-module/hooks/position.js +11 -10
  233. package/build-module/hooks/position.js.map +1 -1
  234. package/build-module/hooks/style.js +10 -13
  235. package/build-module/hooks/style.js.map +1 -1
  236. package/build-module/hooks/utils.js +30 -1
  237. package/build-module/hooks/utils.js.map +1 -1
  238. package/build-module/private-apis.js +4 -1
  239. package/build-module/private-apis.js.map +1 -1
  240. package/build-module/store/actions.js +29 -37
  241. package/build-module/store/actions.js.map +1 -1
  242. package/build-module/store/reducer.js +17 -0
  243. package/build-module/store/reducer.js.map +1 -1
  244. package/build-module/store/selectors.js +15 -13
  245. package/build-module/store/selectors.js.map +1 -1
  246. package/build-style/style-rtl.css +16 -15
  247. package/build-style/style.css +16 -15
  248. package/package.json +31 -31
  249. package/src/components/block-heading-level-dropdown/index.js +1 -1
  250. package/src/components/block-list/index.js +4 -18
  251. package/src/components/block-list-appender/index.js +20 -4
  252. package/src/components/block-quick-navigation/index.js +11 -5
  253. package/src/components/block-styles/index.js +0 -10
  254. package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
  255. package/src/components/block-toolbar/style.scss +8 -0
  256. package/src/components/block-tools/back-compat.js +1 -1
  257. package/src/components/block-tools/block-contextual-toolbar.js +11 -134
  258. package/src/components/block-tools/empty-block-inserter.js +56 -0
  259. package/src/components/block-tools/index.js +72 -16
  260. package/src/components/block-tools/selected-block-tools.js +127 -0
  261. package/src/components/block-tools/style.scss +0 -10
  262. package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
  263. package/src/components/editable-text/index.js +1 -8
  264. package/src/components/iframe/index.js +4 -3
  265. package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
  266. package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -1
  267. package/src/components/inserter/block-patterns-tab/index.js +118 -0
  268. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  269. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +175 -0
  270. package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
  271. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +96 -0
  272. package/src/components/inserter/block-patterns-tab/utils.js +76 -0
  273. package/src/components/inserter/media-tab/media-list.js +7 -7
  274. package/src/components/inserter/media-tab/media-preview.js +27 -22
  275. package/src/components/inserter/menu.js +4 -5
  276. package/src/components/link-control/README.md +2 -2
  277. package/src/components/link-control/index.js +15 -6
  278. package/src/components/link-control/style.scss +8 -5
  279. package/src/components/list-view/block-select-button.js +44 -1
  280. package/src/components/list-view/block.js +11 -11
  281. package/src/components/list-view/index.js +2 -0
  282. package/src/components/media-replace-flow/style.scss +2 -2
  283. package/src/components/navigable-toolbar/index.js +71 -25
  284. package/src/components/plain-text/README.md +3 -3
  285. package/src/components/provider/use-block-sync.js +2 -21
  286. package/src/components/rich-text/README.md +9 -8
  287. package/src/components/rich-text/index.js +0 -1
  288. package/src/components/rich-text/index.native.js +3 -1
  289. package/src/components/rich-text/native/format-edit.js +44 -0
  290. package/src/components/rich-text/native/get-format-colors.native.js +54 -0
  291. package/src/components/rich-text/native/index.js +1 -0
  292. package/src/components/rich-text/native/index.native.js +1363 -0
  293. package/src/components/rich-text/native/style.native.scss +28 -0
  294. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
  295. package/src/components/rich-text/native/test/index.native.js +278 -0
  296. package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
  297. package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
  298. package/src/components/rich-text/native/use-format-types.js +146 -0
  299. package/src/components/rich-text/use-paste-handler.js +1 -6
  300. package/src/components/url-popover/image-url-input-ui.js +1 -0
  301. package/src/components/writing-flow/use-tab-nav.js +8 -3
  302. package/src/hooks/align.js +8 -8
  303. package/src/hooks/align.native.js +2 -2
  304. package/src/hooks/anchor.js +21 -23
  305. package/src/hooks/background.js +28 -6
  306. package/src/hooks/block-hooks.js +20 -16
  307. package/src/hooks/block-rename-ui.js +6 -4
  308. package/src/hooks/content-lock-ui.js +3 -3
  309. package/src/hooks/custom-class-name.js +7 -6
  310. package/src/hooks/custom-fields.js +5 -5
  311. package/src/hooks/duotone.js +23 -33
  312. package/src/hooks/layout.js +114 -105
  313. package/src/hooks/position.js +8 -21
  314. package/src/hooks/style.js +17 -31
  315. package/src/hooks/test/align.js +4 -4
  316. package/src/hooks/utils.js +33 -1
  317. package/src/private-apis.js +4 -1
  318. package/src/store/actions.js +26 -72
  319. package/src/store/reducer.js +19 -0
  320. package/src/store/selectors.js +13 -19
  321. package/build/components/block-tools/selected-block-popover.js +0 -221
  322. package/build/components/block-tools/selected-block-popover.js.map +0 -1
  323. package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  324. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  325. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  326. package/build/components/inserter/block-patterns-filter.js.map +0 -1
  327. package/build/components/inserter/block-patterns-tab.js +0 -270
  328. package/build/components/inserter/block-patterns-tab.js.map +0 -1
  329. package/build/store/utils.js +0 -22
  330. package/build/store/utils.js.map +0 -1
  331. package/build-module/components/block-tools/selected-block-popover.js +0 -213
  332. package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
  333. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  334. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  335. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  336. package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
  337. package/build-module/components/inserter/block-patterns-tab.js +0 -254
  338. package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
  339. package/build-module/store/utils.js +0 -16
  340. package/build-module/store/utils.js.map +0 -1
  341. package/src/components/block-tools/selected-block-popover.js +0 -265
  342. package/src/components/inserter/block-patterns-tab.js +0 -448
  343. package/src/store/utils.js +0 -12
  344. /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
@@ -23,7 +23,6 @@ import deprecated from '@wordpress/deprecated';
23
23
  /**
24
24
  * Internal dependencies
25
25
  */
26
- import { mapRichTextSettings } from './utils';
27
26
  import {
28
27
  retrieveSelectedAttribute,
29
28
  START_OF_SELECTED_AREA,
@@ -759,43 +758,23 @@ export const __unstableDeleteSelection =
759
758
  const selectionB = selectionEnd;
760
759
 
761
760
  const blockA = select.getBlock( selectionA.clientId );
762
- const blockAType = getBlockType( blockA.name );
763
-
764
761
  const blockB = select.getBlock( selectionB.clientId );
765
- const blockBType = getBlockType( blockB.name );
766
762
 
767
763
  const htmlA = blockA.attributes[ selectionA.attributeKey ];
768
764
  const htmlB = blockB.attributes[ selectionB.attributeKey ];
769
765
 
770
- const attributeDefinitionA =
771
- blockAType.attributes[ selectionA.attributeKey ];
772
- const attributeDefinitionB =
773
- blockBType.attributes[ selectionB.attributeKey ];
774
-
775
- let valueA = create( {
776
- html: htmlA,
777
- ...mapRichTextSettings( attributeDefinitionA ),
778
- } );
779
- let valueB = create( {
780
- html: htmlB,
781
- ...mapRichTextSettings( attributeDefinitionB ),
782
- } );
766
+ let valueA = create( { html: htmlA } );
767
+ let valueB = create( { html: htmlB } );
783
768
 
784
769
  valueA = remove( valueA, selectionA.offset, valueA.text.length );
785
770
  valueB = insert( valueB, START_OF_SELECTED_AREA, 0, selectionB.offset );
786
771
 
787
772
  // Clone the blocks so we don't manipulate the original.
788
773
  const cloneA = cloneBlock( blockA, {
789
- [ selectionA.attributeKey ]: toHTMLString( {
790
- value: valueA,
791
- ...mapRichTextSettings( attributeDefinitionA ),
792
- } ),
774
+ [ selectionA.attributeKey ]: toHTMLString( { value: valueA } ),
793
775
  } );
794
776
  const cloneB = cloneBlock( blockB, {
795
- [ selectionB.attributeKey ]: toHTMLString( {
796
- value: valueB,
797
- ...mapRichTextSettings( attributeDefinitionB ),
798
- } ),
777
+ [ selectionB.attributeKey ]: toHTMLString( { value: valueB } ),
799
778
  } );
800
779
 
801
780
  const followingBlock = isForward ? cloneA : cloneB;
@@ -831,20 +810,10 @@ export const __unstableDeleteSelection =
831
810
  const newAttributeKey = retrieveSelectedAttribute( updatedAttributes );
832
811
 
833
812
  const convertedHtml = updatedAttributes[ newAttributeKey ];
834
- const convertedValue = create( {
835
- html: convertedHtml,
836
- ...mapRichTextSettings(
837
- targetBlockType.attributes[ newAttributeKey ]
838
- ),
839
- } );
813
+ const convertedValue = create( { html: convertedHtml } );
840
814
  const newOffset = convertedValue.text.indexOf( START_OF_SELECTED_AREA );
841
815
  const newValue = remove( convertedValue, newOffset, newOffset + 1 );
842
- const newHtml = toHTMLString( {
843
- value: newValue,
844
- ...mapRichTextSettings(
845
- targetBlockType.attributes[ newAttributeKey ]
846
- ),
847
- } );
816
+ const newHtml = toHTMLString( { value: newValue } );
848
817
 
849
818
  updatedAttributes[ newAttributeKey ] = newHtml;
850
819
 
@@ -931,27 +900,13 @@ export const __unstableSplitSelection =
931
900
  const selectionB = selectionEnd;
932
901
 
933
902
  const blockA = select.getBlock( selectionA.clientId );
934
- const blockAType = getBlockType( blockA.name );
935
-
936
903
  const blockB = select.getBlock( selectionB.clientId );
937
- const blockBType = getBlockType( blockB.name );
938
904
 
939
905
  const htmlA = blockA.attributes[ selectionA.attributeKey ];
940
906
  const htmlB = blockB.attributes[ selectionB.attributeKey ];
941
907
 
942
- const attributeDefinitionA =
943
- blockAType.attributes[ selectionA.attributeKey ];
944
- const attributeDefinitionB =
945
- blockBType.attributes[ selectionB.attributeKey ];
946
-
947
- let valueA = create( {
948
- html: htmlA,
949
- ...mapRichTextSettings( attributeDefinitionA ),
950
- } );
951
- let valueB = create( {
952
- html: htmlB,
953
- ...mapRichTextSettings( attributeDefinitionB ),
954
- } );
908
+ let valueA = create( { html: htmlA } );
909
+ let valueB = create( { html: htmlB } );
955
910
 
956
911
  valueA = remove( valueA, selectionA.offset, valueA.text.length );
957
912
  valueB = remove( valueB, 0, selectionB.offset );
@@ -964,7 +919,6 @@ export const __unstableSplitSelection =
964
919
  ...blockA.attributes,
965
920
  [ selectionA.attributeKey ]: toHTMLString( {
966
921
  value: valueA,
967
- ...mapRichTextSettings( attributeDefinitionA ),
968
922
  } ),
969
923
  },
970
924
  },
@@ -975,7 +929,6 @@ export const __unstableSplitSelection =
975
929
  ...blockB.attributes,
976
930
  [ selectionB.attributeKey ]: toHTMLString( {
977
931
  value: valueB,
978
- ...mapRichTextSettings( attributeDefinitionB ),
979
932
  } ),
980
933
  },
981
934
  },
@@ -1143,10 +1096,7 @@ export const mergeBlocks =
1143
1096
  const selectedBlock = clientId === clientIdA ? cloneA : cloneB;
1144
1097
  const html = selectedBlock.attributes[ attributeKey ];
1145
1098
  const value = insert(
1146
- create( {
1147
- html,
1148
- ...mapRichTextSettings( attributeDefinition ),
1149
- } ),
1099
+ create( { html } ),
1150
1100
  START_OF_SELECTED_AREA,
1151
1101
  offset,
1152
1102
  offset
@@ -1154,7 +1104,6 @@ export const mergeBlocks =
1154
1104
 
1155
1105
  selectedBlock.attributes[ attributeKey ] = toHTMLString( {
1156
1106
  value,
1157
- ...mapRichTextSettings( attributeDefinition ),
1158
1107
  } );
1159
1108
  }
1160
1109
 
@@ -1180,22 +1129,12 @@ export const mergeBlocks =
1180
1129
  const newAttributeKey =
1181
1130
  retrieveSelectedAttribute( updatedAttributes );
1182
1131
  const convertedHtml = updatedAttributes[ newAttributeKey ];
1183
- const convertedValue = create( {
1184
- html: convertedHtml,
1185
- ...mapRichTextSettings(
1186
- blockAType.attributes[ newAttributeKey ]
1187
- ),
1188
- } );
1132
+ const convertedValue = create( { html: convertedHtml } );
1189
1133
  const newOffset = convertedValue.text.indexOf(
1190
1134
  START_OF_SELECTED_AREA
1191
1135
  );
1192
1136
  const newValue = remove( convertedValue, newOffset, newOffset + 1 );
1193
- const newHtml = toHTMLString( {
1194
- value: newValue,
1195
- ...mapRichTextSettings(
1196
- blockAType.attributes[ newAttributeKey ]
1197
- ),
1198
- } );
1137
+ const newHtml = toHTMLString( { value: newValue } );
1199
1138
 
1200
1139
  updatedAttributes[ newAttributeKey ] = newHtml;
1201
1140
 
@@ -1980,3 +1919,18 @@ export function unsetBlockEditingMode( clientId = '' ) {
1980
1919
  clientId,
1981
1920
  };
1982
1921
  }
1922
+
1923
+ /**
1924
+ * Action that sets the element that had focus when focus leaves the editor canvas.
1925
+ *
1926
+ * @param {Object} lastFocus The last focused element.
1927
+ *
1928
+ *
1929
+ * @return {Object} Action object.
1930
+ */
1931
+ export function setLastFocus( lastFocus = null ) {
1932
+ return {
1933
+ type: 'LAST_FOCUS',
1934
+ lastFocus,
1935
+ };
1936
+ }
@@ -1962,6 +1962,24 @@ export function registeredInserterMediaCategories( state = [], action ) {
1962
1962
  case 'REGISTER_INSERTER_MEDIA_CATEGORY':
1963
1963
  return [ ...state, action.category ];
1964
1964
  }
1965
+
1966
+ return state;
1967
+ }
1968
+
1969
+ /**
1970
+ * Reducer setting last focused element
1971
+ *
1972
+ * @param {boolean} state Current state.
1973
+ * @param {Object} action Dispatched action.
1974
+ *
1975
+ * @return {boolean} Updated state.
1976
+ */
1977
+ export function lastFocus( state = false, action ) {
1978
+ switch ( action.type ) {
1979
+ case 'LAST_FOCUS':
1980
+ return action.lastFocus;
1981
+ }
1982
+
1965
1983
  return state;
1966
1984
  }
1967
1985
 
@@ -1981,6 +1999,7 @@ const combinedReducers = combineReducers( {
1981
1999
  settings,
1982
2000
  preferences,
1983
2001
  lastBlockAttributesChange,
2002
+ lastFocus,
1984
2003
  editorMode,
1985
2004
  hasBlockMovingClientId,
1986
2005
  highlightedBlock,
@@ -26,7 +26,6 @@ import { createRegistrySelector } from '@wordpress/data';
26
26
  /**
27
27
  * Internal dependencies
28
28
  */
29
- import { mapRichTextSettings } from './utils';
30
29
  import { orderBy } from '../utils/sorting';
31
30
 
32
31
  /**
@@ -1114,27 +1113,13 @@ export const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {
1114
1113
  : [ selectionAnchor, selectionFocus ];
1115
1114
 
1116
1115
  const blockA = getBlock( state, selectionStart.clientId );
1117
- const blockAType = getBlockType( blockA.name );
1118
-
1119
1116
  const blockB = getBlock( state, selectionEnd.clientId );
1120
- const blockBType = getBlockType( blockB.name );
1121
1117
 
1122
1118
  const htmlA = blockA.attributes[ selectionStart.attributeKey ];
1123
1119
  const htmlB = blockB.attributes[ selectionEnd.attributeKey ];
1124
1120
 
1125
- const attributeDefinitionA =
1126
- blockAType.attributes[ selectionStart.attributeKey ];
1127
- const attributeDefinitionB =
1128
- blockBType.attributes[ selectionEnd.attributeKey ];
1129
-
1130
- let valueA = create( {
1131
- html: htmlA,
1132
- ...mapRichTextSettings( attributeDefinitionA ),
1133
- } );
1134
- let valueB = create( {
1135
- html: htmlB,
1136
- ...mapRichTextSettings( attributeDefinitionB ),
1137
- } );
1121
+ let valueA = create( { html: htmlA } );
1122
+ let valueB = create( { html: htmlB } );
1138
1123
 
1139
1124
  valueA = remove( valueA, 0, selectionStart.offset );
1140
1125
  valueB = remove( valueB, selectionEnd.offset, valueB.text.length );
@@ -1146,7 +1131,6 @@ export const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {
1146
1131
  ...blockA.attributes,
1147
1132
  [ selectionStart.attributeKey ]: toHTMLString( {
1148
1133
  value: valueA,
1149
- ...mapRichTextSettings( attributeDefinitionA ),
1150
1134
  } ),
1151
1135
  },
1152
1136
  },
@@ -1156,7 +1140,6 @@ export const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {
1156
1140
  ...blockB.attributes,
1157
1141
  [ selectionEnd.attributeKey ]: toHTMLString( {
1158
1142
  value: valueB,
1159
- ...mapRichTextSettings( attributeDefinitionB ),
1160
1143
  } ),
1161
1144
  },
1162
1145
  },
@@ -3022,3 +3005,14 @@ export const isGroupable = createRegistrySelector(
3022
3005
  );
3023
3006
  }
3024
3007
  );
3008
+
3009
+ /**
3010
+ * Returns the element of the last element that had focus when focus left the editor canvas.
3011
+ *
3012
+ * @param {Object} state Block editor state.
3013
+ *
3014
+ * @return {Object} Element.
3015
+ */
3016
+ export function getLastFocus( state ) {
3017
+ return state.lastFocus;
3018
+ }
@@ -1,221 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = WrappedBlockPopover;
8
- var _react = require("react");
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
- var _element = require("@wordpress/element");
11
- var _blocks = require("@wordpress/blocks");
12
- var _data = require("@wordpress/data");
13
- var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts");
14
- var _blockSelectionButton = _interopRequireDefault(require("./block-selection-button"));
15
- var _blockContextualToolbar = _interopRequireDefault(require("./block-contextual-toolbar"));
16
- var _store = require("../../store");
17
- var _blockPopover = _interopRequireDefault(require("../block-popover"));
18
- var _useBlockToolbarPopoverProps = _interopRequireDefault(require("./use-block-toolbar-popover-props"));
19
- var _inserter = _interopRequireDefault(require("../inserter"));
20
- var _useShouldContextualToolbarShow = require("../../utils/use-should-contextual-toolbar-show");
21
- /**
22
- * External dependencies
23
- */
24
-
25
- /**
26
- * WordPress dependencies
27
- */
28
-
29
- /**
30
- * Internal dependencies
31
- */
32
-
33
- function selector(select) {
34
- const {
35
- __unstableGetEditorMode,
36
- hasMultiSelection,
37
- isTyping,
38
- getLastMultiSelectedBlockClientId
39
- } = select(_store.store);
40
- return {
41
- editorMode: __unstableGetEditorMode(),
42
- hasMultiSelection: hasMultiSelection(),
43
- isTyping: isTyping(),
44
- lastClientId: hasMultiSelection() ? getLastMultiSelectedBlockClientId() : null
45
- };
46
- }
47
- function SelectedBlockPopover({
48
- clientId,
49
- rootClientId,
50
- isEmptyDefaultBlock,
51
- capturingClientId,
52
- __unstablePopoverSlot,
53
- __unstableContentRef
54
- }) {
55
- const {
56
- editorMode,
57
- hasMultiSelection,
58
- isTyping,
59
- lastClientId
60
- } = (0, _data.useSelect)(selector, []);
61
- const isInsertionPointVisible = (0, _data.useSelect)(select => {
62
- const {
63
- isBlockInsertionPointVisible,
64
- getBlockInsertionPoint,
65
- getBlockOrder
66
- } = select(_store.store);
67
- if (!isBlockInsertionPointVisible()) {
68
- return false;
69
- }
70
- const insertionPoint = getBlockInsertionPoint();
71
- const order = getBlockOrder(insertionPoint.rootClientId);
72
- return order[insertionPoint.index] === clientId;
73
- }, [clientId]);
74
- const isToolbarForced = (0, _element.useRef)(false);
75
- const {
76
- shouldShowContextualToolbar,
77
- canFocusHiddenToolbar
78
- } = (0, _useShouldContextualToolbarShow.useShouldContextualToolbarShow)();
79
- const {
80
- stopTyping
81
- } = (0, _data.useDispatch)(_store.store);
82
- const showEmptyBlockSideInserter = !isTyping && editorMode === 'edit' && isEmptyDefaultBlock;
83
- const shouldShowBreadcrumb = !hasMultiSelection && (editorMode === 'navigation' || editorMode === 'zoom-out');
84
- (0, _keyboardShortcuts.useShortcut)('core/block-editor/focus-toolbar', () => {
85
- isToolbarForced.current = true;
86
- stopTyping(true);
87
- }, {
88
- isDisabled: !canFocusHiddenToolbar
89
- });
90
- (0, _element.useEffect)(() => {
91
- isToolbarForced.current = false;
92
- });
93
-
94
- // Stores the active toolbar item index so the block toolbar can return focus
95
- // to it when re-mounting.
96
- const initialToolbarItemIndexRef = (0, _element.useRef)();
97
- (0, _element.useEffect)(() => {
98
- // Resets the index whenever the active block changes so this is not
99
- // persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169
100
- initialToolbarItemIndexRef.current = undefined;
101
- }, [clientId]);
102
- const popoverProps = (0, _useBlockToolbarPopoverProps.default)({
103
- contentElement: __unstableContentRef?.current,
104
- clientId
105
- });
106
- if (showEmptyBlockSideInserter) {
107
- return (0, _react.createElement)(_blockPopover.default, {
108
- clientId: capturingClientId || clientId,
109
- __unstableCoverTarget: true,
110
- bottomClientId: lastClientId,
111
- className: (0, _classnames.default)('block-editor-block-list__block-side-inserter-popover', {
112
- 'is-insertion-point-visible': isInsertionPointVisible
113
- }),
114
- __unstablePopoverSlot: __unstablePopoverSlot,
115
- __unstableContentRef: __unstableContentRef,
116
- resize: false,
117
- shift: false,
118
- ...popoverProps
119
- }, (0, _react.createElement)("div", {
120
- className: "block-editor-block-list__empty-block-inserter"
121
- }, (0, _react.createElement)(_inserter.default, {
122
- position: "bottom right",
123
- rootClientId: rootClientId,
124
- clientId: clientId,
125
- __experimentalIsQuick: true
126
- })));
127
- }
128
- if (shouldShowBreadcrumb || shouldShowContextualToolbar) {
129
- return (0, _react.createElement)(_blockPopover.default, {
130
- clientId: capturingClientId || clientId,
131
- bottomClientId: lastClientId,
132
- className: (0, _classnames.default)('block-editor-block-list__block-popover', {
133
- 'is-insertion-point-visible': isInsertionPointVisible
134
- }),
135
- __unstablePopoverSlot: __unstablePopoverSlot,
136
- __unstableContentRef: __unstableContentRef,
137
- resize: false,
138
- ...popoverProps
139
- }, shouldShowContextualToolbar && (0, _react.createElement)(_blockContextualToolbar.default
140
- // If the toolbar is being shown because of being forced
141
- // it should focus the toolbar right after the mount.
142
- , {
143
- focusOnMount: isToolbarForced.current,
144
- __experimentalInitialIndex: initialToolbarItemIndexRef.current,
145
- __experimentalOnIndexChange: index => {
146
- initialToolbarItemIndexRef.current = index;
147
- }
148
- // Resets the index whenever the active block changes so
149
- // this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169
150
- ,
151
- key: clientId
152
- }), shouldShowBreadcrumb && (0, _react.createElement)(_blockSelectionButton.default, {
153
- clientId: clientId,
154
- rootClientId: rootClientId
155
- }));
156
- }
157
- return null;
158
- }
159
- function wrapperSelector(select) {
160
- const {
161
- getSelectedBlockClientId,
162
- getFirstMultiSelectedBlockClientId,
163
- getBlockRootClientId,
164
- getBlock,
165
- getBlockParents,
166
- __experimentalGetBlockListSettingsForBlocks
167
- } = select(_store.store);
168
- const clientId = getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();
169
- if (!clientId) {
170
- return;
171
- }
172
- const {
173
- name,
174
- attributes = {}
175
- } = getBlock(clientId) || {};
176
- const blockParentsClientIds = getBlockParents(clientId);
177
-
178
- // Get Block List Settings for all ancestors of the current Block clientId.
179
- const parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(blockParentsClientIds);
180
-
181
- // Get the clientId of the topmost parent with the capture toolbars setting.
182
- const capturingClientId = blockParentsClientIds.find(parentClientId => parentBlockListSettings[parentClientId]?.__experimentalCaptureToolbars);
183
- return {
184
- clientId,
185
- rootClientId: getBlockRootClientId(clientId),
186
- name,
187
- isEmptyDefaultBlock: name && (0, _blocks.isUnmodifiedDefaultBlock)({
188
- name,
189
- attributes
190
- }),
191
- capturingClientId
192
- };
193
- }
194
- function WrappedBlockPopover({
195
- __unstablePopoverSlot,
196
- __unstableContentRef
197
- }) {
198
- const selected = (0, _data.useSelect)(wrapperSelector, []);
199
- if (!selected) {
200
- return null;
201
- }
202
- const {
203
- clientId,
204
- rootClientId,
205
- name,
206
- isEmptyDefaultBlock,
207
- capturingClientId
208
- } = selected;
209
- if (!name) {
210
- return null;
211
- }
212
- return (0, _react.createElement)(SelectedBlockPopover, {
213
- clientId: clientId,
214
- rootClientId: rootClientId,
215
- isEmptyDefaultBlock: isEmptyDefaultBlock,
216
- capturingClientId: capturingClientId,
217
- __unstablePopoverSlot: __unstablePopoverSlot,
218
- __unstableContentRef: __unstableContentRef
219
- });
220
- }
221
- //# sourceMappingURL=selected-block-popover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_element","_blocks","_data","_keyboardShortcuts","_blockSelectionButton","_blockContextualToolbar","_store","_blockPopover","_useBlockToolbarPopoverProps","_inserter","_useShouldContextualToolbarShow","selector","select","__unstableGetEditorMode","hasMultiSelection","isTyping","getLastMultiSelectedBlockClientId","blockEditorStore","editorMode","lastClientId","SelectedBlockPopover","clientId","rootClientId","isEmptyDefaultBlock","capturingClientId","__unstablePopoverSlot","__unstableContentRef","useSelect","isInsertionPointVisible","isBlockInsertionPointVisible","getBlockInsertionPoint","getBlockOrder","insertionPoint","order","index","isToolbarForced","useRef","shouldShowContextualToolbar","canFocusHiddenToolbar","useShouldContextualToolbarShow","stopTyping","useDispatch","showEmptyBlockSideInserter","shouldShowBreadcrumb","useShortcut","current","isDisabled","useEffect","initialToolbarItemIndexRef","undefined","popoverProps","useBlockToolbarPopoverProps","contentElement","_react","createElement","default","__unstableCoverTarget","bottomClientId","className","classnames","resize","shift","position","__experimentalIsQuick","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","key","wrapperSelector","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlockRootClientId","getBlock","getBlockParents","__experimentalGetBlockListSettingsForBlocks","name","attributes","blockParentsClientIds","parentBlockListSettings","find","parentClientId","__experimentalCaptureToolbars","isUnmodifiedDefaultBlock","WrappedBlockPopover","selected"],"sources":["@wordpress/block-editor/src/components/block-tools/selected-block-popover.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport BlockSelectionButton from './block-selection-button';\nimport BlockContextualToolbar from './block-contextual-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopover from '../block-popover';\nimport useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';\nimport Inserter from '../inserter';\nimport { useShouldContextualToolbarShow } from '../../utils/use-should-contextual-toolbar-show';\n\nfunction selector( select ) {\n\tconst {\n\t\t__unstableGetEditorMode,\n\t\thasMultiSelection,\n\t\tisTyping,\n\t\tgetLastMultiSelectedBlockClientId,\n\t} = select( blockEditorStore );\n\n\treturn {\n\t\teditorMode: __unstableGetEditorMode(),\n\t\thasMultiSelection: hasMultiSelection(),\n\t\tisTyping: isTyping(),\n\t\tlastClientId: hasMultiSelection()\n\t\t\t? getLastMultiSelectedBlockClientId()\n\t\t\t: null,\n\t};\n}\n\nfunction SelectedBlockPopover( {\n\tclientId,\n\trootClientId,\n\tisEmptyDefaultBlock,\n\tcapturingClientId,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst { editorMode, hasMultiSelection, isTyping, lastClientId } = useSelect(\n\t\tselector,\n\t\t[]\n\t);\n\n\tconst isInsertionPointVisible = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockInsertionPointVisible() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\t\t\treturn order[ insertionPoint.index ] === clientId;\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst isToolbarForced = useRef( false );\n\tconst { shouldShowContextualToolbar, canFocusHiddenToolbar } =\n\t\tuseShouldContextualToolbarShow();\n\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\tconst showEmptyBlockSideInserter =\n\t\t! isTyping && editorMode === 'edit' && isEmptyDefaultBlock;\n\tconst shouldShowBreadcrumb =\n\t\t! hasMultiSelection &&\n\t\t( editorMode === 'navigation' || editorMode === 'zoom-out' );\n\n\tuseShortcut(\n\t\t'core/block-editor/focus-toolbar',\n\t\t() => {\n\t\t\tisToolbarForced.current = true;\n\t\t\tstopTyping( true );\n\t\t},\n\t\t{\n\t\t\tisDisabled: ! canFocusHiddenToolbar,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tisToolbarForced.current = false;\n\t} );\n\n\t// Stores the active toolbar item index so the block toolbar can return focus\n\t// to it when re-mounting.\n\tconst initialToolbarItemIndexRef = useRef();\n\n\tuseEffect( () => {\n\t\t// Resets the index whenever the active block changes so this is not\n\t\t// persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\tinitialToolbarItemIndexRef.current = undefined;\n\t}, [ clientId ] );\n\n\tconst popoverProps = useBlockToolbarPopoverProps( {\n\t\tcontentElement: __unstableContentRef?.current,\n\t\tclientId,\n\t} );\n\n\tif ( showEmptyBlockSideInserter ) {\n\t\treturn (\n\t\t\t<BlockPopover\n\t\t\t\tclientId={ capturingClientId || clientId }\n\t\t\t\t__unstableCoverTarget\n\t\t\t\tbottomClientId={ lastClientId }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-block-list__block-side-inserter-popover',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\t\tresize={ false }\n\t\t\t\tshift={ false }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-block-list__empty-block-inserter\">\n\t\t\t\t\t<Inserter\n\t\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</BlockPopover>\n\t\t);\n\t}\n\n\tif ( shouldShowBreadcrumb || shouldShowContextualToolbar ) {\n\t\treturn (\n\t\t\t<BlockPopover\n\t\t\t\tclientId={ capturingClientId || clientId }\n\t\t\t\tbottomClientId={ lastClientId }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-block-list__block-popover',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\t\tresize={ false }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t{ shouldShowContextualToolbar && (\n\t\t\t\t\t<BlockContextualToolbar\n\t\t\t\t\t\t// If the toolbar is being shown because of being forced\n\t\t\t\t\t\t// it should focus the toolbar right after the mount.\n\t\t\t\t\t\tfocusOnMount={ isToolbarForced.current }\n\t\t\t\t\t\t__experimentalInitialIndex={\n\t\t\t\t\t\t\tinitialToolbarItemIndexRef.current\n\t\t\t\t\t\t}\n\t\t\t\t\t\t__experimentalOnIndexChange={ ( index ) => {\n\t\t\t\t\t\t\tinitialToolbarItemIndexRef.current = index;\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// Resets the index whenever the active block changes so\n\t\t\t\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\t\t\t\tkey={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ shouldShowBreadcrumb && (\n\t\t\t\t\t<BlockSelectionButton\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPopover>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction wrapperSelector( select ) {\n\tconst {\n\t\tgetSelectedBlockClientId,\n\t\tgetFirstMultiSelectedBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlock,\n\t\tgetBlockParents,\n\t\t__experimentalGetBlockListSettingsForBlocks,\n\t} = select( blockEditorStore );\n\n\tconst clientId =\n\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tconst { name, attributes = {} } = getBlock( clientId ) || {};\n\tconst blockParentsClientIds = getBlockParents( clientId );\n\n\t// Get Block List Settings for all ancestors of the current Block clientId.\n\tconst parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(\n\t\tblockParentsClientIds\n\t);\n\n\t// Get the clientId of the topmost parent with the capture toolbars setting.\n\tconst capturingClientId = blockParentsClientIds.find(\n\t\t( parentClientId ) =>\n\t\t\tparentBlockListSettings[ parentClientId ]\n\t\t\t\t?.__experimentalCaptureToolbars\n\t);\n\n\treturn {\n\t\tclientId,\n\t\trootClientId: getBlockRootClientId( clientId ),\n\t\tname,\n\t\tisEmptyDefaultBlock:\n\t\t\tname && isUnmodifiedDefaultBlock( { name, attributes } ),\n\t\tcapturingClientId,\n\t};\n}\n\nexport default function WrappedBlockPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst selected = useSelect( wrapperSelector, [] );\n\n\tif ( ! selected ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tclientId,\n\t\trootClientId,\n\t\tname,\n\t\tisEmptyDefaultBlock,\n\t\tcapturingClientId,\n\t} = selected;\n\n\tif ( ! name ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SelectedBlockPopover\n\t\t\tclientId={ clientId }\n\t\t\trootClientId={ rootClientId }\n\t\t\tisEmptyDefaultBlock={ isEmptyDefaultBlock }\n\t\t\tcapturingClientId={ capturingClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_sidebar","_interopRequireDefault","_patternsList","_blockPatternsTab","PatternsExplorer","initialCategory","rootClientId","searchValue","setSearchValue","useState","patternSourceFilter","setPatternSourceFilter","selectedCategory","setSelectedCategory","name","patternCategories","usePatternsCategories","_react","createElement","className","default","onClickCategory","PatternsExplorerModal","onModalClose","restProps","Modal","title","__","onRequestClose","isFullScreen","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/explorer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PatternExplorerSidebar from './sidebar';\nimport PatternList from './patterns-list';\nimport { usePatternsCategories } from '../block-patterns-tab';\n\nfunction PatternsExplorer( { initialCategory, rootClientId } ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst [ selectedCategory, setSelectedCategory ] = useState(\n\t\tinitialCategory?.name\n\t);\n\n\tconst patternCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-block-patterns-explorer\">\n\t\t\t<PatternExplorerSidebar\n\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\tpatternCategories={ patternCategories }\n\t\t\t\tonClickCategory={ setSelectedCategory }\n\t\t\t\tsearchValue={ searchValue }\n\t\t\t\tsetSearchValue={ setSearchValue }\n\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\tsetPatternSourceFilter={ setPatternSourceFilter }\n\t\t\t/>\n\t\t\t<PatternList\n\t\t\t\tsearchValue={ searchValue }\n\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\tpatternCategories={ patternCategories }\n\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction PatternsExplorerModal( { onModalClose, ...restProps } ) {\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Patterns' ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\tisFullScreen\n\t\t>\n\t\t\t<PatternsExplorer { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport default PatternsExplorerModal;\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,QAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAZA;AACA;AACA;;AAKA;AACA;AACA;;AAKA,SAASO,gBAAgBA,CAAE;EAAEC,eAAe;EAAEC;AAAa,CAAC,EAAG;EAC9D,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EACtD,MAAM,CAAEC,mBAAmB,EAAEC,sBAAsB,CAAE,GAAG,IAAAF,iBAAQ,EAAE,KAAM,CAAC;EAEzE,MAAM,CAAEG,gBAAgB,EAAEC,mBAAmB,CAAE,GAAG,IAAAJ,iBAAQ,EACzDJ,eAAe,EAAES,IAClB,CAAC;EAED,MAAMC,iBAAiB,GAAG,IAAAC,uCAAqB,EAC9CV,YAAY,EACZI,mBACD,CAAC;EAED,OACC,IAAAO,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAAsC,GACpD,IAAAF,MAAA,CAAAC,aAAA,EAAClB,QAAA,CAAAoB,OAAsB;IACtBR,gBAAgB,EAAGA,gBAAkB;IACrCG,iBAAiB,EAAGA,iBAAmB;IACvCM,eAAe,EAAGR,mBAAqB;IACvCN,WAAW,EAAGA,WAAa;IAC3BC,cAAc,EAAGA,cAAgB;IACjCE,mBAAmB,EAAGA,mBAAqB;IAC3CC,sBAAsB,EAAGA;EAAwB,CACjD,CAAC,EACF,IAAAM,MAAA,CAAAC,aAAA,EAAChB,aAAA,CAAAkB,OAAW;IACXb,WAAW,EAAGA,WAAa;IAC3BK,gBAAgB,EAAGA,gBAAkB;IACrCG,iBAAiB,EAAGA,iBAAmB;IACvCL,mBAAmB,EAAGA;EAAqB,CAC3C,CACG,CAAC;AAER;AAEA,SAASY,qBAAqBA,CAAE;EAAEC,YAAY;EAAE,GAAGC;AAAU,CAAC,EAAG;EAChE,OACC,IAAAP,MAAA,CAAAC,aAAA,EAACtB,WAAA,CAAA6B,KAAK;IACLC,KAAK,EAAG,IAAAC,QAAE,EAAE,UAAW,CAAG;IAC1BC,cAAc,EAAGL,YAAc;IAC/BM,YAAY;EAAA,GAEZ,IAAAZ,MAAA,CAAAC,aAAA,EAACd,gBAAgB;IAAA,GAAMoB;EAAS,CAAI,CAC9B,CAAC;AAEV;AAAC,IAAAM,QAAA,GAEcR,qBAAqB;AAAAS,OAAA,CAAAX,OAAA,GAAAU,QAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_element","require","_i18n","_compose","_components","_a11y","_blockPatternsList","_interopRequireDefault","_useInsertionPoint","_usePatternsState","_inserterListbox","_searchItems","_blockPatternsPaging","_usePatternsPaging","_blockPatternsTab","PatternsListHeader","filterValue","filteredBlockPatternsLength","_react","createElement","__experimentalHeading","level","lineHeight","className","sprintf","_n","PatternList","searchValue","selectedCategory","patternCategories","container","useRef","debouncedSpeak","useDebounce","speak","destinationRootClientId","onInsertBlocks","useInsertionPoint","shouldFocusBlock","patterns","onClickPattern","usePatternsState","registeredPatternCategories","useMemo","map","patternCategory","name","filteredBlockPatterns","filteredPatterns","filter","pattern","allPatternsCategory","myPatternsCategory","id","hasKnownCategory","categories","some","category","includes","length","searchItems","useEffect","count","resultsFoundMessage","pagingProps","usePatternsPaging","previousSearchValue","setPreviousSearchValue","useState","changePage","hasItems","ref","default","Fragment","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","isDraggable","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/patterns-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect, useRef, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce } from '@wordpress/compose';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockPatternsList from '../../block-patterns-list';\nimport useInsertionPoint from '../hooks/use-insertion-point';\nimport usePatternsState from '../hooks/use-patterns-state';\nimport InserterListbox from '../../inserter-listbox';\nimport { searchItems } from '../search-items';\nimport BlockPatternsPaging from '../../block-patterns-paging';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { allPatternsCategory, myPatternsCategory } from '../block-patterns-tab';\n\nfunction PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {\n\tif ( ! filterValue ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Heading\n\t\t\tlevel={ 2 }\n\t\t\tlineHeight={ '48px' }\n\t\t\tclassName=\"block-editor-block-patterns-explorer__search-results-count\"\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %d: number of patterns. */\n\t\t\t\t_n(\n\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t'%d patterns found',\n\t\t\t\t\tfilteredBlockPatternsLength\n\t\t\t\t),\n\t\t\t\tfilteredBlockPatternsLength\n\t\t\t) }\n\t\t</Heading>\n\t);\n}\n\nfunction PatternList( { searchValue, selectedCategory, patternCategories } ) {\n\tconst container = useRef();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tshouldFocusBlock: true,\n\t} );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst registeredPatternCategories = useMemo(\n\t\t() =>\n\t\t\tpatternCategories.map(\n\t\t\t\t( patternCategory ) => patternCategory.name\n\t\t\t),\n\t\t[ patternCategories ]\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tconst filteredPatterns = patterns.filter( ( pattern ) => {\n\t\t\tif ( selectedCategory === allPatternsCategory.name ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === myPatternsCategory.name && pattern.id ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === 'uncategorized' ) {\n\t\t\t\tconst hasKnownCategory = pattern.categories.some(\n\t\t\t\t\t( category ) =>\n\t\t\t\t\t\tregisteredPatternCategories.includes( category )\n\t\t\t\t);\n\n\t\t\t\treturn ! pattern.categories?.length || ! hasKnownCategory;\n\t\t\t}\n\n\t\t\treturn pattern.categories?.includes( selectedCategory );\n\t\t} );\n\n\t\tif ( ! searchValue ) {\n\t\t\treturn filteredPatterns;\n\t\t}\n\n\t\treturn searchItems( filteredPatterns, searchValue );\n\t}, [\n\t\tsearchValue,\n\t\tpatterns,\n\t\tselectedCategory,\n\t\tregisteredPatternCategories,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! searchValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );\n\n\tconst pagingProps = usePatternsPaging(\n\t\tfilteredBlockPatterns,\n\t\tselectedCategory,\n\t\tcontainer\n\t);\n\n\t// Reset page when search value changes.\n\tconst [ previousSearchValue, setPreviousSearchValue ] =\n\t\tuseState( searchValue );\n\tif ( searchValue !== previousSearchValue ) {\n\t\tsetPreviousSearchValue( searchValue );\n\t\tpagingProps.changePage( 1 );\n\t}\n\n\tconst hasItems = !! filteredBlockPatterns?.length;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-patterns-explorer__list\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<PatternsListHeader\n\t\t\t\tfilterValue={ searchValue }\n\t\t\t\tfilteredBlockPatternsLength={ filteredBlockPatterns.length }\n\t\t\t/>\n\n\t\t\t<InserterListbox>\n\t\t\t\t{ hasItems && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tshownPatterns={\n\t\t\t\t\t\t\t\tpagingProps.categoryPatternsAsyncList\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</InserterListbox>\n\t\t</div>\n\t);\n}\n\nexport default PatternList;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_components","require","_i18n","PatternCategoriesList","selectedCategory","patternCategories","onClickCategory","baseClassName","_react","createElement","className","map","name","label","Button","key","isPressed","onClick","PatternsExplorerSearch","searchValue","setSearchValue","SearchControl","__nextHasNoMarginBottom","onChange","value","__","placeholder","PatternExplorerSidebar","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/sidebar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nfunction PatternCategoriesList( {\n\tselectedCategory,\n\tpatternCategories,\n\tonClickCategory,\n} ) {\n\tconst baseClassName = 'block-editor-block-patterns-explorer__sidebar';\n\treturn (\n\t\t<div className={ `${ baseClassName }__categories-list` }>\n\t\t\t{ patternCategories.map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tclassName={ `${ baseClassName }__categories-list__item` }\n\t\t\t\t\t\tisPressed={ selectedCategory === name }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClickCategory( name );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n\nfunction PatternsExplorerSearch( { searchValue, setSearchValue } ) {\n\tconst baseClassName = 'block-editor-block-patterns-explorer__search';\n\treturn (\n\t\t<div className={ baseClassName }>\n\t\t\t<SearchControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tonChange={ setSearchValue }\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tlabel={ __( 'Search for patterns' ) }\n\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction PatternExplorerSidebar( {\n\tselectedCategory,\n\tpatternCategories,\n\tonClickCategory,\n\tsearchValue,\n\tsetSearchValue,\n} ) {\n\tconst baseClassName = 'block-editor-block-patterns-explorer__sidebar';\n\treturn (\n\t\t<div className={ baseClassName }>\n\t\t\t<PatternsExplorerSearch\n\t\t\t\tsearchValue={ searchValue }\n\t\t\t\tsetSearchValue={ setSearchValue }\n\t\t\t/>\n\t\t\t{ ! searchValue && (\n\t\t\t\t<PatternCategoriesList\n\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ patternCategories }\n\t\t\t\t\tonClickCategory={ onClickCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default PatternExplorerSidebar;\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAJA;AACA;AACA;;AAIA,SAASE,qBAAqBA,CAAE;EAC/BC,gBAAgB;EAChBC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAMC,aAAa,GAAG,+CAA+C;EACrE,OACC,IAAAC,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAI,GAAGH,aAAe;EAAoB,GACrDF,iBAAiB,CAACM,GAAG,CAAE,CAAE;IAAEC,IAAI;IAAEC;EAAM,CAAC,KAAM;IAC/C,OACC,IAAAL,MAAA,CAAAC,aAAA,EAACT,WAAA,CAAAc,MAAM;MACNC,GAAG,EAAGH,IAAM;MACZC,KAAK,EAAGA,KAAO;MACfH,SAAS,EAAI,GAAGH,aAAe,yBAA0B;MACzDS,SAAS,EAAGZ,gBAAgB,KAAKQ,IAAM;MACvCK,OAAO,EAAGA,CAAA,KAAM;QACfX,eAAe,CAAEM,IAAK,CAAC;MACxB;IAAG,GAEDC,KACK,CAAC;EAEX,CAAE,CACE,CAAC;AAER;AAEA,SAASK,sBAAsBA,CAAE;EAAEC,WAAW;EAAEC;AAAe,CAAC,EAAG;EAClE,MAAMb,aAAa,GAAG,8CAA8C;EACpE,OACC,IAAAC,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAGH;EAAe,GAC/B,IAAAC,MAAA,CAAAC,aAAA,EAACT,WAAA,CAAAqB,aAAa;IACbC,uBAAuB;IACvBC,QAAQ,EAAGH,cAAgB;IAC3BI,KAAK,EAAGL,WAAa;IACrBN,KAAK,EAAG,IAAAY,QAAE,EAAE,qBAAsB,CAAG;IACrCC,WAAW,EAAG,IAAAD,QAAE,EAAE,QAAS;EAAG,CAC9B,CACG,CAAC;AAER;AAEA,SAASE,sBAAsBA,CAAE;EAChCvB,gBAAgB;EAChBC,iBAAiB;EACjBC,eAAe;EACfa,WAAW;EACXC;AACD,CAAC,EAAG;EACH,MAAMb,aAAa,GAAG,+CAA+C;EACrE,OACC,IAAAC,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAGH;EAAe,GAC/B,IAAAC,MAAA,CAAAC,aAAA,EAACS,sBAAsB;IACtBC,WAAW,EAAGA,WAAa;IAC3BC,cAAc,EAAGA;EAAgB,CACjC,CAAC,EACA,CAAED,WAAW,IACd,IAAAX,MAAA,CAAAC,aAAA,EAACN,qBAAqB;IACrBC,gBAAgB,EAAGA,gBAAkB;IACrCC,iBAAiB,EAAGA,iBAAmB;IACvCC,eAAe,EAAGA;EAAiB,CACnC,CAEE,CAAC;AAER;AAAC,IAAAsB,QAAA,GAEcD,sBAAsB;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_components","require","_i18n","_icons","_element","_blockPatternsTab","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","exports","SYNC_TYPES","full","getShouldDisableSyncFilter","sourceFilter","getShouldDisableNonUserSources","category","name","myPatternsCategory","BlockPatternsSyncFilter","setPatternSyncFilter","setPatternSourceFilter","patternSyncFilter","patternSourceFilter","scrollContainerRef","currentPatternSourceFilter","shouldDisableSyncFilter","shouldDisableNonUserSources","patternSyncMenuOptions","useMemo","value","label","__","disabled","patternSourceMenuOptions","handleSetSourceFilterChange","newSourceFilter","_react","createElement","Fragment","DropdownMenu","popoverProps","placement","icon","Icon","SVG","width","height","viewBox","fill","xmlns","Path","d","MenuGroup","MenuItemsChoice","choices","onSelect","current","scrollTo","className","createInterpolateElement","Link","ExternalLink","href"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSVG,\n\tPath,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\tExternalLink,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { Icon } from '@wordpress/icons';\nimport { useMemo, createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { myPatternsCategory } from './block-patterns-tab';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nconst getShouldDisableSyncFilter = ( sourceFilter ) =>\n\tsourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;\n\nconst getShouldDisableNonUserSources = ( category ) => {\n\treturn category.name === myPatternsCategory.name;\n};\n\nexport function BlockPatternsSyncFilter( {\n\tsetPatternSyncFilter,\n\tsetPatternSourceFilter,\n\tpatternSyncFilter,\n\tpatternSourceFilter,\n\tscrollContainerRef,\n\tcategory,\n} ) {\n\t// If the category is `myPatterns` then we need to set the source filter to `user`, but\n\t// we do this by deriving from props rather than calling setPatternSourceFilter otherwise\n\t// the user may be confused when switching to another category if the haven't explicity set\n\t// this filter themselves.\n\tconst currentPatternSourceFilter =\n\t\tcategory.name === myPatternsCategory.name\n\t\t\t? PATTERN_TYPES.user\n\t\t\t: patternSourceFilter;\n\n\t// We need to disable the sync filter option if the source filter is not 'all' or 'user'\n\t// otherwise applying them will just result in no patterns being shown.\n\tconst shouldDisableSyncFilter = getShouldDisableSyncFilter(\n\t\tcurrentPatternSourceFilter\n\t);\n\n\t// We also need to disable the directory and theme source filter options if the category\n\t// is `myPatterns` otherwise applying them will also just result in no patterns being shown.\n\tconst shouldDisableNonUserSources =\n\t\tgetShouldDisableNonUserSources( category );\n\n\tconst patternSyncMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{ value: SYNC_TYPES.all, label: __( 'All' ) },\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.full,\n\t\t\t\tlabel: __( 'Synced' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.unsynced,\n\t\t\t\tlabel: __( 'Not synced' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableSyncFilter ]\n\t);\n\n\tconst patternSourceMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.all,\n\t\t\t\tlabel: __( 'All' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.directory,\n\t\t\t\tlabel: __( 'Pattern Directory' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.theme,\n\t\t\t\tlabel: __( 'Theme & Plugins' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.user,\n\t\t\t\tlabel: __( 'User' ),\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableNonUserSources ]\n\t);\n\n\tfunction handleSetSourceFilterChange( newSourceFilter ) {\n\t\tsetPatternSourceFilter( newSourceFilter );\n\t\tif ( getShouldDisableSyncFilter( newSourceFilter ) ) {\n\t\t\tsetPatternSyncFilter( SYNC_TYPES.all );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tplacement: 'right-end',\n\t\t\t\t} }\n\t\t\t\tlabel=\"Filter patterns\"\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<SVG\n\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\t\t\td=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#1E1E1E\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</SVG>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Source' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSourceMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\thandleSetSourceFilterChange( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\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\tvalue={ currentPatternSourceFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Type' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSyncMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetPatternSyncFilter( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\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\tvalue={ patternSyncFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<div className=\"block-editor-tool-selector__help\">\n\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Patterns are available from the <Link>WordPress.org Pattern Directory</Link>, bundled in the active theme, or created by users on this site. Only patterns created on this site can be synced.'\n\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\tLink: (\n\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/patterns/'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}