@wordpress/block-library 9.36.1-next.8b30e05b0.0 → 9.37.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 (302) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/audio/index.js +1 -1
  3. package/build/audio/index.js.map +2 -2
  4. package/build/avatar/edit.js +13 -38
  5. package/build/avatar/edit.js.map +2 -2
  6. package/build/breadcrumbs/block.json +3 -2
  7. package/build/breadcrumbs/edit.js +18 -18
  8. package/build/breadcrumbs/edit.js.map +2 -2
  9. package/build/button/block.json +2 -3
  10. package/build/button/deprecated.js +203 -0
  11. package/build/button/deprecated.js.map +3 -3
  12. package/build/button/edit.js +13 -24
  13. package/build/button/edit.js.map +3 -3
  14. package/build/button/index.js +1 -1
  15. package/build/button/index.js.map +2 -2
  16. package/build/button/save.js +0 -2
  17. package/build/button/save.js.map +2 -2
  18. package/build/code/index.js +1 -1
  19. package/build/code/index.js.map +2 -2
  20. package/build/comments-pagination-numbers/block.json +7 -0
  21. package/build/cover/index.js +2 -2
  22. package/build/cover/index.js.map +2 -2
  23. package/build/details/index.js +1 -1
  24. package/build/details/index.js.map +2 -2
  25. package/build/file/index.js +1 -1
  26. package/build/file/index.js.map +2 -2
  27. package/build/freeform/block.json +0 -1
  28. package/build/gallery/edit.js +1 -1
  29. package/build/gallery/edit.js.map +2 -2
  30. package/build/gallery/transforms.js +7 -3
  31. package/build/gallery/transforms.js.map +2 -2
  32. package/build/heading/index.js +1 -1
  33. package/build/heading/index.js.map +2 -2
  34. package/build/html/modal.js +18 -7
  35. package/build/html/modal.js.map +2 -2
  36. package/build/image/index.js +1 -1
  37. package/build/image/index.js.map +2 -2
  38. package/build/index.js +9 -3
  39. package/build/index.js.map +2 -2
  40. package/build/list-item/index.js +1 -1
  41. package/build/list-item/index.js.map +2 -2
  42. package/build/math/edit.js +14 -2
  43. package/build/math/edit.js.map +2 -2
  44. package/build/media-text/index.js +1 -1
  45. package/build/media-text/index.js.map +2 -2
  46. package/build/more/index.js +1 -1
  47. package/build/more/index.js.map +2 -2
  48. package/build/navigation/block.json +3 -0
  49. package/build/navigation/edit/index.js +57 -83
  50. package/build/navigation/edit/index.js.map +3 -3
  51. package/build/navigation/edit/overlay-menu-preview-button.js +96 -0
  52. package/build/navigation/edit/overlay-menu-preview-button.js.map +7 -0
  53. package/build/navigation/edit/overlay-menu-preview-controls.js +90 -0
  54. package/build/navigation/edit/overlay-menu-preview-controls.js.map +7 -0
  55. package/build/navigation/edit/overlay-panel.js +86 -0
  56. package/build/navigation/edit/overlay-panel.js.map +7 -0
  57. package/build/navigation/edit/overlay-template-part-selector.js +163 -0
  58. package/build/navigation/edit/overlay-template-part-selector.js.map +7 -0
  59. package/build/navigation/edit/overlay-visibility-control.js +54 -0
  60. package/build/navigation/edit/overlay-visibility-control.js.map +7 -0
  61. package/build/navigation/edit/responsive-wrapper.js +14 -2
  62. package/build/navigation/edit/responsive-wrapper.js.map +2 -2
  63. package/build/navigation-link/edit.js +7 -21
  64. package/build/navigation-link/edit.js.map +2 -2
  65. package/build/navigation-link/index.js +1 -1
  66. package/build/navigation-link/index.js.map +2 -2
  67. package/build/navigation-link/shared/index.js +5 -2
  68. package/build/navigation-link/shared/index.js.map +2 -2
  69. package/build/navigation-link/shared/use-handle-link-change.js +84 -0
  70. package/build/navigation-link/shared/use-handle-link-change.js.map +7 -0
  71. package/build/navigation-submenu/index.js +1 -1
  72. package/build/navigation-submenu/index.js.map +2 -2
  73. package/build/page-list-item/edit.js +4 -3
  74. package/build/page-list-item/edit.js.map +2 -2
  75. package/build/paragraph/index.js +1 -1
  76. package/build/paragraph/index.js.map +2 -2
  77. package/build/post-title/edit.js +6 -4
  78. package/build/post-title/edit.js.map +2 -2
  79. package/build/preformatted/index.js +1 -1
  80. package/build/preformatted/index.js.map +2 -2
  81. package/build/pullquote/index.js +1 -1
  82. package/build/pullquote/index.js.map +2 -2
  83. package/build/query/edit/inspector-controls/author-control.js +0 -1
  84. package/build/query/edit/inspector-controls/author-control.js.map +2 -2
  85. package/build/query/edit/inspector-controls/format-controls.js +0 -1
  86. package/build/query/edit/inspector-controls/format-controls.js.map +2 -2
  87. package/build/query/edit/inspector-controls/parent-control.js +1 -2
  88. package/build/query/edit/inspector-controls/parent-control.js.map +2 -2
  89. package/build/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  90. package/build/query/edit/inspector-controls/taxonomy-controls.js.map +2 -2
  91. package/build/search/index.js +1 -1
  92. package/build/search/index.js.map +2 -2
  93. package/build/social-link/index.js +1 -1
  94. package/build/social-link/index.js.map +2 -2
  95. package/build/template-part/edit/index.js +3 -31
  96. package/build/template-part/edit/index.js.map +2 -2
  97. package/build/template-part/edit/utils/get-template-part-icon.js +9 -4
  98. package/build/template-part/edit/utils/get-template-part-icon.js.map +3 -3
  99. package/build/template-part/edit/utils/hooks.js +3 -2
  100. package/build/template-part/edit/utils/hooks.js.map +2 -2
  101. package/build/terms-query/edit/inspector-controls/include-control.js +0 -1
  102. package/build/terms-query/edit/inspector-controls/include-control.js.map +2 -2
  103. package/build/utils/deprecated-text-align-attributes.js +70 -0
  104. package/build/utils/deprecated-text-align-attributes.js.map +7 -0
  105. package/build/utils/migrate-text-align.js +42 -0
  106. package/build/utils/migrate-text-align.js.map +7 -0
  107. package/build/verse/index.js +1 -1
  108. package/build/verse/index.js.map +2 -2
  109. package/build/video/index.js +1 -1
  110. package/build/video/index.js.map +2 -2
  111. package/build-module/audio/index.js +1 -1
  112. package/build-module/audio/index.js.map +2 -2
  113. package/build-module/avatar/edit.js +13 -38
  114. package/build-module/avatar/edit.js.map +2 -2
  115. package/build-module/breadcrumbs/block.json +3 -2
  116. package/build-module/breadcrumbs/edit.js +18 -18
  117. package/build-module/breadcrumbs/edit.js.map +2 -2
  118. package/build-module/button/block.json +2 -3
  119. package/build-module/button/deprecated.js +205 -1
  120. package/build-module/button/deprecated.js.map +2 -2
  121. package/build-module/button/edit.js +13 -25
  122. package/build-module/button/edit.js.map +2 -2
  123. package/build-module/button/index.js +1 -1
  124. package/build-module/button/index.js.map +2 -2
  125. package/build-module/button/save.js +0 -2
  126. package/build-module/button/save.js.map +2 -2
  127. package/build-module/code/index.js +1 -1
  128. package/build-module/code/index.js.map +2 -2
  129. package/build-module/comments-pagination-numbers/block.json +7 -0
  130. package/build-module/cover/index.js +2 -2
  131. package/build-module/cover/index.js.map +2 -2
  132. package/build-module/details/index.js +1 -1
  133. package/build-module/details/index.js.map +2 -2
  134. package/build-module/file/index.js +1 -1
  135. package/build-module/file/index.js.map +2 -2
  136. package/build-module/freeform/block.json +0 -1
  137. package/build-module/gallery/edit.js +1 -1
  138. package/build-module/gallery/edit.js.map +2 -2
  139. package/build-module/gallery/transforms.js +7 -3
  140. package/build-module/gallery/transforms.js.map +2 -2
  141. package/build-module/heading/index.js +1 -1
  142. package/build-module/heading/index.js.map +2 -2
  143. package/build-module/html/modal.js +19 -7
  144. package/build-module/html/modal.js.map +2 -2
  145. package/build-module/image/index.js +1 -1
  146. package/build-module/image/index.js.map +2 -2
  147. package/build-module/index.js +9 -3
  148. package/build-module/index.js.map +2 -2
  149. package/build-module/list-item/index.js +1 -1
  150. package/build-module/list-item/index.js.map +2 -2
  151. package/build-module/math/edit.js +15 -3
  152. package/build-module/math/edit.js.map +2 -2
  153. package/build-module/media-text/index.js +1 -1
  154. package/build-module/media-text/index.js.map +2 -2
  155. package/build-module/more/index.js +1 -1
  156. package/build-module/more/index.js.map +2 -2
  157. package/build-module/navigation/block.json +3 -0
  158. package/build-module/navigation/edit/index.js +58 -88
  159. package/build-module/navigation/edit/index.js.map +2 -2
  160. package/build-module/navigation/edit/overlay-menu-preview-button.js +65 -0
  161. package/build-module/navigation/edit/overlay-menu-preview-button.js.map +7 -0
  162. package/build-module/navigation/edit/overlay-menu-preview-controls.js +64 -0
  163. package/build-module/navigation/edit/overlay-menu-preview-controls.js.map +7 -0
  164. package/build-module/navigation/edit/overlay-panel.js +58 -0
  165. package/build-module/navigation/edit/overlay-panel.js.map +7 -0
  166. package/build-module/navigation/edit/overlay-template-part-selector.js +142 -0
  167. package/build-module/navigation/edit/overlay-template-part-selector.js.map +7 -0
  168. package/build-module/navigation/edit/overlay-visibility-control.js +36 -0
  169. package/build-module/navigation/edit/overlay-visibility-control.js.map +7 -0
  170. package/build-module/navigation/edit/responsive-wrapper.js +14 -2
  171. package/build-module/navigation/edit/responsive-wrapper.js.map +2 -2
  172. package/build-module/navigation-link/edit.js +9 -23
  173. package/build-module/navigation-link/edit.js.map +2 -2
  174. package/build-module/navigation-link/index.js +1 -1
  175. package/build-module/navigation-link/index.js.map +2 -2
  176. package/build-module/navigation-link/shared/index.js +3 -1
  177. package/build-module/navigation-link/shared/index.js.map +2 -2
  178. package/build-module/navigation-link/shared/use-handle-link-change.js +59 -0
  179. package/build-module/navigation-link/shared/use-handle-link-change.js.map +7 -0
  180. package/build-module/navigation-submenu/index.js +1 -1
  181. package/build-module/navigation-submenu/index.js.map +2 -2
  182. package/build-module/page-list-item/edit.js +4 -3
  183. package/build-module/page-list-item/edit.js.map +2 -2
  184. package/build-module/paragraph/index.js +1 -1
  185. package/build-module/paragraph/index.js.map +2 -2
  186. package/build-module/post-title/edit.js +6 -4
  187. package/build-module/post-title/edit.js.map +2 -2
  188. package/build-module/preformatted/index.js +1 -1
  189. package/build-module/preformatted/index.js.map +2 -2
  190. package/build-module/pullquote/index.js +1 -1
  191. package/build-module/pullquote/index.js.map +2 -2
  192. package/build-module/query/edit/inspector-controls/author-control.js +0 -1
  193. package/build-module/query/edit/inspector-controls/author-control.js.map +2 -2
  194. package/build-module/query/edit/inspector-controls/format-controls.js +0 -1
  195. package/build-module/query/edit/inspector-controls/format-controls.js.map +2 -2
  196. package/build-module/query/edit/inspector-controls/parent-control.js +1 -2
  197. package/build-module/query/edit/inspector-controls/parent-control.js.map +2 -2
  198. package/build-module/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  199. package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +2 -2
  200. package/build-module/search/index.js +1 -1
  201. package/build-module/search/index.js.map +2 -2
  202. package/build-module/social-link/index.js +1 -1
  203. package/build-module/social-link/index.js.map +2 -2
  204. package/build-module/template-part/edit/index.js +3 -31
  205. package/build-module/template-part/edit/index.js.map +2 -2
  206. package/build-module/template-part/edit/utils/get-template-part-icon.js +10 -4
  207. package/build-module/template-part/edit/utils/get-template-part-icon.js.map +2 -2
  208. package/build-module/template-part/edit/utils/hooks.js +3 -2
  209. package/build-module/template-part/edit/utils/hooks.js.map +2 -2
  210. package/build-module/terms-query/edit/inspector-controls/include-control.js +0 -1
  211. package/build-module/terms-query/edit/inspector-controls/include-control.js.map +2 -2
  212. package/build-module/utils/deprecated-text-align-attributes.js +39 -0
  213. package/build-module/utils/deprecated-text-align-attributes.js.map +7 -0
  214. package/build-module/utils/migrate-text-align.js +21 -0
  215. package/build-module/utils/migrate-text-align.js.map +7 -0
  216. package/build-module/verse/index.js +1 -1
  217. package/build-module/verse/index.js.map +2 -2
  218. package/build-module/video/index.js +1 -1
  219. package/build-module/video/index.js.map +2 -2
  220. package/build-style/accordion-heading/style-rtl.css +2 -18
  221. package/build-style/accordion-heading/style.css +2 -18
  222. package/build-style/classic-rtl.css +24 -0
  223. package/build-style/classic.css +24 -0
  224. package/build-style/common-rtl.css +4 -4
  225. package/build-style/common.css +4 -0
  226. package/build-style/editor-rtl.css +5 -0
  227. package/build-style/editor.css +5 -0
  228. package/build-style/navigation/editor-rtl.css +5 -0
  229. package/build-style/navigation/editor.css +5 -0
  230. package/build-style/style-rtl.css +8 -22
  231. package/build-style/style.css +8 -18
  232. package/build-style/verse/style-rtl.css +2 -0
  233. package/build-style/verse/style.css +2 -0
  234. package/package.json +40 -38
  235. package/src/accordion-heading/style.scss +2 -30
  236. package/src/audio/index.js +1 -1
  237. package/src/avatar/edit.js +68 -83
  238. package/src/breadcrumbs/block.json +3 -2
  239. package/src/breadcrumbs/edit.js +18 -18
  240. package/src/breadcrumbs/index.php +38 -17
  241. package/src/button/block.json +2 -3
  242. package/src/button/deprecated.js +214 -0
  243. package/src/button/edit.js +2 -11
  244. package/src/button/index.js +1 -1
  245. package/src/button/save.js +0 -2
  246. package/src/classic.scss +38 -0
  247. package/src/code/index.js +1 -1
  248. package/src/comments-pagination-numbers/block.json +7 -0
  249. package/src/common.scss +4 -0
  250. package/src/cover/index.js +2 -2
  251. package/src/details/index.js +1 -1
  252. package/src/file/index.js +1 -1
  253. package/src/freeform/block.json +0 -1
  254. package/src/gallery/edit.js +4 -1
  255. package/src/gallery/transforms.js +6 -2
  256. package/src/heading/index.js +1 -1
  257. package/src/html/modal.js +39 -20
  258. package/src/image/index.js +1 -1
  259. package/src/index.js +9 -3
  260. package/src/list-item/index.js +1 -1
  261. package/src/math/edit.js +15 -3
  262. package/src/media-text/index.js +1 -1
  263. package/src/more/index.js +1 -1
  264. package/src/navigation/block.json +3 -0
  265. package/src/navigation/edit/index.js +77 -82
  266. package/src/navigation/edit/overlay-menu-preview-button.js +82 -0
  267. package/src/navigation/edit/overlay-menu-preview-controls.js +65 -0
  268. package/src/navigation/edit/overlay-panel.js +78 -0
  269. package/src/navigation/edit/overlay-template-part-selector.js +198 -0
  270. package/src/navigation/edit/overlay-visibility-control.js +40 -0
  271. package/src/navigation/edit/responsive-wrapper.js +16 -1
  272. package/src/navigation/edit/test/overlay-template-part-selector.js +461 -0
  273. package/src/navigation/editor.scss +5 -0
  274. package/src/navigation-link/edit.js +9 -26
  275. package/src/navigation-link/index.js +1 -1
  276. package/src/navigation-link/shared/index.js +1 -0
  277. package/src/navigation-link/shared/test/use-handle-link-change.test.js +804 -0
  278. package/src/navigation-link/shared/use-handle-link-change.js +91 -0
  279. package/src/navigation-submenu/index.js +1 -1
  280. package/src/page-list/index.php +3 -4
  281. package/src/page-list-item/edit.js +4 -3
  282. package/src/paragraph/index.js +1 -1
  283. package/src/post-title/edit.js +8 -4
  284. package/src/post-title/index.php +1 -1
  285. package/src/preformatted/index.js +1 -1
  286. package/src/pullquote/index.js +1 -1
  287. package/src/query/edit/inspector-controls/author-control.js +0 -1
  288. package/src/query/edit/inspector-controls/format-controls.js +0 -1
  289. package/src/query/edit/inspector-controls/parent-control.js +0 -1
  290. package/src/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  291. package/src/search/index.js +1 -1
  292. package/src/social-link/index.js +1 -1
  293. package/src/template-part/edit/index.js +5 -41
  294. package/src/template-part/edit/utils/get-template-part-icon.js +23 -4
  295. package/src/template-part/edit/utils/hooks.js +10 -2
  296. package/src/terms-query/edit/inspector-controls/include-control.js +0 -1
  297. package/src/utils/deprecated-text-align-attributes.js +45 -0
  298. package/src/utils/migrate-text-align.js +22 -0
  299. package/src/verse/index.js +1 -1
  300. package/src/verse/style.scss +4 -0
  301. package/src/video/index.js +1 -1
  302. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,64 @@
