@wordpress/block-library 8.9.0 → 8.11.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.
- package/CHANGELOG.md +4 -0
- package/build/block/edit.native.js +17 -10
- package/build/block/edit.native.js.map +1 -1
- package/build/code/index.js +1 -0
- package/build/code/index.js.map +1 -1
- package/build/column/index.js +1 -1
- package/build/columns/transforms.js +1 -5
- package/build/columns/transforms.js.map +1 -1
- package/build/comment-author-name/edit.js +1 -1
- package/build/comment-author-name/edit.js.map +1 -1
- package/build/comment-edit-link/edit.js +1 -1
- package/build/comment-edit-link/edit.js.map +1 -1
- package/build/cover/edit/inspector-controls.js +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/edit/resizable-cover-popover.js +3 -3
- package/build/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build/cover/index.js +1 -1
- package/build/cover/variations.js +1 -1
- package/build/cover/variations.js.map +1 -1
- package/build/details/edit.js +19 -5
- package/build/details/edit.js.map +1 -1
- package/build/details/index.js +14 -10
- package/build/details/index.js.map +1 -1
- package/build/details/save.js +4 -1
- package/build/details/save.js.map +1 -1
- package/build/embed/variations.js +2 -2
- package/build/embed/variations.js.map +1 -1
- package/build/file/interactivity.js +19 -0
- package/build/file/interactivity.js.map +1 -0
- package/build/file/{utils.js → utils/index.js} +1 -1
- package/build/file/utils/index.js.map +1 -0
- package/build/file/view.js +1 -1
- package/build/file/view.js.map +1 -1
- package/build/freeform/modal.js +20 -17
- package/build/freeform/modal.js.map +1 -1
- package/build/gallery/edit.js +2 -8
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/v1/edit.js +1 -7
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery-image.native.js +1 -3
- package/build/gallery/v1/gallery-image.native.js.map +1 -1
- package/build/group/transforms.js +0 -5
- package/build/group/transforms.js.map +1 -1
- package/build/image/deprecated.js +2 -4
- package/build/image/deprecated.js.map +1 -1
- package/build/image/edit.js +13 -11
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +7 -12
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +3 -0
- package/build/image/index.js.map +1 -1
- package/build/image/interactivity.js +102 -0
- package/build/image/interactivity.js.map +1 -0
- package/build/image/save.js +2 -4
- package/build/image/save.js.map +1 -1
- package/build/image/utils.js +10 -18
- package/build/image/utils.js.map +1 -1
- package/build/index.js +0 -6
- package/build/index.js.map +1 -1
- package/build/index.native.js +1 -1
- package/build/index.native.js.map +1 -1
- package/build/latest-posts/edit.native.js +1 -3
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/edit.js +1 -1
- package/build/list/edit.js.map +1 -1
- package/build/list-item/edit.native.js +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/transforms.js +4 -1
- package/build/list-item/transforms.js.map +1 -1
- package/build/list-item/utils.js +5 -1
- package/build/list-item/utils.js.map +1 -1
- package/build/loginout/index.js +11 -1
- package/build/loginout/index.js.map +1 -1
- package/build/media-text/deprecated.js +4 -6
- package/build/media-text/deprecated.js.map +1 -1
- package/build/media-text/edit.js +13 -11
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/media-container.js +3 -3
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/save.js +1 -3
- package/build/media-text/save.js.map +1 -1
- package/build/navigation/constants.js +15 -0
- package/build/navigation/constants.js.map +1 -0
- package/build/navigation/edit/index.js +16 -26
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +5 -7
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/leaf-more-menu.js +148 -0
- package/build/navigation/edit/leaf-more-menu.js.map +1 -0
- package/build/navigation/edit/menu-inspector-controls.js +53 -8
- package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +6 -6
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +12 -25
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build/navigation/interactivity.js +157 -0
- package/build/navigation/interactivity.js.map +1 -0
- package/build/navigation-link/edit.js +7 -5
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/update-attributes.js +5 -5
- package/build/navigation-link/update-attributes.js.map +1 -1
- package/build/navigation-submenu/edit.js +7 -5
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/paragraph/index.js +5 -1
- package/build/paragraph/index.js.map +1 -1
- package/build/paragraph/transforms.js +5 -1
- package/build/paragraph/transforms.js.map +1 -1
- package/build/pattern/edit.js +42 -8
- package/build/pattern/edit.js.map +1 -1
- package/build/pattern/index.js +12 -5
- package/build/pattern/index.js.map +1 -1
- package/build/pattern/v1/edit.js +57 -0
- package/build/pattern/v1/edit.js.map +1 -0
- package/build/post-author-name/edit.js +1 -1
- package/build/post-author-name/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +1 -2
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/overlay.js +5 -0
- package/build/post-featured-image/overlay.js.map +1 -1
- package/build/post-title/edit.js +24 -7
- package/build/post-title/edit.js.map +1 -1
- package/build/preformatted/edit.native.js +3 -2
- package/build/preformatted/edit.native.js.map +1 -1
- package/build/quote/transforms.js +23 -37
- package/build/quote/transforms.js.map +1 -1
- package/build/read-more/edit.js +1 -1
- package/build/read-more/edit.js.map +1 -1
- package/build/search/edit.js +9 -1
- package/build/search/edit.js.map +1 -1
- package/build/site-title/edit/index.js +1 -1
- package/build/site-title/edit/index.js.map +1 -1
- package/build/social-link/edit.js +21 -4
- package/build/social-link/edit.js.map +1 -1
- package/build/social-links/edit.js +2 -2
- package/build/social-links/edit.js.map +1 -1
- package/build/template-part/edit/index.js +1 -7
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/utils/hooks.js +2 -2
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build/utils/interactivity/constants.js +9 -0
- package/build/utils/interactivity/constants.js.map +1 -0
- package/build/utils/interactivity/directives.js +236 -0
- package/build/utils/interactivity/directives.js.map +1 -0
- package/build/utils/interactivity/hooks.js +176 -0
- package/build/utils/interactivity/hooks.js.map +1 -0
- package/build/utils/interactivity/hydration.js +34 -0
- package/build/utils/interactivity/hydration.js.map +1 -0
- package/build/utils/interactivity/index.js +34 -0
- package/build/utils/interactivity/index.js.map +1 -0
- package/build/utils/interactivity/portals.js +108 -0
- package/build/utils/interactivity/portals.js.map +1 -0
- package/build/utils/interactivity/store.js +67 -0
- package/build/utils/interactivity/store.js.map +1 -0
- package/build/utils/interactivity/utils.js +87 -0
- package/build/utils/interactivity/utils.js.map +1 -0
- package/build/utils/interactivity/vdom.js +109 -0
- package/build/utils/interactivity/vdom.js.map +1 -0
- package/build-module/block/edit.native.js +7 -1
- package/build-module/block/edit.native.js.map +1 -1
- package/build-module/code/index.js +1 -0
- package/build-module/code/index.js.map +1 -1
- package/build-module/column/index.js +1 -1
- package/build-module/columns/transforms.js +1 -5
- package/build-module/columns/transforms.js.map +1 -1
- package/build-module/comment-author-name/edit.js +1 -1
- package/build-module/comment-author-name/edit.js.map +1 -1
- package/build-module/comment-edit-link/edit.js +1 -1
- package/build-module/comment-edit-link/edit.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/edit/resizable-cover-popover.js +3 -3
- package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build-module/cover/index.js +1 -1
- package/build-module/cover/variations.js +1 -1
- package/build-module/cover/variations.js.map +1 -1
- package/build-module/details/edit.js +20 -6
- package/build-module/details/edit.js.map +1 -1
- package/build-module/details/index.js +14 -10
- package/build-module/details/index.js.map +1 -1
- package/build-module/details/save.js +5 -2
- package/build-module/details/save.js.map +1 -1
- package/build-module/embed/variations.js +2 -2
- package/build-module/embed/variations.js.map +1 -1
- package/build-module/file/interactivity.js +15 -0
- package/build-module/file/interactivity.js.map +1 -0
- package/build-module/file/{utils.js → utils/index.js} +1 -1
- package/build-module/file/utils/index.js.map +1 -0
- package/build-module/file/view.js +1 -1
- package/build-module/file/view.js.map +1 -1
- package/build-module/freeform/modal.js +19 -18
- package/build-module/freeform/modal.js.map +1 -1
- package/build-module/gallery/edit.js +2 -8
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/v1/edit.js +1 -6
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery-image.native.js +1 -2
- package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
- package/build-module/group/transforms.js +0 -5
- package/build-module/group/transforms.js.map +1 -1
- package/build-module/image/deprecated.js +2 -3
- package/build-module/image/deprecated.js.map +1 -1
- package/build-module/image/edit.js +12 -11
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +7 -11
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +3 -0
- package/build-module/image/index.js.map +1 -1
- package/build-module/image/interactivity.js +99 -0
- package/build-module/image/interactivity.js.map +1 -0
- package/build-module/image/save.js +2 -3
- package/build-module/image/save.js.map +1 -1
- package/build-module/image/utils.js +10 -17
- package/build-module/image/utils.js.map +1 -1
- package/build-module/index.js +0 -4
- package/build-module/index.js.map +1 -1
- package/build-module/index.native.js +1 -1
- package/build-module/index.native.js.map +1 -1
- package/build-module/latest-posts/edit.native.js +1 -2
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/edit.js +1 -1
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list-item/edit.native.js +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/transforms.js +5 -2
- package/build-module/list-item/transforms.js.map +1 -1
- package/build-module/list-item/utils.js +5 -1
- package/build-module/list-item/utils.js.map +1 -1
- package/build-module/loginout/index.js +11 -1
- package/build-module/loginout/index.js.map +1 -1
- package/build-module/media-text/deprecated.js +4 -5
- package/build-module/media-text/deprecated.js.map +1 -1
- package/build-module/media-text/edit.js +13 -12
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/media-container.js +3 -3
- package/build-module/media-text/media-container.js.map +1 -1
- package/build-module/media-text/save.js +1 -2
- package/build-module/media-text/save.js.map +1 -1
- package/build-module/navigation/constants.js +6 -0
- package/build-module/navigation/constants.js.map +1 -0
- package/build-module/navigation/edit/index.js +18 -27
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +2 -4
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/leaf-more-menu.js +132 -0
- package/build-module/navigation/edit/leaf-more-menu.js.map +1 -0
- package/build-module/navigation/edit/menu-inspector-controls.js +52 -9
- package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +7 -7
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +9 -20
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build-module/navigation/interactivity.js +154 -0
- package/build-module/navigation/interactivity.js.map +1 -0
- package/build-module/navigation-link/edit.js +7 -5
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/update-attributes.js +4 -4
- package/build-module/navigation-link/update-attributes.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +7 -5
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/paragraph/index.js +5 -1
- package/build-module/paragraph/index.js.map +1 -1
- package/build-module/paragraph/transforms.js +5 -1
- package/build-module/paragraph/transforms.js.map +1 -1
- package/build-module/pattern/edit.js +42 -9
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/pattern/index.js +12 -3
- package/build-module/pattern/index.js.map +1 -1
- package/build-module/pattern/v1/edit.js +48 -0
- package/build-module/pattern/v1/edit.js.map +1 -0
- package/build-module/post-author-name/edit.js +1 -1
- package/build-module/post-author-name/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +1 -2
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/overlay.js +5 -0
- package/build-module/post-featured-image/overlay.js.map +1 -1
- package/build-module/post-title/edit.js +23 -7
- package/build-module/post-title/edit.js.map +1 -1
- package/build-module/preformatted/edit.native.js +3 -2
- package/build-module/preformatted/edit.native.js.map +1 -1
- package/build-module/quote/transforms.js +23 -37
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/read-more/edit.js +1 -1
- package/build-module/read-more/edit.js.map +1 -1
- package/build-module/search/edit.js +9 -1
- package/build-module/search/edit.js.map +1 -1
- package/build-module/site-title/edit/index.js +1 -1
- package/build-module/site-title/edit/index.js.map +1 -1
- package/build-module/social-link/edit.js +20 -5
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/social-links/edit.js +2 -2
- package/build-module/social-links/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +1 -6
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/utils/hooks.js +1 -1
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/utils/interactivity/constants.js +2 -0
- package/build-module/utils/interactivity/constants.js.map +1 -0
- package/build-module/utils/interactivity/directives.js +220 -0
- package/build-module/utils/interactivity/directives.js.map +1 -0
- package/build-module/utils/interactivity/hooks.js +162 -0
- package/build-module/utils/interactivity/hooks.js.map +1 -0
- package/build-module/utils/interactivity/hydration.js +21 -0
- package/build-module/utils/interactivity/hydration.js.map +1 -0
- package/build-module/utils/interactivity/index.js +17 -0
- package/build-module/utils/interactivity/index.js.map +1 -0
- package/build-module/utils/interactivity/portals.js +100 -0
- package/build-module/utils/interactivity/portals.js.map +1 -0
- package/build-module/utils/interactivity/store.js +56 -0
- package/build-module/utils/interactivity/store.js.map +1 -0
- package/build-module/utils/interactivity/utils.js +75 -0
- package/build-module/utils/interactivity/utils.js.map +1 -0
- package/build-module/utils/interactivity/vdom.js +97 -0
- package/build-module/utils/interactivity/vdom.js.map +1 -0
- package/build-style/common-rtl.css +1 -1
- package/build-style/common.css +1 -1
- package/build-style/cover/style-rtl.css +3 -2
- package/build-style/cover/style.css +3 -2
- package/build-style/{details-summary → details}/editor-rtl.css +1 -1
- package/build-style/{details-summary → details}/editor.css +1 -1
- package/build-style/details/style-rtl.css +14 -0
- package/build-style/details/style.css +14 -0
- package/build-style/editor-rtl.css +71 -5
- package/build-style/editor.css +71 -5
- package/build-style/file/editor-rtl.css +3 -0
- package/build-style/file/editor.css +3 -0
- package/build-style/freeform/editor-rtl.css +29 -0
- package/build-style/freeform/editor.css +29 -0
- package/build-style/gallery/editor-rtl.css +0 -4
- package/build-style/gallery/editor.css +0 -4
- package/build-style/gallery/style-rtl.css +2 -4
- package/build-style/gallery/style.css +2 -4
- package/build-style/image/style-rtl.css +98 -0
- package/build-style/image/style.css +98 -0
- package/build-style/navigation/editor-rtl.css +36 -0
- package/build-style/navigation/editor.css +36 -0
- package/build-style/post-comments-form/style-rtl.css +1 -1
- package/build-style/post-comments-form/style.css +1 -1
- package/build-style/search/editor-rtl.css +1 -0
- package/build-style/search/editor.css +1 -0
- package/build-style/site-logo/editor-rtl.css +1 -0
- package/build-style/site-logo/editor.css +1 -0
- package/build-style/style-rtl.css +116 -10
- package/build-style/style.css +116 -10
- package/build-style/video/style-rtl.css +1 -2
- package/build-style/video/style.css +1 -2
- package/package.json +37 -33
- package/src/block/edit.native.js +18 -4
- package/src/buttons/test/edit.native.js +0 -9
- package/src/code/block.json +1 -0
- package/src/column/block.json +1 -1
- package/src/columns/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/columns/test/transforms.native.js +3 -5
- package/src/columns/transforms.js +2 -8
- package/src/comment-author-name/edit.js +1 -1
- package/src/comment-edit-link/edit.js +1 -1
- package/src/comment-template/index.php +8 -7
- package/src/comments/index.php +1 -6
- package/src/cover/block.json +1 -1
- package/src/cover/edit/inspector-controls.js +56 -54
- package/src/cover/edit/resizable-cover-popover.js +2 -1
- package/src/cover/style.scss +5 -0
- package/src/cover/test/edit.js +56 -2
- package/src/cover/variations.js +1 -3
- package/src/details/block.json +8 -6
- package/src/details/edit.js +27 -5
- package/src/details/editor.scss +3 -0
- package/src/details/index.js +10 -5
- package/src/details/save.js +5 -1
- package/src/details/style.scss +16 -0
- package/src/editor.scss +1 -1
- package/src/embed/variations.js +2 -2
- package/src/file/editor.scss +4 -0
- package/src/file/interactivity.js +15 -0
- package/src/file/view.js +4 -1
- package/src/freeform/editor.scss +45 -0
- package/src/freeform/modal.js +22 -19
- package/src/gallery/edit.js +5 -8
- package/src/gallery/editor.scss +0 -6
- package/src/gallery/test/index.native.js +48 -3
- package/src/gallery/v1/edit.js +1 -6
- package/src/gallery/v1/gallery-image.native.js +1 -2
- package/src/group/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/group/test/transforms.native.js +3 -5
- package/src/group/transforms.js +0 -7
- package/src/image/block.json +3 -0
- package/src/image/deprecated.js +2 -3
- package/src/image/edit.js +18 -18
- package/src/image/image.js +8 -11
- package/src/image/index.php +75 -2
- package/src/image/interactivity.js +113 -0
- package/src/image/save.js +4 -3
- package/src/image/style.scss +113 -0
- package/src/image/test/edit.native.js +38 -16
- package/src/image/utils.js +11 -18
- package/src/index.js +0 -4
- package/src/index.native.js +1 -0
- package/src/latest-posts/edit.native.js +1 -4
- package/src/list/edit.js +1 -1
- package/src/list/test/edit.native.js +80 -1
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/transforms.js +4 -2
- package/src/loginout/block.json +11 -1
- package/src/media-text/deprecated.js +4 -5
- package/src/media-text/edit.js +12 -10
- package/src/media-text/media-container.js +3 -3
- package/src/media-text/save.js +1 -2
- package/src/navigation/constants.js +21 -0
- package/src/navigation/edit/index.js +71 -83
- package/src/navigation/edit/inner-blocks.js +6 -16
- package/src/navigation/edit/leaf-more-menu.js +170 -0
- package/src/navigation/edit/menu-inspector-controls.js +78 -10
- package/src/navigation/edit/navigation-menu-delete-control.js +29 -29
- package/src/navigation/edit/unsaved-inner-blocks.js +12 -40
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
- package/src/navigation/editor.scss +10 -0
- package/src/navigation/index.php +213 -204
- package/src/navigation/interactivity.js +151 -0
- package/src/navigation-link/edit.js +9 -3
- package/src/navigation-link/update-attributes.js +2 -2
- package/src/navigation-submenu/edit.js +9 -3
- package/src/paragraph/block.json +5 -1
- package/src/pattern/block.json +4 -0
- package/src/pattern/edit.js +53 -16
- package/src/pattern/index.js +5 -4
- package/src/pattern/index.php +14 -1
- package/src/pattern/v1/edit.js +57 -0
- package/src/post-author-name/edit.js +1 -1
- package/src/post-comments-form/style.scss +3 -1
- package/src/post-featured-image/edit.js +1 -1
- package/src/post-featured-image/index.php +1 -1
- package/src/post-featured-image/overlay.js +4 -0
- package/src/post-terms/index.php +2 -2
- package/src/post-title/edit.js +57 -44
- package/src/preformatted/edit.native.js +1 -3
- package/src/quote/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/quote/test/transforms.native.js +3 -5
- package/src/quote/transforms.js +9 -19
- package/src/read-more/edit.js +1 -1
- package/src/search/edit.js +9 -4
- package/src/search/editor.scss +1 -0
- package/src/site-logo/editor.scss +2 -1
- package/src/site-title/edit/index.js +1 -1
- package/src/social-link/edit.js +51 -26
- package/src/social-links/edit.js +33 -31
- package/src/style.scss +0 -1
- package/src/template-part/edit/index.js +4 -6
- package/src/template-part/edit/utils/hooks.js +1 -1
- package/src/template-part/index.php +22 -7
- package/src/utils/interactivity/constants.js +1 -0
- package/src/utils/interactivity/directives.js +200 -0
- package/src/utils/interactivity/hooks.js +145 -0
- package/src/utils/interactivity/hydration.js +22 -0
- package/src/utils/interactivity/index.js +17 -0
- package/src/utils/interactivity/portals.js +98 -0
- package/src/utils/interactivity/store.js +45 -0
- package/src/utils/interactivity/utils.js +66 -0
- package/src/utils/interactivity/vdom.js +94 -0
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/details-content/edit.js +0 -34
- package/build/details-content/edit.js.map +0 -1
- package/build/details-content/index.js +0 -94
- package/build/details-content/index.js.map +0 -1
- package/build/details-content/save.js +0 -20
- package/build/details-content/save.js.map +0 -1
- package/build/details-summary/edit.js +0 -42
- package/build/details-summary/edit.js.map +0 -1
- package/build/details-summary/index.js +0 -97
- package/build/details-summary/index.js.map +0 -1
- package/build/details-summary/save.js +0 -24
- package/build/details-summary/save.js.map +0 -1
- package/build/file/utils.js.map +0 -1
- package/build-module/details-content/edit.js +0 -23
- package/build-module/details-content/edit.js.map +0 -1
- package/build-module/details-content/index.js +0 -76
- package/build-module/details-content/index.js.map +0 -1
- package/build-module/details-content/save.js +0 -11
- package/build-module/details-content/save.js.map +0 -1
- package/build-module/details-summary/edit.js +0 -30
- package/build-module/details-summary/edit.js.map +0 -1
- package/build-module/details-summary/index.js +0 -79
- package/build-module/details-summary/index.js.map +0 -1
- package/build-module/details-summary/save.js +0 -16
- package/build-module/details-summary/save.js.map +0 -1
- package/build-module/file/utils.js.map +0 -1
- package/build-style/details-summary/style-rtl.css +0 -91
- package/build-style/details-summary/style.css +0 -91
- package/src/details-content/block.json +0 -50
- package/src/details-content/edit.js +0 -29
- package/src/details-content/index.js +0 -23
- package/src/details-content/save.js +0 -12
- package/src/details-summary/block.json +0 -53
- package/src/details-summary/edit.js +0 -27
- package/src/details-summary/editor.scss +0 -3
- package/src/details-summary/index.js +0 -23
- package/src/details-summary/save.js +0 -13
- package/src/details-summary/style.scss +0 -3
- /package/src/file/{utils.js → utils/index.js} +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interactivity = require("../utils/interactivity");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Internal dependencies
|
|
7
|
+
*/
|
|
8
|
+
const focusableSelectors = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'];
|
|
9
|
+
(0, _interactivity.store)({
|
|
10
|
+
effects: {
|
|
11
|
+
core: {
|
|
12
|
+
navigation: {
|
|
13
|
+
initMenu: _ref => {
|
|
14
|
+
let {
|
|
15
|
+
context,
|
|
16
|
+
ref
|
|
17
|
+
} = _ref;
|
|
18
|
+
|
|
19
|
+
if (context.core.navigation.isMenuOpen) {
|
|
20
|
+
const focusableElements = ref.querySelectorAll(focusableSelectors);
|
|
21
|
+
context.core.navigation.modal = ref;
|
|
22
|
+
context.core.navigation.firstFocusableElement = focusableElements[0];
|
|
23
|
+
context.core.navigation.lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
focusFirstElement: _ref2 => {
|
|
27
|
+
let {
|
|
28
|
+
context,
|
|
29
|
+
ref
|
|
30
|
+
} = _ref2;
|
|
31
|
+
|
|
32
|
+
if (context.core.navigation.isMenuOpen) {
|
|
33
|
+
ref.querySelector('.wp-block-navigation-item > *:first-child').focus();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
selectors: {
|
|
40
|
+
core: {
|
|
41
|
+
navigation: {
|
|
42
|
+
roleAttribute: _ref3 => {
|
|
43
|
+
let {
|
|
44
|
+
context
|
|
45
|
+
} = _ref3;
|
|
46
|
+
return context.core.navigation.overlay && context.core.navigation.isMenuOpen ? 'dialog' : '';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
actions: {
|
|
52
|
+
core: {
|
|
53
|
+
navigation: {
|
|
54
|
+
openMenu: _ref4 => {
|
|
55
|
+
let {
|
|
56
|
+
context,
|
|
57
|
+
ref
|
|
58
|
+
} = _ref4;
|
|
59
|
+
context.core.navigation.isMenuOpen = true;
|
|
60
|
+
context.core.navigation.previousFocus = ref;
|
|
61
|
+
|
|
62
|
+
if (context.core.navigation.overlay) {
|
|
63
|
+
// It adds a `has-modal-open` class to the <html> root
|
|
64
|
+
document.documentElement.classList.add('has-modal-open');
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
closeMenu: _ref5 => {
|
|
68
|
+
let {
|
|
69
|
+
context
|
|
70
|
+
} = _ref5;
|
|
71
|
+
|
|
72
|
+
if (context.core.navigation.isMenuOpen) {
|
|
73
|
+
context.core.navigation.isMenuOpen = false;
|
|
74
|
+
|
|
75
|
+
if (context.core.navigation.modal.contains(window.document.activeElement)) {
|
|
76
|
+
context.core.navigation.previousFocus.focus();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
context.core.navigation.modal = null;
|
|
80
|
+
context.core.navigation.previousFocus = null;
|
|
81
|
+
|
|
82
|
+
if (context.core.navigation.overlay) {
|
|
83
|
+
document.documentElement.classList.remove('has-modal-open');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
toggleMenu: _ref6 => {
|
|
88
|
+
let {
|
|
89
|
+
context,
|
|
90
|
+
actions,
|
|
91
|
+
ref
|
|
92
|
+
} = _ref6;
|
|
93
|
+
|
|
94
|
+
if (context.core.navigation.isMenuOpen) {
|
|
95
|
+
actions.core.navigation.closeMenu({
|
|
96
|
+
context
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
actions.core.navigation.openMenu({
|
|
100
|
+
context,
|
|
101
|
+
ref
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
handleMenuKeydown: _ref7 => {
|
|
106
|
+
let {
|
|
107
|
+
actions,
|
|
108
|
+
context,
|
|
109
|
+
event
|
|
110
|
+
} = _ref7;
|
|
111
|
+
|
|
112
|
+
if (context.core.navigation.isMenuOpen) {
|
|
113
|
+
// If Escape close the menu
|
|
114
|
+
if ((event === null || event === void 0 ? void 0 : event.key) === 'Escape' || (event === null || event === void 0 ? void 0 : event.keyCode) === 27) {
|
|
115
|
+
actions.core.navigation.closeMenu({
|
|
116
|
+
context
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
} // Trap focus if it is an overlay (main menu)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if (context.core.navigation.overlay && (event.key === 'Tab' || event.keyCode === 9)) {
|
|
123
|
+
// If shift + tab it change the direction
|
|
124
|
+
if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) {
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
context.core.navigation.lastFocusableElement.focus();
|
|
127
|
+
} else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
context.core.navigation.firstFocusableElement.focus();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
handleMenuFocusout: _ref8 => {
|
|
135
|
+
let {
|
|
136
|
+
actions,
|
|
137
|
+
context,
|
|
138
|
+
event
|
|
139
|
+
} = _ref8;
|
|
140
|
+
|
|
141
|
+
if (context.core.navigation.isMenuOpen) {
|
|
142
|
+
// If focus is outside modal, and in the document, close menu
|
|
143
|
+
// event.target === The element losing focus
|
|
144
|
+
// event.relatedTarget === The element receiving focus (if any)
|
|
145
|
+
// When focusout is outsite the document, `window.document.activeElement` doesn't change
|
|
146
|
+
if (!context.core.navigation.modal.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
|
|
147
|
+
actions.core.navigation.closeMenu({
|
|
148
|
+
context
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=interactivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/interactivity.js"],"names":["focusableSelectors","effects","core","navigation","initMenu","context","ref","isMenuOpen","focusableElements","querySelectorAll","modal","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","focus","selectors","roleAttribute","overlay","actions","openMenu","previousFocus","document","documentElement","classList","add","closeMenu","contains","window","activeElement","remove","toggleMenu","handleMenuKeydown","event","key","keyCode","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"mappings":"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","sourcesContent":["/**\n * Internal dependencies\n */\nimport { store } from '../utils/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'area[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'iframe',\n\t'object',\n\t'embed',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nstore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( { context, ref } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( { context, ref } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( { context } ) => {\n\t\t\t\t\treturn context.core.navigation.overlay &&\n\t\t\t\t\t\tcontext.core.navigation.isMenuOpen\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '';\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenu: ( { context, ref } ) => {\n\t\t\t\t\tcontext.core.navigation.isMenuOpen = true;\n\t\t\t\t\tcontext.core.navigation.previousFocus = ref;\n\t\t\t\t\tif ( context.core.navigation.overlay ) {\n\t\t\t\t\t\t// It adds a `has-modal-open` class to the <html> root\n\t\t\t\t\t\tdocument.documentElement.classList.add(\n\t\t\t\t\t\t\t'has-modal-open'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcloseMenu: ( { context } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\tcontext.core.navigation.isMenuOpen = false;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.modal.contains(\n\t\t\t\t\t\t\t\twindow.document.activeElement\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontext.core.navigation.previousFocus.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.core.navigation.modal = null;\n\t\t\t\t\t\tcontext.core.navigation.previousFocus = null;\n\t\t\t\t\t\tif ( context.core.navigation.overlay ) {\n\t\t\t\t\t\t\tdocument.documentElement.classList.remove(\n\t\t\t\t\t\t\t\t'has-modal-open'\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},\n\t\t\t\ttoggleMenu: ( { context, actions, ref } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\tactions.core.navigation.closeMenu( { context } );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactions.core.navigation.openMenu( { context, ref } );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( { actions, context, event } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\t// If Escape close the menu\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent?.key === 'Escape' ||\n\t\t\t\t\t\t\tevent?.keyCode === 27\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tactions.core.navigation.closeMenu( { context } );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu)\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.overlay &&\n\t\t\t\t\t\t\t( event.key === 'Tab' || event.keyCode === 9 )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\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},\n\t\t\t\thandleMenuFocusout: ( { actions, context, event } ) => {\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen ) {\n\t\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t\t// When focusout is outsite the document, `window.document.activeElement` doesn't change\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! context.core.navigation.modal.contains(\n\t\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tevent.target !== window.document.activeElement\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tactions.core.navigation.closeMenu( { context } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
|
|
@@ -461,7 +461,7 @@ function NavigationLinkEdit(_ref) {
|
|
|
461
461
|
title: (0, _i18n.__)('Add submenu'),
|
|
462
462
|
onClick: transformToSubmenu
|
|
463
463
|
}))), (0, _element.createElement)(_blockEditor.InspectorControls, null, (0, _element.createElement)(_components.PanelBody, {
|
|
464
|
-
title: (0, _i18n.__)('
|
|
464
|
+
title: (0, _i18n.__)('Settings')
|
|
465
465
|
}, (0, _element.createElement)(_components.TextControl, {
|
|
466
466
|
__nextHasNoMarginBottom: true,
|
|
467
467
|
value: label ? (0, _dom.__unstableStripHTML)(label) : '',
|
|
@@ -500,8 +500,9 @@ function NavigationLinkEdit(_ref) {
|
|
|
500
500
|
title: titleValue
|
|
501
501
|
});
|
|
502
502
|
},
|
|
503
|
-
label: (0, _i18n.__)('
|
|
504
|
-
autoComplete: "off"
|
|
503
|
+
label: (0, _i18n.__)('Title attribute'),
|
|
504
|
+
autoComplete: "off",
|
|
505
|
+
help: (0, _i18n.__)('Additional information to help clarify the purpose of the link.')
|
|
505
506
|
}), (0, _element.createElement)(_components.TextControl, {
|
|
506
507
|
__nextHasNoMarginBottom: true,
|
|
507
508
|
value: rel || '',
|
|
@@ -510,8 +511,9 @@ function NavigationLinkEdit(_ref) {
|
|
|
510
511
|
rel: relValue
|
|
511
512
|
});
|
|
512
513
|
},
|
|
513
|
-
label: (0, _i18n.__)('
|
|
514
|
-
autoComplete: "off"
|
|
514
|
+
label: (0, _i18n.__)('Rel attribute'),
|
|
515
|
+
autoComplete: "off",
|
|
516
|
+
help: (0, _i18n.__)('The relationship of the linked URL as space-separated link types.')
|
|
515
517
|
}))), (0, _element.createElement)("div", blockProps, (0, _element.createElement)("a", {
|
|
516
518
|
className: classes
|
|
517
519
|
}, !url ? (0, _element.createElement)("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","select","getEntityRecord","coreStore","status","isInvalid","isDraft","getMissingText","missingText","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","blockEditorStore","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","pagesPermissions","postsPermissions","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","name","length","transformToSubmenu","newSubmenu","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","userCanCreate","canCreate","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","isKeyboardEvent","primary","keyCode","ENTER","blockProps","className","style","color","ALLOWED_BLOCKS","DEFAULT_BLOCK","innerBlocksProps","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","onClick","classes","placeholderText","tooltipText","linkIcon","displayShortcut","addSubmenu","labelValue","urlValue","descriptionValue","titleValue","relValue","enter","trim","updatedValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n\tKeyboardShortcuts,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport {\n\tplaceCaretAtHorizontalEdge,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\nimport { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\nconst useIsInvalidLink = ( kind, type, id ) => {\n\tconst isPostType =\n\t\tkind === 'post-type' || type === 'post' || type === 'page';\n\tconst hasId = Number.isInteger( id );\n\tconst postStatus = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isPostType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\treturn getEntityRecord( 'postType', type, id )?.status;\n\t\t},\n\t\t[ isPostType, type, id ]\n\t);\n\n\t// Check Navigation Link validity if:\n\t// 1. Link is 'post-type'.\n\t// 2. It has an id.\n\t// 3. It's neither null, nor undefined, as valid items might be either of those while loading.\n\t// If those conditions are met, check if\n\t// 1. The post status is published.\n\t// 2. The Navigation Link item has no label.\n\t// If either of those is true, invalidate.\n\tconst isInvalid =\n\t\tisPostType && hasId && postStatus && 'trash' === postStatus;\n\tconst isDraft = 'draft' === postStatus;\n\n\treturn [ isInvalid, isDraft ];\n};\n\nfunction getMissingText( type ) {\n\tlet missingText = '';\n\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\t\t/* translators: label for missing post in navigation link block */\n\t\t\tmissingText = __( 'Select post' );\n\t\t\tbreak;\n\t\tcase 'page':\n\t\t\t/* translators: label for missing page in navigation link block */\n\t\t\tmissingText = __( 'Select page' );\n\t\t\tbreak;\n\t\tcase 'category':\n\t\t\t/* translators: label for missing category in navigation link block */\n\t\t\tmissingText = __( 'Select category' );\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\t/* translators: label for missing tag in navigation link block */\n\t\t\tmissingText = __( 'Select tag' );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/* translators: label for missing values in navigation link block */\n\t\t\tmissingText = __( 'Add link' );\n\t}\n\n\treturn missingText;\n}\n\nexport default function NavigationLinkEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { id, label, type, url, description, rel, title, kind } = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add label…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasChildren,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t] ).length >= maxNestingLevel,\n\t\t\t\tisTopLevelLink:\n\t\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t\t'core/navigation',\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tfunction transformToSubmenu() {\n\t\tconst newSubmenu = createBlock(\n\t\t\t'core/navigation-submenu',\n\t\t\tattributes,\n\t\t\tinnerBlocks.length > 0\n\t\t\t\t? innerBlocks\n\t\t\t\t: [ createBlock( 'core/navigation-link' ) ]\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tuseEffect( () => {\n\t\t// Show the LinkControl on mount if the URL is empty\n\t\t// ( When adding a new menu item)\n\t\t// This can't be done in the useState call because it conflicts\n\t\t// with the autofocus behavior of the BlockListBlock component.\n\t\tif ( ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [ hasChildren ] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\t/**\n\t * Removes the current link if set.\n\t */\n\tfunction removeLink() {\n\t\t// Reset all attributes that comprise the link.\n\t\t// It is critical that all attributes are reset\n\t\t// to their default values otherwise this may\n\t\t// in advertently trigger side effects because\n\t\t// the values will have \"changed\".\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlabel: undefined,\n\t\t\tid: undefined,\n\t\t\tkind: undefined,\n\t\t\ttype: undefined,\n\t\t\topensInNewTab: false,\n\t\t} );\n\n\t\t// Close the link editing UI.\n\t\tsetIsLinkOpen( false );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelLink );\n\n\tfunction onKeyDown( event ) {\n\t\tif (\n\t\t\tisKeyboardEvent.primary( event, 'k' ) ||\n\t\t\t( ! url && event.keyCode === ENTER )\n\t\t) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\tconst ALLOWED_BLOCKS = [\n\t\t'core/navigation-link',\n\t\t'core/navigation-submenu',\n\t\t'core/page-list',\n\t];\n\tconst DEFAULT_BLOCK = {\n\t\tname: 'core/navigation-link',\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\t...blockProps,\n\t\t\tclassName: 'remove-outline', // Remove the outline from the inner blocks container.\n\t\t},\n\t\t{\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\t\t\trenderAppender: false,\n\t\t}\n\t);\n\n\tif ( ! url || isInvalid || isDraft ) {\n\t\tblockProps.onClick = () => setIsLinkOpen( true );\n\t}\n\n\tconst classes = classnames( 'wp-block-navigation-item__content', {\n\t\t'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,\n\t} );\n\n\tconst missingText = getMissingText( type );\n\t/* translators: Whether the navigation link is Invalid or a Draft. */\n\tconst placeholderText = `(${\n\t\tisInvalid ? __( 'Invalid' ) : __( 'Draft' )\n\t})`;\n\tconst tooltipText =\n\t\tisInvalid || isDraft\n\t\t\t? __( 'This item has been deleted, or is a draft' )\n\t\t\t: __( 'This item is missing a link' );\n\n\treturn (\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\tname=\"link\"\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isAtMaxNesting && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"submenu\"\n\t\t\t\t\t\t\ticon={ addSubmenu }\n\t\t\t\t\t\t\ttitle={ __( 'Add submenu' ) }\n\t\t\t\t\t\t\tonClick={ transformToSubmenu }\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\t\t\t{ /* Warning, this duplicated in packages/block-library/src/navigation-submenu/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label ? stripHTML( label ) : '' }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t{ url: urlValue },\n\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { description: descriptionValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link title' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<a className={ classes }>\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{ ! url ? (\n\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text\">\n\t\t\t\t\t\t\t<Tooltip position=\"top center\" text={ tooltipText }>\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<span>{ missingText }</span>\n\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isInvalid && ! isDraft && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: labelValue,\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\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'core/navigation-link'\n\t\t\t\t\t\t\t\t\t\t\t\t)\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\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t\t\t\t'core/strikethrough',\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\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\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{ description && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ( isInvalid || isDraft ) && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text wp-block-navigation-link__label\">\n\t\t\t\t\t\t\t\t\t<KeyboardShortcuts\n\t\t\t\t\t\t\t\t\t\tshortcuts={ {\n\t\t\t\t\t\t\t\t\t\t\tenter: () =>\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true ),\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<Tooltip\n\t\t\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\t\t\ttext={ tooltipText }\n\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\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Some attributes are stored in an escaped form. It's a legacy issue.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Ideally they would be stored in a raw, unescaped form.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Unescape is used here to \"recover\" the escaped characters\n\t\t\t\t\t\t\t\t\t\t\t\t\t// so they display without encoding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// See `updateAttributes` for more details.\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } ${ placeholderText }`.trim()\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t</div>\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\t{ isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\thasCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\tonRemove={ removeLink }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t\t);\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</a>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","select","getEntityRecord","coreStore","status","isInvalid","isDraft","getMissingText","missingText","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","blockEditorStore","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","pagesPermissions","postsPermissions","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","name","length","transformToSubmenu","newSubmenu","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","userCanCreate","canCreate","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","isKeyboardEvent","primary","keyCode","ENTER","blockProps","className","style","color","ALLOWED_BLOCKS","DEFAULT_BLOCK","innerBlocksProps","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","onClick","classes","placeholderText","tooltipText","linkIcon","displayShortcut","addSubmenu","labelValue","urlValue","descriptionValue","titleValue","relValue","enter","trim","updatedValue"],"mappings":";;;;;;;;;AA+BA;;AA5BA;;AAKA;;AACA;;AACA;;AASA;;AACA;;AACA;;AASA;;AAEA;;AAIA;;AACA;;AACA;;AAIA;;AAMA;;AACA;;AACA;;AAlDA;AACA;AACA;;AAGA;AACA;AACA;;AAqCA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,mBAAmB,GAAKC,UAAF,IAAkB;AAC7C,QAAM,CAAEC,gBAAF,EAAoBC,mBAApB,IAA4C,uBAAU,KAAV,CAAlD;AAEA,0BAAW,MAAM;AAChB,UAAM;AAAEC,MAAAA;AAAF,QAAoBH,UAAU,CAACI,OAArC;;AAEA,aAASC,eAAT,CAA0BC,KAA1B,EAAkC;AACjC;AACAC,MAAAA,eAAe,CAAED,KAAF,CAAf;AACA,KANe,CAQhB;;;AACA,aAASE,aAAT,GAAyB;AACxBN,MAAAA,mBAAmB,CAAE,KAAF,CAAnB;AACA;;AAED,aAASK,eAAT,CAA0BD,KAA1B,EAAkC;AACjC;AACA,UAAKN,UAAU,CAACI,OAAX,CAAmBK,QAAnB,CAA6BH,KAAK,CAACI,MAAnC,CAAL,EAAmD;AAClDR,QAAAA,mBAAmB,CAAE,IAAF,CAAnB;AACA,OAFD,MAEO;AACNA,QAAAA,mBAAmB,CAAE,KAAF,CAAnB;AACA;AACD,KApBe,CAsBhB;AACA;AACA;;;AACAC,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,WAAhC,EAA6CN,eAA7C;AACAF,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,SAAhC,EAA2CH,aAA3C;AACAL,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,WAAhC,EAA6CJ,eAA7C;AAEA,WAAO,MAAM;AACZJ,MAAAA,aAAa,CAACS,mBAAd,CAAmC,WAAnC,EAAgDP,eAAhD;AACAF,MAAAA,aAAa,CAACS,mBAAd,CAAmC,SAAnC,EAA8CJ,aAA9C;AACAL,MAAAA,aAAa,CAACS,mBAAd,CAAmC,WAAnC,EAAgDL,eAAhD;AACA,KAJD;AAKA,GAlCD,EAkCG,EAlCH;AAoCA,SAAON,gBAAP;AACA,CAxCD;;AA0CA,MAAMY,gBAAgB,GAAG,CAAEC,IAAF,EAAQC,IAAR,EAAcC,EAAd,KAAsB;AAC9C,QAAMC,UAAU,GACfH,IAAI,KAAK,WAAT,IAAwBC,IAAI,KAAK,MAAjC,IAA2CA,IAAI,KAAK,MADrD;AAEA,QAAMG,KAAK,GAAGC,MAAM,CAACC,SAAP,CAAkBJ,EAAlB,CAAd;AACA,QAAMK,UAAU,GAAG,qBAChBC,MAAF,IAAc;AAAA;;AACb,QAAK,CAAEL,UAAP,EAAoB;AACnB,aAAO,IAAP;AACA;;AACD,UAAM;AAAEM,MAAAA;AAAF,QAAsBD,MAAM,CAAEE,eAAF,CAAlC;AACA,+BAAOD,eAAe,CAAE,UAAF,EAAcR,IAAd,EAAoBC,EAApB,CAAtB,qDAAO,iBAAyCS,MAAhD;AACA,GAPiB,EAQlB,CAAER,UAAF,EAAcF,IAAd,EAAoBC,EAApB,CARkB,CAAnB,CAJ8C,CAe9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMU,SAAS,GACdT,UAAU,IAAIC,KAAd,IAAuBG,UAAvB,IAAqC,YAAYA,UADlD;AAEA,QAAMM,OAAO,GAAG,YAAYN,UAA5B;AAEA,SAAO,CAAEK,SAAF,EAAaC,OAAb,CAAP;AACA,CA5BD;;AA8BA,SAASC,cAAT,CAAyBb,IAAzB,EAAgC;AAC/B,MAAIc,WAAW,GAAG,EAAlB;;AAEA,UAASd,IAAT;AACC,SAAK,MAAL;AACC;AACAc,MAAAA,WAAW,GAAG,cAAI,aAAJ,CAAd;AACA;;AACD,SAAK,MAAL;AACC;AACAA,MAAAA,WAAW,GAAG,cAAI,aAAJ,CAAd;AACA;;AACD,SAAK,UAAL;AACC;AACAA,MAAAA,WAAW,GAAG,cAAI,iBAAJ,CAAd;AACA;;AACD,SAAK,KAAL;AACC;AACAA,MAAAA,WAAW,GAAG,cAAI,YAAJ,CAAd;AACA;;AACD;AACC;AACAA,MAAAA,WAAW,GAAG,cAAI,UAAJ,CAAd;AAnBF;;AAsBA,SAAOA,WAAP;AACA;;AAEc,SAASC,kBAAT,OASX;AAAA,MATwC;AAC3CC,IAAAA,UAD2C;AAE3CC,IAAAA,UAF2C;AAG3CC,IAAAA,aAH2C;AAI3CC,IAAAA,iBAJ2C;AAK3CC,IAAAA,WAL2C;AAM3CC,IAAAA,SAN2C;AAO3CC,IAAAA,OAP2C;AAQ3CC,IAAAA;AAR2C,GASxC;AACH,QAAM;AAAEtB,IAAAA,EAAF;AAAMuB,IAAAA,KAAN;AAAaxB,IAAAA,IAAb;AAAmByB,IAAAA,GAAnB;AAAwBC,IAAAA,WAAxB;AAAqCC,IAAAA,GAArC;AAA0CC,IAAAA,KAA1C;AAAiD7B,IAAAA;AAAjD,MAA0DiB,UAAhE;AAEA,QAAM,CAAEL,SAAF,EAAaC,OAAb,IAAyBd,gBAAgB,CAAEC,IAAF,EAAQC,IAAR,EAAcC,EAAd,CAA/C;AACA,QAAM;AAAE4B,IAAAA;AAAF,MAAsBP,OAA5B;AAEA,QAAM;AAAEQ,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MACL,uBAAaC,kBAAb,CADD;AAEA,QAAM,CAAEC,UAAF,EAAcC,aAAd,IAAgC,uBAAU,KAAV,CAAtC,CARG,CASH;AACA;;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,uBAAU,IAAV,CAA5C;AACA,QAAMC,WAAW,GAAG,qBAAQ,IAAR,CAApB;AACA,QAAMnD,gBAAgB,GAAGF,mBAAmB,CAAEqD,WAAF,CAA5C;AACA,QAAMC,oBAAoB,GAAG,cAAI,YAAJ,CAA7B;AACA,QAAMC,GAAG,GAAG,sBAAZ;AAEA,QAAMC,gBAAgB,GAAG,sCAAwB,OAAxB,CAAzB;AACA,QAAMC,gBAAgB,GAAG,sCAAwB,OAAxB,CAAzB;AAEA,QAAM;AACLC,IAAAA,WADK;AAELC,IAAAA,cAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,uBAJK;AAKLC,IAAAA;AALK,MAMF,qBACDvC,MAAF,IAAc;AACb,UAAM;AACLwC,MAAAA,SADK;AAELC,MAAAA,aAFK;AAGLC,MAAAA,YAHK;AAILC,MAAAA,oBAJK;AAKLC,MAAAA,qBALK;AAMLC,MAAAA;AANK,QAOF7C,MAAM,CAAEyB,kBAAF,CAPV;AASA,WAAO;AACNU,MAAAA,WAAW,EAAEK,SAAS,CAAExB,QAAF,CADhB;AAENoB,MAAAA,cAAc,EACbS,0BAA0B,CAAE7B,QAAF,EAAY,CACrC8B,IADqC,EAErC,yBAFqC,CAAZ,CAA1B,CAGIC,MAHJ,IAGczB,eANT;AAONe,MAAAA,cAAc,EACbK,YAAY,CAAEC,oBAAoB,CAAE3B,QAAF,CAAtB,CAAZ,KACA,iBATK;AAUNsB,MAAAA,uBAAuB,EAAEM,qBAAqB,CAC7C5B,QAD6C,EAE7C,IAF6C,CAVxC;AAcNuB,MAAAA,WAAW,EAAE,CAAC,CAAEE,aAAa,CAAEzB,QAAF;AAdvB,KAAP;AAgBA,GA3BE,EA4BH,CAAEA,QAAF,CA5BG,CANJ;AAqCA;AACD;AACA;;AACC,WAASgC,kBAAT,GAA8B;AAC7B,UAAMC,UAAU,GAAG,yBAClB,yBADkB,EAElBxC,UAFkB,EAGlB0B,WAAW,CAACY,MAAZ,GAAqB,CAArB,GACGZ,WADH,GAEG,CAAE,yBAAa,sBAAb,CAAF,CALe,CAAnB;AAOAZ,IAAAA,YAAY,CAAEP,QAAF,EAAYiC,UAAZ,CAAZ;AACA;;AAED,0BAAW,MAAM;AAChB;AACA;AACA;AACA;AACA,QAAK,CAAE/B,GAAP,EAAa;AACZS,MAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD,GARD,EAQG,CAAET,GAAF,CARH;AAUA,0BAAW,MAAM;AAChB;AACA,QAAKqB,WAAL,EAAmB;AAClB;AACA;AACAf,MAAAA,uCAAuC;;AACvCwB,MAAAA,kBAAkB;AAClB;AACD,GARD,EAQG,CAAET,WAAF,CARH;AAUA;AACD;AACA;AACA;;AACC,0BAAW,MAAM;AAChB,QAAK,CAAE7B,UAAP,EAAoB;AACnBiB,MAAAA,aAAa,CAAE,KAAF,CAAb;AACA;AACD,GAJD,EAIG,CAAEjB,UAAF,CAJH,EA/FG,CAqGH;;AACA,0BAAW,MAAM;AAChB,QAAKgB,UAAU,IAAIR,GAAnB,EAAyB;AACxB;AACA,UACC,gBAAO,sBAAaD,KAAb,CAAP,KACA,cAAciC,IAAd,CAAoBjC,KAApB,CAFD,EAGE;AACD;AACAkC,QAAAA,eAAe;AACf,OAND,MAMO;AACN;AACA,6CAA4BnB,GAAG,CAAClD,OAAhC,EAAyC,IAAzC;AACA;AACD;AACD,GAdD,EAcG,CAAEoC,GAAF,CAdH;AAgBA;AACD;AACA;;AACC,WAASiC,eAAT,GAA2B;AAC1BnB,IAAAA,GAAG,CAAClD,OAAJ,CAAYsE,KAAZ;AACA,UAAM;AAAEvE,MAAAA;AAAF,QAAoBmD,GAAG,CAAClD,OAA9B;AACA,UAAM;AAAEuE,MAAAA;AAAF,QAAkBxE,aAAxB;AACA,UAAMyE,SAAS,GAAGD,WAAW,CAACE,YAAZ,EAAlB;AACA,UAAMC,KAAK,GAAG3E,aAAa,CAAC4E,WAAd,EAAd,CAL0B,CAM1B;;AACAD,IAAAA,KAAK,CAACE,kBAAN,CAA0B1B,GAAG,CAAClD,OAA9B;AACAwE,IAAAA,SAAS,CAACK,eAAV;AACAL,IAAAA,SAAS,CAACM,QAAV,CAAoBJ,KAApB;AACA;AAED;AACD;AACA;;;AACC,WAASK,UAAT,GAAsB;AACrB;AACA;AACA;AACA;AACA;AACAlD,IAAAA,aAAa,CAAE;AACdO,MAAAA,GAAG,EAAE4C,SADS;AAEd7C,MAAAA,KAAK,EAAE6C,SAFO;AAGdpE,MAAAA,EAAE,EAAEoE,SAHU;AAIdtE,MAAAA,IAAI,EAAEsE,SAJQ;AAKdrE,MAAAA,IAAI,EAAEqE,SALQ;AAMdC,MAAAA,aAAa,EAAE;AAND,KAAF,CAAb,CANqB,CAerB;;AACApC,IAAAA,aAAa,CAAE,KAAF,CAAb;AACA;;AAED,MAAIqC,aAAa,GAAG,KAApB;;AACA,MAAK,CAAEvE,IAAF,IAAUA,IAAI,KAAK,MAAxB,EAAiC;AAChCuE,IAAAA,aAAa,GAAG/B,gBAAgB,CAACgC,SAAjC;AACA,GAFD,MAEO,IAAKxE,IAAI,KAAK,MAAd,EAAuB;AAC7BuE,IAAAA,aAAa,GAAG9B,gBAAgB,CAAC+B,SAAjC;AACA;;AAED,QAAM;AACLC,IAAAA,SADK;AAELC,IAAAA,eAFK;AAGLC,IAAAA,eAHK;AAILC,IAAAA;AAJK,MAKF,sBAAWtD,OAAX,EAAoB,CAAEsB,cAAtB,CALJ;;AAOA,WAASiC,SAAT,CAAoBtF,KAApB,EAA4B;AAC3B,QACCuF,0BAAgBC,OAAhB,CAAyBxF,KAAzB,EAAgC,GAAhC,KACE,CAAEkC,GAAF,IAASlC,KAAK,CAACyF,OAAN,KAAkBC,eAF9B,EAGE;AACD/C,MAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD;;AAED,QAAMgD,UAAU,GAAG,gCAAe;AACjC3C,IAAAA,GAAG,EAAE,2BAAc,CAAEH,gBAAF,EAAoBC,WAApB,CAAd,CAD4B;AAEjC8C,IAAAA,SAAS,EAAE,yBAAY,0BAAZ,EAAwC;AAClD,oBAAclE,UAAU,IAAI4B,uBADsB;AAElD,4BAAsB3D,gBAF4B;AAGlD,kBAAY,CAAC,CAAEuC,GAHmC;AAIlD,mBAAaqB,WAJqC;AAKlD,wBAAkB,CAAC,CAAE2B,SAAH,IAAgB,CAAC,CAAEC,eALa;AAMlD,OAAE,oCAAmB,OAAnB,EAA4BD,SAA5B,CAAF,GAA6C,CAAC,CAAEA,SANE;AAOlD,wBAAkB,CAAC,CAAEE,eAAH,IAAsBC,qBAPU;AAQlD,OAAE,oCAAmB,kBAAnB,EAAuCD,eAAvC,CAAF,GACC,CAAC,CAAEA;AAT8C,KAAxC,CAFsB;AAajCS,IAAAA,KAAK,EAAE;AACNC,MAAAA,KAAK,EAAE,CAAEZ,SAAF,IAAeC,eADhB;AAENC,MAAAA,eAAe,EAAE,CAAEA,eAAF,IAAqBC;AAFhC,KAb0B;AAiBjCC,IAAAA;AAjBiC,GAAf,CAAnB;AAoBA,QAAMS,cAAc,GAAG,CACtB,sBADsB,EAEtB,yBAFsB,EAGtB,gBAHsB,CAAvB;AAKA,QAAMC,aAAa,GAAG;AACrBlC,IAAAA,IAAI,EAAE;AADe,GAAtB;AAIA,QAAMmC,gBAAgB,GAAG,sCACxB,EACC,GAAGN,UADJ;AAECC,IAAAA,SAAS,EAAE,gBAFZ,CAE8B;;AAF9B,GADwB,EAKxB;AACCM,IAAAA,aAAa,EAAEH,cADhB;AAECI,IAAAA,0BAA0B,EAAEH,aAF7B;AAGCI,IAAAA,0BAA0B,EAAE,IAH7B;AAICC,IAAAA,cAAc,EAAE;AAJjB,GALwB,CAAzB;;AAaA,MAAK,CAAEnE,GAAF,IAASd,SAAT,IAAsBC,OAA3B,EAAqC;AACpCsE,IAAAA,UAAU,CAACW,OAAX,GAAqB,MAAM3D,aAAa,CAAE,IAAF,CAAxC;AACA;;AAED,QAAM4D,OAAO,GAAG,yBAAY,mCAAZ,EAAiD;AAChE,6CAAyC,CAAErE,GAAF,IAASd,SAAT,IAAsBC;AADC,GAAjD,CAAhB;AAIA,QAAME,WAAW,GAAGD,cAAc,CAAEb,IAAF,CAAlC;AACA;;AACA,QAAM+F,eAAe,GAAI,IACxBpF,SAAS,GAAG,cAAI,SAAJ,CAAH,GAAqB,cAAI,OAAJ,CAC9B,GAFD;AAGA,QAAMqF,WAAW,GAChBrF,SAAS,IAAIC,OAAb,GACG,cAAI,2CAAJ,CADH,GAEG,cAAI,6BAAJ,CAHJ;AAKA,SACC,qDACC,4BAAC,0BAAD,QACC,4BAAC,wBAAD,QACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,IAAI,EAAGqF,WAFR;AAGC,IAAA,KAAK,EAAG,cAAI,MAAJ,CAHT;AAIC,IAAA,QAAQ,EAAGC,0BAAgBnB,OAAhB,CAAyB,GAAzB,CAJZ;AAKC,IAAA,OAAO,EAAG,MAAM7C,aAAa,CAAE,IAAF;AAL9B,IADD,EAQG,CAAES,cAAF,IACD,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAC,SADN;AAEC,IAAA,IAAI,EAAGwD,iBAFR;AAGC,IAAA,KAAK,EAAG,cAAI,aAAJ,CAHT;AAIC,IAAA,OAAO,EAAG5C;AAJX,IATF,CADD,CADD,EAqBC,4BAAC,8BAAD,QACC,4BAAC,qBAAD;AAAW,IAAA,KAAK,EAAG,cAAI,UAAJ;AAAnB,KACC,4BAAC,uBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG/B,KAAK,GAAG,8BAAWA,KAAX,CAAH,GAAwB,EAFtC;AAGC,IAAA,QAAQ,EAAK4E,UAAF,IAAkB;AAC5BlF,MAAAA,aAAa,CAAE;AAAEM,QAAAA,KAAK,EAAE4E;AAAT,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG,cAAI,OAAJ,CANT;AAOC,IAAA,YAAY,EAAC;AAPd,IADD,EAUC,4BAAC,uBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG3E,GAAG,IAAI,EAFhB;AAGC,IAAA,QAAQ,EAAK4E,QAAF,IAAgB;AAC1B,8CACC;AAAE5E,QAAAA,GAAG,EAAE4E;AAAP,OADD,EAECnF,aAFD,EAGCF,UAHD;AAKA,KATF;AAUC,IAAA,KAAK,EAAG,cAAI,KAAJ,CAVT;AAWC,IAAA,YAAY,EAAC;AAXd,IAVD,EAuBC,4BAAC,2BAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGU,WAAW,IAAI,EAFxB;AAGC,IAAA,QAAQ,EAAK4E,gBAAF,IAAwB;AAClCpF,MAAAA,aAAa,CAAE;AAAEQ,QAAAA,WAAW,EAAE4E;AAAf,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG,cAAI,aAAJ,CANT;AAOC,IAAA,IAAI,EAAG,cACN,iFADM;AAPR,IAvBD,EAkCC,4BAAC,uBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG1E,KAAK,IAAI,EAFlB;AAGC,IAAA,QAAQ,EAAK2E,UAAF,IAAkB;AAC5BrF,MAAAA,aAAa,CAAE;AAAEU,QAAAA,KAAK,EAAE2E;AAAT,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG,cAAI,iBAAJ,CANT;AAOC,IAAA,YAAY,EAAC,KAPd;AAQC,IAAA,IAAI,EAAG,cACN,iEADM;AARR,IAlCD,EA8CC,4BAAC,uBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG5E,GAAG,IAAI,EAFhB;AAGC,IAAA,QAAQ,EAAK6E,QAAF,IAAgB;AAC1BtF,MAAAA,aAAa,CAAE;AAAES,QAAAA,GAAG,EAAE6E;AAAP,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG,cAAI,eAAJ,CANT;AAOC,IAAA,YAAY,EAAC,KAPd;AAQC,IAAA,IAAI,EAAG,cACN,mEADM;AARR,IA9CD,CADD,CArBD,EAkFC,mCAAUtB,UAAV,EAEC;AAAG,IAAA,SAAS,EAAGY;AAAf,KAEG,CAAErE,GAAF,GACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,mBAAD;AAAS,IAAA,QAAQ,EAAC,YAAlB;AAA+B,IAAA,IAAI,EAAGuE;AAAtC,KACC,qDACC,0CAAQlF,WAAR,CADD,EAEC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGkF,WADH,CAFD,CADD,CADD,CADC,GAYD,qDACG,CAAErF,SAAF,IAAe,CAAEC,OAAjB,IACD,qDACC,4BAAC,qBAAD;AACC,IAAA,GAAG,EAAG2B,GADP;AAEC,IAAA,UAAU,EAAC,OAFZ;AAGC,IAAA,SAAS,EAAC,iCAHX;AAIC,IAAA,KAAK,EAAGf,KAJT;AAKC,IAAA,QAAQ,EAAK4E,UAAF,IACVlF,aAAa,CAAE;AACdM,MAAAA,KAAK,EAAE4E;AADO,KAAF,CANf;AAUC,IAAA,OAAO,EAAGhF,WAVX;AAWC,IAAA,SAAS,EAAGC,SAXb;AAYC,IAAA,sBAAsB,EAAG,MACxBF,iBAAiB,CAChB,yBACC,sBADD,CADgB,CAbnB;AAmBC,kBAAa,cACZ,sBADY,CAnBd;AAsBC,IAAA,WAAW,EAAGmB,oBAtBf;AAuBC,IAAA,4BAA4B,MAvB7B;AAwBC,IAAA,cAAc,EAAG,CAChB,WADgB,EAEhB,aAFgB,EAGhB,YAHgB,EAIhB,oBAJgB,CAxBlB;AA8BC,IAAA,OAAO,EAAG,MAAM;AACf,UAAK,CAAEb,GAAP,EAAa;AACZS,QAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD;AAlCF,IADD,EAqCGR,WAAW,IACZ;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGA,WADH,CAtCF,CAFF,EA8CG,CAAEf,SAAS,IAAIC,OAAf,KACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,6BAAD;AACC,IAAA,SAAS,EAAG;AACX6F,MAAAA,KAAK,EAAE,MACNxF,UAAU,IACViB,aAAa,CAAE,IAAF;AAHH;AADb,IADD,EAQC,4BAAC,mBAAD;AACC,IAAA,QAAQ,EAAC,YADV;AAEC,IAAA,IAAI,EAAG8D;AAFR,KAIC,qDACC;AACC,kBAAa,cACZ,sBADY;AADd,KAME;AACA;AACA;AACA;AACA;AACC,KAAG,kCACHxE,KADG,CAED,IAAIuE,eAAiB,EAFxB,CAE0BW,IAF1B,EAXF,CADD,EAiBC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGV,WADH,CAjBD,CAJD,CARD,CA/CF,CAdF,EAmGG/D,UAAU,IACX,4BAAC,cAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,QAAQ,EAAGV,QAFZ;AAGC,IAAA,IAAI,EAAGP,UAHR;AAIC,IAAA,OAAO,EAAG,MAAMkB,aAAa,CAAE,KAAF,CAJ9B;AAKC,IAAA,MAAM,EAAGC,aALV;AAMC,IAAA,mBAAmB,EAAGoC,aANvB;AAOC,IAAA,QAAQ,EAAGH,UAPZ;AAQC,IAAA,QAAQ,EAAKuC,YAAF,IAAoB;AAC9B,8CACCA,YADD,EAECzF,aAFD,EAGCF,UAHD;AAKA;AAdF,IApGF,CAFD,EAwHC,mCAAUwE,gBAAV,CAxHD,CAlFD,CADD;AA+MA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n\tKeyboardShortcuts,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport {\n\tplaceCaretAtHorizontalEdge,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\nimport { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\nconst useIsInvalidLink = ( kind, type, id ) => {\n\tconst isPostType =\n\t\tkind === 'post-type' || type === 'post' || type === 'page';\n\tconst hasId = Number.isInteger( id );\n\tconst postStatus = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isPostType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\treturn getEntityRecord( 'postType', type, id )?.status;\n\t\t},\n\t\t[ isPostType, type, id ]\n\t);\n\n\t// Check Navigation Link validity if:\n\t// 1. Link is 'post-type'.\n\t// 2. It has an id.\n\t// 3. It's neither null, nor undefined, as valid items might be either of those while loading.\n\t// If those conditions are met, check if\n\t// 1. The post status is published.\n\t// 2. The Navigation Link item has no label.\n\t// If either of those is true, invalidate.\n\tconst isInvalid =\n\t\tisPostType && hasId && postStatus && 'trash' === postStatus;\n\tconst isDraft = 'draft' === postStatus;\n\n\treturn [ isInvalid, isDraft ];\n};\n\nfunction getMissingText( type ) {\n\tlet missingText = '';\n\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\t\t/* translators: label for missing post in navigation link block */\n\t\t\tmissingText = __( 'Select post' );\n\t\t\tbreak;\n\t\tcase 'page':\n\t\t\t/* translators: label for missing page in navigation link block */\n\t\t\tmissingText = __( 'Select page' );\n\t\t\tbreak;\n\t\tcase 'category':\n\t\t\t/* translators: label for missing category in navigation link block */\n\t\t\tmissingText = __( 'Select category' );\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\t/* translators: label for missing tag in navigation link block */\n\t\t\tmissingText = __( 'Select tag' );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/* translators: label for missing values in navigation link block */\n\t\t\tmissingText = __( 'Add link' );\n\t}\n\n\treturn missingText;\n}\n\nexport default function NavigationLinkEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { id, label, type, url, description, rel, title, kind } = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add label…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasChildren,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t] ).length >= maxNestingLevel,\n\t\t\t\tisTopLevelLink:\n\t\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t\t'core/navigation',\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tfunction transformToSubmenu() {\n\t\tconst newSubmenu = createBlock(\n\t\t\t'core/navigation-submenu',\n\t\t\tattributes,\n\t\t\tinnerBlocks.length > 0\n\t\t\t\t? innerBlocks\n\t\t\t\t: [ createBlock( 'core/navigation-link' ) ]\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tuseEffect( () => {\n\t\t// Show the LinkControl on mount if the URL is empty\n\t\t// ( When adding a new menu item)\n\t\t// This can't be done in the useState call because it conflicts\n\t\t// with the autofocus behavior of the BlockListBlock component.\n\t\tif ( ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [ hasChildren ] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\t/**\n\t * Removes the current link if set.\n\t */\n\tfunction removeLink() {\n\t\t// Reset all attributes that comprise the link.\n\t\t// It is critical that all attributes are reset\n\t\t// to their default values otherwise this may\n\t\t// in advertently trigger side effects because\n\t\t// the values will have \"changed\".\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlabel: undefined,\n\t\t\tid: undefined,\n\t\t\tkind: undefined,\n\t\t\ttype: undefined,\n\t\t\topensInNewTab: false,\n\t\t} );\n\n\t\t// Close the link editing UI.\n\t\tsetIsLinkOpen( false );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelLink );\n\n\tfunction onKeyDown( event ) {\n\t\tif (\n\t\t\tisKeyboardEvent.primary( event, 'k' ) ||\n\t\t\t( ! url && event.keyCode === ENTER )\n\t\t) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\tconst ALLOWED_BLOCKS = [\n\t\t'core/navigation-link',\n\t\t'core/navigation-submenu',\n\t\t'core/page-list',\n\t];\n\tconst DEFAULT_BLOCK = {\n\t\tname: 'core/navigation-link',\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\t...blockProps,\n\t\t\tclassName: 'remove-outline', // Remove the outline from the inner blocks container.\n\t\t},\n\t\t{\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\t\t\trenderAppender: false,\n\t\t}\n\t);\n\n\tif ( ! url || isInvalid || isDraft ) {\n\t\tblockProps.onClick = () => setIsLinkOpen( true );\n\t}\n\n\tconst classes = classnames( 'wp-block-navigation-item__content', {\n\t\t'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,\n\t} );\n\n\tconst missingText = getMissingText( type );\n\t/* translators: Whether the navigation link is Invalid or a Draft. */\n\tconst placeholderText = `(${\n\t\tisInvalid ? __( 'Invalid' ) : __( 'Draft' )\n\t})`;\n\tconst tooltipText =\n\t\tisInvalid || isDraft\n\t\t\t? __( 'This item has been deleted, or is a draft' )\n\t\t\t: __( 'This item is missing a link' );\n\n\treturn (\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\tname=\"link\"\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isAtMaxNesting && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"submenu\"\n\t\t\t\t\t\t\ticon={ addSubmenu }\n\t\t\t\t\t\t\ttitle={ __( 'Add submenu' ) }\n\t\t\t\t\t\t\tonClick={ transformToSubmenu }\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\t\t\t{ /* Warning, this duplicated in packages/block-library/src/navigation-submenu/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label ? stripHTML( label ) : '' }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t{ url: urlValue },\n\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { description: descriptionValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Additional information to help clarify the purpose of the link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<a className={ classes }>\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{ ! url ? (\n\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text\">\n\t\t\t\t\t\t\t<Tooltip position=\"top center\" text={ tooltipText }>\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<span>{ missingText }</span>\n\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isInvalid && ! isDraft && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: labelValue,\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\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'core/navigation-link'\n\t\t\t\t\t\t\t\t\t\t\t\t)\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\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t\t\t\t'core/strikethrough',\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\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\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{ description && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ( isInvalid || isDraft ) && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text wp-block-navigation-link__label\">\n\t\t\t\t\t\t\t\t\t<KeyboardShortcuts\n\t\t\t\t\t\t\t\t\t\tshortcuts={ {\n\t\t\t\t\t\t\t\t\t\t\tenter: () =>\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true ),\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<Tooltip\n\t\t\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\t\t\ttext={ tooltipText }\n\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\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Some attributes are stored in an escaped form. It's a legacy issue.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Ideally they would be stored in a raw, unescaped form.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Unescape is used here to \"recover\" the escaped characters\n\t\t\t\t\t\t\t\t\t\t\t\t\t// so they display without encoding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// See `updateAttributes` for more details.\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } ${ placeholderText }`.trim()\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t</div>\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\t{ isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\thasCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\tonRemove={ removeLink }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t\t);\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</a>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.updateAttributes = void 0;
|
|
7
7
|
|
|
8
|
-
var _url = require("@wordpress/url");
|
|
9
|
-
|
|
10
8
|
var _escapeHtml = require("@wordpress/escape-html");
|
|
11
9
|
|
|
10
|
+
var _url = require("@wordpress/url");
|
|
11
|
+
|
|
12
12
|
/**
|
|
13
13
|
* WordPress dependencies
|
|
14
14
|
*/
|
|
@@ -83,9 +83,9 @@ const updateAttributes = function () {
|
|
|
83
83
|
const isCustomLink = !newKind && !isBuiltInType || newKind === 'custom';
|
|
84
84
|
const kind = isCustomLink ? 'custom' : newKind;
|
|
85
85
|
setAttributes({ // Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.
|
|
86
|
-
...{
|
|
87
|
-
url:
|
|
88
|
-
},
|
|
86
|
+
...(newUrl && {
|
|
87
|
+
url: encodeURI((0, _url.safeDecodeURI)(newUrl))
|
|
88
|
+
}),
|
|
89
89
|
...(label && {
|
|
90
90
|
label
|
|
91
91
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/update-attributes.js"],"names":["updateAttributes","updatedValue","setAttributes","blockAttributes","label","originalLabel","kind","originalKind","type","originalType","title","newLabel","url","newUrl","opensInNewTab","id","newKind","newType","newLabelWithoutHttp","replace","newUrlWithoutHttp","useNewLabel","isBuiltInType","indexOf","isCustomLink","encodeURI","undefined","Number","isInteger"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;;AAIA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAMA,gBAAgB,GAAG,YAI3B;AAAA,MAHJC,YAGI,uEAHW,EAGX;AAAA,MAFJC,aAEI;AAAA,MADJC,eACI,uEADc,EACd;AACJ,QAAM;AACLC,IAAAA,KAAK,EAAEC,aAAa,GAAG,EADlB;AAELC,IAAAA,IAAI,EAAEC,YAAY,GAAG,EAFhB;AAGLC,IAAAA,IAAI,EAAEC,YAAY,GAAG;AAHhB,MAIFN,eAJJ;AAMA,QAAM;AACLO,IAAAA,KAAK,EAAEC,QAAQ,GAAG,EADb;AACiB;AACtBC,IAAAA,GAAG,EAAEC,MAAM,GAAG,EAFT;AAGLC,IAAAA,aAHK;AAILC,IAAAA,EAJK;AAKLT,IAAAA,IAAI,EAAEU,OAAO,GAAGT,YALX;AAMLC,IAAAA,IAAI,EAAES,OAAO,GAAGR;AANX,MAOFR,YAPJ;AASA,QAAMiB,mBAAmB,GAAGP,QAAQ,CAACQ,OAAT,CAAkB,iBAAlB,EAAqC,EAArC,CAA5B;AACA,QAAMC,iBAAiB,GAAGP,MAAM,CAACM,OAAP,CAAgB,iBAAhB,EAAmC,EAAnC,CAA1B;AAEA,QAAME,WAAW,GAChBV,QAAQ,IACRA,QAAQ,KAAKN,aADb,IAEA;AACA;AACA;AACA;AACA;AACA;AACAa,EAAAA,mBAAmB,KAAKE,iBATzB,CAnBI,CA8BJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMhB,KAAK,GAAGiB,WAAW,GACtB,4BAAYV,QAAZ,CADsB,GAEtBN,aAAa,IAAI,4BAAYe,iBAAZ,CAFpB,CAvCI,CA2CJ;;AACA,QAAMZ,IAAI,GAAGS,OAAO,KAAK,UAAZ,GAAyB,KAAzB,GAAiCA,OAAO,CAACE,OAAR,CAAiB,GAAjB,EAAsB,GAAtB,CAA9C;AAEA,QAAMG,aAAa,GAClB,CAAE,MAAF,EAAU,MAAV,EAAkB,KAAlB,EAAyB,UAAzB,EAAsCC,OAAtC,CAA+Cf,IAA/C,IAAwD,CAAC,CAD1D;AAGA,QAAMgB,YAAY,GACf,CAAER,OAAF,IAAa,CAAEM,aAAjB,IAAoCN,OAAO,KAAK,QADjD;AAEA,QAAMV,IAAI,GAAGkB,YAAY,GAAG,QAAH,GAAcR,OAAvC;AAEAd,EAAAA,aAAa,CAAE,EACd;AACA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/update-attributes.js"],"names":["updateAttributes","updatedValue","setAttributes","blockAttributes","label","originalLabel","kind","originalKind","type","originalType","title","newLabel","url","newUrl","opensInNewTab","id","newKind","newType","newLabelWithoutHttp","replace","newUrlWithoutHttp","useNewLabel","isBuiltInType","indexOf","isCustomLink","encodeURI","undefined","Number","isInteger"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;;AAIA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAMA,gBAAgB,GAAG,YAI3B;AAAA,MAHJC,YAGI,uEAHW,EAGX;AAAA,MAFJC,aAEI;AAAA,MADJC,eACI,uEADc,EACd;AACJ,QAAM;AACLC,IAAAA,KAAK,EAAEC,aAAa,GAAG,EADlB;AAELC,IAAAA,IAAI,EAAEC,YAAY,GAAG,EAFhB;AAGLC,IAAAA,IAAI,EAAEC,YAAY,GAAG;AAHhB,MAIFN,eAJJ;AAMA,QAAM;AACLO,IAAAA,KAAK,EAAEC,QAAQ,GAAG,EADb;AACiB;AACtBC,IAAAA,GAAG,EAAEC,MAAM,GAAG,EAFT;AAGLC,IAAAA,aAHK;AAILC,IAAAA,EAJK;AAKLT,IAAAA,IAAI,EAAEU,OAAO,GAAGT,YALX;AAMLC,IAAAA,IAAI,EAAES,OAAO,GAAGR;AANX,MAOFR,YAPJ;AASA,QAAMiB,mBAAmB,GAAGP,QAAQ,CAACQ,OAAT,CAAkB,iBAAlB,EAAqC,EAArC,CAA5B;AACA,QAAMC,iBAAiB,GAAGP,MAAM,CAACM,OAAP,CAAgB,iBAAhB,EAAmC,EAAnC,CAA1B;AAEA,QAAME,WAAW,GAChBV,QAAQ,IACRA,QAAQ,KAAKN,aADb,IAEA;AACA;AACA;AACA;AACA;AACA;AACAa,EAAAA,mBAAmB,KAAKE,iBATzB,CAnBI,CA8BJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMhB,KAAK,GAAGiB,WAAW,GACtB,4BAAYV,QAAZ,CADsB,GAEtBN,aAAa,IAAI,4BAAYe,iBAAZ,CAFpB,CAvCI,CA2CJ;;AACA,QAAMZ,IAAI,GAAGS,OAAO,KAAK,UAAZ,GAAyB,KAAzB,GAAiCA,OAAO,CAACE,OAAR,CAAiB,GAAjB,EAAsB,GAAtB,CAA9C;AAEA,QAAMG,aAAa,GAClB,CAAE,MAAF,EAAU,MAAV,EAAkB,KAAlB,EAAyB,UAAzB,EAAsCC,OAAtC,CAA+Cf,IAA/C,IAAwD,CAAC,CAD1D;AAGA,QAAMgB,YAAY,GACf,CAAER,OAAF,IAAa,CAAEM,aAAjB,IAAoCN,OAAO,KAAK,QADjD;AAEA,QAAMV,IAAI,GAAGkB,YAAY,GAAG,QAAH,GAAcR,OAAvC;AAEAd,EAAAA,aAAa,CAAE,EACd;AACA,QAAKW,MAAM,IAAI;AAAED,MAAAA,GAAG,EAAEa,SAAS,CAAE,wBAAeZ,MAAf,CAAF;AAAhB,KAAf,CAFc;AAGd,QAAKT,KAAK,IAAI;AAAEA,MAAAA;AAAF,KAAd,CAHc;AAId,QAAKsB,SAAS,KAAKZ,aAAd,IAA+B;AAAEA,MAAAA;AAAF,KAApC,CAJc;AAKd,QAAKC,EAAE,IAAIY,MAAM,CAACC,SAAP,CAAkBb,EAAlB,CAAN,IAAgC;AAAEA,MAAAA;AAAF,KAArC,CALc;AAMd,QAAKT,IAAI,IAAI;AAAEA,MAAAA;AAAF,KAAb,CANc;AAOd,QAAKE,IAAI,IAAIA,IAAI,KAAK,KAAjB,IAA0B;AAAEA,MAAAA;AAAF,KAA/B;AAPc,GAAF,CAAb;AASA,CAlEM","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { escapeHTML } from '@wordpress/escape-html';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n * @property {string} [title] Link title attribute.\n */\n/**\n * Link Control onChange handler that updates block attributes when a setting is changed.\n *\n * @param {Object} updatedValue New block attributes to update.\n * @param {Function} setAttributes Block attribute update function.\n * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.\n *\n */\n\nexport const updateAttributes = (\n\tupdatedValue = {},\n\tsetAttributes,\n\tblockAttributes = {}\n) => {\n\tconst {\n\t\tlabel: originalLabel = '',\n\t\tkind: originalKind = '',\n\t\ttype: originalType = '',\n\t} = blockAttributes;\n\n\tconst {\n\t\ttitle: newLabel = '', // the title of any provided Post.\n\t\turl: newUrl = '',\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\n\tconst newLabelWithoutHttp = newLabel.replace( /http(s?):\\/\\//gi, '' );\n\tconst newUrlWithoutHttp = newUrl.replace( /http(s?):\\/\\//gi, '' );\n\n\tconst useNewLabel =\n\t\tnewLabel &&\n\t\tnewLabel !== originalLabel &&\n\t\t// LinkControl without the title field relies\n\t\t// on the check below. Specifically, it assumes that\n\t\t// the URL is the same as a title.\n\t\t// This logic a) looks suspicious and b) should really\n\t\t// live in the LinkControl and not here. It's a great\n\t\t// candidate for future refactoring.\n\t\tnewLabelWithoutHttp !== newUrlWithoutHttp;\n\n\t// Unfortunately this causes the escaping model to be inverted.\n\t// The escaped content is stored in the block attributes (and ultimately in the database),\n\t// and then the raw data is \"recovered\" when outputting into the DOM.\n\t// It would be preferable to store the **raw** data in the block attributes and escape it in JS.\n\t// Why? Because there isn't one way to escape data. Depending on the context, you need to do\n\t// different transforms. It doesn't make sense to me to choose one of them for the purposes of storage.\n\t// See also:\n\t// - https://github.com/WordPress/gutenberg/pull/41063\n\t// - https://github.com/WordPress/gutenberg/pull/18617.\n\tconst label = useNewLabel\n\t\t? escapeHTML( newLabel )\n\t\t: originalLabel || escapeHTML( newUrlWithoutHttp );\n\n\t// In https://github.com/WordPress/gutenberg/pull/24670 we decided to use \"tag\" in favor of \"post_tag\"\n\tconst type = newType === 'post_tag' ? 'tag' : newType.replace( '-', '_' );\n\n\tconst isBuiltInType =\n\t\t[ 'post', 'page', 'tag', 'category' ].indexOf( type ) > -1;\n\n\tconst isCustomLink =\n\t\t( ! newKind && ! isBuiltInType ) || newKind === 'custom';\n\tconst kind = isCustomLink ? 'custom' : newKind;\n\n\tsetAttributes( {\n\t\t// Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.\n\t\t...( newUrl && { url: encodeURI( safeDecodeURI( newUrl ) ) } ),\n\t\t...( label && { label } ),\n\t\t...( undefined !== opensInNewTab && { opensInNewTab } ),\n\t\t...( id && Number.isInteger( id ) && { id } ),\n\t\t...( kind && { kind } ),\n\t\t...( type && type !== 'URL' && { type } ),\n\t} );\n};\n"]}
|
|
@@ -399,7 +399,7 @@ function NavigationSubmenuEdit(_ref) {
|
|
|
399
399
|
className: "wp-block-navigation__submenu__revert",
|
|
400
400
|
isDisabled: !canConvertToLink
|
|
401
401
|
}))), (0, _element.createElement)(_blockEditor.InspectorControls, null, (0, _element.createElement)(_components.PanelBody, {
|
|
402
|
-
title: (0, _i18n.__)('
|
|
402
|
+
title: (0, _i18n.__)('Settings')
|
|
403
403
|
}, (0, _element.createElement)(_components.TextControl, {
|
|
404
404
|
__nextHasNoMarginBottom: true,
|
|
405
405
|
value: label || '',
|
|
@@ -438,8 +438,9 @@ function NavigationSubmenuEdit(_ref) {
|
|
|
438
438
|
title: titleValue
|
|
439
439
|
});
|
|
440
440
|
},
|
|
441
|
-
label: (0, _i18n.__)('
|
|
442
|
-
autoComplete: "off"
|
|
441
|
+
label: (0, _i18n.__)('Title attribute'),
|
|
442
|
+
autoComplete: "off",
|
|
443
|
+
help: (0, _i18n.__)('Additional information to help clarify the purpose of the link.')
|
|
443
444
|
}), (0, _element.createElement)(_components.TextControl, {
|
|
444
445
|
__nextHasNoMarginBottom: true,
|
|
445
446
|
value: rel || '',
|
|
@@ -448,8 +449,9 @@ function NavigationSubmenuEdit(_ref) {
|
|
|
448
449
|
rel: relValue
|
|
449
450
|
});
|
|
450
451
|
},
|
|
451
|
-
label: (0, _i18n.__)('
|
|
452
|
-
autoComplete: "off"
|
|
452
|
+
label: (0, _i18n.__)('Rel attribute'),
|
|
453
|
+
autoComplete: "off",
|
|
454
|
+
help: (0, _i18n.__)('The relationship of the linked URL as space-separated link types.')
|
|
453
455
|
}))), (0, _element.createElement)("div", blockProps, (0, _element.createElement)(ParentElement, {
|
|
454
456
|
className: "wp-block-navigation-item__content"
|
|
455
457
|
}, (0, _element.createElement)(_blockEditor.RichText, {
|