@wordpress/block-library 7.1.1 → 7.3.1
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 +13 -0
- package/README.md +1 -1
- package/build/archives/edit.js +21 -1
- package/build/archives/edit.js.map +1 -1
- package/build/archives/index.js +5 -1
- package/build/archives/index.js.map +1 -1
- package/build/audio/edit.native.js +0 -5
- package/build/audio/edit.native.js.map +1 -1
- package/build/avatar/edit.js +211 -0
- package/build/avatar/edit.js.map +1 -0
- package/build/avatar/hooks.js +111 -0
- package/build/avatar/hooks.js.map +1 -0
- package/build/avatar/index.js +83 -0
- package/build/avatar/index.js.map +1 -0
- package/build/avatar/user-control.js +63 -0
- package/build/avatar/user-control.js.map +1 -0
- package/build/block/edit.js +2 -1
- package/build/block/edit.js.map +1 -1
- package/build/column/index.js +3 -1
- package/build/column/index.js.map +1 -1
- package/build/comment-author-avatar/index.js +4 -3
- package/build/comment-author-avatar/index.js.map +1 -1
- package/build/comment-author-name/index.js +7 -3
- package/build/comment-author-name/index.js.map +1 -1
- package/build/comment-content/index.js +1 -1
- package/build/comment-date/edit.js +10 -25
- package/build/comment-date/edit.js.map +1 -1
- package/build/comment-date/index.js +7 -3
- package/build/comment-date/index.js.map +1 -1
- package/build/comment-edit-link/index.js +5 -1
- package/build/comment-edit-link/index.js.map +1 -1
- package/build/comment-reply-link/index.js +5 -1
- package/build/comment-reply-link/index.js.map +1 -1
- package/build/comment-template/edit.js +86 -66
- package/build/comment-template/edit.js.map +1 -1
- package/build/comment-template/hooks.js +7 -23
- package/build/comment-template/hooks.js.map +1 -1
- package/build/comment-template/index.js +2 -2
- package/build/comments-pagination-next/index.js +2 -2
- package/build/comments-pagination-numbers/index.js +1 -1
- package/build/comments-pagination-previous/index.js +1 -1
- package/build/comments-query-loop/edit/comments-inspector-controls.js +2 -69
- package/build/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
- package/build/comments-query-loop/edit.js +22 -1
- package/build/comments-query-loop/edit.js.map +1 -1
- package/build/comments-query-loop/index.js +1 -23
- package/build/comments-query-loop/index.js.map +1 -1
- package/build/cover/edit.js +58 -39
- package/build/cover/edit.js.map +1 -1
- package/build/cover/index.js +5 -0
- package/build/cover/index.js.map +1 -1
- package/build/cover/save.js +3 -2
- package/build/cover/save.js.map +1 -1
- package/build/embed/variations.js +2 -2
- package/build/embed/variations.js.map +1 -1
- package/build/gallery/edit.js +18 -5
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.js +1 -1
- package/build/gallery/gallery.js.map +1 -1
- package/build/gallery/gap-styles.js +35 -0
- package/build/gallery/gap-styles.js.map +1 -0
- package/build/gallery/index.js +18 -1
- package/build/gallery/index.js.map +1 -1
- package/build/group/edit.js +3 -1
- package/build/group/edit.js.map +1 -1
- package/build/group/index.js +1 -1
- package/build/group/variations.js +30 -9
- package/build/group/variations.js.map +1 -1
- package/build/heading/edit.js +1 -1
- package/build/heading/edit.js.map +1 -1
- package/build/html/edit.js +3 -2
- package/build/html/edit.js.map +1 -1
- package/build/image/edit.native.js +8 -10
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +3 -1
- package/build/image/image.js.map +1 -1
- package/build/index.js +10 -4
- package/build/index.js.map +1 -1
- package/build/list/deprecated.js +2 -2
- package/build/list/deprecated.js.map +1 -1
- package/build/list/index.js +5 -7
- package/build/list/index.js.map +1 -1
- package/build/list/v2/deprecated.js +117 -0
- package/build/list/v2/deprecated.js.map +1 -0
- package/build/list/v2/edit.js +188 -0
- package/build/list/v2/edit.js.map +1 -0
- package/build/list/v2/index.js +36 -0
- package/build/list/v2/index.js.map +1 -0
- package/build/list/v2/migrate.js +85 -0
- package/build/list/v2/migrate.js.map +1 -0
- package/build/list/v2/save.js +34 -0
- package/build/list/v2/save.js.map +1 -0
- package/build/list/v2/transforms.js +121 -0
- package/build/list/v2/transforms.js.map +1 -0
- package/build/list-item/edit.js +96 -0
- package/build/list-item/edit.js.map +1 -0
- package/build/list-item/hooks/index.js +32 -0
- package/build/list-item/hooks/index.js.map +1 -0
- package/build/list-item/hooks/use-enter.js +93 -0
- package/build/list-item/hooks/use-enter.js.map +1 -0
- package/build/list-item/hooks/use-indent-list-item.js +74 -0
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -0
- package/build/list-item/hooks/use-outdent-list-item.js +77 -0
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -0
- package/build/list-item/index.js +67 -0
- package/build/list-item/index.js.map +1 -0
- package/build/list-item/save.js +23 -0
- package/build/list-item/save.js.map +1 -0
- package/build/list-item/utils.js +16 -0
- package/build/list-item/utils.js.map +1 -0
- package/build/media-text/edit.js +3 -1
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/media-container.native.js +1 -16
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/navigation/edit/index.js +36 -17
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +34 -7
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/index.js +9 -1
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/use-navigation-entities.js +26 -54
- package/build/navigation/use-navigation-entities.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +1 -0
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation-link/edit.js +95 -37
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/index.js +1 -1
- package/build/navigation-submenu/edit.js +5 -9
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/navigation-submenu/index.js +1 -1
- package/build/post-comment/edit.js +2 -2
- package/build/post-comment/edit.js.map +1 -1
- package/build/post-comments/index.js +4 -3
- package/build/post-comments/index.js.map +1 -1
- package/build/post-comments-form/edit.js +3 -2
- package/build/post-comments-form/edit.js.map +1 -1
- package/build/post-date/edit.js +31 -37
- package/build/post-date/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +2 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +1 -1
- package/build/post-template/edit.js +7 -2
- package/build/post-template/edit.js.map +1 -1
- package/build/post-terms/edit.js +3 -1
- package/build/post-terms/edit.js.map +1 -1
- package/build/post-terms/variations.js +1 -1
- package/build/post-terms/variations.js.map +1 -1
- package/build/pullquote/edit.js +5 -3
- package/build/pullquote/edit.js.map +1 -1
- package/build/query/edit/index.js +84 -22
- package/build/query/edit/index.js.map +1 -1
- package/build/query/edit/query-placeholder.js +7 -14
- package/build/query/edit/query-placeholder.js.map +1 -1
- package/build/query/edit/query-toolbar.js +6 -1
- package/build/query/edit/query-toolbar.js.map +1 -1
- package/build/query/variations.js +4 -4
- package/build/query/variations.js.map +1 -1
- package/build/query-no-results/edit.js +28 -0
- package/build/query-no-results/edit.js.map +1 -0
- package/build/query-no-results/index.js +54 -0
- package/build/query-no-results/index.js.map +1 -0
- package/build/query-no-results/save.js +18 -0
- package/build/query-no-results/save.js.map +1 -0
- package/build/query-pagination/edit.js +1 -1
- package/build/query-pagination/edit.js.map +1 -1
- package/build/query-pagination-numbers/index.js +19 -1
- package/build/query-pagination-numbers/index.js.map +1 -1
- package/build/quote/index.js +15 -8
- package/build/quote/index.js.map +1 -1
- package/build/quote/v2/deprecated.js +133 -0
- package/build/quote/v2/deprecated.js.map +1 -0
- package/build/quote/v2/edit.js +131 -0
- package/build/quote/v2/edit.js.map +1 -0
- package/build/quote/v2/index.js +49 -0
- package/build/quote/v2/index.js.map +1 -0
- package/build/quote/v2/save.js +43 -0
- package/build/quote/v2/save.js.map +1 -0
- package/build/quote/v2/transforms.js +156 -0
- package/build/quote/v2/transforms.js.map +1 -0
- package/build/read-more/index.js +1 -1
- package/build/rss/edit.js +6 -1
- package/build/rss/edit.js.map +1 -1
- package/build/search/edit.js +2 -3
- package/build/search/edit.js.map +1 -1
- package/build/separator/deprecated.js +83 -0
- package/build/separator/deprecated.js.map +1 -0
- package/build/separator/edit.js +31 -23
- package/build/separator/edit.js.map +1 -1
- package/build/separator/index.js +17 -7
- package/build/separator/index.js.map +1 -1
- package/build/separator/save.js +18 -13
- package/build/separator/save.js.map +1 -1
- package/build/separator/use-deprecated-opacity.js +39 -0
- package/build/separator/use-deprecated-opacity.js.map +1 -0
- package/build/site-logo/edit.js +3 -2
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-logo/index.js +1 -1
- package/build/social-links/edit.js +14 -3
- package/build/social-links/edit.js.map +1 -1
- package/build/social-links/index.js +2 -1
- package/build/social-links/index.js.map +1 -1
- package/build/spacer/controls.js +6 -16
- package/build/spacer/controls.js.map +1 -1
- package/build/spacer/controls.native.js +3 -1
- package/build/spacer/controls.native.js.map +1 -1
- package/build/spacer/edit.js +4 -5
- package/build/spacer/edit.js.map +1 -1
- package/build/table/deprecated.js +1 -1
- package/build/table/deprecated.js.map +1 -1
- package/build/tag-cloud/edit.js +58 -2
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/tag-cloud/index.js +8 -0
- package/build/tag-cloud/index.js.map +1 -1
- package/build/template-part/edit/utils/hooks.js +5 -2
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/archives/edit.js +22 -2
- package/build-module/archives/edit.js.map +1 -1
- package/build-module/archives/index.js +5 -1
- package/build-module/archives/index.js.map +1 -1
- package/build-module/audio/edit.native.js +0 -5
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/avatar/edit.js +195 -0
- package/build-module/avatar/edit.js.map +1 -0
- package/build-module/avatar/hooks.js +99 -0
- package/build-module/avatar/hooks.js.map +1 -0
- package/build-module/avatar/index.js +70 -0
- package/build-module/avatar/index.js.map +1 -0
- package/build-module/avatar/user-control.js +52 -0
- package/build-module/avatar/user-control.js.map +1 -0
- package/build-module/block/edit.js +4 -3
- package/build-module/block/edit.js.map +1 -1
- package/build-module/column/index.js +3 -1
- package/build-module/column/index.js.map +1 -1
- package/build-module/comment-author-avatar/index.js +4 -3
- package/build-module/comment-author-avatar/index.js.map +1 -1
- package/build-module/comment-author-name/index.js +7 -3
- package/build-module/comment-author-name/index.js.map +1 -1
- package/build-module/comment-content/index.js +1 -1
- package/build-module/comment-date/edit.js +13 -30
- package/build-module/comment-date/edit.js.map +1 -1
- package/build-module/comment-date/index.js +7 -3
- package/build-module/comment-date/index.js.map +1 -1
- package/build-module/comment-edit-link/index.js +5 -1
- package/build-module/comment-edit-link/index.js.map +1 -1
- package/build-module/comment-reply-link/index.js +5 -1
- package/build-module/comment-reply-link/index.js.map +1 -1
- package/build-module/comment-template/edit.js +86 -66
- package/build-module/comment-template/edit.js.map +1 -1
- package/build-module/comment-template/hooks.js +7 -23
- package/build-module/comment-template/hooks.js.map +1 -1
- package/build-module/comment-template/index.js +2 -2
- package/build-module/comments-pagination-next/index.js +2 -2
- package/build-module/comments-pagination-numbers/index.js +1 -1
- package/build-module/comments-pagination-previous/index.js +1 -1
- package/build-module/comments-query-loop/edit/comments-inspector-controls.js +4 -70
- package/build-module/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
- package/build-module/comments-query-loop/edit.js +22 -1
- package/build-module/comments-query-loop/edit.js.map +1 -1
- package/build-module/comments-query-loop/index.js +1 -23
- package/build-module/comments-query-loop/index.js.map +1 -1
- package/build-module/cover/edit.js +58 -41
- package/build-module/cover/edit.js.map +1 -1
- package/build-module/cover/index.js +5 -0
- package/build-module/cover/index.js.map +1 -1
- package/build-module/cover/save.js +3 -2
- package/build-module/cover/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/gallery/edit.js +17 -5
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.js +1 -1
- package/build-module/gallery/gallery.js.map +1 -1
- package/build-module/gallery/gap-styles.js +28 -0
- package/build-module/gallery/gap-styles.js.map +1 -0
- package/build-module/gallery/index.js +18 -1
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/group/edit.js +3 -1
- package/build-module/group/edit.js.map +1 -1
- package/build-module/group/index.js +1 -1
- package/build-module/group/variations.js +29 -9
- package/build-module/group/variations.js.map +1 -1
- package/build-module/heading/edit.js +1 -1
- package/build-module/heading/edit.js.map +1 -1
- package/build-module/html/edit.js +4 -3
- package/build-module/html/edit.js.map +1 -1
- package/build-module/image/edit.native.js +8 -10
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +3 -1
- package/build-module/image/image.js.map +1 -1
- package/build-module/index.js +7 -4
- package/build-module/index.js.map +1 -1
- package/build-module/list/deprecated.js +2 -2
- package/build-module/list/deprecated.js.map +1 -1
- package/build-module/list/index.js +5 -1
- package/build-module/list/index.js.map +1 -1
- package/build-module/list/v2/deprecated.js +104 -0
- package/build-module/list/v2/deprecated.js.map +1 -0
- package/build-module/list/v2/edit.js +168 -0
- package/build-module/list/v2/edit.js.map +1 -0
- package/build-module/list/v2/index.js +21 -0
- package/build-module/list/v2/index.js.map +1 -0
- package/build-module/list/v2/migrate.js +77 -0
- package/build-module/list/v2/migrate.js.map +1 -0
- package/build-module/list/v2/save.js +23 -0
- package/build-module/list/v2/save.js.map +1 -0
- package/build-module/list/v2/transforms.js +111 -0
- package/build-module/list/v2/transforms.js.map +1 -0
- package/build-module/list-item/edit.js +83 -0
- package/build-module/list-item/edit.js.map +1 -0
- package/build-module/list-item/hooks/index.js +4 -0
- package/build-module/list-item/hooks/index.js.map +1 -0
- package/build-module/list-item/hooks/use-enter.js +77 -0
- package/build-module/list-item/hooks/use-enter.js.map +1 -0
- package/build-module/list-item/hooks/use-indent-list-item.js +62 -0
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js +66 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -0
- package/build-module/list-item/index.js +53 -0
- package/build-module/list-item/index.js.map +1 -0
- package/build-module/list-item/save.js +15 -0
- package/build-module/list-item/save.js.map +1 -0
- package/build-module/list-item/utils.js +8 -0
- package/build-module/list-item/utils.js.map +1 -0
- package/build-module/media-text/edit.js +3 -1
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/media-container.native.js +1 -14
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/navigation/edit/index.js +37 -17
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +35 -8
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/index.js +9 -1
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/use-navigation-entities.js +27 -54
- package/build-module/navigation/use-navigation-entities.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +1 -0
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation-link/edit.js +95 -36
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/index.js +1 -1
- package/build-module/navigation-submenu/edit.js +6 -10
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/navigation-submenu/index.js +1 -1
- package/build-module/post-comment/edit.js +2 -2
- package/build-module/post-comment/edit.js.map +1 -1
- package/build-module/post-comments/index.js +4 -3
- package/build-module/post-comments/index.js.map +1 -1
- package/build-module/post-comments-form/edit.js +3 -2
- package/build-module/post-comments-form/edit.js.map +1 -1
- package/build-module/post-date/edit.js +32 -43
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +2 -1
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +1 -1
- package/build-module/post-template/edit.js +7 -2
- package/build-module/post-template/edit.js.map +1 -1
- package/build-module/post-terms/edit.js +4 -2
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/post-terms/variations.js +3 -3
- package/build-module/post-terms/variations.js.map +1 -1
- package/build-module/pullquote/edit.js +6 -3
- package/build-module/pullquote/edit.js.map +1 -1
- package/build-module/query/edit/index.js +87 -26
- package/build-module/query/edit/index.js.map +1 -1
- package/build-module/query/edit/query-placeholder.js +8 -15
- package/build-module/query/edit/query-placeholder.js.map +1 -1
- package/build-module/query/edit/query-toolbar.js +6 -1
- package/build-module/query/edit/query-toolbar.js.map +1 -1
- package/build-module/query/variations.js +4 -4
- package/build-module/query/variations.js.map +1 -1
- package/build-module/query-no-results/edit.js +18 -0
- package/build-module/query-no-results/edit.js.map +1 -0
- package/build-module/query-no-results/index.js +40 -0
- package/build-module/query-no-results/index.js.map +1 -0
- package/build-module/query-no-results/save.js +10 -0
- package/build-module/query-no-results/save.js.map +1 -0
- package/build-module/query-pagination/edit.js +1 -1
- package/build-module/query-pagination/edit.js.map +1 -1
- package/build-module/query-pagination-numbers/index.js +19 -1
- package/build-module/query-pagination-numbers/index.js.map +1 -1
- package/build-module/quote/index.js +13 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/v2/deprecated.js +116 -0
- package/build-module/quote/v2/deprecated.js.map +1 -0
- package/build-module/quote/v2/edit.js +115 -0
- package/build-module/quote/v2/edit.js.map +1 -0
- package/build-module/quote/v2/index.js +33 -0
- package/build-module/quote/v2/index.js.map +1 -0
- package/build-module/quote/v2/save.js +30 -0
- package/build-module/quote/v2/save.js.map +1 -0
- package/build-module/quote/v2/transforms.js +147 -0
- package/build-module/quote/v2/transforms.js.map +1 -0
- package/build-module/read-more/index.js +1 -1
- package/build-module/rss/edit.js +5 -1
- package/build-module/rss/edit.js.map +1 -1
- package/build-module/search/edit.js +2 -3
- package/build-module/search/edit.js.map +1 -1
- package/build-module/separator/deprecated.js +70 -0
- package/build-module/separator/deprecated.js.map +1 -0
- package/build-module/separator/edit.js +31 -22
- package/build-module/separator/edit.js.map +1 -1
- package/build-module/separator/index.js +16 -7
- package/build-module/separator/index.js.map +1 -1
- package/build-module/separator/save.js +19 -14
- package/build-module/separator/save.js.map +1 -1
- package/build-module/separator/use-deprecated-opacity.js +30 -0
- package/build-module/separator/use-deprecated-opacity.js.map +1 -0
- package/build-module/site-logo/edit.js +3 -2
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-logo/index.js +1 -1
- package/build-module/social-links/edit.js +15 -4
- package/build-module/social-links/edit.js.map +1 -1
- package/build-module/social-links/index.js +2 -1
- package/build-module/social-links/index.js.map +1 -1
- package/build-module/spacer/controls.js +8 -19
- package/build-module/spacer/controls.js.map +1 -1
- package/build-module/spacer/controls.native.js +2 -1
- package/build-module/spacer/controls.native.js.map +1 -1
- package/build-module/spacer/edit.js +3 -3
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table/deprecated.js +1 -1
- package/build-module/table/deprecated.js.map +1 -1
- package/build-module/tag-cloud/edit.js +60 -4
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/tag-cloud/index.js +8 -0
- package/build-module/tag-cloud/index.js.map +1 -1
- package/build-module/template-part/edit/utils/hooks.js +5 -2
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-style/avatar/editor-rtl.css +83 -0
- package/build-style/avatar/editor.css +83 -0
- package/build-style/avatar/style-rtl.css +79 -0
- package/build-style/avatar/style.css +79 -0
- package/build-style/editor-rtl.css +92 -11
- package/build-style/editor.css +92 -11
- package/build-style/gallery/editor-rtl.css +0 -1
- package/build-style/gallery/editor.css +0 -1
- package/build-style/gallery/style-rtl.css +102 -169
- package/build-style/gallery/style.css +102 -169
- package/build-style/group/editor-rtl.css +26 -0
- package/build-style/group/editor.css +26 -0
- package/build-style/heading/style-rtl.css +0 -8
- package/build-style/heading/style.css +0 -8
- package/build-style/image/style-rtl.css +2 -0
- package/build-style/image/style.css +2 -0
- package/build-style/list/style-rtl.css +1 -1
- package/build-style/list/style.css +1 -1
- package/build-style/navigation/style-rtl.css +11 -9
- package/build-style/navigation/style.css +11 -9
- package/build-style/navigation-link/editor-rtl.css +13 -0
- package/build-style/navigation-link/editor.css +13 -0
- package/build-style/navigation-link/style-rtl.css +3 -0
- package/build-style/navigation-link/style.css +3 -0
- package/build-style/paragraph/style-rtl.css +0 -4
- package/build-style/paragraph/style.css +0 -4
- package/build-style/pullquote/style-rtl.css +0 -4
- package/build-style/pullquote/style.css +0 -4
- package/build-style/query/editor-rtl.css +39 -0
- package/build-style/query/editor.css +39 -0
- package/build-style/quote/style-rtl.css +1 -0
- package/build-style/quote/style.css +1 -0
- package/build-style/reset-rtl.css +1 -1
- package/build-style/reset.css +1 -1
- package/build-style/separator/editor-rtl.css +3 -0
- package/build-style/separator/editor.css +3 -0
- package/build-style/separator/theme-rtl.css +7 -1
- package/build-style/separator/theme.css +7 -1
- package/build-style/site-logo/editor-rtl.css +3 -1
- package/build-style/site-logo/editor.css +3 -1
- package/build-style/style-rtl.css +124 -195
- package/build-style/style.css +124 -195
- package/build-style/template-part/editor-rtl.css +0 -9
- package/build-style/template-part/editor.css +0 -9
- package/build-style/theme-rtl.css +7 -1
- package/build-style/theme.css +7 -1
- package/package.json +28 -28
- package/src/archives/block.json +5 -1
- package/src/archives/edit.js +20 -2
- package/src/archives/index.php +4 -4
- package/src/audio/edit.native.js +0 -5
- package/src/avatar/block.json +53 -0
- package/src/avatar/edit.js +230 -0
- package/src/avatar/editor.scss +9 -0
- package/src/avatar/hooks.js +96 -0
- package/src/avatar/index.js +18 -0
- package/src/avatar/index.php +146 -0
- package/src/avatar/style.scss +5 -0
- package/src/avatar/user-control.js +56 -0
- package/src/block/edit.js +21 -11
- package/src/column/block.json +3 -1
- package/src/comment-author-avatar/block.json +4 -3
- package/src/comment-author-name/block.json +7 -3
- package/src/comment-author-name/index.php +3 -0
- package/src/comment-content/block.json +1 -1
- package/src/comment-date/block.json +7 -3
- package/src/comment-date/edit.js +20 -30
- package/src/comment-date/index.php +6 -1
- package/src/comment-edit-link/block.json +5 -1
- package/src/comment-edit-link/index.php +3 -0
- package/src/comment-reply-link/block.json +5 -1
- package/src/comment-reply-link/index.php +4 -1
- package/src/comment-template/block.json +2 -8
- package/src/comment-template/edit.js +77 -64
- package/src/comment-template/hooks.js +8 -24
- package/src/comment-template/index.php +1 -3
- package/src/comments-pagination-next/block.json +2 -9
- package/src/comments-pagination-numbers/block.json +2 -8
- package/src/comments-pagination-previous/block.json +2 -2
- package/src/comments-query-loop/block.json +1 -23
- package/src/comments-query-loop/edit/comments-inspector-controls.js +2 -83
- package/src/comments-query-loop/edit.js +54 -1
- package/src/cover/block.json +5 -0
- package/src/cover/edit.js +103 -60
- package/src/cover/index.php +85 -0
- package/src/cover/save.js +18 -14
- package/src/editor.scss +1 -0
- package/src/embed/variations.js +2 -2
- package/src/gallery/block.json +18 -1
- package/src/gallery/deprecated.scss +2 -2
- package/src/gallery/edit.js +15 -8
- package/src/gallery/editor.scss +0 -1
- package/src/gallery/gallery.js +8 -7
- package/src/gallery/gap-styles.js +26 -0
- package/src/gallery/index.php +43 -1
- package/src/gallery/style.scss +11 -44
- package/src/group/block.json +1 -1
- package/src/group/edit.js +4 -1
- package/src/group/editor.scss +31 -0
- package/src/group/variations.js +21 -4
- package/src/heading/edit.js +1 -1
- package/src/heading/style.scss +0 -3
- package/src/html/edit.js +22 -30
- package/src/image/edit.native.js +7 -11
- package/src/image/image.js +4 -1
- package/src/image/style.scss +3 -0
- package/src/index.js +19 -14
- package/src/list/deprecated.js +2 -2
- package/src/list/index.js +6 -1
- package/src/list/style.scss +1 -2
- package/src/list/test/migrate.js +159 -0
- package/src/list/v2/deprecated.js +89 -0
- package/src/list/v2/edit.js +186 -0
- package/src/list/v2/index.js +22 -0
- package/src/list/v2/migrate.js +87 -0
- package/src/list/v2/save.js +18 -0
- package/src/list/v2/transforms.js +116 -0
- package/src/list-item/block.json +26 -0
- package/src/list-item/edit.js +93 -0
- package/src/list-item/hooks/index.js +3 -0
- package/src/list-item/hooks/use-enter.js +94 -0
- package/src/list-item/hooks/use-indent-list-item.js +89 -0
- package/src/list-item/hooks/use-outdent-list-item.js +95 -0
- package/src/list-item/index.js +27 -0
- package/src/list-item/save.js +13 -0
- package/src/list-item/utils.js +14 -0
- package/src/media-text/edit.js +1 -1
- package/src/media-text/media-container.native.js +1 -14
- package/src/navigation/block.json +9 -1
- package/src/navigation/edit/index.js +50 -14
- package/src/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/src/navigation/edit/unsaved-inner-blocks.js +57 -8
- package/src/navigation/index.php +28 -3
- package/src/navigation/style.scss +15 -13
- package/src/navigation/use-navigation-entities.js +37 -73
- package/src/navigation/use-navigation-menu.js +4 -0
- package/src/navigation-link/block.json +1 -0
- package/src/navigation-link/edit.js +156 -64
- package/src/navigation-link/editor.scss +11 -0
- package/src/navigation-link/index.php +8 -0
- package/src/navigation-link/style.scss +6 -0
- package/src/navigation-submenu/block.json +1 -0
- package/src/navigation-submenu/edit.js +7 -9
- package/src/paragraph/style.scss +0 -5
- package/src/post-author/index.php +0 -1
- package/src/post-comment/edit.js +2 -2
- package/src/post-comments/block.json +4 -3
- package/src/post-comments-form/edit.js +6 -3
- package/src/post-date/edit.js +63 -52
- package/src/post-date/index.php +1 -1
- package/src/post-date/test/edit.js +17 -0
- package/src/post-featured-image/block.json +1 -1
- package/src/post-featured-image/edit.js +9 -1
- package/src/post-featured-image/index.php +2 -1
- package/src/post-template/edit.js +7 -1
- package/src/post-terms/edit.js +4 -1
- package/src/post-terms/variations.js +3 -3
- package/src/pullquote/edit.js +4 -3
- package/src/pullquote/style.scss +0 -5
- package/src/query/edit/index.js +125 -26
- package/src/query/edit/query-placeholder.js +3 -13
- package/src/query/edit/query-toolbar.js +6 -0
- package/src/query/editor.scss +38 -0
- package/src/query/variations.js +4 -0
- package/src/query-no-results/block.json +20 -0
- package/src/query-no-results/edit.js +28 -0
- package/src/query-no-results/index.js +20 -0
- package/src/query-no-results/index.php +59 -0
- package/src/query-no-results/save.js +8 -0
- package/src/query-pagination/edit.js +1 -1
- package/src/query-pagination/index.php +9 -2
- package/src/query-pagination-numbers/block.json +19 -1
- package/src/quote/block.json +8 -0
- package/src/quote/index.js +6 -1
- package/src/quote/style.scss +1 -0
- package/src/quote/v2/deprecated.js +107 -0
- package/src/quote/v2/edit.js +136 -0
- package/src/quote/v2/index.js +36 -0
- package/src/quote/v2/save.js +26 -0
- package/src/quote/v2/test/migrate.js +92 -0
- package/src/quote/v2/transforms.js +155 -0
- package/src/read-more/block.json +1 -1
- package/src/reset.scss +1 -1
- package/src/rss/edit.js +3 -1
- package/src/rss/index.php +14 -1
- package/src/search/edit.js +1 -2
- package/src/separator/block.json +13 -6
- package/src/separator/deprecated.js +57 -0
- package/src/separator/deprecated.scss +6 -0
- package/src/separator/edit.js +36 -14
- package/src/separator/editor.scss +6 -0
- package/src/separator/index.js +2 -0
- package/src/separator/save.js +22 -14
- package/src/separator/test/edit.js +113 -0
- package/src/separator/theme.scss +7 -1
- package/src/separator/use-deprecated-opacity.js +41 -0
- package/src/site-logo/block.json +1 -1
- package/src/site-logo/edit.js +2 -1
- package/src/site-logo/editor.scss +3 -1
- package/src/site-logo/index.php +0 -4
- package/src/social-link/index.php +1 -2
- package/src/social-links/block.json +2 -1
- package/src/social-links/edit.js +15 -5
- package/src/spacer/controls.js +12 -18
- package/src/spacer/controls.native.js +2 -1
- package/src/spacer/edit.js +3 -6
- package/src/spacer/test/__snapshots__/index.native.js.snap +31 -0
- package/src/spacer/test/index.native.js +180 -0
- package/src/style.scss +1 -0
- package/src/table/deprecated.js +5 -1
- package/src/tag-cloud/block.json +8 -0
- package/src/tag-cloud/edit.js +82 -2
- package/src/tag-cloud/index.php +6 -0
- package/src/template-part/edit/utils/hooks.js +6 -1
- package/src/template-part/editor.scss +0 -10
- package/build/navigation/edit/use-list-view-modal.js +0 -73
- package/build/navigation/edit/use-list-view-modal.js.map +0 -1
- package/build/separator/separator-settings.js +0 -36
- package/build/separator/separator-settings.js.map +0 -1
- package/build-module/navigation/edit/use-list-view-modal.js +0 -63
- package/build-module/navigation/edit/use-list-view-modal.js.map +0 -1
- package/build-module/separator/separator-settings.js +0 -27
- package/build-module/separator/separator-settings.js.map +0 -1
- package/src/navigation/edit/use-list-view-modal.js +0 -72
- package/src/separator/separator-settings.js +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-entities.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-entities.js"],"names":["__experimentalUseEntityRecords","useEntityRecords","useNavigationEntities","menuId","records","menus","isResolving","isResolvingMenus","hasResolved","hasResolvedMenus","per_page","context","pages","isResolvingPages","hasResolvedPages","parent","order","orderby","menuItems","hasResolvedMenuItems","enabled","hasPages","length","hasMenus"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,8BAA8B,IAAIC,gBAA3C,QAAmE,sBAAnE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,qBAAT,CAAgCC,MAAhC,EAAyC;AACvD,QAAM;AACLC,IAAAA,OAAO,EAAEC,KADJ;AAELC,IAAAA,WAAW,EAAEC,gBAFR;AAGLC,IAAAA,WAAW,EAAEC;AAHR,MAIFR,gBAAgB,CAAE,MAAF,EAAU,MAAV,EAAkB;AAAES,IAAAA,QAAQ,EAAE,CAAC,CAAb;AAAgBC,IAAAA,OAAO,EAAE;AAAzB,GAAlB,CAJpB;AAMA,QAAM;AACLP,IAAAA,OAAO,EAAEQ,KADJ;AAELN,IAAAA,WAAW,EAAEO,gBAFR;AAGLL,IAAAA,WAAW,EAAEM;AAHR,MAIFb,gBAAgB,CAAE,UAAF,EAAc,MAAd,EAAsB;AACzCc,IAAAA,MAAM,EAAE,CADiC;AAEzCC,IAAAA,KAAK,EAAE,KAFkC;AAGzCC,IAAAA,OAAO,EAAE,IAHgC;AAIzCP,IAAAA,QAAQ,EAAE,CAAC,CAJ8B;AAKzCC,IAAAA,OAAO,EAAE;AALgC,GAAtB,CAJpB;AAYA,QAAM;AACLP,IAAAA,OAAO,EAAEc,SADJ;AAELV,IAAAA,WAAW,EAAEW;AAFR,MAGFlB,gBAAgB,CACnB,MADmB,EAEnB,UAFmB,EAGnB;AACCI,IAAAA,KAAK,EAAEF,MADR;AAECO,IAAAA,QAAQ,EAAE,CAAC,CAFZ;AAGCC,IAAAA,OAAO,EAAE;AAHV,GAHmB,EAQnB;AAAES,IAAAA,OAAO,EAAE,CAAC,CAAEjB;AAAd,GARmB,CAHpB;AAcA,SAAO;AACNS,IAAAA,KADM;AAENC,IAAAA,gBAFM;AAGNC,IAAAA,gBAHM;AAINO,IAAAA,QAAQ,EAAE,CAAC,EAAIP,gBAAgB,IAAIF,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEU,MAA/B,CAJL;AAMNjB,IAAAA,KANM;AAONE,IAAAA,gBAPM;AAQNE,IAAAA,gBARM;AASNc,IAAAA,QAAQ,EAAE,CAAC,EAAId,gBAAgB,IAAIJ,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEiB,MAA/B,CATL;AAWNJ,IAAAA,SAXM;AAYNC,IAAAA;AAZM,GAAP;AAcA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalUseEntityRecords as useEntityRecords } from '@wordpress/core-data';\n\n/**\n * @typedef {Object} NavigationEntitiesData\n * @property {Array|undefined} pages - a collection of WP Post entity objects of post type \"Page\".\n * @property {boolean} isResolvingPages - indicates whether the request to fetch pages is currently resolving.\n * @property {boolean} hasResolvedPages - indicates whether the request to fetch pages has finished resolving.\n * @property {Array|undefined} menus - a collection of Menu entity objects.\n * @property {boolean} isResolvingMenus - indicates whether the request to fetch menus is currently resolving.\n * @property {boolean} hasResolvedMenus - indicates whether the request to fetch menus has finished resolving.\n * @property {Array|undefined} menusItems - a collection of Menu Item entity objects for the current menuId.\n * @property {boolean} hasResolvedMenuItems - indicates whether the request to fetch menuItems has finished resolving.\n * @property {boolean} hasPages - indicates whether there is currently any data for pages.\n * @property {boolean} hasMenus - indicates whether there is currently any data for menus.\n */\n\n/**\n * Manages fetching and resolution state for all entities required\n * for the Navigation block.\n *\n * @param {number} menuId the menu for which to retrieve menuItem data.\n * @return { NavigationEntitiesData } the entity data.\n */\nexport default function useNavigationEntities( menuId ) {\n\tconst {\n\t\trecords: menus,\n\t\tisResolving: isResolvingMenus,\n\t\thasResolved: hasResolvedMenus,\n\t} = useEntityRecords( 'root', 'menu', { per_page: -1, context: 'view' } );\n\n\tconst {\n\t\trecords: pages,\n\t\tisResolving: isResolvingPages,\n\t\thasResolved: hasResolvedPages,\n\t} = useEntityRecords( 'postType', 'page', {\n\t\tparent: 0,\n\t\torder: 'asc',\n\t\torderby: 'id',\n\t\tper_page: -1,\n\t\tcontext: 'view',\n\t} );\n\n\tconst {\n\t\trecords: menuItems,\n\t\thasResolved: hasResolvedMenuItems,\n\t} = useEntityRecords(\n\t\t'root',\n\t\t'menuItem',\n\t\t{\n\t\t\tmenus: menuId,\n\t\t\tper_page: -1,\n\t\t\tcontext: 'view',\n\t\t},\n\t\t{ enabled: !! menuId }\n\t);\n\n\treturn {\n\t\tpages,\n\t\tisResolvingPages,\n\t\thasResolvedPages,\n\t\thasPages: !! ( hasResolvedPages && pages?.length ),\n\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\thasResolvedMenus,\n\t\thasMenus: !! ( hasResolvedMenus && menus?.length ),\n\n\t\tmenuItems,\n\t\thasResolvedMenuItems,\n\t};\n}\n"]}
|
|
@@ -35,6 +35,7 @@ export default function useNavigationMenu(ref) {
|
|
|
35
35
|
isNavigationMenuResolved: hasResolvedNavigationMenu,
|
|
36
36
|
isNavigationMenuMissing: !ref || hasResolvedNavigationMenu && !rawNavigationMenu,
|
|
37
37
|
canSwitchNavigationMenu,
|
|
38
|
+
isResolvingNavigationMenus: isResolving('getEntityRecords', navigationMenuMultipleArgs),
|
|
38
39
|
hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenuMultipleArgs),
|
|
39
40
|
navigationMenu,
|
|
40
41
|
navigationMenus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["store","coreStore","useSelect","useNavigationMenu","ref","select","getEntityRecord","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","isResolving","canUser","navigationMenuSingleArgs","rawNavigationMenu","navigationMenu","status","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","hasResolvedNavigationMenus","canUserUpdateNavigationMenu","undefined","hasResolvedCanUserUpdateNavigationMenu","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA,eAAe,SAASC,iBAAT,CAA4BC,GAA5B,EAAkC;AAChD,SAAOF,SAAS,CACbG,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA,qBAJK;AAKLC,MAAAA,WALK;AAMLC,MAAAA;AANK,QAOFN,MAAM,CAAEJ,SAAF,CAPV;AASA,UAAMW,wBAAwB,GAAG,CAChC,UADgC,EAEhC,eAFgC,EAGhCR,GAHgC,CAAjC;AAKA,UAAMS,iBAAiB,GAAGT,GAAG,GAC1BE,eAAe,CAAE,GAAGM,wBAAL,CADW,GAE1B,IAFH;AAGA,QAAIE,cAAc,GAAGV,GAAG,GACrBG,qBAAqB,CAAE,GAAGK,wBAAL,CADA,GAErB,IAFH,CAlBa,CAsBb;AACA;;AACA,QAAK,oBAAAE,cAAc,UAAd,0DAAgBC,MAAhB,MAA2B,SAAhC,EAA4C;AAC3CD,MAAAA,cAAc,GAAG,IAAjB;AACA;;AAED,UAAME,yBAAyB,GAAGZ,GAAG,GAClCK,qBAAqB,CACrB,uBADqB,EAErBG,wBAFqB,CADa,GAKlC,KALH;AAOA,UAAMK,0BAA0B,GAAG,CAClC,UADkC,EAElC,eAFkC,EAGlC;AAAEC,MAAAA,QAAQ,EAAE,CAAC,CAAb;AAAgBH,MAAAA,MAAM,EAAE;AAAxB,KAHkC,CAAnC;AAKA,UAAMI,eAAe,GAAGX,gBAAgB,CACvC,GAAGS,0BADoC,CAAxC;AAIA,UAAMG,uBAAuB,GAAGhB,GAAG,GAChC,CAAAe,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CADM,GAEhC,CAAAF,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CAF7B;AAIA,WAAO;AACNC,MAAAA,wBAAwB,EAAEN,yBADpB;AAENO,MAAAA,uBAAuB,EACtB,CAAEnB,GAAF,IACEY,yBAAyB,IAAI,CAAEH,iBAJ5B;AAKNO,MAAAA,uBALM;AAMNI,MAAAA,0BAA0B,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["store","coreStore","useSelect","useNavigationMenu","ref","select","getEntityRecord","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","isResolving","canUser","navigationMenuSingleArgs","rawNavigationMenu","navigationMenu","status","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","isResolvingNavigationMenus","hasResolvedNavigationMenus","canUserUpdateNavigationMenu","undefined","hasResolvedCanUserUpdateNavigationMenu","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useNavigationMenu( ref ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetEntityRecords,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tisResolving,\n\t\t\t\tcanUser,\n\t\t\t} = select( coreStore );\n\n\t\t\tconst navigationMenuSingleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tref,\n\t\t\t];\n\t\t\tconst rawNavigationMenu = ref\n\t\t\t\t? getEntityRecord( ...navigationMenuSingleArgs )\n\t\t\t\t: null;\n\t\t\tlet navigationMenu = ref\n\t\t\t\t? getEditedEntityRecord( ...navigationMenuSingleArgs )\n\t\t\t\t: null;\n\n\t\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t\t// Therefore if the found post is not published then we should ignore it.\n\t\t\tif ( navigationMenu?.status !== 'publish' ) {\n\t\t\t\tnavigationMenu = null;\n\t\t\t}\n\n\t\t\tconst hasResolvedNavigationMenu = ref\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tnavigationMenuSingleArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\tconst navigationMenuMultipleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\t{ per_page: -1, status: 'publish' },\n\t\t\t];\n\t\t\tconst navigationMenus = getEntityRecords(\n\t\t\t\t...navigationMenuMultipleArgs\n\t\t\t);\n\n\t\t\tconst canSwitchNavigationMenu = ref\n\t\t\t\t? navigationMenus?.length > 1\n\t\t\t\t: navigationMenus?.length > 0;\n\n\t\t\treturn {\n\t\t\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\t\t\tisNavigationMenuMissing:\n\t\t\t\t\t! ref ||\n\t\t\t\t\t( hasResolvedNavigationMenu && ! rawNavigationMenu ),\n\t\t\t\tcanSwitchNavigationMenu,\n\t\t\t\tisResolvingNavigationMenus: isResolving(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tnavigationMenuMultipleArgs\n\t\t\t\t),\n\t\t\t\thasResolvedNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tnavigationMenuMultipleArgs\n\t\t\t\t),\n\t\t\t\tnavigationMenu,\n\t\t\t\tnavigationMenus,\n\t\t\t\tcanUserUpdateNavigationMenu: ref\n\t\t\t\t\t? canUser( 'update', 'navigation', ref )\n\t\t\t\t\t: undefined,\n\t\t\t\thasResolvedCanUserUpdateNavigationMenu: hasFinishedResolution(\n\t\t\t\t\t'canUser',\n\t\t\t\t\t[ 'update', 'navigation', ref ]\n\t\t\t\t),\n\t\t\t\tcanUserDeleteNavigationMenu: ref\n\t\t\t\t\t? canUser( 'delete', 'navigation', ref )\n\t\t\t\t\t: undefined,\n\t\t\t\thasResolvedCanUserDeleteNavigationMenu: hasFinishedResolution(\n\t\t\t\t\t'canUser',\n\t\t\t\t\t[ 'delete', 'navigation', ref ]\n\t\t\t\t),\n\t\t\t\tcanUserCreateNavigationMenu: canUser( 'create', 'navigation' ),\n\t\t\t\tisResolvingCanUserCreateNavigationMenu: isResolving(\n\t\t\t\t\t'canUser',\n\t\t\t\t\t[ 'create', 'navigation' ]\n\t\t\t\t),\n\t\t\t\thasResolvedCanUserCreateNavigationMenu: hasFinishedResolution(\n\t\t\t\t\t'canUser',\n\t\t\t\t\t[ 'create', 'navigation' ]\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ ref ]\n\t);\n}\n"]}
|
|
@@ -11,7 +11,7 @@ import { escape } from 'lodash';
|
|
|
11
11
|
|
|
12
12
|
import { createBlock, switchToBlockType } from '@wordpress/blocks';
|
|
13
13
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
14
|
-
import { Button, PanelBody, Popover, TextControl, TextareaControl, ToolbarButton, Tooltip, ToolbarGroup } from '@wordpress/components';
|
|
14
|
+
import { Button, PanelBody, Popover, TextControl, TextareaControl, ToolbarButton, Tooltip, ToolbarGroup, KeyboardShortcuts } from '@wordpress/components';
|
|
15
15
|
import { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';
|
|
16
16
|
import { __, sprintf } from '@wordpress/i18n';
|
|
17
17
|
import { BlockControls, BlockIcon, InspectorControls, RichText, __experimentalLinkControl as LinkControl, useBlockProps, store as blockEditorStore, getColorClassName } from '@wordpress/block-editor';
|
|
@@ -68,7 +68,7 @@ const {
|
|
|
68
68
|
type: "boolean"
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
|
-
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "style"],
|
|
71
|
+
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "maxNestingLevel", "style"],
|
|
72
72
|
supports: {
|
|
73
73
|
reusable: false,
|
|
74
74
|
html: false,
|
|
@@ -77,7 +77,6 @@ const {
|
|
|
77
77
|
editorStyle: "wp-block-navigation-link-editor",
|
|
78
78
|
style: "wp-block-navigation-link"
|
|
79
79
|
};
|
|
80
|
-
const MAX_NESTING = 5;
|
|
81
80
|
/**
|
|
82
81
|
* A React hook to determine if it's dragging within the target element.
|
|
83
82
|
*
|
|
@@ -316,6 +315,66 @@ export const updateNavigationLinkBlockAttributes = function () {
|
|
|
316
315
|
})
|
|
317
316
|
});
|
|
318
317
|
};
|
|
318
|
+
|
|
319
|
+
const useIsInvalidLink = (kind, type, id) => {
|
|
320
|
+
const isPostType = kind === 'post-type' || type === 'post' || type === 'page';
|
|
321
|
+
const hasId = Number.isInteger(id);
|
|
322
|
+
const postStatus = useSelect(select => {
|
|
323
|
+
var _getEntityRecord;
|
|
324
|
+
|
|
325
|
+
if (!isPostType) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const {
|
|
330
|
+
getEntityRecord
|
|
331
|
+
} = select(coreStore);
|
|
332
|
+
return (_getEntityRecord = getEntityRecord('postType', type, id)) === null || _getEntityRecord === void 0 ? void 0 : _getEntityRecord.status;
|
|
333
|
+
}, [isPostType, type, id]); // Check Navigation Link validity if:
|
|
334
|
+
// 1. Link is 'post-type'.
|
|
335
|
+
// 2. It has an id.
|
|
336
|
+
// 3. It's neither null, nor undefined, as valid items might be either of those while loading.
|
|
337
|
+
// If those conditions are met, check if
|
|
338
|
+
// 1. The post status is published.
|
|
339
|
+
// 2. The Navigation Link item has no label.
|
|
340
|
+
// If either of those is true, invalidate.
|
|
341
|
+
|
|
342
|
+
const isInvalid = isPostType && hasId && postStatus && 'trash' === postStatus;
|
|
343
|
+
const isDraft = 'draft' === postStatus;
|
|
344
|
+
return [isInvalid, isDraft];
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
const useMissingText = type => {
|
|
348
|
+
let missingText = '';
|
|
349
|
+
|
|
350
|
+
switch (type) {
|
|
351
|
+
case 'post':
|
|
352
|
+
/* translators: label for missing post in navigation link block */
|
|
353
|
+
missingText = __('Select post');
|
|
354
|
+
break;
|
|
355
|
+
|
|
356
|
+
case 'page':
|
|
357
|
+
/* translators: label for missing page in navigation link block */
|
|
358
|
+
missingText = __('Select page');
|
|
359
|
+
break;
|
|
360
|
+
|
|
361
|
+
case 'category':
|
|
362
|
+
/* translators: label for missing category in navigation link block */
|
|
363
|
+
missingText = __('Select category');
|
|
364
|
+
break;
|
|
365
|
+
|
|
366
|
+
case 'tag':
|
|
367
|
+
/* translators: label for missing tag in navigation link block */
|
|
368
|
+
missingText = __('Select tag');
|
|
369
|
+
break;
|
|
370
|
+
|
|
371
|
+
default:
|
|
372
|
+
/* translators: label for missing values in navigation link block */
|
|
373
|
+
missingText = __('Add link');
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return missingText;
|
|
377
|
+
};
|
|
319
378
|
/**
|
|
320
379
|
* Removes HTML from a given string.
|
|
321
380
|
* Note the does not provide XSS protection or otherwise attempt
|
|
@@ -327,6 +386,7 @@ export const updateNavigationLinkBlockAttributes = function () {
|
|
|
327
386
|
* @return {string} the "cleaned" string.
|
|
328
387
|
*/
|
|
329
388
|
|
|
389
|
+
|
|
330
390
|
function navStripHTML(html) {
|
|
331
391
|
const doc = document.implementation.createHTMLDocument('');
|
|
332
392
|
doc.body.innerHTML = html;
|
|
@@ -377,6 +437,7 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
377
437
|
clientId
|
|
378
438
|
} = _ref2;
|
|
379
439
|
const {
|
|
440
|
+
id,
|
|
380
441
|
label,
|
|
381
442
|
type,
|
|
382
443
|
opensInNewTab,
|
|
@@ -386,6 +447,10 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
386
447
|
title,
|
|
387
448
|
kind
|
|
388
449
|
} = attributes;
|
|
450
|
+
const [isInvalid, isDraft] = useIsInvalidLink(kind, type, id);
|
|
451
|
+
const {
|
|
452
|
+
maxNestingLevel
|
|
453
|
+
} = context;
|
|
389
454
|
const link = {
|
|
390
455
|
url,
|
|
391
456
|
opensInNewTab,
|
|
@@ -434,7 +499,7 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
434
499
|
const descendants = getClientIdsOfDescendants([clientId]).length;
|
|
435
500
|
return {
|
|
436
501
|
innerBlocks: getBlocks(clientId),
|
|
437
|
-
isAtMaxNesting: getBlockParentsByBlockName(clientId, [name, 'core/navigation-submenu']).length >=
|
|
502
|
+
isAtMaxNesting: getBlockParentsByBlockName(clientId, [name, 'core/navigation-submenu']).length >= maxNestingLevel,
|
|
438
503
|
isTopLevelLink: getBlockName(getBlockRootClientId(clientId)) === 'core/navigation',
|
|
439
504
|
isParentOfSelectedBlock: hasSelectedInnerBlock(clientId, true),
|
|
440
505
|
isImmediateParentOfSelectedBlock: hasSelectedInnerBlock(clientId, false),
|
|
@@ -599,41 +664,18 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
599
664
|
onKeyDown
|
|
600
665
|
});
|
|
601
666
|
|
|
602
|
-
if (!url) {
|
|
667
|
+
if (!url || isInvalid || isDraft) {
|
|
603
668
|
blockProps.onClick = () => setIsLinkOpen(true);
|
|
604
669
|
}
|
|
605
670
|
|
|
606
671
|
const classes = classnames('wp-block-navigation-item__content', {
|
|
607
|
-
'wp-block-navigation-link__placeholder': !url
|
|
672
|
+
'wp-block-navigation-link__placeholder': !url || isInvalid || isDraft
|
|
608
673
|
});
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
switch (type) {
|
|
612
|
-
case 'post':
|
|
613
|
-
/* translators: label for missing post in navigation link block */
|
|
614
|
-
missingText = __('Select post');
|
|
615
|
-
break;
|
|
616
|
-
|
|
617
|
-
case 'page':
|
|
618
|
-
/* translators: label for missing page in navigation link block */
|
|
619
|
-
missingText = __('Select page');
|
|
620
|
-
break;
|
|
621
|
-
|
|
622
|
-
case 'category':
|
|
623
|
-
/* translators: label for missing category in navigation link block */
|
|
624
|
-
missingText = __('Select category');
|
|
625
|
-
break;
|
|
626
|
-
|
|
627
|
-
case 'tag':
|
|
628
|
-
/* translators: label for missing tag in navigation link block */
|
|
629
|
-
missingText = __('Select tag');
|
|
630
|
-
break;
|
|
631
|
-
|
|
632
|
-
default:
|
|
633
|
-
/* translators: label for missing values in navigation link block */
|
|
634
|
-
missingText = __('Add link');
|
|
635
|
-
}
|
|
674
|
+
const missingText = useMissingText(type, isInvalid, isDraft);
|
|
675
|
+
/* translators: Whether the navigation link is Invalid or a Draft. */
|
|
636
676
|
|
|
677
|
+
const placeholderText = `(${isInvalid ? __('Invalid') : __('Draft')})`;
|
|
678
|
+
const tooltipText = isInvalid || isDraft ? __('This item has been deleted, or is a draft') : __('This item is missing a link');
|
|
637
679
|
return createElement(Fragment, null, createElement(BlockControls, null, createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
638
680
|
name: "link",
|
|
639
681
|
icon: linkIcon,
|
|
@@ -680,8 +722,10 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
680
722
|
className: "wp-block-navigation-link__placeholder-text"
|
|
681
723
|
}, createElement(Tooltip, {
|
|
682
724
|
position: "top center",
|
|
683
|
-
text:
|
|
684
|
-
}, createElement("span", null, missingText)
|
|
725
|
+
text: tooltipText
|
|
726
|
+
}, createElement(Fragment, null, createElement("span", null, missingText), createElement("span", {
|
|
727
|
+
className: "wp-block-navigation-link__missing_text-tooltip"
|
|
728
|
+
}, tooltipText)))) : createElement(Fragment, null, !isInvalid && !isDraft && createElement(Fragment, null, createElement(RichText, {
|
|
685
729
|
ref: ref,
|
|
686
730
|
identifier: "label",
|
|
687
731
|
className: "wp-block-navigation-item__label",
|
|
@@ -701,7 +745,22 @@ export default function NavigationLinkEdit(_ref2) {
|
|
|
701
745
|
setIsLinkOpen(true);
|
|
702
746
|
}
|
|
703
747
|
}
|
|
704
|
-
}),
|
|
748
|
+
}), description && createElement("span", {
|
|
749
|
+
className: "wp-block-navigation-item__description"
|
|
750
|
+
}, description)), (isInvalid || isDraft) && createElement("div", {
|
|
751
|
+
className: "wp-block-navigation-link__placeholder-text wp-block-navigation-link__label"
|
|
752
|
+
}, createElement(KeyboardShortcuts, {
|
|
753
|
+
shortcuts: {
|
|
754
|
+
enter: () => isSelected && setIsLinkOpen(true)
|
|
755
|
+
}
|
|
756
|
+
}), createElement(Tooltip, {
|
|
757
|
+
position: "top center",
|
|
758
|
+
text: tooltipText
|
|
759
|
+
}, createElement(Fragment, null, createElement("span", null,
|
|
760
|
+
/* Trim to avoid trailing white space when the placeholder text is not present */
|
|
761
|
+
`${label} ${placeholderText}`.trim()), createElement("span", {
|
|
762
|
+
className: "wp-block-navigation-link__missing_text-tooltip"
|
|
763
|
+
}, tooltipText))))), isLinkOpen && createElement(Popover, {
|
|
705
764
|
position: "bottom center",
|
|
706
765
|
onClose: () => setIsLinkOpen(false),
|
|
707
766
|
anchorRef: listItemRef.current
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["classnames","escape","createBlock","switchToBlockType","useSelect","useDispatch","Button","PanelBody","Popover","TextControl","TextareaControl","ToolbarButton","Tooltip","ToolbarGroup","displayShortcut","isKeyboardEvent","ENTER","__","sprintf","BlockControls","BlockIcon","InspectorControls","RichText","__experimentalLinkControl","LinkControl","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","safeDecodeURI","Fragment","useState","useEffect","useRef","createInterpolateElement","placeCaretAtHorizontalEdge","link","linkIcon","addSubmenu","coreStore","MAX_NESTING","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","getSuggestionsQuery","type","kind","subtype","getColors","context","isSubMenu","textColor","customTextColor","backgroundColor","customBackgroundColor","overlayTextColor","customOverlayTextColor","overlayBackgroundColor","customOverlayBackgroundColor","style","colors","color","text","background","updateNavigationLinkBlockAttributes","updatedValue","setAttributes","blockAttributes","label","originalLabel","originalKind","originalType","title","url","opensInNewTab","id","newKind","newType","normalizedTitle","replace","normalizedURL","escapeTitle","isBuiltInType","indexOf","isCustomLink","encodeURI","undefined","Number","isInteger","navStripHTML","html","doc","document","implementation","createHTMLDocument","body","innerHTML","textContent","LinkControlTransforms","block","transforms","length","map","item","index","clientId","name","icon","NavigationLinkEdit","attributes","isSelected","insertBlocksAfter","mergeBlocks","onReplace","description","rel","saveEntityRecord","replaceBlock","__unstableMarkNextChangeAsNotPersistent","isLinkOpen","setIsLinkOpen","listItemRef","itemLabelPlaceholder","ref","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasDescendants","userCanCreatePages","userCanCreatePosts","thisBlock","blockTransforms","select","getBlock","getBlocks","getBlockName","getBlockRootClientId","getClientIdsOfDescendants","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlockTransformItems","selectedBlockId","descendants","isImmediateParentOfSelectedBlock","selectedBlockHasDescendants","canUser","transformToSubmenu","newSubmenu","featuredBlocks","featuredTransforms","filter","includes","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","userCanCreate","handleCreate","pageTitle","postType","page","status","rendered","onKeyDown","primary","keyCode","blockProps","className","onClick","classes","missingText","descriptionValue","titleValue","relValue","labelValue","searchTerm","format","mark"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { escape } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock, switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tPanelBody,\n\tPopover,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tRichText,\n\t__experimentalLinkControl as LinkControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';\nimport {\n\tFragment,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\nconst MAX_NESTING = 5;\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\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nfunction getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object} context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\n}\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\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/**\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 */\nexport const updateNavigationLinkBlockAttributes = (\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 = '', // the title of any provided Post.\n\t\turl = '',\n\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\tconst normalizedTitle = title.replace( /http(s?):\\/\\//gi, '' );\n\tconst normalizedURL = url.replace( /http(s?):\\/\\//gi, '' );\n\tconst escapeTitle =\n\t\ttitle !== '' &&\n\t\tnormalizedTitle !== normalizedURL &&\n\t\toriginalLabel !== title;\n\n\tconst label = escapeTitle\n\t\t? escape( title )\n\t\t: originalLabel || escape( normalizedURL );\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...( url && { url: encodeURI( safeDecodeURI( url ) ) } ),\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\n/**\n * Removes HTML from a given string.\n * Note the does not provide XSS protection or otherwise attempt\n * to filter strings with malicious intent.\n *\n * See also: https://github.com/WordPress/gutenberg/pull/35539\n *\n * @param {string} html the string from which HTML should be removed.\n * @return {string} the \"cleaned\" string.\n */\nfunction navStripHTML( html ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\tdoc.body.innerHTML = html;\n\treturn doc.body.textContent || '';\n}\n\n/**\n * Add transforms to Link Control\n */\n\nfunction LinkControlTransforms( { block, transforms, replace } ) {\n\tif ( ! transforms?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"link-control-transform\">\n\t\t\t<h3 className=\"link-control-transform__subheading\">\n\t\t\t\t{ __( 'Transform' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"link-control-transform__items\">\n\t\t\t\t{ transforms.map( ( item, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ `transform-${ index }` }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\treplace(\n\t\t\t\t\t\t\t\t\tblock.clientId,\n\t\t\t\t\t\t\t\t\tswitchToBlockType( block, item.name )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"link-control-transform__item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } />\n\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</div>\n\t);\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 {\n\t\tlabel,\n\t\ttype,\n\t\topensInNewTab,\n\t\turl,\n\t\tdescription,\n\t\trel,\n\t\ttitle,\n\t\tkind,\n\t} = attributes;\n\n\tconst link = {\n\t\turl,\n\t\topensInNewTab,\n\t\ttitle: label && navStripHTML( label ), // don't allow HTML to display inside the <LinkControl>\n\t};\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst {\n\t\treplaceBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add link…' );\n\tconst ref = useRef();\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasDescendants,\n\t\tuserCanCreatePages,\n\t\tuserCanCreatePosts,\n\t\tthisBlock,\n\t\tblockTransforms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst descendants = getClientIdsOfDescendants( [ clientId ] )\n\t\t\t\t.length;\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 >= MAX_NESTING,\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\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasDescendants: !! descendants,\n\t\t\t\tselectedBlockHasDescendants: !! getClientIdsOfDescendants( [\n\t\t\t\t\tselectedBlockId,\n\t\t\t\t] )?.length,\n\t\t\t\tuserCanCreatePages: select( coreStore ).canUser(\n\t\t\t\t\t'create',\n\t\t\t\t\t'pages'\n\t\t\t\t),\n\t\t\t\tuserCanCreatePosts: select( coreStore ).canUser(\n\t\t\t\t\t'create',\n\t\t\t\t\t'posts'\n\t\t\t\t),\n\t\t\t\tthisBlock: getBlock( clientId ),\n\t\t\t\tblockTransforms: getBlockTransformItems(\n\t\t\t\t\t[ getBlock( clientId ) ],\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelLink } );\n\t}, [ isTopLevelLink ] );\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\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tconst featuredBlocks = [\n\t\t'core/site-logo',\n\t\t'core/social-links',\n\t\t'core/search',\n\t];\n\tconst featuredTransforms = blockTransforms.filter( ( item ) => {\n\t\treturn featuredBlocks.includes( item.name );\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\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasDescendants ) {\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [] );\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\tsetAttributes( {\n\t\t\turl: '',\n\t\t\tlabel: '',\n\t\t\tid: '',\n\t\t\tkind: '',\n\t\t\ttype: '',\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 = userCanCreatePages;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = userCanCreatePosts;\n\t}\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\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: 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': hasDescendants,\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(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\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\tif ( ! url ) {\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,\n\t} );\n\n\tlet missingText = '';\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 (\n\t\t<Fragment>\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<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextareaControl\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\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\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\n\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\ttext={ __( 'This item is missing a link' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>{ missingText }</span>\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<RichText\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlabel: labelValue,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\tcreateBlock( 'core/navigation-link' )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\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\t{ isLinkOpen && (\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchorRef={ listItemRef.current }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\thasTextControl\n\t\t\t\t\t\t\t\thasRichPreviews\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\t\tvalue={ link }\n\t\t\t\t\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\t\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\t\t\t\t\tlet format;\n\t\t\t\t\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft post: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft page: <mark>%s</mark>'\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\treturn createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t\t\t\t\t{ mark: <mark /> }\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\tnoDirectEntry={ !! type }\n\t\t\t\t\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\t\t\t\t\tsuggestionsQuery={ getSuggestionsQuery(\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tkind\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( updatedValue ) =>\n\t\t\t\t\t\t\t\t\tupdateNavigationLinkBlockAttributes(\n\t\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\t\tattributes\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\tonRemove={ removeLink }\n\t\t\t\t\t\t\t\trenderControlBottom={\n\t\t\t\t\t\t\t\t\t! url\n\t\t\t\t\t\t\t\t\t\t? () => (\n\t\t\t\t\t\t\t\t\t\t\t\t<LinkControlTransforms\n\t\t\t\t\t\t\t\t\t\t\t\t\tblock={ thisBlock }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransforms={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeaturedTransforms\n\t\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\treplace={ replaceBlock }\n\t\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\t: null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t) }\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["classnames","escape","createBlock","switchToBlockType","useSelect","useDispatch","Button","PanelBody","Popover","TextControl","TextareaControl","ToolbarButton","Tooltip","ToolbarGroup","KeyboardShortcuts","displayShortcut","isKeyboardEvent","ENTER","__","sprintf","BlockControls","BlockIcon","InspectorControls","RichText","__experimentalLinkControl","LinkControl","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","safeDecodeURI","Fragment","useState","useEffect","useRef","createInterpolateElement","placeCaretAtHorizontalEdge","link","linkIcon","addSubmenu","coreStore","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","getSuggestionsQuery","type","kind","subtype","getColors","context","isSubMenu","textColor","customTextColor","backgroundColor","customBackgroundColor","overlayTextColor","customOverlayTextColor","overlayBackgroundColor","customOverlayBackgroundColor","style","colors","color","text","background","updateNavigationLinkBlockAttributes","updatedValue","setAttributes","blockAttributes","label","originalLabel","originalKind","originalType","title","url","opensInNewTab","id","newKind","newType","normalizedTitle","replace","normalizedURL","escapeTitle","isBuiltInType","indexOf","isCustomLink","encodeURI","undefined","Number","isInteger","useIsInvalidLink","isPostType","hasId","postStatus","select","getEntityRecord","status","isInvalid","isDraft","useMissingText","missingText","navStripHTML","html","doc","document","implementation","createHTMLDocument","body","innerHTML","textContent","LinkControlTransforms","block","transforms","length","map","item","index","clientId","name","icon","NavigationLinkEdit","attributes","isSelected","insertBlocksAfter","mergeBlocks","onReplace","description","rel","maxNestingLevel","saveEntityRecord","replaceBlock","__unstableMarkNextChangeAsNotPersistent","isLinkOpen","setIsLinkOpen","listItemRef","itemLabelPlaceholder","ref","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasDescendants","userCanCreatePages","userCanCreatePosts","thisBlock","blockTransforms","getBlock","getBlocks","getBlockName","getBlockRootClientId","getClientIdsOfDescendants","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlockTransformItems","selectedBlockId","descendants","isImmediateParentOfSelectedBlock","selectedBlockHasDescendants","canUser","transformToSubmenu","newSubmenu","featuredBlocks","featuredTransforms","filter","includes","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","userCanCreate","handleCreate","pageTitle","postType","page","rendered","onKeyDown","primary","keyCode","blockProps","className","onClick","classes","placeholderText","tooltipText","descriptionValue","titleValue","relValue","labelValue","enter","trim","searchTerm","format","mark"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { escape } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock, switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tPanelBody,\n\tPopover,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n\tKeyboardShortcuts,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tRichText,\n\t__experimentalLinkControl as LinkControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';\nimport {\n\tFragment,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\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\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nfunction getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object} context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\n}\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\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/**\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 */\nexport const updateNavigationLinkBlockAttributes = (\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 = '', // the title of any provided Post.\n\t\turl = '',\n\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\tconst normalizedTitle = title.replace( /http(s?):\\/\\//gi, '' );\n\tconst normalizedURL = url.replace( /http(s?):\\/\\//gi, '' );\n\tconst escapeTitle =\n\t\ttitle !== '' &&\n\t\tnormalizedTitle !== normalizedURL &&\n\t\toriginalLabel !== title;\n\n\tconst label = escapeTitle\n\t\t? escape( title )\n\t\t: originalLabel || escape( normalizedURL );\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...( url && { url: encodeURI( safeDecodeURI( url ) ) } ),\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\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\nconst useMissingText = ( 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\n/**\n * Removes HTML from a given string.\n * Note the does not provide XSS protection or otherwise attempt\n * to filter strings with malicious intent.\n *\n * See also: https://github.com/WordPress/gutenberg/pull/35539\n *\n * @param {string} html the string from which HTML should be removed.\n * @return {string} the \"cleaned\" string.\n */\nfunction navStripHTML( html ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\tdoc.body.innerHTML = html;\n\treturn doc.body.textContent || '';\n}\n\n/**\n * Add transforms to Link Control\n */\n\nfunction LinkControlTransforms( { block, transforms, replace } ) {\n\tif ( ! transforms?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"link-control-transform\">\n\t\t\t<h3 className=\"link-control-transform__subheading\">\n\t\t\t\t{ __( 'Transform' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"link-control-transform__items\">\n\t\t\t\t{ transforms.map( ( item, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ `transform-${ index }` }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\treplace(\n\t\t\t\t\t\t\t\t\tblock.clientId,\n\t\t\t\t\t\t\t\t\tswitchToBlockType( block, item.name )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"link-control-transform__item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } />\n\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</div>\n\t);\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 {\n\t\tid,\n\t\tlabel,\n\t\ttype,\n\t\topensInNewTab,\n\t\turl,\n\t\tdescription,\n\t\trel,\n\t\ttitle,\n\t\tkind,\n\t} = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst link = {\n\t\turl,\n\t\topensInNewTab,\n\t\ttitle: label && navStripHTML( label ), // don't allow HTML to display inside the <LinkControl>\n\t};\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst {\n\t\treplaceBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add link…' );\n\tconst ref = useRef();\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasDescendants,\n\t\tuserCanCreatePages,\n\t\tuserCanCreatePosts,\n\t\tthisBlock,\n\t\tblockTransforms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst descendants = getClientIdsOfDescendants( [ clientId ] )\n\t\t\t\t.length;\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\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasDescendants: !! descendants,\n\t\t\t\tselectedBlockHasDescendants: !! getClientIdsOfDescendants( [\n\t\t\t\t\tselectedBlockId,\n\t\t\t\t] )?.length,\n\t\t\t\tuserCanCreatePages: select( coreStore ).canUser(\n\t\t\t\t\t'create',\n\t\t\t\t\t'pages'\n\t\t\t\t),\n\t\t\t\tuserCanCreatePosts: select( coreStore ).canUser(\n\t\t\t\t\t'create',\n\t\t\t\t\t'posts'\n\t\t\t\t),\n\t\t\t\tthisBlock: getBlock( clientId ),\n\t\t\t\tblockTransforms: getBlockTransformItems(\n\t\t\t\t\t[ getBlock( clientId ) ],\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelLink } );\n\t}, [ isTopLevelLink ] );\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\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tconst featuredBlocks = [\n\t\t'core/site-logo',\n\t\t'core/social-links',\n\t\t'core/search',\n\t];\n\tconst featuredTransforms = blockTransforms.filter( ( item ) => {\n\t\treturn featuredBlocks.includes( item.name );\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\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasDescendants ) {\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [] );\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\tsetAttributes( {\n\t\t\turl: '',\n\t\t\tlabel: '',\n\t\t\tid: '',\n\t\t\tkind: '',\n\t\t\ttype: '',\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 = userCanCreatePages;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = userCanCreatePosts;\n\t}\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\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: 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': hasDescendants,\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(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\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\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 = useMissingText( type, isInvalid, isDraft );\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<Fragment>\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<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextareaControl\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\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\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\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* Trim to avoid trailing white space when the placeholder text is not present */\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ label } ${ 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<Popover\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchorRef={ listItemRef.current }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\thasTextControl\n\t\t\t\t\t\t\t\thasRichPreviews\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\t\tvalue={ link }\n\t\t\t\t\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\t\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\t\t\t\t\tlet format;\n\t\t\t\t\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft post: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft page: <mark>%s</mark>'\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\treturn createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t\t\t\t\t{ mark: <mark /> }\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\tnoDirectEntry={ !! type }\n\t\t\t\t\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\t\t\t\t\tsuggestionsQuery={ getSuggestionsQuery(\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tkind\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( updatedValue ) =>\n\t\t\t\t\t\t\t\t\tupdateNavigationLinkBlockAttributes(\n\t\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\t\tattributes\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\tonRemove={ removeLink }\n\t\t\t\t\t\t\t\trenderControlBottom={\n\t\t\t\t\t\t\t\t\t! url\n\t\t\t\t\t\t\t\t\t\t? () => (\n\t\t\t\t\t\t\t\t\t\t\t\t<LinkControlTransforms\n\t\t\t\t\t\t\t\t\t\t\t\t\tblock={ thisBlock }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransforms={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeaturedTransforms\n\t\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\treplace={ replaceBlock }\n\t\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\t: null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t) }\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n}\n"]}
|
|
@@ -53,7 +53,7 @@ const metadata = {
|
|
|
53
53
|
type: "boolean"
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "style"],
|
|
56
|
+
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "maxNestingLevel", "style"],
|
|
57
57
|
supports: {
|
|
58
58
|
reusable: false,
|
|
59
59
|
html: false,
|
|
@@ -4,7 +4,7 @@ import { createElement } from "@wordpress/element";
|
|
|
4
4
|
* External dependencies
|
|
5
5
|
*/
|
|
6
6
|
import classnames from 'classnames';
|
|
7
|
-
import { escape,
|
|
7
|
+
import { escape, without } from 'lodash';
|
|
8
8
|
/**
|
|
9
9
|
* WordPress dependencies
|
|
10
10
|
*/
|
|
@@ -70,7 +70,7 @@ const {
|
|
|
70
70
|
type: "boolean"
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
|
-
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "openSubmenusOnClick", "style"],
|
|
73
|
+
usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "maxNestingLevel", "openSubmenusOnClick", "style"],
|
|
74
74
|
supports: {
|
|
75
75
|
reusable: false,
|
|
76
76
|
html: false
|
|
@@ -82,7 +82,6 @@ const ALLOWED_BLOCKS = ['core/navigation-link', 'core/navigation-submenu'];
|
|
|
82
82
|
const DEFAULT_BLOCK = {
|
|
83
83
|
name: 'core/navigation-link'
|
|
84
84
|
};
|
|
85
|
-
const MAX_NESTING = 5;
|
|
86
85
|
/**
|
|
87
86
|
* A React hook to determine if it's dragging within the target element.
|
|
88
87
|
*
|
|
@@ -346,6 +345,7 @@ export default function NavigationSubmenuEdit(_ref) {
|
|
|
346
345
|
};
|
|
347
346
|
const {
|
|
348
347
|
showSubmenuIcon,
|
|
348
|
+
maxNestingLevel,
|
|
349
349
|
openSubmenusOnClick
|
|
350
350
|
} = context;
|
|
351
351
|
const {
|
|
@@ -397,7 +397,7 @@ export default function NavigationSubmenuEdit(_ref) {
|
|
|
397
397
|
}
|
|
398
398
|
|
|
399
399
|
return {
|
|
400
|
-
isAtMaxNesting: getBlockParentsByBlockName(clientId, name).length >=
|
|
400
|
+
isAtMaxNesting: getBlockParentsByBlockName(clientId, name).length >= maxNestingLevel,
|
|
401
401
|
isTopLevelItem: getBlockParentsByBlockName(clientId, name).length === 0,
|
|
402
402
|
isParentOfSelectedBlock: hasSelectedInnerBlock(clientId, true),
|
|
403
403
|
isImmediateParentOfSelectedBlock: hasSelectedInnerBlock(clientId, false),
|
|
@@ -529,11 +529,7 @@ export default function NavigationSubmenuEdit(_ref) {
|
|
|
529
529
|
}); // Always use overlay colors for submenus.
|
|
530
530
|
|
|
531
531
|
const innerBlocksColors = getColors(context, true);
|
|
532
|
-
|
|
533
|
-
if (isAtMaxNesting) {
|
|
534
|
-
pull(ALLOWED_BLOCKS, 'core/navigation-submenu');
|
|
535
|
-
}
|
|
536
|
-
|
|
532
|
+
const allowedBlocks = isAtMaxNesting ? without(ALLOWED_BLOCKS, 'core/navigation-submenu') : ALLOWED_BLOCKS;
|
|
537
533
|
const innerBlocksProps = useInnerBlocksProps({
|
|
538
534
|
className: classnames('wp-block-navigation__submenu-container', {
|
|
539
535
|
'is-parent-of-selected-block': isParentOfSelectedBlock,
|
|
@@ -547,7 +543,7 @@ export default function NavigationSubmenuEdit(_ref) {
|
|
|
547
543
|
backgroundColor: innerBlocksColors.customBackgroundColor
|
|
548
544
|
}
|
|
549
545
|
}, {
|
|
550
|
-
allowedBlocks
|
|
546
|
+
allowedBlocks,
|
|
551
547
|
__experimentalDefaultBlock: DEFAULT_BLOCK,
|
|
552
548
|
__experimentalDirectInsert: true,
|
|
553
549
|
// Ensure block toolbar is not too far removed from item
|