1
+ // packages/block-library/src/navigation/edit/overlay-menu-preview-controls.js
2
+ import {
3
+ __experimentalVStack as VStack,
4
+ __experimentalToggleGroupControl as ToggleGroupControl,
5
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
6
+ ToggleControl
7
+ } from "@wordpress/components";
8
+ import { __ } from "@wordpress/i18n";
9
+ import OverlayMenuIcon from "./overlay-menu-icon";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ function OverlayMenuPreviewControls({
12
+ hasIcon,
13
+ icon,
14
+ setAttributes
15
+ }) {
16
+ return /* @__PURE__ */ jsxs(VStack, { spacing: 4, children: [
17
+ /* @__PURE__ */ jsx(
18
+ ToggleControl,
19
+ {
20
+ __nextHasNoMarginBottom: true,
21
+ label: __("Show icon button"),
22
+ help: __(
23
+ "Configure the visual appearance of the button that toggles the overlay menu."
24
+ ),
25
+ onChange: (value) => setAttributes({ hasIcon: value }),
26
+ checked: hasIcon
27
+ }
28
+ ),
29
+ /* @__PURE__ */ jsxs(
30
+ ToggleGroupControl,
31
+ {
32
+ __next40pxDefaultSize: true,
33
+ __nextHasNoMarginBottom: true,
34
+ className: "wp-block-navigation__overlay-menu-icon-toggle-group",
35
+ label: __("Icon"),
36
+ value: icon,
37
+ onChange: (value) => setAttributes({ icon: value }),
38
+ isBlock: true,
39
+ children: [
40
+ /* @__PURE__ */ jsx(
41
+ ToggleGroupControlOption,
42
+ {
43
+ value: "handle",
44
+ "aria-label": __("handle"),
45
+ label: /* @__PURE__ */ jsx(OverlayMenuIcon, { icon: "handle" })
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx(
49
+ ToggleGroupControlOption,
50
+ {
51
+ value: "menu",
52
+ "aria-label": __("menu"),
53
+ label: /* @__PURE__ */ jsx(OverlayMenuIcon, { icon: "menu" })
54
+ }
55
+ )
56
+ ]
57
+ }
58
+ )
59
+ ] });
60
+ }
61
+ export {
62
+ OverlayMenuPreviewControls as default
63
+ };
64
+ //# sourceMappingURL=overlay-menu-preview-controls.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/navigation/edit/overlay-menu-preview-controls.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport OverlayMenuIcon from './overlay-menu-icon';\n\n/**\n * Overlay Menu Preview Controls component.\n * Used within PanelBody context (not ToolsPanel).\n *\n * @param {Object} props Component props.\n * @param {boolean} props.hasIcon Whether the overlay menu has an icon.\n * @param {string} props.icon Icon type for overlay menu.\n * @param {Function} props.setAttributes Function to update block attributes.\n * @return {JSX.Element} The overlay menu preview controls.\n */\nexport default function OverlayMenuPreviewControls( {\n\thasIcon,\n\ticon,\n\tsetAttributes,\n} ) {\n\treturn (\n\t\t<VStack spacing={ 4 }>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Show icon button' ) }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Configure the visual appearance of the button that toggles the overlay menu.'\n\t\t\t\t) }\n\t\t\t\tonChange={ ( value ) => setAttributes( { hasIcon: value } ) }\n\t\t\t\tchecked={ hasIcon }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tclassName=\"wp-block-navigation__overlay-menu-icon-toggle-group\"\n\t\t\t\tlabel={ __( 'Icon' ) }\n\t\t\t\tvalue={ icon }\n\t\t\t\tonChange={ ( value ) => setAttributes( { icon: value } ) }\n\t\t\t\tisBlock\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"handle\"\n\t\t\t\t\taria-label={ __( 'handle' ) }\n\t\t\t\t\tlabel={ <OverlayMenuIcon icon=\"handle\" /> }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"menu\"\n\t\t\t\t\taria-label={ __( 'menu' ) }\n\t\t\t\t\tlabel={ <OverlayMenuIcon icon=\"menu\" /> }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t</VStack>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC,wBAAwB;AAAA,EACxB,oCAAoC;AAAA,EACpC,0CAA0C;AAAA,EAC1C;AAAA,OACM;AACP,SAAS,UAAU;AAKnB,OAAO,qBAAqB;AAmBzB,cASA,YATA;AAPY,SAAR,2BAA6C;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC,qBAAC,UAAO,SAAU,GACjB;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,yBAAuB;AAAA,QACvB,OAAQ,GAAI,kBAAmB;AAAA,QAC/B,MAAO;AAAA,UACN;AAAA,QACD;AAAA,QACA,UAAW,CAAE,UAAW,cAAe,EAAE,SAAS,MAAM,CAAE;AAAA,QAC1D,SAAU;AAAA;AAAA,IACX;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,uBAAqB;AAAA,QACrB,yBAAuB;AAAA,QACvB,WAAU;AAAA,QACV,OAAQ,GAAI,MAAO;AAAA,QACnB,OAAQ;AAAA,QACR,UAAW,CAAE,UAAW,cAAe,EAAE,MAAM,MAAM,CAAE;AAAA,QACvD,SAAO;AAAA,QAEP;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,OAAM;AAAA,cACN,cAAa,GAAI,QAAS;AAAA,cAC1B,OAAQ,oBAAC,mBAAgB,MAAK,UAAS;AAAA;AAAA,UACxC;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,OAAM;AAAA,cACN,cAAa,GAAI,MAAO;AAAA,cACxB,OAAQ,oBAAC,mBAAgB,MAAK,QAAO;AAAA;AAAA,UACtC;AAAA;AAAA;AAAA,IACD;AAAA,KACD;AAEF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,58 @@
1
+ // packages/block-library/src/navigation/edit/overlay-panel.js
2
+ import {
3
+ PanelBody,
4
+ __experimentalVStack as VStack
5
+ } from "@wordpress/components";
6
+ import { __ } from "@wordpress/i18n";
7
+ import OverlayTemplatePartSelector from "./overlay-template-part-selector";
8
+ import OverlayVisibilityControl from "./overlay-visibility-control";
9
+ import OverlayMenuPreviewButton from "./overlay-menu-preview-button";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ function OverlayPanel({
12
+ overlayMenu,
13
+ overlay,
14
+ setAttributes,
15
+ onNavigateToEntityRecord,
16
+ overlayMenuPreview,
17
+ setOverlayMenuPreview,
18
+ hasIcon,
19
+ icon,
20
+ overlayMenuPreviewClasses,
21
+ overlayMenuPreviewId,
22
+ isResponsive
23
+ }) {
24
+ return /* @__PURE__ */ jsx(PanelBody, { title: __("Overlay"), initialOpen: true, children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, children: [
25
+ /* @__PURE__ */ jsx(
26
+ OverlayVisibilityControl,
27
+ {
28
+ overlayMenu,
29
+ setAttributes
30
+ }
31
+ ),
32
+ overlayMenu !== "never" && /* @__PURE__ */ jsx(
33
+ OverlayMenuPreviewButton,
34
+ {
35
+ isResponsive,
36
+ overlayMenuPreview,
37
+ setOverlayMenuPreview,
38
+ hasIcon,
39
+ icon,
40
+ setAttributes,
41
+ overlayMenuPreviewClasses,
42
+ overlayMenuPreviewId
43
+ }
44
+ ),
45
+ overlayMenu !== "never" && /* @__PURE__ */ jsx(
46
+ OverlayTemplatePartSelector,
47
+ {
48
+ overlay,
49
+ setAttributes,
50
+ onNavigateToEntityRecord
51
+ }
52
+ )
53
+ ] }) });
54
+ }
55
+ export {
56
+ OverlayPanel as default
57
+ };
58
+ //# sourceMappingURL=overlay-panel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/navigation/edit/overlay-panel.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport OverlayTemplatePartSelector from './overlay-template-part-selector';\nimport OverlayVisibilityControl from './overlay-visibility-control';\nimport OverlayMenuPreviewButton from './overlay-menu-preview-button';\n\n/**\n * Overlay Panel component for Navigation block.\n *\n * @param {Object} props Component props.\n * @param {string} props.overlayMenu Overlay menu setting ('never', 'mobile', 'always').\n * @param {string} props.overlay Currently selected overlay template part ID.\n * @param {Function} props.setAttributes Function to update block attributes.\n * @param {Function} props.onNavigateToEntityRecord Function to navigate to template part editor.\n * @param {boolean} props.overlayMenuPreview Whether overlay menu preview is open.\n * @param {Function} props.setOverlayMenuPreview Function to toggle overlay menu preview.\n * @param {boolean} props.hasIcon Whether the overlay menu has an icon.\n * @param {string} props.icon Icon type for overlay menu.\n * @param {string} props.overlayMenuPreviewClasses CSS classes for overlay menu preview button.\n * @param {string} props.overlayMenuPreviewId ID for overlay menu preview.\n * @param {boolean} props.isResponsive Whether overlay menu is responsive.\n * @return {JSX.Element|null} The overlay panel component or null if overlay is disabled.\n */\nexport default function OverlayPanel( {\n\toverlayMenu,\n\toverlay,\n\tsetAttributes,\n\tonNavigateToEntityRecord,\n\toverlayMenuPreview,\n\tsetOverlayMenuPreview,\n\thasIcon,\n\ticon,\n\toverlayMenuPreviewClasses,\n\toverlayMenuPreviewId,\n\tisResponsive,\n} ) {\n\treturn (\n\t\t<PanelBody title={ __( 'Overlay' ) } initialOpen>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<OverlayVisibilityControl\n\t\t\t\t\toverlayMenu={ overlayMenu }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\n\t\t\t\t{ overlayMenu !== 'never' && (\n\t\t\t\t\t<OverlayMenuPreviewButton\n\t\t\t\t\t\tisResponsive={ isResponsive }\n\t\t\t\t\t\toverlayMenuPreview={ overlayMenuPreview }\n\t\t\t\t\t\tsetOverlayMenuPreview={ setOverlayMenuPreview }\n\t\t\t\t\t\thasIcon={ hasIcon }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\toverlayMenuPreviewClasses={ overlayMenuPreviewClasses }\n\t\t\t\t\t\toverlayMenuPreviewId={ overlayMenuPreviewId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ overlayMenu !== 'never' && (\n\t\t\t\t\t<OverlayTemplatePartSelector\n\t\t\t\t\t\toverlay={ overlay }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonNavigateToEntityRecord={ onNavigateToEntityRecord }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</PanelBody>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,UAAU;AAKnB,OAAO,iCAAiC;AACxC,OAAO,8BAA8B;AACrC,OAAO,8BAA8B;AAkClC,SACC,KADD;AAfY,SAAR,aAA+B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC,oBAAC,aAAU,OAAQ,GAAI,SAAU,GAAI,aAAW,MAC/C,+BAAC,UAAO,SAAU,GACjB;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IAEE,gBAAgB,WACjB;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IAGC,gBAAgB,WACjB;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,KAEF,GACD;AAEF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,142 @@
1
+ // packages/block-library/src/navigation/edit/overlay-template-part-selector.js
2
+ import { useMemo } from "@wordpress/element";
3
+ import { useEntityRecords } from "@wordpress/core-data";
4
+ import { SelectControl, Spinner, Button } from "@wordpress/components";
5
+ import { __, sprintf } from "@wordpress/i18n";
6
+ import { decodeEntities } from "@wordpress/html-entities";
7
+ import { createTemplatePartId } from "../../template-part/edit/utils/create-template-part-id";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ function parseTemplatePartId(templatePartId) {
10
+ if (!templatePartId || typeof templatePartId !== "string") {
11
+ return null;
12
+ }
13
+ const parts = templatePartId.split("//");
14
+ if (parts.length !== 2) {
15
+ return null;
16
+ }
17
+ return {
18
+ theme: parts[0],
19
+ slug: parts[1]
20
+ };
21
+ }
22
+ function OverlayTemplatePartSelector({
23
+ overlay,
24
+ setAttributes,
25
+ onNavigateToEntityRecord
26
+ }) {
27
+ const {
28
+ records: templateParts,
29
+ isResolving,
30
+ hasResolved
31
+ } = useEntityRecords("postType", "wp_template_part", {
32
+ per_page: -1
33
+ });
34
+ const overlayTemplateParts = useMemo(() => {
35
+ if (!templateParts) {
36
+ return [];
37
+ }
38
+ return templateParts.filter(
39
+ (templatePart) => templatePart.area === "overlay"
40
+ );
41
+ }, [templateParts]);
42
+ const options = useMemo(() => {
43
+ const baseOptions = [
44
+ {
45
+ label: __("None (default)"),
46
+ value: ""
47
+ }
48
+ ];
49
+ if (!hasResolved || isResolving) {
50
+ return baseOptions;
51
+ }
52
+ const templatePartOptions = overlayTemplateParts.map(
53
+ (templatePart) => {
54
+ const templatePartId = createTemplatePartId(
55
+ templatePart.theme,
56
+ templatePart.slug
57
+ );
58
+ const label = templatePart.title?.rendered ? decodeEntities(templatePart.title.rendered) : templatePart.slug;
59
+ return {
60
+ label,
61
+ value: templatePartId
62
+ };
63
+ }
64
+ );
65
+ return [...baseOptions, ...templatePartOptions];
66
+ }, [overlayTemplateParts, hasResolved, isResolving]);
67
+ const parsedTemplatePart = useMemo(() => {
68
+ return parseTemplatePartId(overlay);
69
+ }, [overlay]);
70
+ const selectedTemplatePart = useMemo(() => {
71
+ if (!overlay || !overlayTemplateParts) {
72
+ return null;
73
+ }
74
+ return overlayTemplateParts.find((templatePart) => {
75
+ const templatePartId = createTemplatePartId(
76
+ templatePart.theme,
77
+ templatePart.slug
78
+ );
79
+ return templatePartId === overlay;
80
+ });
81
+ }, [overlay, overlayTemplateParts]);
82
+ const handleSelectChange = (value) => {
83
+ setAttributes({
84
+ overlay: value || void 0
85
+ });
86
+ };
87
+ const handleEditClick = () => {
88
+ if (!overlay || !onNavigateToEntityRecord) {
89
+ return;
90
+ }
91
+ onNavigateToEntityRecord({
92
+ postId: overlay,
93
+ postType: "wp_template_part"
94
+ });
95
+ };
96
+ const isEditButtonDisabled = !overlay || !parsedTemplatePart || !onNavigateToEntityRecord || isResolving;
97
+ if (isResolving && !hasResolved) {
98
+ return /* @__PURE__ */ jsxs("div", { className: "wp-block-navigation__overlay-selector", children: [
99
+ /* @__PURE__ */ jsx(Spinner, {}),
100
+ /* @__PURE__ */ jsx("p", { children: __("Loading overlays\u2026") })
101
+ ] });
102
+ }
103
+ return /* @__PURE__ */ jsxs("div", { className: "wp-block-navigation__overlay-selector", children: [
104
+ /* @__PURE__ */ jsx(
105
+ SelectControl,
106
+ {
107
+ __next40pxDefaultSize: true,
108
+ __nextHasNoMarginBottom: true,
109
+ label: __("Overlay template"),
110
+ value: overlay || "",
111
+ options,
112
+ onChange: handleSelectChange,
113
+ disabled: isResolving,
114
+ accessibleWhenDisabled: true,
115
+ help: overlayTemplateParts.length === 0 && hasResolved ? __("No overlays found.") : __("Select an overlay to use for the navigation.")
116
+ }
117
+ ),
118
+ overlay && /* @__PURE__ */ jsx(
119
+ Button,
120
+ {
121
+ __next40pxDefaultSize: true,
122
+ variant: "secondary",
123
+ onClick: handleEditClick,
124
+ disabled: isEditButtonDisabled,
125
+ accessibleWhenDisabled: true,
126
+ "aria-label": selectedTemplatePart ? sprintf(
127
+ /* translators: %s: Overlay title. */
128
+ __("Edit overlay: %s"),
129
+ selectedTemplatePart.title?.rendered ? decodeEntities(
130
+ selectedTemplatePart.title.rendered
131
+ ) : selectedTemplatePart.slug
132
+ ) : __("Edit overlay"),
133
+ className: "wp-block-navigation__overlay-edit-button",
134
+ children: __("Edit")
135
+ }
136
+ )
137
+ ] });
138
+ }
139
+ export {
140
+ OverlayTemplatePartSelector as default
141
+ };
142
+ //# sourceMappingURL=overlay-template-part-selector.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/navigation/edit/overlay-template-part-selector.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { SelectControl, Spinner, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { createTemplatePartId } from '../../template-part/edit/utils/create-template-part-id';\n\n/**\n * Parses a template part ID into theme and slug components.\n *\n * @param {string} templatePartId Template part ID in format \"theme//slug\".\n * @return {{theme: string, slug: string}|null} Parsed components or null if invalid.\n */\nfunction parseTemplatePartId( templatePartId ) {\n\tif ( ! templatePartId || typeof templatePartId !== 'string' ) {\n\t\treturn null;\n\t}\n\n\tconst parts = templatePartId.split( '//' );\n\tif ( parts.length !== 2 ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttheme: parts[ 0 ],\n\t\tslug: parts[ 1 ],\n\t};\n}\n\n/**\n * Overlay Template Part Selector component.\n *\n * @param {Object} props Component props.\n * @param {string} props.overlay Currently selected overlay template part ID.\n * @param {Function} props.setAttributes Function to update block attributes.\n * @param {Function} props.onNavigateToEntityRecord Function to navigate to template part editor.\n * @return {JSX.Element} The overlay template part selector component.\n */\nexport default function OverlayTemplatePartSelector( {\n\toverlay,\n\tsetAttributes,\n\tonNavigateToEntityRecord,\n} ) {\n\tconst {\n\t\trecords: templateParts,\n\t\tisResolving,\n\t\thasResolved,\n\t} = useEntityRecords( 'postType', 'wp_template_part', {\n\t\tper_page: -1,\n\t} );\n\n\t// Filter template parts by overlay area\n\tconst overlayTemplateParts = useMemo( () => {\n\t\tif ( ! templateParts ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn templateParts.filter(\n\t\t\t( templatePart ) => templatePart.area === 'overlay'\n\t\t);\n\t}, [ templateParts ] );\n\n\t// Build options for SelectControl\n\tconst options = useMemo( () => {\n\t\tconst baseOptions = [\n\t\t\t{\n\t\t\t\tlabel: __( 'None (default)' ),\n\t\t\t\tvalue: '',\n\t\t\t},\n\t\t];\n\n\t\tif ( ! hasResolved || isResolving ) {\n\t\t\treturn baseOptions;\n\t\t}\n\n\t\tconst templatePartOptions = overlayTemplateParts.map(\n\t\t\t( templatePart ) => {\n\t\t\t\tconst templatePartId = createTemplatePartId(\n\t\t\t\t\ttemplatePart.theme,\n\t\t\t\t\ttemplatePart.slug\n\t\t\t\t);\n\t\t\t\tconst label = templatePart.title?.rendered\n\t\t\t\t\t? decodeEntities( templatePart.title.rendered )\n\t\t\t\t\t: templatePart.slug;\n\n\t\t\t\treturn {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue: templatePartId,\n\t\t\t\t};\n\t\t\t}\n\t\t);\n\n\t\treturn [ ...baseOptions, ...templatePartOptions ];\n\t}, [ overlayTemplateParts, hasResolved, isResolving ] );\n\n\t// Parse selected template part for navigation\n\tconst parsedTemplatePart = useMemo( () => {\n\t\treturn parseTemplatePartId( overlay );\n\t}, [ overlay ] );\n\n\t// Find the selected template part to get its title\n\tconst selectedTemplatePart = useMemo( () => {\n\t\tif ( ! overlay || ! overlayTemplateParts ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn overlayTemplateParts.find( ( templatePart ) => {\n\t\t\tconst templatePartId = createTemplatePartId(\n\t\t\t\ttemplatePart.theme,\n\t\t\t\ttemplatePart.slug\n\t\t\t);\n\t\t\treturn templatePartId === overlay;\n\t\t} );\n\t}, [ overlay, overlayTemplateParts ] );\n\n\tconst handleSelectChange = ( value ) => {\n\t\tsetAttributes( {\n\t\t\toverlay: value || undefined,\n\t\t} );\n\t};\n\n\tconst handleEditClick = () => {\n\t\tif ( ! overlay || ! onNavigateToEntityRecord ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: overlay,\n\t\t\tpostType: 'wp_template_part',\n\t\t} );\n\t};\n\n\tconst isEditButtonDisabled =\n\t\t! overlay ||\n\t\t! parsedTemplatePart ||\n\t\t! onNavigateToEntityRecord ||\n\t\tisResolving;\n\n\tif ( isResolving && ! hasResolved ) {\n\t\treturn (\n\t\t\t<div className=\"wp-block-navigation__overlay-selector\">\n\t\t\t\t<Spinner />\n\t\t\t\t<p>{ __( 'Loading overlays\u2026' ) }</p>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"wp-block-navigation__overlay-selector\">\n\t\t\t<SelectControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Overlay template' ) }\n\t\t\t\tvalue={ overlay || '' }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ handleSelectChange }\n\t\t\t\tdisabled={ isResolving }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\thelp={\n\t\t\t\t\toverlayTemplateParts.length === 0 && hasResolved\n\t\t\t\t\t\t? __( 'No overlays found.' )\n\t\t\t\t\t\t: __( 'Select an overlay to use for the navigation.' )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ overlay && (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ handleEditClick }\n\t\t\t\t\tdisabled={ isEditButtonDisabled }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tselectedTemplatePart\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Overlay title. */\n\t\t\t\t\t\t\t\t\t__( 'Edit overlay: %s' ),\n\t\t\t\t\t\t\t\t\tselectedTemplatePart.title?.rendered\n\t\t\t\t\t\t\t\t\t\t? decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\t\tselectedTemplatePart.title\n\t\t\t\t\t\t\t\t\t\t\t\t\t.rendered\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: selectedTemplatePart.slug\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'Edit overlay' )\n\t\t\t\t\t}\n\t\t\t\t\tclassName=\"wp-block-navigation__overlay-edit-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ // packages/block-library/src/navigation/edit/overlay-visibility-control.js
2
+ import {
3
+ __experimentalToggleGroupControl as ToggleGroupControl,
4
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption
5
+ } from "@wordpress/components";
6
+ import { __ } from "@wordpress/i18n";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function OverlayVisibilityControl({
9
+ overlayMenu,
10
+ setAttributes
11
+ }) {
12
+ return /* @__PURE__ */ jsxs(
13
+ ToggleGroupControl,
14
+ {
15
+ __next40pxDefaultSize: true,
16
+ __nextHasNoMarginBottom: true,
17
+ label: __("Overlay Visibility"),
18
+ "aria-label": __("Configure overlay visibility"),
19
+ value: overlayMenu,
20
+ help: __(
21
+ "Collapses the navigation options in a menu icon opening an overlay."
22
+ ),
23
+ onChange: (value) => setAttributes({ overlayMenu: value }),
24
+ isBlock: true,
25
+ children: [
26
+ /* @__PURE__ */ jsx(ToggleGroupControlOption, { value: "never", label: __("Off") }),
27
+ /* @__PURE__ */ jsx(ToggleGroupControlOption, { value: "mobile", label: __("Mobile") }),
28
+ /* @__PURE__ */ jsx(ToggleGroupControlOption, { value: "always", label: __("Always") })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ export {
34
+ OverlayVisibilityControl as default
35
+ };
36
+ //# sourceMappingURL=overlay-visibility-control.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/navigation/edit/overlay-visibility-control.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Overlay Visibility Control component.\n *\n * @param {Object} props Component props.\n * @param {string} props.overlayMenu Overlay menu setting ('never', 'mobile', 'always').\n * @param {Function} props.setAttributes Function to update block attributes.\n * @return {JSX.Element} The overlay visibility control.\n */\nexport default function OverlayVisibilityControl( {\n\toverlayMenu,\n\tsetAttributes,\n} ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ __( 'Overlay Visibility' ) }\n\t\t\taria-label={ __( 'Configure overlay visibility' ) }\n\t\t\tvalue={ overlayMenu }\n\t\t\thelp={ __(\n\t\t\t\t'Collapses the navigation options in a menu icon opening an overlay.'\n\t\t\t) }\n\t\t\tonChange={ ( value ) => setAttributes( { overlayMenu: value } ) }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption value=\"never\" label={ __( 'Off' ) } />\n\t\t\t<ToggleGroupControlOption value=\"mobile\" label={ __( 'Mobile' ) } />\n\t\t\t<ToggleGroupControlOption value=\"always\" label={ __( 'Always' ) } />\n\t\t</ToggleGroupControl>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC,oCAAoC;AAAA,EACpC,0CAA0C;AAAA,OACpC;AACP,SAAS,UAAU;AAejB,SAYC,KAZD;AALa,SAAR,yBAA2C;AAAA,EACjD;AAAA,EACA;AACD,GAAI;AACH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,uBAAqB;AAAA,MACrB,yBAAuB;AAAA,MACvB,OAAQ,GAAI,oBAAqB;AAAA,MACjC,cAAa,GAAI,8BAA+B;AAAA,MAChD,OAAQ;AAAA,MACR,MAAO;AAAA,QACN;AAAA,MACD;AAAA,MACA,UAAW,CAAE,UAAW,cAAe,EAAE,aAAa,MAAM,CAAE;AAAA,MAC9D,SAAO;AAAA,MAEP;AAAA,4BAAC,4BAAyB,OAAM,SAAQ,OAAQ,GAAI,KAAM,GAAI;AAAA,QAC9D,oBAAC,4BAAyB,OAAM,UAAS,OAAQ,GAAI,QAAS,GAAI;AAAA,QAClE,oBAAC,4BAAyB,OAAM,UAAS,OAAQ,GAAI,QAAS,GAAI;AAAA;AAAA;AAAA,EACnE;AAEF;",
6
+ "names": []
7
+ }
@@ -16,7 +16,9 @@ function ResponsiveWrapper({
16
16
  overlayBackgroundColor,
17
17
  overlayTextColor,
18
18
  hasIcon,
19
- icon
19
+ icon,
20
+ overlay,
21
+ onNavigateToEntityRecord
20
22
  }) {
21
23
  if (!isResponsive) {
22
24
  return children;
@@ -52,6 +54,16 @@ function ResponsiveWrapper({
52
54
  "aria-label": __("Menu")
53
55
  }
54
56
  };
57
+ const handleToggleClick = () => {
58
+ if (overlay && onNavigateToEntityRecord) {
59
+ onNavigateToEntityRecord({
60
+ postId: overlay,
61
+ postType: "wp_template_part"
62
+ });
63
+ return;
64
+ }
65
+ onToggle(true);
66
+ };
55
67
  return /* @__PURE__ */ jsxs(Fragment, { children: [
56
68
  !isOpen && /* @__PURE__ */ jsxs(
57
69
  Button,
@@ -60,7 +72,7 @@ function ResponsiveWrapper({
60
72
  "aria-haspopup": "true",
61
73
  "aria-label": hasIcon && __("Open menu"),
62
74
  className: openButtonClasses,
63
- onClick: () => onToggle(true),
75
+ onClick: handleToggleClick,
64
76
  children: [
65
77
  hasIcon && /* @__PURE__ */ jsx(OverlayMenuIcon, { icon }),
66
78
  !hasIcon && __("Menu")
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/navigation/edit/responsive-wrapper.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { close, Icon } from '@wordpress/icons';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { getColorClassName } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport OverlayMenuIcon from './overlay-menu-icon';\n\nexport default function ResponsiveWrapper( {\n\tchildren,\n\tid,\n\tisOpen,\n\tisResponsive,\n\tonToggle,\n\tisHiddenByDefault,\n\toverlayBackgroundColor,\n\toverlayTextColor,\n\thasIcon,\n\ticon,\n} ) {\n\tif ( ! isResponsive ) {\n\t\treturn children;\n\t}\n\n\tconst responsiveContainerClasses = clsx(\n\t\t'wp-block-navigation__responsive-container',\n\t\t{\n\t\t\t'has-text-color':\n\t\t\t\t!! overlayTextColor.color || !! overlayTextColor?.class,\n\t\t\t[ getColorClassName( 'color', overlayTextColor?.slug ) ]:\n\t\t\t\t!! overlayTextColor?.slug,\n\t\t\t'has-background':\n\t\t\t\t!! overlayBackgroundColor.color ||\n\t\t\t\toverlayBackgroundColor?.class,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\toverlayBackgroundColor?.slug\n\t\t\t) ]: !! overlayBackgroundColor?.slug,\n\t\t\t'is-menu-open': isOpen,\n\t\t\t'hidden-by-default': isHiddenByDefault,\n\t\t}\n\t);\n\n\tconst styles = {\n\t\tcolor: ! overlayTextColor?.slug && overlayTextColor?.color,\n\t\tbackgroundColor:\n\t\t\t! overlayBackgroundColor?.slug &&\n\t\t\toverlayBackgroundColor?.color &&\n\t\t\toverlayBackgroundColor.color,\n\t};\n\n\tconst openButtonClasses = clsx(\n\t\t'wp-block-navigation__responsive-container-open',\n\t\t{ 'always-shown': isHiddenByDefault }\n\t);\n\n\tconst modalId = `${ id }-modal`;\n\n\tconst dialogProps = {\n\t\tclassName: 'wp-block-navigation__responsive-dialog',\n\t\t...( isOpen && {\n\t\t\trole: 'dialog',\n\t\t\t'aria-modal': true,\n\t\t\t'aria-label': __( 'Menu' ),\n\t\t} ),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isOpen && (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\taria-label={ hasIcon && __( 'Open menu' ) }\n\t\t\t\t\tclassName={ openButtonClasses }\n\t\t\t\t\tonClick={ () => onToggle( true ) }\n\t\t\t\t>\n\t\t\t\t\t{ hasIcon && <OverlayMenuIcon icon={ icon } /> }\n\t\t\t\t\t{ ! hasIcon && __( 'Menu' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\n\t\t\t<div\n\t\t\t\tclassName={ responsiveContainerClasses }\n\t\t\t\tstyle={ styles }\n\t\t\t\tid={ modalId }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"wp-block-navigation__responsive-close\"\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t<div { ...dialogProps }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-close\"\n\t\t\t\t\t\t\taria-label={ hasIcon && __( 'Close menu' ) }\n\t\t\t\t\t\t\tonClick={ () => onToggle( false ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ hasIcon && <Icon icon={ close } /> }\n\t\t\t\t\t\t\t{ ! hasIcon && __( 'Close' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-content\"\n\t\t\t\t\t\t\tid={ `${ modalId }-content` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";AAGA,OAAO,UAAU;AAKjB,SAAS,OAAO,YAAY;AAC5B,SAAS,cAAc;AACvB,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAKlC,OAAO,qBAAqB;AA8D1B,mBASgB,KAPd,YAFF;AA5Da,SAAR,kBAAoC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,MAAK,CAAE,cAAe;AACrB,WAAO;AAAA,EACR;AAEA,QAAM,6BAA6B;AAAA,IAClC;AAAA,IACA;AAAA,MACC,kBACC,CAAC,CAAE,iBAAiB,SAAS,CAAC,CAAE,kBAAkB;AAAA,MACnD,CAAE,kBAAmB,SAAS,kBAAkB,IAAK,CAAE,GACtD,CAAC,CAAE,kBAAkB;AAAA,MACtB,kBACC,CAAC,CAAE,uBAAuB,SAC1B,wBAAwB;AAAA,MACzB,CAAE;AAAA,QACD;AAAA,QACA,wBAAwB;AAAA,MACzB,CAAE,GAAG,CAAC,CAAE,wBAAwB;AAAA,MAChC,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,IACtB;AAAA,EACD;AAEA,QAAM,SAAS;AAAA,IACd,OAAO,CAAE,kBAAkB,QAAQ,kBAAkB;AAAA,IACrD,iBACC,CAAE,wBAAwB,QAC1B,wBAAwB,SACxB,uBAAuB;AAAA,EACzB;AAEA,QAAM,oBAAoB;AAAA,IACzB;AAAA,IACA,EAAE,gBAAgB,kBAAkB;AAAA,EACrC;AAEA,QAAM,UAAU,GAAI,EAAG;AAEvB,QAAM,cAAc;AAAA,IACnB,WAAW;AAAA,IACX,GAAK,UAAU;AAAA,MACd,MAAM;AAAA,MACN,cAAc;AAAA,MACd,cAAc,GAAI,MAAO;AAAA,IAC1B;AAAA,EACD;AAEA,SACC,iCACG;AAAA,KAAE,UACH;AAAA,MAAC;AAAA;AAAA,QACA,uBAAqB;AAAA,QACrB,iBAAc;AAAA,QACd,cAAa,WAAW,GAAI,WAAY;AAAA,QACxC,WAAY;AAAA,QACZ,SAAU,MAAM,SAAU,IAAK;AAAA,QAE7B;AAAA,qBAAW,oBAAC,mBAAgB,MAAc;AAAA,UAC1C,CAAE,WAAW,GAAI,MAAO;AAAA;AAAA;AAAA,IAC3B;AAAA,IAGD;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ,OAAQ;AAAA,QACR,IAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,UAAS;AAAA,YAET,+BAAC,SAAM,GAAG,aACT;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACA,uBAAqB;AAAA,kBACrB,WAAU;AAAA,kBACV,cAAa,WAAW,GAAI,YAAa;AAAA,kBACzC,SAAU,MAAM,SAAU,KAAM;AAAA,kBAE9B;AAAA,+BAAW,oBAAC,QAAK,MAAO,OAAQ;AAAA,oBAChC,CAAE,WAAW,GAAI,OAAQ;AAAA;AAAA;AAAA,cAC5B;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAU;AAAA,kBACV,IAAK,GAAI,OAAQ;AAAA,kBAEf;AAAA;AAAA,cACH;AAAA,eACD;AAAA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { close, Icon } from '@wordpress/icons';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { getColorClassName } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport OverlayMenuIcon from './overlay-menu-icon';\n\nexport default function ResponsiveWrapper( {\n\tchildren,\n\tid,\n\tisOpen,\n\tisResponsive,\n\tonToggle,\n\tisHiddenByDefault,\n\toverlayBackgroundColor,\n\toverlayTextColor,\n\thasIcon,\n\ticon,\n\toverlay,\n\tonNavigateToEntityRecord,\n} ) {\n\tif ( ! isResponsive ) {\n\t\treturn children;\n\t}\n\n\tconst responsiveContainerClasses = clsx(\n\t\t'wp-block-navigation__responsive-container',\n\t\t{\n\t\t\t'has-text-color':\n\t\t\t\t!! overlayTextColor.color || !! overlayTextColor?.class,\n\t\t\t[ getColorClassName( 'color', overlayTextColor?.slug ) ]:\n\t\t\t\t!! overlayTextColor?.slug,\n\t\t\t'has-background':\n\t\t\t\t!! overlayBackgroundColor.color ||\n\t\t\t\toverlayBackgroundColor?.class,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\toverlayBackgroundColor?.slug\n\t\t\t) ]: !! overlayBackgroundColor?.slug,\n\t\t\t'is-menu-open': isOpen,\n\t\t\t'hidden-by-default': isHiddenByDefault,\n\t\t}\n\t);\n\n\tconst styles = {\n\t\tcolor: ! overlayTextColor?.slug && overlayTextColor?.color,\n\t\tbackgroundColor:\n\t\t\t! overlayBackgroundColor?.slug &&\n\t\t\toverlayBackgroundColor?.color &&\n\t\t\toverlayBackgroundColor.color,\n\t};\n\n\tconst openButtonClasses = clsx(\n\t\t'wp-block-navigation__responsive-container-open',\n\t\t{ 'always-shown': isHiddenByDefault }\n\t);\n\n\tconst modalId = `${ id }-modal`;\n\n\tconst dialogProps = {\n\t\tclassName: 'wp-block-navigation__responsive-dialog',\n\t\t...( isOpen && {\n\t\t\trole: 'dialog',\n\t\t\t'aria-modal': true,\n\t\t\t'aria-label': __( 'Menu' ),\n\t\t} ),\n\t};\n\n\tconst handleToggleClick = () => {\n\t\t// If an overlay template part is selected, navigate to it instead of toggling\n\t\tif ( overlay && onNavigateToEntityRecord ) {\n\t\t\tonNavigateToEntityRecord( {\n\t\t\t\tpostId: overlay,\n\t\t\t\tpostType: 'wp_template_part',\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\t// Otherwise, use normal toggle behavior\n\t\tonToggle( true );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isOpen && (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\taria-label={ hasIcon && __( 'Open menu' ) }\n\t\t\t\t\tclassName={ openButtonClasses }\n\t\t\t\t\tonClick={ handleToggleClick }\n\t\t\t\t>\n\t\t\t\t\t{ hasIcon && <OverlayMenuIcon icon={ icon } /> }\n\t\t\t\t\t{ ! hasIcon && __( 'Menu' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\n\t\t\t<div\n\t\t\t\tclassName={ responsiveContainerClasses }\n\t\t\t\tstyle={ styles }\n\t\t\t\tid={ modalId }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"wp-block-navigation__responsive-close\"\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t<div { ...dialogProps }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-close\"\n\t\t\t\t\t\t\taria-label={ hasIcon && __( 'Close menu' ) }\n\t\t\t\t\t\t\tonClick={ () => onToggle( false ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ hasIcon && <Icon icon={ close } /> }\n\t\t\t\t\t\t\t{ ! hasIcon && __( 'Close' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-content\"\n\t\t\t\t\t\t\tid={ `${ modalId }-content` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,OAAO,UAAU;AAKjB,SAAS,OAAO,YAAY;AAC5B,SAAS,cAAc;AACvB,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAKlC,OAAO,qBAAqB;AA6E1B,mBASgB,KAPd,YAFF;AA3Ea,SAAR,kBAAoC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,MAAK,CAAE,cAAe;AACrB,WAAO;AAAA,EACR;AAEA,QAAM,6BAA6B;AAAA,IAClC;AAAA,IACA;AAAA,MACC,kBACC,CAAC,CAAE,iBAAiB,SAAS,CAAC,CAAE,kBAAkB;AAAA,MACnD,CAAE,kBAAmB,SAAS,kBAAkB,IAAK,CAAE,GACtD,CAAC,CAAE,kBAAkB;AAAA,MACtB,kBACC,CAAC,CAAE,uBAAuB,SAC1B,wBAAwB;AAAA,MACzB,CAAE;AAAA,QACD;AAAA,QACA,wBAAwB;AAAA,MACzB,CAAE,GAAG,CAAC,CAAE,wBAAwB;AAAA,MAChC,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,IACtB;AAAA,EACD;AAEA,QAAM,SAAS;AAAA,IACd,OAAO,CAAE,kBAAkB,QAAQ,kBAAkB;AAAA,IACrD,iBACC,CAAE,wBAAwB,QAC1B,wBAAwB,SACxB,uBAAuB;AAAA,EACzB;AAEA,QAAM,oBAAoB;AAAA,IACzB;AAAA,IACA,EAAE,gBAAgB,kBAAkB;AAAA,EACrC;AAEA,QAAM,UAAU,GAAI,EAAG;AAEvB,QAAM,cAAc;AAAA,IACnB,WAAW;AAAA,IACX,GAAK,UAAU;AAAA,MACd,MAAM;AAAA,MACN,cAAc;AAAA,MACd,cAAc,GAAI,MAAO;AAAA,IAC1B;AAAA,EACD;AAEA,QAAM,oBAAoB,MAAM;AAE/B,QAAK,WAAW,0BAA2B;AAC1C,+BAA0B;AAAA,QACzB,QAAQ;AAAA,QACR,UAAU;AAAA,MACX,CAAE;AACF;AAAA,IACD;AAEA,aAAU,IAAK;AAAA,EAChB;AAEA,SACC,iCACG;AAAA,KAAE,UACH;AAAA,MAAC;AAAA;AAAA,QACA,uBAAqB;AAAA,QACrB,iBAAc;AAAA,QACd,cAAa,WAAW,GAAI,WAAY;AAAA,QACxC,WAAY;AAAA,QACZ,SAAU;AAAA,QAER;AAAA,qBAAW,oBAAC,mBAAgB,MAAc;AAAA,UAC1C,CAAE,WAAW,GAAI,MAAO;AAAA;AAAA;AAAA,IAC3B;AAAA,IAGD;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ,OAAQ;AAAA,QACR,IAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,UAAS;AAAA,YAET,+BAAC,SAAM,GAAG,aACT;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACA,uBAAqB;AAAA,kBACrB,WAAU;AAAA,kBACV,cAAa,WAAW,GAAI,YAAa;AAAA,kBACzC,SAAU,MAAM,SAAU,KAAM;AAAA,kBAE9B;AAAA,+BAAW,oBAAC,QAAK,MAAO,OAAQ;AAAA,oBAChC,CAAE,WAAW,GAAI,OAAQ;AAAA;AAAA;AAAA,cAC5B;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAU;AAAA,kBACV,IAAK,GAAI,OAAQ;AAAA,kBAEf;AAAA;AAAA,cACH;AAAA,eACD;AAAA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,KACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -29,9 +29,9 @@ import { getColors } from "../navigation/edit/utils";
29
29
  import {
30
30
  Controls,
31
31
  LinkUI,
32
- updateAttributes,
33
32
  useEntityBinding,
34
- MissingEntityHelpText
33
+ MissingEntityHelpText,
34
+ useHandleLinkChange
35
35
  } from "./shared";
36
36
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
37
  var DEFAULT_BLOCK = { name: "core/navigation-link" };
@@ -188,15 +188,15 @@ function NavigationLinkEdit({
188
188
  [clientId, maxNestingLevel]
189
189
  );
190
190
  const { getBlocks } = useSelect(blockEditorStore);
191
- const {
192
- clearBinding,
193
- createBinding,
194
- hasUrlBinding,
195
- isBoundEntityAvailable
196
- } = useEntityBinding({
191
+ const { hasUrlBinding, isBoundEntityAvailable } = useEntityBinding({
197
192
  clientId,
198
193
  attributes
199
194
  });
195
+ const handleLinkChange = useHandleLinkChange({
196
+ clientId,
197
+ attributes,
198
+ setAttributes
199
+ });
200
200
  const [isInvalid, isDraft] = useIsInvalidLink(
201
201
  kind,
202
202
  type,
@@ -439,21 +439,7 @@ function NavigationLinkEdit({
439
439
  },
440
440
  anchor: popoverAnchor,
441
441
  onRemove: removeLink,
442
- onChange: (updatedValue) => {
443
- const {
444
- isEntityLink,
445
- attributes: updatedAttributes
446
- } = updateAttributes(
447
- updatedValue,
448
- setAttributes,
449
- attributes
450
- );
451
- if (isEntityLink) {
452
- createBinding(updatedAttributes);
453
- } else {
454
- clearBinding();
455
- }
456
- }
442
+ onChange: handleLinkChange
457
443
  }
458
444
  )
459
445
  ] }),