@wordpress/block-library 8.14.0 → 8.16.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 (365) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/avatar/edit.js +1 -0
  3. package/build/avatar/edit.js.map +1 -1
  4. package/build/avatar/index.js +3 -0
  5. package/build/avatar/index.js.map +1 -1
  6. package/build/block/edit.js +2 -30
  7. package/build/block/edit.js.map +1 -1
  8. package/build/block/index.js +2 -1
  9. package/build/block/index.js.map +1 -1
  10. package/build/buttons/edit.js +2 -2
  11. package/build/buttons/edit.js.map +1 -1
  12. package/build/column/edit.native.js +1 -4
  13. package/build/column/edit.native.js.map +1 -1
  14. package/build/columns/edit.js +1 -0
  15. package/build/columns/edit.js.map +1 -1
  16. package/build/comment-author-avatar/edit.js +1 -0
  17. package/build/comment-author-avatar/edit.js.map +1 -1
  18. package/build/cover/deprecated.js +4 -2
  19. package/build/cover/deprecated.js.map +1 -1
  20. package/build/cover/index.js +2 -1
  21. package/build/cover/index.js.map +1 -1
  22. package/build/embed/embed-placeholder.native.js +37 -13
  23. package/build/embed/embed-placeholder.native.js.map +1 -1
  24. package/build/file/index.js +1 -2
  25. package/build/file/index.js.map +1 -1
  26. package/build/file/inspector.js +1 -0
  27. package/build/file/inspector.js.map +1 -1
  28. package/build/file/view-interactivity.js +23 -0
  29. package/build/file/view-interactivity.js.map +1 -0
  30. package/build/file/view.js +1 -15
  31. package/build/file/view.js.map +1 -1
  32. package/build/footnotes/edit.js +31 -1
  33. package/build/footnotes/edit.js.map +1 -1
  34. package/build/footnotes/format.js +119 -23
  35. package/build/footnotes/format.js.map +1 -1
  36. package/build/footnotes/index.js +45 -4
  37. package/build/footnotes/index.js.map +1 -1
  38. package/build/gallery/edit.js +8 -6
  39. package/build/gallery/edit.js.map +1 -1
  40. package/build/image/deprecated.js +106 -2
  41. package/build/image/deprecated.js.map +1 -1
  42. package/build/image/image.js +2 -2
  43. package/build/image/image.js.map +1 -1
  44. package/build/image/index.js +2 -1
  45. package/build/image/index.js.map +1 -1
  46. package/build/index.js +3 -1
  47. package/build/index.js.map +1 -1
  48. package/build/latest-comments/edit.js +1 -0
  49. package/build/latest-comments/edit.js.map +1 -1
  50. package/build/latest-posts/edit.js +2 -0
  51. package/build/latest-posts/edit.js.map +1 -1
  52. package/build/list/edit.js +4 -4
  53. package/build/list/edit.js.map +1 -1
  54. package/build/list-item/hooks/use-merge.js +10 -1
  55. package/build/list-item/hooks/use-merge.js.map +1 -1
  56. package/build/media-text/media-container.native.js +2 -1
  57. package/build/media-text/media-container.native.js.map +1 -1
  58. package/build/missing/edit.native.js +7 -5
  59. package/build/missing/edit.native.js.map +1 -1
  60. package/build/navigation/constants.js +10 -4
  61. package/build/navigation/constants.js.map +1 -1
  62. package/build/navigation/edit/index.js +16 -2
  63. package/build/navigation/edit/index.js.map +1 -1
  64. package/build/navigation/edit/inner-blocks.js +2 -2
  65. package/build/navigation/edit/inner-blocks.js.map +1 -1
  66. package/build/navigation/edit/menu-inspector-controls.js +1 -1
  67. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  68. package/build/navigation/edit/navigation-menu-selector.js +4 -4
  69. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  70. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  71. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  72. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  73. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  74. package/build/navigation/index.js +2 -3
  75. package/build/navigation/index.js.map +1 -1
  76. package/build/navigation/use-navigation-menu.js +33 -45
  77. package/build/navigation/use-navigation-menu.js.map +1 -1
  78. package/build/navigation/view-interactivity.js +185 -0
  79. package/build/navigation/view-interactivity.js.map +1 -0
  80. package/build/navigation/view-modal.js +125 -0
  81. package/build/navigation/view-modal.js.map +1 -0
  82. package/build/navigation/view.js +71 -163
  83. package/build/navigation/view.js.map +1 -1
  84. package/build/navigation-link/edit.js +12 -7
  85. package/build/navigation-link/edit.js.map +1 -1
  86. package/build/navigation-submenu/edit.js +2 -2
  87. package/build/navigation-submenu/edit.js.map +1 -1
  88. package/build/pattern/edit.js +28 -4
  89. package/build/pattern/edit.js.map +1 -1
  90. package/build/preformatted/index.js +4 -0
  91. package/build/preformatted/index.js.map +1 -1
  92. package/build/query-pagination/edit.js +1 -1
  93. package/build/query-pagination/edit.js.map +1 -1
  94. package/build/query-title/edit.js +43 -1
  95. package/build/query-title/edit.js.map +1 -1
  96. package/build/quote/transforms.js +8 -0
  97. package/build/quote/transforms.js.map +1 -1
  98. package/build/rss/edit.js +3 -0
  99. package/build/rss/edit.js.map +1 -1
  100. package/build/search/edit.js +4 -3
  101. package/build/search/edit.js.map +1 -1
  102. package/build/search/index.js +1 -0
  103. package/build/search/index.js.map +1 -1
  104. package/build/search/view.js +166 -62
  105. package/build/search/view.js.map +1 -1
  106. package/build/site-logo/edit.js +1 -0
  107. package/build/site-logo/edit.js.map +1 -1
  108. package/build/social-link/icons/index.js +13 -0
  109. package/build/social-link/icons/index.js.map +1 -1
  110. package/build/social-link/icons/threads.js +25 -0
  111. package/build/social-link/icons/threads.js.map +1 -0
  112. package/build/social-link/variations.js +7 -0
  113. package/build/social-link/variations.js.map +1 -1
  114. package/build/tag-cloud/edit.js +1 -0
  115. package/build/tag-cloud/edit.js.map +1 -1
  116. package/build/template-part/edit/import-controls.js +1 -1
  117. package/build/template-part/edit/import-controls.js.map +1 -1
  118. package/build/template-part/edit/index.js +1 -1
  119. package/build/template-part/edit/index.js.map +1 -1
  120. package/build/text-columns/edit.js +1 -0
  121. package/build/text-columns/edit.js.map +1 -1
  122. package/build-module/avatar/edit.js +1 -0
  123. package/build-module/avatar/edit.js.map +1 -1
  124. package/build-module/avatar/index.js +3 -0
  125. package/build-module/avatar/index.js.map +1 -1
  126. package/build-module/block/edit.js +4 -29
  127. package/build-module/block/edit.js.map +1 -1
  128. package/build-module/block/index.js +2 -1
  129. package/build-module/block/index.js.map +1 -1
  130. package/build-module/buttons/edit.js +2 -2
  131. package/build-module/buttons/edit.js.map +1 -1
  132. package/build-module/column/edit.native.js +1 -4
  133. package/build-module/column/edit.native.js.map +1 -1
  134. package/build-module/columns/edit.js +1 -0
  135. package/build-module/columns/edit.js.map +1 -1
  136. package/build-module/comment-author-avatar/edit.js +1 -0
  137. package/build-module/comment-author-avatar/edit.js.map +1 -1
  138. package/build-module/cover/deprecated.js +4 -2
  139. package/build-module/cover/deprecated.js.map +1 -1
  140. package/build-module/cover/index.js +2 -1
  141. package/build-module/cover/index.js.map +1 -1
  142. package/build-module/embed/embed-placeholder.native.js +37 -14
  143. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  144. package/build-module/file/index.js +1 -2
  145. package/build-module/file/index.js.map +1 -1
  146. package/build-module/file/inspector.js +1 -0
  147. package/build-module/file/inspector.js.map +1 -1
  148. package/build-module/file/view-interactivity.js +19 -0
  149. package/build-module/file/view-interactivity.js.map +1 -0
  150. package/build-module/file/view.js +2 -15
  151. package/build-module/file/view.js.map +1 -1
  152. package/build-module/footnotes/edit.js +29 -2
  153. package/build-module/footnotes/edit.js.map +1 -1
  154. package/build-module/footnotes/format.js +120 -25
  155. package/build-module/footnotes/format.js.map +1 -1
  156. package/build-module/footnotes/index.js +45 -4
  157. package/build-module/footnotes/index.js.map +1 -1
  158. package/build-module/gallery/edit.js +8 -6
  159. package/build-module/gallery/edit.js.map +1 -1
  160. package/build-module/image/deprecated.js +107 -3
  161. package/build-module/image/deprecated.js.map +1 -1
  162. package/build-module/image/image.js +2 -2
  163. package/build-module/image/image.js.map +1 -1
  164. package/build-module/image/index.js +2 -1
  165. package/build-module/image/index.js.map +1 -1
  166. package/build-module/index.js +3 -1
  167. package/build-module/index.js.map +1 -1
  168. package/build-module/latest-comments/edit.js +1 -0
  169. package/build-module/latest-comments/edit.js.map +1 -1
  170. package/build-module/latest-posts/edit.js +2 -0
  171. package/build-module/latest-posts/edit.js.map +1 -1
  172. package/build-module/list/edit.js +4 -4
  173. package/build-module/list/edit.js.map +1 -1
  174. package/build-module/list-item/hooks/use-merge.js +10 -1
  175. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  176. package/build-module/media-text/media-container.native.js +2 -1
  177. package/build-module/media-text/media-container.native.js.map +1 -1
  178. package/build-module/missing/edit.native.js +8 -6
  179. package/build-module/missing/edit.native.js.map +1 -1
  180. package/build-module/navigation/constants.js +8 -3
  181. package/build-module/navigation/constants.js.map +1 -1
  182. package/build-module/navigation/edit/index.js +17 -3
  183. package/build-module/navigation/edit/index.js.map +1 -1
  184. package/build-module/navigation/edit/inner-blocks.js +2 -2
  185. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  186. package/build-module/navigation/edit/menu-inspector-controls.js +1 -1
  187. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  188. package/build-module/navigation/edit/navigation-menu-selector.js +4 -4
  189. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  190. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  191. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  192. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  193. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  194. package/build-module/navigation/index.js +2 -3
  195. package/build-module/navigation/index.js.map +1 -1
  196. package/build-module/navigation/use-navigation-menu.js +35 -47
  197. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  198. package/build-module/navigation/view-interactivity.js +182 -0
  199. package/build-module/navigation/view-interactivity.js.map +1 -0
  200. package/build-module/navigation/view-modal.js +120 -0
  201. package/build-module/navigation/view-modal.js.map +1 -0
  202. package/build-module/navigation/view.js +72 -163
  203. package/build-module/navigation/view.js.map +1 -1
  204. package/build-module/navigation-link/edit.js +12 -7
  205. package/build-module/navigation-link/edit.js.map +1 -1
  206. package/build-module/navigation-submenu/edit.js +2 -2
  207. package/build-module/navigation-submenu/edit.js.map +1 -1
  208. package/build-module/pattern/edit.js +27 -4
  209. package/build-module/pattern/edit.js.map +1 -1
  210. package/build-module/preformatted/index.js +4 -0
  211. package/build-module/preformatted/index.js.map +1 -1
  212. package/build-module/query-pagination/edit.js +1 -1
  213. package/build-module/query-pagination/edit.js.map +1 -1
  214. package/build-module/query-title/edit.js +44 -3
  215. package/build-module/query-title/edit.js.map +1 -1
  216. package/build-module/quote/transforms.js +8 -0
  217. package/build-module/quote/transforms.js.map +1 -1
  218. package/build-module/rss/edit.js +3 -0
  219. package/build-module/rss/edit.js.map +1 -1
  220. package/build-module/search/edit.js +4 -3
  221. package/build-module/search/edit.js.map +1 -1
  222. package/build-module/search/index.js +1 -0
  223. package/build-module/search/index.js.map +1 -1
  224. package/build-module/search/view.js +166 -62
  225. package/build-module/search/view.js.map +1 -1
  226. package/build-module/site-logo/edit.js +1 -0
  227. package/build-module/site-logo/edit.js.map +1 -1
  228. package/build-module/social-link/icons/index.js +1 -0
  229. package/build-module/social-link/icons/index.js.map +1 -1
  230. package/build-module/social-link/icons/threads.js +15 -0
  231. package/build-module/social-link/icons/threads.js.map +1 -0
  232. package/build-module/social-link/variations.js +8 -1
  233. package/build-module/social-link/variations.js.map +1 -1
  234. package/build-module/tag-cloud/edit.js +1 -0
  235. package/build-module/tag-cloud/edit.js.map +1 -1
  236. package/build-module/template-part/edit/import-controls.js +2 -2
  237. package/build-module/template-part/edit/import-controls.js.map +1 -1
  238. package/build-module/template-part/edit/index.js +1 -1
  239. package/build-module/template-part/edit/index.js.map +1 -1
  240. package/build-module/text-columns/edit.js +1 -0
  241. package/build-module/text-columns/edit.js.map +1 -1
  242. package/build-style/details/style-rtl.css +4 -2
  243. package/build-style/details/style.css +4 -2
  244. package/build-style/footnotes/style-rtl.css +4 -3
  245. package/build-style/footnotes/style.css +4 -3
  246. package/build-style/navigation/style-rtl.css +14 -2
  247. package/build-style/navigation/style.css +14 -2
  248. package/build-style/preformatted/style-rtl.css +2 -1
  249. package/build-style/preformatted/style.css +2 -1
  250. package/build-style/query-pagination/style-rtl.css +4 -2
  251. package/build-style/query-pagination/style.css +4 -2
  252. package/build-style/social-links/style-rtl.css +7 -0
  253. package/build-style/social-links/style.css +7 -0
  254. package/build-style/style-rtl.css +36 -10
  255. package/build-style/style.css +36 -10
  256. package/build-style/video/style-rtl.css +1 -0
  257. package/build-style/video/style.css +1 -0
  258. package/package.json +33 -32
  259. package/src/audio/test/__snapshots__/edit.native.js.snap +118 -33
  260. package/src/avatar/block.json +3 -0
  261. package/src/avatar/edit.js +1 -0
  262. package/src/block/block.json +2 -1
  263. package/src/block/edit.js +1 -39
  264. package/src/block/editor.native.scss +2 -2
  265. package/src/buttons/edit.js +2 -2
  266. package/src/buttons/test/edit.native.js +4 -0
  267. package/src/column/edit.native.js +4 -10
  268. package/src/column/editor.native.scss +0 -4
  269. package/src/columns/edit.js +1 -0
  270. package/src/columns/test/edit.native.js +5 -0
  271. package/src/comment-author-avatar/edit.js +1 -0
  272. package/src/comment-template/index.php +7 -2
  273. package/src/cover/block.json +2 -1
  274. package/src/cover/deprecated.js +2 -0
  275. package/src/cover/test/edit.native.js +8 -0
  276. package/src/embed/embed-placeholder.native.js +80 -47
  277. package/src/embed/styles.native.scss +54 -18
  278. package/src/embed/test/index.native.js +13 -5
  279. package/src/file/block.json +1 -2
  280. package/src/file/index.php +20 -2
  281. package/src/file/inspector.js +1 -0
  282. package/src/file/test/__snapshots__/edit.native.js.snap +119 -33
  283. package/src/file/view-interactivity.js +18 -0
  284. package/src/file/view.js +5 -14
  285. package/src/footnotes/block.json +44 -2
  286. package/src/footnotes/edit.js +33 -2
  287. package/src/footnotes/format.js +90 -25
  288. package/src/footnotes/index.js +0 -1
  289. package/src/footnotes/index.php +207 -0
  290. package/src/footnotes/style.scss +6 -3
  291. package/src/gallery/edit.js +42 -38
  292. package/src/gallery/test/index.native.js +31 -18
  293. package/src/heading/test/index.native.js +4 -0
  294. package/src/home-link/index.php +15 -2
  295. package/src/image/block.json +2 -1
  296. package/src/image/deprecated.js +109 -3
  297. package/src/image/image.js +2 -2
  298. package/src/image/index.php +45 -8
  299. package/src/image/test/edit.native.js +1 -2
  300. package/src/index.js +5 -1
  301. package/src/latest-comments/edit.js +1 -0
  302. package/src/latest-posts/edit.js +2 -0
  303. package/src/list/edit.js +6 -4
  304. package/src/list/test/edit.native.js +134 -33
  305. package/src/list-item/hooks/use-merge.js +12 -5
  306. package/src/media-text/media-container.native.js +1 -0
  307. package/src/missing/edit.native.js +12 -10
  308. package/src/missing/style.native.scss +19 -12
  309. package/src/missing/test/__snapshots__/edit.native.js.snap +42 -13
  310. package/src/navigation/block.json +2 -3
  311. package/src/navigation/constants.js +12 -6
  312. package/src/navigation/edit/index.js +29 -1
  313. package/src/navigation/edit/inner-blocks.js +2 -2
  314. package/src/navigation/edit/menu-inspector-controls.js +1 -1
  315. package/src/navigation/edit/navigation-menu-selector.js +8 -4
  316. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  317. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  318. package/src/navigation/index.php +50 -18
  319. package/src/navigation/style.scss +27 -8
  320. package/src/navigation/use-navigation-menu.js +39 -63
  321. package/src/navigation/view-interactivity.js +196 -0
  322. package/src/navigation/view-modal.js +127 -0
  323. package/src/navigation/view.js +96 -185
  324. package/src/navigation-link/edit.js +61 -47
  325. package/src/navigation-submenu/edit.js +2 -2
  326. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  327. package/src/paragraph/test/edit.native.js +81 -35
  328. package/src/pattern/edit.js +21 -0
  329. package/src/pattern/index.php +13 -1
  330. package/src/post-template/index.php +6 -2
  331. package/src/post-title/index.php +8 -3
  332. package/src/preformatted/block.json +4 -0
  333. package/src/preformatted/style.scss +4 -1
  334. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  335. package/src/pullquote/test/edit.native.js +12 -4
  336. package/src/query-pagination/edit.js +17 -14
  337. package/src/query-title/edit.js +48 -6
  338. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  339. package/src/quote/test/edit.native.js +12 -4
  340. package/src/quote/test/transforms.native.js +5 -1
  341. package/src/quote/transforms.js +13 -0
  342. package/src/rss/edit.js +3 -0
  343. package/src/search/block.json +1 -0
  344. package/src/search/edit.js +4 -3
  345. package/src/search/index.php +26 -4
  346. package/src/search/test/__snapshots__/edit.native.js.snap +70 -0
  347. package/src/search/view.js +171 -67
  348. package/src/site-logo/edit.js +1 -0
  349. package/src/social-link/icons/index.js +1 -0
  350. package/src/social-link/icons/threads.js +10 -0
  351. package/src/social-link/index.php +4 -0
  352. package/src/social-link/socials-with-bg.scss +5 -0
  353. package/src/social-link/socials-without-bg.scss +4 -0
  354. package/src/social-link/variations.js +7 -0
  355. package/src/tag-cloud/edit.js +1 -0
  356. package/src/template-part/edit/import-controls.js +2 -2
  357. package/src/template-part/edit/index.js +1 -1
  358. package/src/template-part/index.php +7 -16
  359. package/src/text-columns/edit.js +1 -0
  360. package/src/video/style.scss +1 -0
  361. package/build/gallery/shared-icon.native.js +0 -38
  362. package/build/gallery/shared-icon.native.js.map +0 -1
  363. package/build-module/gallery/shared-icon.native.js +0 -24
  364. package/build-module/gallery/shared-icon.native.js.map +0 -1
  365. package/src/gallery/shared-icon.native.js +0 -23
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/search/edit.js"],"names":["classnames","useBlockProps","BlockControls","InspectorControls","RichText","__experimentalUseBorderProps","useBorderProps","__experimentalUseColorProps","useColorProps","getTypographyClassesAndStyles","useTypographyProps","store","blockEditorStore","__experimentalGetElementClassName","useSetting","useDispatch","useSelect","useEffect","useRef","ToolbarDropdownMenu","ToolbarGroup","Button","ButtonGroup","ToolbarButton","ResizableBox","PanelBody","BaseControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalUnitControl","UnitControl","useInstanceId","Icon","search","__","__unstableStripHTML","stripHTML","buttonOnly","buttonOutside","buttonInside","noButton","buttonWithIcon","toggleLabel","PC_WIDTH_DEFAULT","PX_WIDTH_DEFAULT","MIN_WIDTH","MIN_WIDTH_UNIT","DEFAULT_INNER_PADDING","BUTTON_BEHAVIOR_EXPAND","SearchEdit","className","attributes","setAttributes","toggleSelection","isSelected","clientId","label","showLabel","placeholder","width","widthUnit","align","buttonText","buttonPosition","buttonUseIcon","buttonBehavior","isSearchFieldHidden","style","insertedInNavigationBlock","select","getBlockParentsByBlockName","wasBlockJustInserted","length","__unstableMarkNextChangeAsNotPersistent","borderRadius","border","radius","borderProps","colorProps","fluidTypographySettings","layout","typographyProps","typography","fluid","wideSize","unitControlInstanceId","unitControlInputId","isButtonPositionInside","isButtonPositionOutside","hasNoButton","hasOnlyButton","searchFieldRef","buttonRef","units","availableUnits","defaultValues","px","getBlockClassNames","undefined","buttonPositionControls","role","title","isActive","icon","onClick","getButtonPositionIcon","getResizableSides","right","left","renderTextField","textFieldClasses","textFieldStyles","textDecoration","event","target","value","renderButton","buttonClasses","buttonStyles","handleButtonClick","html","controls","newWidth","filteredWidth","parseInt","newUnit","map","widthValue","padBorderRadius","getWrapperStyles","styles","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isNonZeroBorderRadius","topLeft","topRight","bottomLeft","bottomRight","Number","isInteger","blockProps","labelClassnames","direction","elt","offsetWidth","delta"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\tgetTypographyClassesAndStyles as useTypographyProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n\tuseSetting,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tButton,\n\tButtonGroup,\n\tToolbarButton,\n\tResizableBox,\n\tPanelBody,\n\tBaseControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Icon, search } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuttonOnly,\n\tbuttonOutside,\n\tbuttonInside,\n\tnoButton,\n\tbuttonWithIcon,\n\ttoggleLabel,\n} from './icons';\nimport {\n\tPC_WIDTH_DEFAULT,\n\tPX_WIDTH_DEFAULT,\n\tMIN_WIDTH,\n\tMIN_WIDTH_UNIT,\n} from './utils.js';\n\n// Used to calculate border radius adjustment to avoid \"fat\" corners when\n// button is placed inside wrapper.\nconst DEFAULT_INNER_PADDING = '4px';\n\nconst BUTTON_BEHAVIOR_EXPAND = 'expand-searchfield';\n\nexport default function SearchEdit( {\n\tclassName,\n\tattributes,\n\tsetAttributes,\n\ttoggleSelection,\n\tisSelected,\n\tclientId,\n} ) {\n\tconst {\n\t\tlabel,\n\t\tshowLabel,\n\t\tplaceholder,\n\t\twidth,\n\t\twidthUnit,\n\t\talign,\n\t\tbuttonText,\n\t\tbuttonPosition,\n\t\tbuttonUseIcon,\n\t\tbuttonBehavior,\n\t\tisSearchFieldHidden,\n\t\tstyle,\n\t} = attributes;\n\n\tconst insertedInNavigationBlock = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParentsByBlockName, wasBlockJustInserted } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\t!! getBlockParentsByBlockName( clientId, 'core/navigation' )\n\t\t\t\t\t?.length && wasBlockJustInserted( clientId )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\tif ( ! insertedInNavigationBlock ) return;\n\t\t// This side-effect should not create an undo level.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( {\n\t\t\tshowLabel: false,\n\t\t\tbuttonUseIcon: true,\n\t\t\tbuttonPosition: 'button-inside',\n\t\t} );\n\t}, [ insertedInNavigationBlock ] );\n\tconst borderRadius = style?.border?.radius;\n\tconst borderProps = useBorderProps( attributes );\n\n\t// Check for old deprecated numerical border radius. Done as a separate\n\t// check so that a borderRadius style won't overwrite the longhand\n\t// per-corner styles.\n\tif ( typeof borderRadius === 'number' ) {\n\t\tborderProps.style.borderRadius = `${ borderRadius }px`;\n\t}\n\n\tconst colorProps = useColorProps( attributes );\n\tconst fluidTypographySettings = useSetting( 'typography.fluid' );\n\tconst layout = useSetting( 'layout' );\n\tconst typographyProps = useTypographyProps( attributes, {\n\t\ttypography: {\n\t\t\tfluid: fluidTypographySettings,\n\t\t},\n\t\tlayout: {\n\t\t\twideSize: layout?.wideSize,\n\t\t},\n\t} );\n\tconst unitControlInstanceId = useInstanceId( UnitControl );\n\tconst unitControlInputId = `wp-block-search__width-${ unitControlInstanceId }`;\n\tconst isButtonPositionInside = 'button-inside' === buttonPosition;\n\tconst isButtonPositionOutside = 'button-outside' === buttonPosition;\n\tconst hasNoButton = 'no-button' === buttonPosition;\n\tconst hasOnlyButton = 'button-only' === buttonPosition;\n\tconst searchFieldRef = useRef();\n\tconst buttonRef = useRef();\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: [ '%', 'px' ],\n\t\tdefaultValues: { '%': PC_WIDTH_DEFAULT, px: PX_WIDTH_DEFAULT },\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( hasOnlyButton && ! isSelected ) {\n\t\t\tsetAttributes( {\n\t\t\t\tisSearchFieldHidden: true,\n\t\t\t} );\n\t\t}\n\t}, [ hasOnlyButton, isSelected, setAttributes ] );\n\n\t// Show the search field when width changes.\n\tuseEffect( () => {\n\t\tif ( ! hasOnlyButton || ! isSelected ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tisSearchFieldHidden: false,\n\t\t} );\n\t}, [ hasOnlyButton, isSelected, setAttributes, width ] );\n\n\tconst getBlockClassNames = () => {\n\t\treturn classnames(\n\t\t\tclassName,\n\t\t\tisButtonPositionInside\n\t\t\t\t? 'wp-block-search__button-inside'\n\t\t\t\t: undefined,\n\t\t\tisButtonPositionOutside\n\t\t\t\t? 'wp-block-search__button-outside'\n\t\t\t\t: undefined,\n\t\t\thasNoButton ? 'wp-block-search__no-button' : undefined,\n\t\t\thasOnlyButton ? 'wp-block-search__button-only' : undefined,\n\t\t\t! buttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__text-button'\n\t\t\t\t: undefined,\n\t\t\tbuttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__icon-button'\n\t\t\t\t: undefined,\n\t\t\thasOnlyButton && BUTTON_BEHAVIOR_EXPAND === buttonBehavior\n\t\t\t\t? 'wp-block-search__button-behavior-expand'\n\t\t\t\t: undefined,\n\t\t\thasOnlyButton && isSearchFieldHidden\n\t\t\t\t? 'wp-block-search__searchfield-hidden'\n\t\t\t\t: undefined\n\t\t);\n\t};\n\n\tconst buttonPositionControls = [\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button outside' ),\n\t\t\tisActive: buttonPosition === 'button-outside',\n\t\t\ticon: buttonOutside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-outside',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button inside' ),\n\t\t\tisActive: buttonPosition === 'button-inside',\n\t\t\ticon: buttonInside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-inside',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'No button' ),\n\t\t\tisActive: buttonPosition === 'no-button',\n\t\t\ticon: noButton,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'no-button',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button only' ),\n\t\t\tisActive: buttonPosition === 'button-only',\n\t\t\ticon: buttonOnly,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-only',\n\t\t\t\t\tisSearchFieldHidden: true,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t];\n\n\tconst getButtonPositionIcon = () => {\n\t\tswitch ( buttonPosition ) {\n\t\t\tcase 'button-inside':\n\t\t\t\treturn buttonInside;\n\t\t\tcase 'button-outside':\n\t\t\t\treturn buttonOutside;\n\t\t\tcase 'no-button':\n\t\t\t\treturn noButton;\n\t\t\tcase 'button-only':\n\t\t\t\treturn buttonOnly;\n\t\t}\n\t};\n\n\tconst getResizableSides = () => {\n\t\tif ( hasOnlyButton ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tright: align !== 'right',\n\t\t\tleft: align === 'right',\n\t\t};\n\t};\n\n\tconst renderTextField = () => {\n\t\t// If the input is inside the wrapper, the wrapper gets the border color styles/classes, not the input control.\n\t\tconst textFieldClasses = classnames(\n\t\t\t'wp-block-search__input',\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\ttypographyProps.className\n\t\t);\n\t\tconst textFieldStyles = {\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t\t...typographyProps.style,\n\t\t\ttextDecoration: undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype=\"search\"\n\t\t\t\tclassName={ textFieldClasses }\n\t\t\t\tstyle={ textFieldStyles }\n\t\t\t\taria-label={ __( 'Optional placeholder text' ) }\n\t\t\t\t// We hide the placeholder field's placeholder when there is a value. This\n\t\t\t\t// stops screen readers from reading the placeholder field's placeholder\n\t\t\t\t// which is confusing.\n\t\t\t\tplaceholder={\n\t\t\t\t\tplaceholder ? undefined : __( 'Optional placeholder…' )\n\t\t\t\t}\n\t\t\t\tvalue={ placeholder }\n\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\tsetAttributes( { placeholder: event.target.value } )\n\t\t\t\t}\n\t\t\t\tref={ searchFieldRef }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderButton = () => {\n\t\t// If the button is inside the wrapper, the wrapper gets the border color styles/classes, not the button.\n\t\tconst buttonClasses = classnames(\n\t\t\t'wp-block-search__button',\n\t\t\tcolorProps.className,\n\t\t\ttypographyProps.className,\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\tbuttonUseIcon ? 'has-icon' : undefined,\n\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t);\n\t\tconst buttonStyles = {\n\t\t\t...colorProps.style,\n\t\t\t...typographyProps.style,\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t};\n\t\tconst handleButtonClick = () => {\n\t\t\tif ( hasOnlyButton && BUTTON_BEHAVIOR_EXPAND === buttonBehavior ) {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tisSearchFieldHidden: ! isSearchFieldHidden,\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ buttonUseIcon && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\tbuttonText\n\t\t\t\t\t\t\t\t? stripHTML( buttonText )\n\t\t\t\t\t\t\t\t: __( 'Search' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={ handleButtonClick }\n\t\t\t\t\t\tref={ buttonRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\n\t\t\t\t{ ! buttonUseIcon && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add button text…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tvalue={ buttonText }\n\t\t\t\t\t\tonChange={ ( html ) =>\n\t\t\t\t\t\t\tsetAttributes( { buttonText: html } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={ handleButtonClick }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t};\n\n\tconst controls = (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ttitle={ __( 'Toggle search label' ) }\n\t\t\t\t\t\ticon={ toggleLabel }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowLabel: ! showLabel,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tclassName={ showLabel ? 'is-pressed' : undefined }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\ticon={ getButtonPositionIcon() }\n\t\t\t\t\t\tlabel={ __( 'Change button position' ) }\n\t\t\t\t\t\tcontrols={ buttonPositionControls }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! hasNoButton && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ttitle={ __( 'Use button with icon' ) }\n\t\t\t\t\t\t\ticon={ buttonWithIcon }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tbuttonUseIcon: ! buttonUseIcon,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\tbuttonUseIcon ? 'is-pressed' : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Display Settings' ) }>\n\t\t\t\t\t<BaseControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t\t\tmin={ `${ MIN_WIDTH }${ MIN_WIDTH_UNIT }` }\n\t\t\t\t\t\t\tonChange={ ( newWidth ) => {\n\t\t\t\t\t\t\t\tconst filteredWidth =\n\t\t\t\t\t\t\t\t\twidthUnit === '%' &&\n\t\t\t\t\t\t\t\t\tparseInt( newWidth, 10 ) > 100\n\t\t\t\t\t\t\t\t\t\t? 100\n\t\t\t\t\t\t\t\t\t\t: newWidth;\n\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth: parseInt( filteredWidth, 10 ),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonUnitChange={ ( newUnit ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t'%' === newUnit\n\t\t\t\t\t\t\t\t\t\t\t? PC_WIDTH_DEFAULT\n\t\t\t\t\t\t\t\t\t\t\t: PX_WIDTH_DEFAULT,\n\t\t\t\t\t\t\t\t\twidthUnit: newUnit,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t__unstableInputWidth={ '80px' }\n\t\t\t\t\t\t\tvalue={ `${ width }${ widthUnit }` }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\tclassName=\"wp-block-search__components-button-group\"\n\t\t\t\t\t\t\taria-label={ __( 'Percentage Width' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\twidthValue === width &&\n\t\t\t\t\t\t\t\t\t\t\twidthUnit === '%'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\twidth: widthValue,\n\t\t\t\t\t\t\t\t\t\t\t\twidthUnit: '%',\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\t\t{ widthValue }%\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\tconst padBorderRadius = ( radius ) =>\n\t\tradius ? `calc(${ radius } + ${ DEFAULT_INNER_PADDING })` : undefined;\n\n\tconst getWrapperStyles = () => {\n\t\tconst styles = isButtonPositionInside\n\t\t\t? borderProps.style\n\t\t\t: {\n\t\t\t\t\tborderRadius: borderProps.style?.borderRadius,\n\t\t\t\t\tborderTopLeftRadius: borderProps.style?.borderTopLeftRadius,\n\t\t\t\t\tborderTopRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderTopRightRadius,\n\t\t\t\t\tborderBottomLeftRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomLeftRadius,\n\t\t\t\t\tborderBottomRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomRightRadius,\n\t\t\t };\n\n\t\tconst isNonZeroBorderRadius =\n\t\t\tborderRadius !== undefined && parseInt( borderRadius, 10 ) !== 0;\n\n\t\tif ( isButtonPositionInside && isNonZeroBorderRadius ) {\n\t\t\t// We have button inside wrapper and a border radius value to apply.\n\t\t\t// Add default padding so we don't get \"fat\" corners.\n\t\t\t//\n\t\t\t// CSS calc() is used here to support non-pixel units. The inline\n\t\t\t// style using calc() will only apply if both values have units.\n\n\t\t\tif ( typeof borderRadius === 'object' ) {\n\t\t\t\t// Individual corner border radii present.\n\t\t\t\tconst { topLeft, topRight, bottomLeft, bottomRight } =\n\t\t\t\t\tborderRadius;\n\n\t\t\t\treturn {\n\t\t\t\t\t...styles,\n\t\t\t\t\tborderTopLeftRadius: padBorderRadius( topLeft ),\n\t\t\t\t\tborderTopRightRadius: padBorderRadius( topRight ),\n\t\t\t\t\tborderBottomLeftRadius: padBorderRadius( bottomLeft ),\n\t\t\t\t\tborderBottomRightRadius: padBorderRadius( bottomRight ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// The inline style using calc() will only apply if both values\n\t\t\t// supplied to calc() have units. Deprecated block's may have\n\t\t\t// unitless integer.\n\t\t\tconst radius = Number.isInteger( borderRadius )\n\t\t\t\t? `${ borderRadius }px`\n\t\t\t\t: borderRadius;\n\n\t\t\tstyles.borderRadius = `calc(${ radius } + ${ DEFAULT_INNER_PADDING })`;\n\t\t}\n\n\t\treturn styles;\n\t};\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: getBlockClassNames(),\n\t\tstyle: {\n\t\t\t...typographyProps.style,\n\t\t\t// Input opts out of text decoration.\n\t\t\ttextDecoration: undefined,\n\t\t},\n\t} );\n\n\tconst labelClassnames = classnames(\n\t\t'wp-block-search__label',\n\t\ttypographyProps.className\n\t);\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ controls }\n\n\t\t\t{ showLabel && (\n\t\t\t\t<RichText\n\t\t\t\t\tclassName={ labelClassnames }\n\t\t\t\t\taria-label={ __( 'Label text' ) }\n\t\t\t\t\tplaceholder={ __( 'Add label…' ) }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( html ) => setAttributes( { label: html } ) }\n\t\t\t\t\tstyle={ typographyProps.style }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: `${ width }${ widthUnit }`,\n\t\t\t\t} }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'wp-block-search__inside-wrapper',\n\t\t\t\t\tisButtonPositionInside ? borderProps.className : undefined\n\t\t\t\t) }\n\t\t\t\tstyle={ getWrapperStyles() }\n\t\t\t\tminWidth={ MIN_WIDTH }\n\t\t\t\tenable={ getResizableSides() }\n\t\t\t\tonResizeStart={ ( event, direction, elt ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( elt.offsetWidth, 10 ),\n\t\t\t\t\t\twidthUnit: 'px',\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t} }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( width + delta.width, 10 ),\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( true );\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t>\n\t\t\t\t{ ( isButtonPositionInside ||\n\t\t\t\t\tisButtonPositionOutside ||\n\t\t\t\t\thasOnlyButton ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ renderTextField() }\n\t\t\t\t\t\t{ renderButton() }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\n\t\t\t\t{ hasNoButton && renderTextField() }\n\t\t\t</ResizableBox>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/search/edit.js"],"names":["classnames","useBlockProps","BlockControls","InspectorControls","RichText","__experimentalUseBorderProps","useBorderProps","__experimentalUseColorProps","useColorProps","getTypographyClassesAndStyles","useTypographyProps","store","blockEditorStore","__experimentalGetElementClassName","useSetting","useDispatch","useSelect","useEffect","useRef","ToolbarDropdownMenu","ToolbarGroup","Button","ButtonGroup","ToolbarButton","ResizableBox","PanelBody","BaseControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalUnitControl","UnitControl","useInstanceId","Icon","search","__","__unstableStripHTML","stripHTML","buttonOnly","buttonOutside","buttonInside","noButton","buttonWithIcon","toggleLabel","PC_WIDTH_DEFAULT","PX_WIDTH_DEFAULT","MIN_WIDTH","MIN_WIDTH_UNIT","DEFAULT_INNER_PADDING","BUTTON_BEHAVIOR_EXPAND","SearchEdit","className","attributes","setAttributes","toggleSelection","isSelected","clientId","label","showLabel","placeholder","width","widthUnit","align","buttonText","buttonPosition","buttonUseIcon","buttonBehavior","isSearchFieldHidden","style","insertedInNavigationBlock","select","getBlockParentsByBlockName","wasBlockJustInserted","length","__unstableMarkNextChangeAsNotPersistent","borderRadius","border","radius","borderProps","colorProps","fluidTypographySettings","layout","typographyProps","typography","fluid","wideSize","unitControlInstanceId","unitControlInputId","isButtonPositionInside","isButtonPositionOutside","hasNoButton","hasOnlyButton","searchFieldRef","buttonRef","units","availableUnits","defaultValues","px","getBlockClassNames","undefined","buttonPositionControls","role","title","isActive","icon","onClick","getButtonPositionIcon","getResizableSides","right","left","renderTextField","textFieldClasses","textFieldStyles","textDecoration","event","target","value","renderButton","buttonClasses","buttonStyles","handleButtonClick","html","controls","newWidth","filteredWidth","parseInt","newUnit","map","widthValue","padBorderRadius","getWrapperStyles","styles","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isNonZeroBorderRadius","topLeft","topRight","bottomLeft","bottomRight","Number","isInteger","blockProps","labelClassnames","direction","elt","offsetWidth","delta"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\tgetTypographyClassesAndStyles as useTypographyProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n\tuseSetting,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tButton,\n\tButtonGroup,\n\tToolbarButton,\n\tResizableBox,\n\tPanelBody,\n\tBaseControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Icon, search } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuttonOnly,\n\tbuttonOutside,\n\tbuttonInside,\n\tnoButton,\n\tbuttonWithIcon,\n\ttoggleLabel,\n} from './icons';\nimport {\n\tPC_WIDTH_DEFAULT,\n\tPX_WIDTH_DEFAULT,\n\tMIN_WIDTH,\n\tMIN_WIDTH_UNIT,\n} from './utils.js';\n\n// Used to calculate border radius adjustment to avoid \"fat\" corners when\n// button is placed inside wrapper.\nconst DEFAULT_INNER_PADDING = '4px';\n\nconst BUTTON_BEHAVIOR_EXPAND = 'expand-searchfield';\n\nexport default function SearchEdit( {\n\tclassName,\n\tattributes,\n\tsetAttributes,\n\ttoggleSelection,\n\tisSelected,\n\tclientId,\n} ) {\n\tconst {\n\t\tlabel,\n\t\tshowLabel,\n\t\tplaceholder,\n\t\twidth,\n\t\twidthUnit,\n\t\talign,\n\t\tbuttonText,\n\t\tbuttonPosition,\n\t\tbuttonUseIcon,\n\t\tbuttonBehavior,\n\t\tisSearchFieldHidden,\n\t\tstyle,\n\t} = attributes;\n\n\tconst insertedInNavigationBlock = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParentsByBlockName, wasBlockJustInserted } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\t!! getBlockParentsByBlockName( clientId, 'core/navigation' )\n\t\t\t\t\t?.length && wasBlockJustInserted( clientId )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tif ( insertedInNavigationBlock ) {\n\t\t// This side-effect should not create an undo level.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( {\n\t\t\tshowLabel: false,\n\t\t\tbuttonUseIcon: true,\n\t\t\tbuttonPosition: 'button-inside',\n\t\t} );\n\t}\n\n\tconst borderRadius = style?.border?.radius;\n\tconst borderProps = useBorderProps( attributes );\n\n\t// Check for old deprecated numerical border radius. Done as a separate\n\t// check so that a borderRadius style won't overwrite the longhand\n\t// per-corner styles.\n\tif ( typeof borderRadius === 'number' ) {\n\t\tborderProps.style.borderRadius = `${ borderRadius }px`;\n\t}\n\n\tconst colorProps = useColorProps( attributes );\n\tconst fluidTypographySettings = useSetting( 'typography.fluid' );\n\tconst layout = useSetting( 'layout' );\n\tconst typographyProps = useTypographyProps( attributes, {\n\t\ttypography: {\n\t\t\tfluid: fluidTypographySettings,\n\t\t},\n\t\tlayout: {\n\t\t\twideSize: layout?.wideSize,\n\t\t},\n\t} );\n\tconst unitControlInstanceId = useInstanceId( UnitControl );\n\tconst unitControlInputId = `wp-block-search__width-${ unitControlInstanceId }`;\n\tconst isButtonPositionInside = 'button-inside' === buttonPosition;\n\tconst isButtonPositionOutside = 'button-outside' === buttonPosition;\n\tconst hasNoButton = 'no-button' === buttonPosition;\n\tconst hasOnlyButton = 'button-only' === buttonPosition;\n\tconst searchFieldRef = useRef();\n\tconst buttonRef = useRef();\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: [ '%', 'px' ],\n\t\tdefaultValues: { '%': PC_WIDTH_DEFAULT, px: PX_WIDTH_DEFAULT },\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( hasOnlyButton && ! isSelected ) {\n\t\t\tsetAttributes( {\n\t\t\t\tisSearchFieldHidden: true,\n\t\t\t} );\n\t\t}\n\t}, [ hasOnlyButton, isSelected, setAttributes ] );\n\n\t// Show the search field when width changes.\n\tuseEffect( () => {\n\t\tif ( ! hasOnlyButton || ! isSelected ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tisSearchFieldHidden: false,\n\t\t} );\n\t}, [ hasOnlyButton, isSelected, setAttributes, width ] );\n\n\tconst getBlockClassNames = () => {\n\t\treturn classnames(\n\t\t\tclassName,\n\t\t\tisButtonPositionInside\n\t\t\t\t? 'wp-block-search__button-inside'\n\t\t\t\t: undefined,\n\t\t\tisButtonPositionOutside\n\t\t\t\t? 'wp-block-search__button-outside'\n\t\t\t\t: undefined,\n\t\t\thasNoButton ? 'wp-block-search__no-button' : undefined,\n\t\t\thasOnlyButton ? 'wp-block-search__button-only' : undefined,\n\t\t\t! buttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__text-button'\n\t\t\t\t: undefined,\n\t\t\tbuttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__icon-button'\n\t\t\t\t: undefined,\n\t\t\thasOnlyButton && BUTTON_BEHAVIOR_EXPAND === buttonBehavior\n\t\t\t\t? 'wp-block-search__button-behavior-expand'\n\t\t\t\t: undefined,\n\t\t\thasOnlyButton && isSearchFieldHidden\n\t\t\t\t? 'wp-block-search__searchfield-hidden'\n\t\t\t\t: undefined\n\t\t);\n\t};\n\n\tconst buttonPositionControls = [\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button outside' ),\n\t\t\tisActive: buttonPosition === 'button-outside',\n\t\t\ticon: buttonOutside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-outside',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button inside' ),\n\t\t\tisActive: buttonPosition === 'button-inside',\n\t\t\ticon: buttonInside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-inside',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'No button' ),\n\t\t\tisActive: buttonPosition === 'no-button',\n\t\t\ticon: noButton,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'no-button',\n\t\t\t\t\tisSearchFieldHidden: false,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button only' ),\n\t\t\tisActive: buttonPosition === 'button-only',\n\t\t\ticon: buttonOnly,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-only',\n\t\t\t\t\tisSearchFieldHidden: true,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t];\n\n\tconst getButtonPositionIcon = () => {\n\t\tswitch ( buttonPosition ) {\n\t\t\tcase 'button-inside':\n\t\t\t\treturn buttonInside;\n\t\t\tcase 'button-outside':\n\t\t\t\treturn buttonOutside;\n\t\t\tcase 'no-button':\n\t\t\t\treturn noButton;\n\t\t\tcase 'button-only':\n\t\t\t\treturn buttonOnly;\n\t\t}\n\t};\n\n\tconst getResizableSides = () => {\n\t\tif ( hasOnlyButton ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tright: align !== 'right',\n\t\t\tleft: align === 'right',\n\t\t};\n\t};\n\n\tconst renderTextField = () => {\n\t\t// If the input is inside the wrapper, the wrapper gets the border color styles/classes, not the input control.\n\t\tconst textFieldClasses = classnames(\n\t\t\t'wp-block-search__input',\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\ttypographyProps.className\n\t\t);\n\t\tconst textFieldStyles = {\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t\t...typographyProps.style,\n\t\t\ttextDecoration: undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype=\"search\"\n\t\t\t\tclassName={ textFieldClasses }\n\t\t\t\tstyle={ textFieldStyles }\n\t\t\t\taria-label={ __( 'Optional placeholder text' ) }\n\t\t\t\t// We hide the placeholder field's placeholder when there is a value. This\n\t\t\t\t// stops screen readers from reading the placeholder field's placeholder\n\t\t\t\t// which is confusing.\n\t\t\t\tplaceholder={\n\t\t\t\t\tplaceholder ? undefined : __( 'Optional placeholder…' )\n\t\t\t\t}\n\t\t\t\tvalue={ placeholder }\n\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\tsetAttributes( { placeholder: event.target.value } )\n\t\t\t\t}\n\t\t\t\tref={ searchFieldRef }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderButton = () => {\n\t\t// If the button is inside the wrapper, the wrapper gets the border color styles/classes, not the button.\n\t\tconst buttonClasses = classnames(\n\t\t\t'wp-block-search__button',\n\t\t\tcolorProps.className,\n\t\t\ttypographyProps.className,\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\tbuttonUseIcon ? 'has-icon' : undefined,\n\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t);\n\t\tconst buttonStyles = {\n\t\t\t...colorProps.style,\n\t\t\t...typographyProps.style,\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t};\n\t\tconst handleButtonClick = () => {\n\t\t\tif ( hasOnlyButton && BUTTON_BEHAVIOR_EXPAND === buttonBehavior ) {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tisSearchFieldHidden: ! isSearchFieldHidden,\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ buttonUseIcon && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\tbuttonText\n\t\t\t\t\t\t\t\t? stripHTML( buttonText )\n\t\t\t\t\t\t\t\t: __( 'Search' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={ handleButtonClick }\n\t\t\t\t\t\tref={ buttonRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\n\t\t\t\t{ ! buttonUseIcon && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add button text…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tvalue={ buttonText }\n\t\t\t\t\t\tonChange={ ( html ) =>\n\t\t\t\t\t\t\tsetAttributes( { buttonText: html } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={ handleButtonClick }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t};\n\n\tconst controls = (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ttitle={ __( 'Toggle search label' ) }\n\t\t\t\t\t\ticon={ toggleLabel }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowLabel: ! showLabel,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tclassName={ showLabel ? 'is-pressed' : undefined }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\ticon={ getButtonPositionIcon() }\n\t\t\t\t\t\tlabel={ __( 'Change button position' ) }\n\t\t\t\t\t\tcontrols={ buttonPositionControls }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! hasNoButton && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ttitle={ __( 'Use button with icon' ) }\n\t\t\t\t\t\t\ticon={ buttonWithIcon }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tbuttonUseIcon: ! buttonUseIcon,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\tbuttonUseIcon ? 'is-pressed' : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Display Settings' ) }>\n\t\t\t\t\t<BaseControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t\t\tmin={ `${ MIN_WIDTH }${ MIN_WIDTH_UNIT }` }\n\t\t\t\t\t\t\tonChange={ ( newWidth ) => {\n\t\t\t\t\t\t\t\tconst filteredWidth =\n\t\t\t\t\t\t\t\t\twidthUnit === '%' &&\n\t\t\t\t\t\t\t\t\tparseInt( newWidth, 10 ) > 100\n\t\t\t\t\t\t\t\t\t\t? 100\n\t\t\t\t\t\t\t\t\t\t: newWidth;\n\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth: parseInt( filteredWidth, 10 ),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonUnitChange={ ( newUnit ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t'%' === newUnit\n\t\t\t\t\t\t\t\t\t\t\t? PC_WIDTH_DEFAULT\n\t\t\t\t\t\t\t\t\t\t\t: PX_WIDTH_DEFAULT,\n\t\t\t\t\t\t\t\t\twidthUnit: newUnit,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t__unstableInputWidth={ '80px' }\n\t\t\t\t\t\t\tvalue={ `${ width }${ widthUnit }` }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\tclassName=\"wp-block-search__components-button-group\"\n\t\t\t\t\t\t\taria-label={ __( 'Percentage Width' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\twidthValue === width &&\n\t\t\t\t\t\t\t\t\t\t\twidthUnit === '%'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\twidth: widthValue,\n\t\t\t\t\t\t\t\t\t\t\t\twidthUnit: '%',\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\t\t{ widthValue }%\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\tconst padBorderRadius = ( radius ) =>\n\t\tradius ? `calc(${ radius } + ${ DEFAULT_INNER_PADDING })` : undefined;\n\n\tconst getWrapperStyles = () => {\n\t\tconst styles = isButtonPositionInside\n\t\t\t? borderProps.style\n\t\t\t: {\n\t\t\t\t\tborderRadius: borderProps.style?.borderRadius,\n\t\t\t\t\tborderTopLeftRadius: borderProps.style?.borderTopLeftRadius,\n\t\t\t\t\tborderTopRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderTopRightRadius,\n\t\t\t\t\tborderBottomLeftRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomLeftRadius,\n\t\t\t\t\tborderBottomRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomRightRadius,\n\t\t\t };\n\n\t\tconst isNonZeroBorderRadius =\n\t\t\tborderRadius !== undefined && parseInt( borderRadius, 10 ) !== 0;\n\n\t\tif ( isButtonPositionInside && isNonZeroBorderRadius ) {\n\t\t\t// We have button inside wrapper and a border radius value to apply.\n\t\t\t// Add default padding so we don't get \"fat\" corners.\n\t\t\t//\n\t\t\t// CSS calc() is used here to support non-pixel units. The inline\n\t\t\t// style using calc() will only apply if both values have units.\n\n\t\t\tif ( typeof borderRadius === 'object' ) {\n\t\t\t\t// Individual corner border radii present.\n\t\t\t\tconst { topLeft, topRight, bottomLeft, bottomRight } =\n\t\t\t\t\tborderRadius;\n\n\t\t\t\treturn {\n\t\t\t\t\t...styles,\n\t\t\t\t\tborderTopLeftRadius: padBorderRadius( topLeft ),\n\t\t\t\t\tborderTopRightRadius: padBorderRadius( topRight ),\n\t\t\t\t\tborderBottomLeftRadius: padBorderRadius( bottomLeft ),\n\t\t\t\t\tborderBottomRightRadius: padBorderRadius( bottomRight ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// The inline style using calc() will only apply if both values\n\t\t\t// supplied to calc() have units. Deprecated block's may have\n\t\t\t// unitless integer.\n\t\t\tconst radius = Number.isInteger( borderRadius )\n\t\t\t\t? `${ borderRadius }px`\n\t\t\t\t: borderRadius;\n\n\t\t\tstyles.borderRadius = `calc(${ radius } + ${ DEFAULT_INNER_PADDING })`;\n\t\t}\n\n\t\treturn styles;\n\t};\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: getBlockClassNames(),\n\t\tstyle: {\n\t\t\t...typographyProps.style,\n\t\t\t// Input opts out of text decoration.\n\t\t\ttextDecoration: undefined,\n\t\t},\n\t} );\n\n\tconst labelClassnames = classnames(\n\t\t'wp-block-search__label',\n\t\ttypographyProps.className\n\t);\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ controls }\n\n\t\t\t{ showLabel && (\n\t\t\t\t<RichText\n\t\t\t\t\tclassName={ labelClassnames }\n\t\t\t\t\taria-label={ __( 'Label text' ) }\n\t\t\t\t\tplaceholder={ __( 'Add label…' ) }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( html ) => setAttributes( { label: html } ) }\n\t\t\t\t\tstyle={ typographyProps.style }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: `${ width }${ widthUnit }`,\n\t\t\t\t} }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'wp-block-search__inside-wrapper',\n\t\t\t\t\tisButtonPositionInside ? borderProps.className : undefined\n\t\t\t\t) }\n\t\t\t\tstyle={ getWrapperStyles() }\n\t\t\t\tminWidth={ MIN_WIDTH }\n\t\t\t\tenable={ getResizableSides() }\n\t\t\t\tonResizeStart={ ( event, direction, elt ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( elt.offsetWidth, 10 ),\n\t\t\t\t\t\twidthUnit: 'px',\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t} }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( width + delta.width, 10 ),\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( true );\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t>\n\t\t\t\t{ ( isButtonPositionInside ||\n\t\t\t\t\tisButtonPositionOutside ||\n\t\t\t\t\thasOnlyButton ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ renderTextField() }\n\t\t\t\t\t\t{ renderButton() }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\n\t\t\t\t{ hasNoButton && renderTextField() }\n\t\t\t</ResizableBox>\n\t\t</div>\n\t);\n}\n"]}
@@ -100,6 +100,7 @@ const metadata = {
100
100
  },
101
101
  html: false
102
102
  },
103
+ viewScript: "file:./view.min.js",
103
104
  editorStyle: "wp-block-search-editor",
104
105
  style: "wp-block-search"
105
106
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/search/index.js"],"names":["__","search","icon","initBlock","edit","variations","name","metadata","settings","example","attributes","buttonText","label","viewportWidth","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAM,IAAIC,IAAnB,QAA+B,kBAA/B;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,UAAP,MAAuB,cAAvB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBN,EAAAA,IADuB;AAEvBO,EAAAA,OAAO,EAAE;AACRC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,UAAU,EAAEX,EAAE,CAAE,QAAF,CAAhB;AAA8BY,MAAAA,KAAK,EAAEZ,EAAE,CAAE,QAAF;AAAvC,KADJ;AAERa,IAAAA,aAAa,EAAE;AAFP,GAFc;AAMvBR,EAAAA,UANuB;AAOvBD,EAAAA;AAPuB,CAAjB;AAUP,OAAO,MAAMU,IAAI,GAAG,MAAMX,SAAS,CAAE;AAAEG,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAF,CAA5B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { search as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: { buttonText: __( 'Search' ), label: __( 'Search' ) },\n\t\tviewportWidth: 400,\n\t},\n\tvariations,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/search/index.js"],"names":["__","search","icon","initBlock","edit","variations","name","metadata","settings","example","attributes","buttonText","label","viewportWidth","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAM,IAAIC,IAAnB,QAA+B,kBAA/B;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,UAAP,MAAuB,cAAvB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBN,EAAAA,IADuB;AAEvBO,EAAAA,OAAO,EAAE;AACRC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,UAAU,EAAEX,EAAE,CAAE,QAAF,CAAhB;AAA8BY,MAAAA,KAAK,EAAEZ,EAAE,CAAE,QAAF;AAAvC,KADJ;AAERa,IAAAA,aAAa,EAAE;AAFP,GAFc;AAMvBR,EAAAA,UANuB;AAOvBD,EAAAA;AAPuB,CAAjB;AAUP,OAAO,MAAMU,IAAI,GAAG,MAAMX,SAAS,CAAE;AAAEG,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAF,CAA5B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { search as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: { buttonText: __( 'Search' ), label: __( 'Search' ) },\n\t\tviewportWidth: 400,\n\t},\n\tvariations,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
@@ -1,65 +1,169 @@
1
- window.addEventListener('DOMContentLoaded', () => {
2
- const hiddenClass = 'wp-block-search__searchfield-hidden';
3
- Array.from(document.getElementsByClassName('wp-block-search__button-behavior-expand')).forEach(block => {
4
- const searchField = block.querySelector('.wp-block-search__input');
5
- const searchButton = block.querySelector('.wp-block-search__button');
6
- const searchLabel = block.querySelector('.wp-block-search__label');
7
- const ariaLabel = searchButton.getAttribute('aria-label');
8
- const id = searchField.getAttribute('id');
9
-
10
- const toggleSearchField = showSearchField => {
11
- if (showSearchField) {
12
- searchField.removeAttribute('aria-hidden');
13
- searchField.removeAttribute('tabindex');
14
- searchButton.removeAttribute('aria-expanded');
15
- searchButton.removeAttribute('aria-controls');
16
- searchButton.setAttribute('type', 'submit');
17
- searchButton.setAttribute('aria-label', 'Submit Search');
18
- return block.classList.remove(hiddenClass);
19
- }
20
-
21
- searchButton.removeAttribute('type');
22
- searchField.setAttribute('aria-hidden', 'true');
23
- searchField.setAttribute('tabindex', '-1');
24
- searchButton.setAttribute('aria-expanded', 'false');
25
- searchButton.setAttribute('aria-controls', id);
26
- searchButton.setAttribute('aria-label', ariaLabel);
27
- return block.classList.add(hiddenClass);
28
- };
29
-
30
- const hideSearchField = e => {
31
- if (!e.target.closest('.wp-block-search')) {
32
- return toggleSearchField(false);
33
- }
34
-
35
- if (e.key === 'Escape') {
36
- searchButton.focus();
37
- return toggleSearchField(false);
38
- }
39
- };
40
-
41
- const handleButtonClick = e => {
42
- if (block.classList.contains(hiddenClass)) {
43
- e.preventDefault();
44
- searchField.focus();
45
- toggleSearchField(true);
46
- }
47
- };
48
-
49
- searchButton.removeAttribute('type');
50
- searchField.addEventListener('keydown', e => {
51
- hideSearchField(e);
52
- });
53
- searchButton.addEventListener('click', handleButtonClick);
54
- searchButton.addEventListener('keydown', e => {
55
- hideSearchField(e);
56
- });
57
-
58
- if (searchLabel) {
59
- searchLabel.addEventListener('click', handleButtonClick);
60
- }
61
-
62
- document.body.addEventListener('click', hideSearchField);
1
+ /*eslint-env browser*/
2
+
3
+ /** @type {?HTMLFormElement} */
4
+ let expandedSearchBlock = null;
5
+ const hiddenClass = 'wp-block-search__searchfield-hidden';
6
+ /**
7
+ * Toggles aria-label with data-toggled-aria-label.
8
+ *
9
+ * @param {HTMLElement} element
10
+ */
11
+
12
+ function toggleAriaLabel(element) {
13
+ if (!('toggledAriaLabel' in element.dataset)) {
14
+ throw new Error('Element lacks toggledAriaLabel in dataset.');
15
+ }
16
+
17
+ const ariaLabel = element.dataset.toggledAriaLabel;
18
+ element.dataset.toggledAriaLabel = element.ariaLabel;
19
+ element.ariaLabel = ariaLabel;
20
+ }
21
+ /**
22
+ * Gets search input.
23
+ *
24
+ * @param {HTMLFormElement} block Search block.
25
+ * @return {HTMLInputElement} Search input.
26
+ */
27
+
28
+
29
+ function getSearchInput(block) {
30
+ return block.querySelector('.wp-block-search__input');
31
+ }
32
+ /**
33
+ * Gets search button.
34
+ *
35
+ * @param {HTMLFormElement} block Search block.
36
+ * @return {HTMLButtonElement} Search button.
37
+ */
38
+
39
+
40
+ function getSearchButton(block) {
41
+ return block.querySelector('.wp-block-search__button');
42
+ }
43
+ /**
44
+ * Handles keydown event to collapse an expanded Search block (when pressing Escape key).
45
+ *
46
+ * @param {KeyboardEvent} event
47
+ */
48
+
49
+
50
+ function handleKeydownEvent(event) {
51
+ if (!expandedSearchBlock) {
52
+ // In case the event listener wasn't removed in time.
53
+ return;
54
+ }
55
+
56
+ if (event.key === 'Escape') {
57
+ const block = expandedSearchBlock; // This is nullified by collapseExpandedSearchBlock().
58
+
59
+ collapseExpandedSearchBlock();
60
+ getSearchButton(block).focus();
61
+ }
62
+ }
63
+ /**
64
+ * Handles keyup event to collapse an expanded Search block (e.g. when tabbing out of expanded Search block).
65
+ *
66
+ * @param {KeyboardEvent} event
67
+ */
68
+
69
+
70
+ function handleKeyupEvent(event) {
71
+ if (!expandedSearchBlock) {
72
+ // In case the event listener wasn't removed in time.
73
+ return;
74
+ }
75
+
76
+ if (event.target.closest('.wp-block-search') !== expandedSearchBlock) {
77
+ collapseExpandedSearchBlock();
78
+ }
79
+ }
80
+ /**
81
+ * Expands search block.
82
+ *
83
+ * Inverse of what is done in collapseExpandedSearchBlock().
84
+ *
85
+ * @param {HTMLFormElement} block Search block.
86
+ */
87
+
88
+
89
+ function expandSearchBlock(block) {
90
+ // Make sure only one is open at a time.
91
+ if (expandedSearchBlock) {
92
+ collapseExpandedSearchBlock();
93
+ }
94
+
95
+ const searchField = getSearchInput(block);
96
+ const searchButton = getSearchButton(block);
97
+ searchButton.type = 'submit';
98
+ searchField.ariaHidden = 'false';
99
+ searchField.tabIndex = 0;
100
+ searchButton.ariaExpanded = 'true';
101
+ searchButton.removeAttribute('aria-controls'); // Note: Seemingly not reflected with searchButton.ariaControls.
102
+
103
+ toggleAriaLabel(searchButton);
104
+ block.classList.remove(hiddenClass);
105
+ searchField.focus(); // Note that Chrome seems to do this automatically.
106
+ // The following two must be inverse of what is done in collapseExpandedSearchBlock().
107
+
108
+ document.addEventListener('keydown', handleKeydownEvent, {
109
+ passive: true
110
+ });
111
+ document.addEventListener('keyup', handleKeyupEvent, {
112
+ passive: true
113
+ });
114
+ expandedSearchBlock = block;
115
+ }
116
+ /**
117
+ * Collapses the expanded search block.
118
+ *
119
+ * Inverse of what is done in expandSearchBlock().
120
+ */
121
+
122
+
123
+ function collapseExpandedSearchBlock() {
124
+ if (!expandedSearchBlock) {
125
+ throw new Error('Expected expandedSearchBlock to be defined.');
126
+ }
127
+
128
+ const block = expandedSearchBlock;
129
+ const searchField = getSearchInput(block);
130
+ const searchButton = getSearchButton(block);
131
+ searchButton.type = 'button';
132
+ searchField.ariaHidden = 'true';
133
+ searchField.tabIndex = -1;
134
+ searchButton.ariaExpanded = 'false';
135
+ searchButton.setAttribute('aria-controls', searchField.id); // Note: Seemingly not reflected with searchButton.ariaControls.
136
+
137
+ toggleAriaLabel(searchButton);
138
+ block.classList.add(hiddenClass); // The following two must be inverse of what is done in expandSearchBlock().
139
+
140
+ document.removeEventListener('keydown', handleKeydownEvent, {
141
+ passive: true
63
142
  });
143
+ document.removeEventListener('keyup', handleKeyupEvent, {
144
+ passive: true
145
+ });
146
+ expandedSearchBlock = null;
147
+ } // Listen for click events anywhere on the document so this script can be loaded asynchronously in the head.
148
+
149
+
150
+ document.addEventListener('click', event => {
151
+ // Get the ancestor expandable Search block of the clicked element.
152
+ const block = event.target.closest('.wp-block-search__button-behavior-expand');
153
+ /*
154
+ * If there is already an expanded search block and either the current click was not for a Search block or it was
155
+ * for another block, then collapse the currently-expanded block.
156
+ */
157
+
158
+ if (expandedSearchBlock && block !== expandedSearchBlock) {
159
+ collapseExpandedSearchBlock();
160
+ } // If the click was on or inside a collapsed Search block, expand it.
161
+
162
+
163
+ if (block instanceof HTMLFormElement && block.classList.contains(hiddenClass)) {
164
+ expandSearchBlock(block);
165
+ }
166
+ }, {
167
+ passive: true
64
168
  });
65
169
  //# sourceMappingURL=view.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/search/view.js"],"names":["window","addEventListener","hiddenClass","Array","from","document","getElementsByClassName","forEach","block","searchField","querySelector","searchButton","searchLabel","ariaLabel","getAttribute","id","toggleSearchField","showSearchField","removeAttribute","setAttribute","classList","remove","add","hideSearchField","e","target","closest","key","focus","handleButtonClick","contains","preventDefault","body"],"mappings":"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","sourcesContent":["window.addEventListener( 'DOMContentLoaded', () => {\n\tconst hiddenClass = 'wp-block-search__searchfield-hidden';\n\n\tArray.from(\n\t\tdocument.getElementsByClassName(\n\t\t\t'wp-block-search__button-behavior-expand'\n\t\t)\n\t).forEach( ( block ) => {\n\t\tconst searchField = block.querySelector( '.wp-block-search__input' );\n\t\tconst searchButton = block.querySelector( '.wp-block-search__button' );\n\t\tconst searchLabel = block.querySelector( '.wp-block-search__label' );\n\t\tconst ariaLabel = searchButton.getAttribute( 'aria-label' );\n\t\tconst id = searchField.getAttribute( 'id' );\n\n\t\tconst toggleSearchField = ( showSearchField ) => {\n\t\t\tif ( showSearchField ) {\n\t\t\t\tsearchField.removeAttribute( 'aria-hidden' );\n\t\t\t\tsearchField.removeAttribute( 'tabindex' );\n\t\t\t\tsearchButton.removeAttribute( 'aria-expanded' );\n\t\t\t\tsearchButton.removeAttribute( 'aria-controls' );\n\t\t\t\tsearchButton.setAttribute( 'type', 'submit' );\n\t\t\t\tsearchButton.setAttribute( 'aria-label', 'Submit Search' );\n\n\t\t\t\treturn block.classList.remove( hiddenClass );\n\t\t\t}\n\n\t\t\tsearchButton.removeAttribute( 'type' );\n\t\t\tsearchField.setAttribute( 'aria-hidden', 'true' );\n\t\t\tsearchField.setAttribute( 'tabindex', '-1' );\n\t\t\tsearchButton.setAttribute( 'aria-expanded', 'false' );\n\t\t\tsearchButton.setAttribute( 'aria-controls', id );\n\t\t\tsearchButton.setAttribute( 'aria-label', ariaLabel );\n\t\t\treturn block.classList.add( hiddenClass );\n\t\t};\n\n\t\tconst hideSearchField = ( e ) => {\n\t\t\tif ( ! e.target.closest( '.wp-block-search' ) ) {\n\t\t\t\treturn toggleSearchField( false );\n\t\t\t}\n\n\t\t\tif ( e.key === 'Escape' ) {\n\t\t\t\tsearchButton.focus();\n\t\t\t\treturn toggleSearchField( false );\n\t\t\t}\n\t\t};\n\n\t\tconst handleButtonClick = ( e ) => {\n\t\t\tif ( block.classList.contains( hiddenClass ) ) {\n\t\t\t\te.preventDefault();\n\t\t\t\tsearchField.focus();\n\t\t\t\ttoggleSearchField( true );\n\t\t\t}\n\t\t};\n\n\t\tsearchButton.removeAttribute( 'type' );\n\t\tsearchField.addEventListener( 'keydown', ( e ) => {\n\t\t\thideSearchField( e );\n\t\t} );\n\t\tsearchButton.addEventListener( 'click', handleButtonClick );\n\t\tsearchButton.addEventListener( 'keydown', ( e ) => {\n\t\t\thideSearchField( e );\n\t\t} );\n\t\tif ( searchLabel ) {\n\t\t\tsearchLabel.addEventListener( 'click', handleButtonClick );\n\t\t}\n\t\tdocument.body.addEventListener( 'click', hideSearchField );\n\t} );\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/search/view.js"],"names":["expandedSearchBlock","hiddenClass","toggleAriaLabel","element","dataset","Error","ariaLabel","toggledAriaLabel","getSearchInput","block","querySelector","getSearchButton","handleKeydownEvent","event","key","collapseExpandedSearchBlock","focus","handleKeyupEvent","target","closest","expandSearchBlock","searchField","searchButton","type","ariaHidden","tabIndex","ariaExpanded","removeAttribute","classList","remove","document","addEventListener","passive","setAttribute","id","add","removeEventListener","HTMLFormElement","contains"],"mappings":"AAAA;;AAEA;AACA,IAAIA,mBAAmB,GAAG,IAA1B;AAEA,MAAMC,WAAW,GAAG,qCAApB;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,CAA0BC,OAA1B,EAAoC;AACnC,MAAK,EAAI,sBAAsBA,OAAO,CAACC,OAAlC,CAAL,EAAmD;AAClD,UAAM,IAAIC,KAAJ,CAAW,4CAAX,CAAN;AACA;;AAED,QAAMC,SAAS,GAAGH,OAAO,CAACC,OAAR,CAAgBG,gBAAlC;AACAJ,EAAAA,OAAO,CAACC,OAAR,CAAgBG,gBAAhB,GAAmCJ,OAAO,CAACG,SAA3C;AACAH,EAAAA,OAAO,CAACG,SAAR,GAAoBA,SAApB;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,cAAT,CAAyBC,KAAzB,EAAiC;AAChC,SAAOA,KAAK,CAACC,aAAN,CAAqB,yBAArB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,eAAT,CAA0BF,KAA1B,EAAkC;AACjC,SAAOA,KAAK,CAACC,aAAN,CAAqB,0BAArB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASE,kBAAT,CAA6BC,KAA7B,EAAqC;AACpC,MAAK,CAAEb,mBAAP,EAA6B;AAC5B;AACA;AACA;;AAED,MAAKa,KAAK,CAACC,GAAN,KAAc,QAAnB,EAA8B;AAC7B,UAAML,KAAK,GAAGT,mBAAd,CAD6B,CACM;;AACnCe,IAAAA,2BAA2B;AAC3BJ,IAAAA,eAAe,CAAEF,KAAF,CAAf,CAAyBO,KAAzB;AACA;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASC,gBAAT,CAA2BJ,KAA3B,EAAmC;AAClC,MAAK,CAAEb,mBAAP,EAA6B;AAC5B;AACA;AACA;;AAED,MAAKa,KAAK,CAACK,MAAN,CAAaC,OAAb,CAAsB,kBAAtB,MAA+CnB,mBAApD,EAA0E;AACzEe,IAAAA,2BAA2B;AAC3B;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASK,iBAAT,CAA4BX,KAA5B,EAAoC;AACnC;AACA,MAAKT,mBAAL,EAA2B;AAC1Be,IAAAA,2BAA2B;AAC3B;;AAED,QAAMM,WAAW,GAAGb,cAAc,CAAEC,KAAF,CAAlC;AACA,QAAMa,YAAY,GAAGX,eAAe,CAAEF,KAAF,CAApC;AAEAa,EAAAA,YAAY,CAACC,IAAb,GAAoB,QAApB;AACAF,EAAAA,WAAW,CAACG,UAAZ,GAAyB,OAAzB;AACAH,EAAAA,WAAW,CAACI,QAAZ,GAAuB,CAAvB;AACAH,EAAAA,YAAY,CAACI,YAAb,GAA4B,MAA5B;AACAJ,EAAAA,YAAY,CAACK,eAAb,CAA8B,eAA9B,EAbmC,CAac;;AACjDzB,EAAAA,eAAe,CAAEoB,YAAF,CAAf;AACAb,EAAAA,KAAK,CAACmB,SAAN,CAAgBC,MAAhB,CAAwB5B,WAAxB;AAEAoB,EAAAA,WAAW,CAACL,KAAZ,GAjBmC,CAiBd;AAErB;;AACAc,EAAAA,QAAQ,CAACC,gBAAT,CAA2B,SAA3B,EAAsCnB,kBAAtC,EAA0D;AACzDoB,IAAAA,OAAO,EAAE;AADgD,GAA1D;AAGAF,EAAAA,QAAQ,CAACC,gBAAT,CAA2B,OAA3B,EAAoCd,gBAApC,EAAsD;AACrDe,IAAAA,OAAO,EAAE;AAD4C,GAAtD;AAIAhC,EAAAA,mBAAmB,GAAGS,KAAtB;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASM,2BAAT,GAAuC;AACtC,MAAK,CAAEf,mBAAP,EAA6B;AAC5B,UAAM,IAAIK,KAAJ,CAAW,6CAAX,CAAN;AACA;;AACD,QAAMI,KAAK,GAAGT,mBAAd;AACA,QAAMqB,WAAW,GAAGb,cAAc,CAAEC,KAAF,CAAlC;AACA,QAAMa,YAAY,GAAGX,eAAe,CAAEF,KAAF,CAApC;AAEAa,EAAAA,YAAY,CAACC,IAAb,GAAoB,QAApB;AACAF,EAAAA,WAAW,CAACG,UAAZ,GAAyB,MAAzB;AACAH,EAAAA,WAAW,CAACI,QAAZ,GAAuB,CAAC,CAAxB;AACAH,EAAAA,YAAY,CAACI,YAAb,GAA4B,OAA5B;AACAJ,EAAAA,YAAY,CAACW,YAAb,CAA2B,eAA3B,EAA4CZ,WAAW,CAACa,EAAxD,EAZsC,CAYwB;;AAC9DhC,EAAAA,eAAe,CAAEoB,YAAF,CAAf;AACAb,EAAAA,KAAK,CAACmB,SAAN,CAAgBO,GAAhB,CAAqBlC,WAArB,EAdsC,CAgBtC;;AACA6B,EAAAA,QAAQ,CAACM,mBAAT,CAA8B,SAA9B,EAAyCxB,kBAAzC,EAA6D;AAC5DoB,IAAAA,OAAO,EAAE;AADmD,GAA7D;AAGAF,EAAAA,QAAQ,CAACM,mBAAT,CAA8B,OAA9B,EAAuCnB,gBAAvC,EAAyD;AACxDe,IAAAA,OAAO,EAAE;AAD+C,GAAzD;AAIAhC,EAAAA,mBAAmB,GAAG,IAAtB;AACA,C,CAED;;;AACA8B,QAAQ,CAACC,gBAAT,CACC,OADD,EAEGlB,KAAF,IAAa;AACZ;AACA,QAAMJ,KAAK,GAAGI,KAAK,CAACK,MAAN,CAAaC,OAAb,CACb,0CADa,CAAd;AAIA;AACF;AACA;AACA;;AACE,MAAKnB,mBAAmB,IAAIS,KAAK,KAAKT,mBAAtC,EAA4D;AAC3De,IAAAA,2BAA2B;AAC3B,GAZW,CAcZ;;;AACA,MACCN,KAAK,YAAY4B,eAAjB,IACA5B,KAAK,CAACmB,SAAN,CAAgBU,QAAhB,CAA0BrC,WAA1B,CAFD,EAGE;AACDmB,IAAAA,iBAAiB,CAAEX,KAAF,CAAjB;AACA;AACD,CAvBF,EAwBC;AAAEuB,EAAAA,OAAO,EAAE;AAAX,CAxBD","sourcesContent":["/*eslint-env browser*/\n\n/** @type {?HTMLFormElement} */\nlet expandedSearchBlock = null;\n\nconst hiddenClass = 'wp-block-search__searchfield-hidden';\n\n/**\n * Toggles aria-label with data-toggled-aria-label.\n *\n * @param {HTMLElement} element\n */\nfunction toggleAriaLabel( element ) {\n\tif ( ! ( 'toggledAriaLabel' in element.dataset ) ) {\n\t\tthrow new Error( 'Element lacks toggledAriaLabel in dataset.' );\n\t}\n\n\tconst ariaLabel = element.dataset.toggledAriaLabel;\n\telement.dataset.toggledAriaLabel = element.ariaLabel;\n\telement.ariaLabel = ariaLabel;\n}\n\n/**\n * Gets search input.\n *\n * @param {HTMLFormElement} block Search block.\n * @return {HTMLInputElement} Search input.\n */\nfunction getSearchInput( block ) {\n\treturn block.querySelector( '.wp-block-search__input' );\n}\n\n/**\n * Gets search button.\n *\n * @param {HTMLFormElement} block Search block.\n * @return {HTMLButtonElement} Search button.\n */\nfunction getSearchButton( block ) {\n\treturn block.querySelector( '.wp-block-search__button' );\n}\n\n/**\n * Handles keydown event to collapse an expanded Search block (when pressing Escape key).\n *\n * @param {KeyboardEvent} event\n */\nfunction handleKeydownEvent( event ) {\n\tif ( ! expandedSearchBlock ) {\n\t\t// In case the event listener wasn't removed in time.\n\t\treturn;\n\t}\n\n\tif ( event.key === 'Escape' ) {\n\t\tconst block = expandedSearchBlock; // This is nullified by collapseExpandedSearchBlock().\n\t\tcollapseExpandedSearchBlock();\n\t\tgetSearchButton( block ).focus();\n\t}\n}\n\n/**\n * Handles keyup event to collapse an expanded Search block (e.g. when tabbing out of expanded Search block).\n *\n * @param {KeyboardEvent} event\n */\nfunction handleKeyupEvent( event ) {\n\tif ( ! expandedSearchBlock ) {\n\t\t// In case the event listener wasn't removed in time.\n\t\treturn;\n\t}\n\n\tif ( event.target.closest( '.wp-block-search' ) !== expandedSearchBlock ) {\n\t\tcollapseExpandedSearchBlock();\n\t}\n}\n\n/**\n * Expands search block.\n *\n * Inverse of what is done in collapseExpandedSearchBlock().\n *\n * @param {HTMLFormElement} block Search block.\n */\nfunction expandSearchBlock( block ) {\n\t// Make sure only one is open at a time.\n\tif ( expandedSearchBlock ) {\n\t\tcollapseExpandedSearchBlock();\n\t}\n\n\tconst searchField = getSearchInput( block );\n\tconst searchButton = getSearchButton( block );\n\n\tsearchButton.type = 'submit';\n\tsearchField.ariaHidden = 'false';\n\tsearchField.tabIndex = 0;\n\tsearchButton.ariaExpanded = 'true';\n\tsearchButton.removeAttribute( 'aria-controls' ); // Note: Seemingly not reflected with searchButton.ariaControls.\n\ttoggleAriaLabel( searchButton );\n\tblock.classList.remove( hiddenClass );\n\n\tsearchField.focus(); // Note that Chrome seems to do this automatically.\n\n\t// The following two must be inverse of what is done in collapseExpandedSearchBlock().\n\tdocument.addEventListener( 'keydown', handleKeydownEvent, {\n\t\tpassive: true,\n\t} );\n\tdocument.addEventListener( 'keyup', handleKeyupEvent, {\n\t\tpassive: true,\n\t} );\n\n\texpandedSearchBlock = block;\n}\n\n/**\n * Collapses the expanded search block.\n *\n * Inverse of what is done in expandSearchBlock().\n */\nfunction collapseExpandedSearchBlock() {\n\tif ( ! expandedSearchBlock ) {\n\t\tthrow new Error( 'Expected expandedSearchBlock to be defined.' );\n\t}\n\tconst block = expandedSearchBlock;\n\tconst searchField = getSearchInput( block );\n\tconst searchButton = getSearchButton( block );\n\n\tsearchButton.type = 'button';\n\tsearchField.ariaHidden = 'true';\n\tsearchField.tabIndex = -1;\n\tsearchButton.ariaExpanded = 'false';\n\tsearchButton.setAttribute( 'aria-controls', searchField.id ); // Note: Seemingly not reflected with searchButton.ariaControls.\n\ttoggleAriaLabel( searchButton );\n\tblock.classList.add( hiddenClass );\n\n\t// The following two must be inverse of what is done in expandSearchBlock().\n\tdocument.removeEventListener( 'keydown', handleKeydownEvent, {\n\t\tpassive: true,\n\t} );\n\tdocument.removeEventListener( 'keyup', handleKeyupEvent, {\n\t\tpassive: true,\n\t} );\n\n\texpandedSearchBlock = null;\n}\n\n// Listen for click events anywhere on the document so this script can be loaded asynchronously in the head.\ndocument.addEventListener(\n\t'click',\n\t( event ) => {\n\t\t// Get the ancestor expandable Search block of the clicked element.\n\t\tconst block = event.target.closest(\n\t\t\t'.wp-block-search__button-behavior-expand'\n\t\t);\n\n\t\t/*\n\t\t * If there is already an expanded search block and either the current click was not for a Search block or it was\n\t\t * for another block, then collapse the currently-expanded block.\n\t\t */\n\t\tif ( expandedSearchBlock && block !== expandedSearchBlock ) {\n\t\t\tcollapseExpandedSearchBlock();\n\t\t}\n\n\t\t// If the click was on or inside a collapsed Search block, expand it.\n\t\tif (\n\t\t\tblock instanceof HTMLFormElement &&\n\t\t\tblock.classList.contains( hiddenClass )\n\t\t) {\n\t\t\texpandSearchBlock( block );\n\t\t}\n\t},\n\t{ passive: true }\n);\n"]}
@@ -249,6 +249,7 @@ const SiteLogo = ({
249
249
  title: __('Settings')
250
250
  }, createElement(RangeControl, {
251
251
  __nextHasNoMarginBottom: true,
252
+ __next40pxDefaultSize: true,
252
253
  label: __('Image width'),
253
254
  onChange: newWidth => setAttributes({
254
255
  width: newWidth