@wordpress/block-library 7.3.10 → 7.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +3 -2
- package/babel-plugin.js +154 -0
- package/build/archives/edit.js +1 -1
- package/build/archives/edit.js.map +1 -1
- package/build/audio/edit.js +5 -17
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/block/edit.js +10 -9
- package/build/block/edit.js.map +1 -1
- package/build/button/edit.native.js +7 -3
- package/build/button/edit.native.js.map +1 -1
- package/build/button/index.js +1 -0
- package/build/button/index.js.map +1 -1
- package/build/categories/edit.js +9 -4
- package/build/categories/edit.js.map +1 -1
- package/build/categories/index.js +5 -1
- package/build/categories/index.js.map +1 -1
- package/build/column/index.js +10 -0
- package/build/column/index.js.map +1 -1
- package/build/comment-author-avatar/index.js +1 -0
- package/build/comment-author-avatar/index.js.map +1 -1
- package/build/comment-template/edit.js +1 -3
- package/build/comment-template/edit.js.map +1 -1
- package/build/{comments-query-loop → comments}/edit/comments-inspector-controls.js +0 -0
- package/{build-module/comments-query-loop → build/comments}/edit/comments-inspector-controls.js.map +1 -1
- package/build/{comments-query-loop → comments}/edit.js +2 -2
- package/build/comments/edit.js.map +1 -0
- package/build/{comments-query-loop → comments}/index.js +1 -1
- package/build/comments/index.js.map +1 -0
- package/build/{comments-query-loop → comments}/save.js +2 -2
- package/build/comments/save.js.map +1 -0
- package/build/comments-title/index.js +1 -1
- package/build/comments-title/index.js.map +1 -1
- package/build/cover/controls.native.js +2 -3
- package/build/cover/controls.native.js.map +1 -1
- package/build/cover/edit/block-controls.js +115 -0
- package/build/cover/edit/block-controls.js.map +1 -0
- package/build/cover/edit/cover-placeholder.js +49 -0
- package/build/cover/edit/cover-placeholder.js.map +1 -0
- package/build/cover/edit/index.js +333 -0
- package/build/cover/edit/index.js.map +1 -0
- package/build/cover/edit/inspector-controls.js +224 -0
- package/build/cover/edit/inspector-controls.js.map +1 -0
- package/build/cover/edit/resizable-cover.js +67 -0
- package/build/cover/edit/resizable-cover.js.map +1 -0
- package/build/cover/edit/use-cover-is-dark.js +81 -0
- package/build/cover/edit/use-cover-is-dark.js.map +1 -0
- package/build/cover/edit.native.js +36 -16
- package/build/cover/edit.native.js.map +1 -1
- package/build/cover/focal-point-settings-button.native.js.map +1 -1
- package/build/cover/shared.js +9 -0
- package/build/cover/shared.js.map +1 -1
- package/build/cover/transforms.js +77 -6
- package/build/cover/transforms.js.map +1 -1
- package/build/cover/use-cover-is-dark.native.js +60 -0
- package/build/cover/use-cover-is-dark.native.js.map +1 -0
- package/build/embed/edit.js +12 -18
- package/build/embed/edit.js.map +1 -1
- package/build/embed/edit.native.js +1 -7
- package/build/embed/edit.native.js.map +1 -1
- package/build/embed/embed-preview.js +1 -1
- package/build/embed/embed-preview.js.map +1 -1
- package/build/embed/util.js +29 -4
- package/build/embed/util.js.map +1 -1
- package/build/file/edit.native.js +0 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/inspector.js +2 -4
- package/build/file/inspector.js.map +1 -1
- package/build/gallery/edit.js +3 -2
- 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/shared.js +2 -2
- package/build/gallery/shared.js.map +1 -1
- package/build/gallery/use-get-media.js +2 -1
- package/build/gallery/use-get-media.js.map +1 -1
- package/build/gallery/use-short-code-transform.js +19 -18
- package/build/gallery/use-short-code-transform.js.map +1 -1
- package/build/gallery/v1/edit.js +1 -1
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery.js +1 -1
- package/build/gallery/v1/gallery.js.map +1 -1
- package/build/group/index.js +1 -0
- package/build/group/index.js.map +1 -1
- package/build/heading/edit.js +6 -2
- package/build/heading/edit.js.map +1 -1
- package/build/heading/index.js +1 -0
- package/build/heading/index.js.map +1 -1
- package/build/heading/transforms.js +9 -4
- package/build/heading/transforms.js.map +1 -1
- package/build/html/edit.js +2 -2
- package/build/html/edit.js.map +1 -1
- package/build/image/edit.js +9 -8
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js +1 -2
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +2 -2
- package/build/image/image.js.map +1 -1
- package/build/index.js +48 -12
- package/build/index.js.map +1 -1
- package/build/index.native.js +14 -3
- package/build/index.native.js.map +1 -1
- package/build/is-block-metadata-experimental.js +18 -0
- package/build/is-block-metadata-experimental.js.map +1 -0
- package/build/latest-comments/edit.js +1 -1
- package/build/latest-comments/edit.js.map +1 -1
- package/build/latest-posts/edit.js +30 -4
- package/build/latest-posts/edit.js.map +1 -1
- package/build/latest-posts/edit.native.js +49 -0
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/transforms.js +6 -0
- package/build/list/transforms.js.map +1 -1
- package/build/list/v2/edit.js +2 -1
- package/build/list/v2/edit.js.map +1 -1
- package/build/list/v2/migrate.js +1 -0
- package/build/list/v2/migrate.js.map +1 -1
- package/build/list/v2/transforms.js +46 -9
- package/build/list/v2/transforms.js.map +1 -1
- package/build/list-item/edit.js +7 -9
- package/build/list-item/edit.js.map +1 -1
- package/build/list-item/hooks/index.js +24 -0
- package/build/list-item/hooks/index.js.map +1 -1
- package/build/list-item/hooks/use-backspace.js +59 -0
- package/build/list-item/hooks/use-backspace.js.map +1 -0
- package/build/list-item/hooks/use-enter.js +6 -9
- package/build/list-item/hooks/use-enter.js.map +1 -1
- package/build/list-item/hooks/use-indent-list-item.js +33 -39
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-space.js +54 -0
- package/build/list-item/hooks/use-space.js.map +1 -0
- package/build/list-item/hooks/use-split.js +30 -0
- package/build/list-item/hooks/use-split.js.map +1 -0
- package/build/list-item/index.js +1 -0
- package/build/list-item/index.js.map +1 -1
- package/build/list-item/utils.js +1 -1
- package/build/list-item/utils.js.map +1 -1
- package/build/loginout/edit.js +1 -1
- package/build/loginout/edit.js.map +1 -1
- package/build/media-text/edit.js +1 -2
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/edit.native.js +3 -2
- package/build/media-text/edit.native.js.map +1 -1
- package/build/media-text/media-container.native.js +2 -4
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/media-text/transforms.js +137 -8
- package/build/media-text/transforms.js.map +1 -1
- package/build/navigation/edit/index.js +86 -81
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +1 -5
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +5 -4
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/index.js +1 -1
- package/build/navigation/use-navigation-entities.js +3 -3
- package/build/navigation/use-navigation-entities.js.map +1 -1
- package/build/navigation/view-modal.js +62 -0
- package/build/navigation/view-modal.js.map +1 -0
- package/build/navigation/view.js +1 -34
- package/build/navigation/view.js.map +1 -1
- package/build/navigation-link/edit.js +1 -1
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/fallback-variations.js +1 -1
- package/build/navigation-link/fallback-variations.js.map +1 -1
- package/build/navigation-link/hooks.js +1 -1
- package/build/navigation-link/hooks.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +1 -1
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/page-list/edit.js +1 -1
- package/build/page-list/edit.js.map +1 -1
- package/build/paragraph/edit.js +10 -0
- package/build/paragraph/edit.js.map +1 -1
- package/build/paragraph/edit.native.js +6 -2
- package/build/paragraph/edit.native.js.map +1 -1
- package/build/paragraph/use-enter.js +94 -0
- package/build/paragraph/use-enter.js.map +1 -0
- package/build/post-author/edit.js +2 -2
- package/build/post-author/edit.js.map +1 -1
- package/build/post-author-name/index.js +1 -0
- package/build/post-author-name/index.js.map +1 -1
- package/build/post-comment/index.js +2 -1
- package/build/post-comment/index.js.map +1 -1
- package/build/post-comments/edit.js +14 -35
- package/build/post-comments/edit.js.map +1 -1
- package/build/post-comments/index.js +1 -1
- package/build/post-comments-count/index.js +1 -0
- package/build/post-comments-count/index.js.map +1 -1
- package/build/post-comments-form/edit.js +37 -24
- package/build/post-comments-form/edit.js.map +1 -1
- package/build/post-comments-form/form.js +48 -0
- package/build/post-comments-form/form.js.map +1 -0
- package/build/post-comments-link/index.js +1 -0
- package/build/post-comments-link/index.js.map +1 -1
- package/build/post-excerpt/edit.js +1 -1
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +1 -1
- package/build/post-featured-image/edit.js.map +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 +35 -4
- package/build/post-terms/edit.js.map +1 -1
- package/build/post-terms/hooks.js +33 -0
- package/build/post-terms/hooks.js.map +1 -0
- package/build/post-terms/index.js +20 -5
- package/build/post-terms/index.js.map +1 -1
- package/build/post-title/index.js +1 -1
- package/build/post-title/index.js.map +1 -1
- package/build/pullquote/edit.js +1 -1
- package/build/pullquote/edit.js.map +1 -1
- package/build/pullquote/edit.native.js +1 -1
- package/build/pullquote/edit.native.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +26 -17
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/inspector-controls/parent-control.js +148 -0
- package/build/query/edit/inspector-controls/parent-control.js.map +1 -0
- package/build/query/edit/inspector-controls/sticky-control.js +41 -0
- package/build/query/edit/inspector-controls/sticky-control.js.map +1 -0
- package/build/query/index.js +2 -1
- package/build/query/index.js.map +1 -1
- package/build/query/utils.js +28 -2
- package/build/query/utils.js.map +1 -1
- package/build/query-title/index.js +1 -1
- package/build/query-title/index.js.map +1 -1
- package/build/query-title/variations.js +1 -1
- package/build/query-title/variations.js.map +1 -1
- package/build/quote/edit.js +3 -2
- package/build/quote/edit.js.map +1 -1
- package/build/quote/index.js +7 -0
- package/build/quote/index.js.map +1 -1
- package/build/quote/v2/edit.js +12 -4
- package/build/quote/v2/edit.js.map +1 -1
- package/build/rss/edit.js +1 -1
- package/build/rss/edit.js.map +1 -1
- package/build/search/edit.js +12 -9
- package/build/search/edit.js.map +1 -1
- package/build/separator/index.js +3 -0
- package/build/separator/index.js.map +1 -1
- package/build/site-logo/edit.js +1 -1
- package/build/site-logo/edit.js.map +1 -1
- package/build/spacer/constants.js +9 -0
- package/build/spacer/constants.js.map +1 -0
- package/build/spacer/controls.js +3 -3
- package/build/spacer/controls.js.map +1 -1
- package/build/spacer/controls.native.js +2 -2
- package/build/spacer/controls.native.js.map +1 -1
- package/build/spacer/edit.js +5 -6
- package/build/spacer/edit.js.map +1 -1
- package/build/table/edit.js +23 -4
- package/build/table/edit.js.map +1 -1
- package/build/table-of-contents/edit.js +138 -66
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/table-of-contents/index.js +13 -3
- package/build/table-of-contents/index.js.map +1 -1
- package/build/table-of-contents/list.js +16 -9
- package/build/table-of-contents/list.js.map +1 -1
- package/build/table-of-contents/save.js +40 -0
- package/build/table-of-contents/save.js.map +1 -0
- package/build/table-of-contents/utils.js +11 -77
- package/build/table-of-contents/utils.js.map +1 -1
- package/build/tag-cloud/edit.js +1 -1
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/template-part/edit/index.js +7 -3
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/inner-blocks.js +3 -8
- package/build/template-part/edit/inner-blocks.js.map +1 -1
- package/build/video/edit.js +5 -9
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +1 -1
- package/build/video/edit.native.js.map +1 -1
- package/build-module/archives/edit.js +1 -1
- package/build-module/archives/edit.js.map +1 -1
- package/build-module/audio/edit.js +6 -18
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js +1 -1
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/block/edit.js +11 -10
- package/build-module/block/edit.js.map +1 -1
- package/build-module/button/edit.native.js +7 -3
- package/build-module/button/edit.native.js.map +1 -1
- package/build-module/button/index.js +1 -0
- package/build-module/button/index.js.map +1 -1
- package/build-module/categories/edit.js +9 -4
- package/build-module/categories/edit.js.map +1 -1
- package/build-module/categories/index.js +5 -1
- package/build-module/categories/index.js.map +1 -1
- package/build-module/column/index.js +10 -0
- package/build-module/column/index.js.map +1 -1
- package/build-module/comment-author-avatar/index.js +1 -0
- package/build-module/comment-author-avatar/index.js.map +1 -1
- package/build-module/comment-template/edit.js +1 -3
- package/build-module/comment-template/edit.js.map +1 -1
- package/build-module/{comments-query-loop → comments}/edit/comments-inspector-controls.js +0 -0
- package/build-module/comments/edit/comments-inspector-controls.js.map +1 -0
- package/build-module/{comments-query-loop → comments}/edit.js +1 -1
- package/build-module/comments/edit.js.map +1 -0
- package/build-module/{comments-query-loop → comments}/index.js +1 -1
- package/build-module/comments/index.js.map +1 -0
- package/build-module/{comments-query-loop → comments}/save.js +1 -1
- package/build-module/comments/save.js.map +1 -0
- package/build-module/comments-title/index.js +1 -1
- package/build-module/comments-title/index.js.map +1 -1
- package/build-module/cover/controls.native.js +2 -3
- package/build-module/cover/controls.native.js.map +1 -1
- package/build-module/cover/edit/block-controls.js +104 -0
- package/build-module/cover/edit/block-controls.js.map +1 -0
- package/build-module/cover/edit/cover-placeholder.js +38 -0
- package/build-module/cover/edit/cover-placeholder.js.map +1 -0
- package/build-module/cover/edit/index.js +307 -0
- package/build-module/cover/edit/index.js.map +1 -0
- package/build-module/cover/edit/inspector-controls.js +215 -0
- package/build-module/cover/edit/inspector-controls.js.map +1 -0
- package/build-module/cover/edit/resizable-cover.js +55 -0
- package/build-module/cover/edit/resizable-cover.js.map +1 -0
- package/build-module/cover/edit/use-cover-is-dark.js +70 -0
- package/build-module/cover/edit/use-cover-is-dark.js.map +1 -0
- package/build-module/cover/edit.native.js +35 -17
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/cover/focal-point-settings-button.native.js.map +1 -1
- package/build-module/cover/shared.js +7 -0
- package/build-module/cover/shared.js.map +1 -1
- package/build-module/cover/transforms.js +74 -6
- package/build-module/cover/transforms.js.map +1 -1
- package/build-module/cover/use-cover-is-dark.native.js +51 -0
- package/build-module/cover/use-cover-is-dark.native.js.map +1 -0
- package/build-module/embed/edit.js +13 -19
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/embed/edit.native.js +2 -8
- package/build-module/embed/edit.native.js.map +1 -1
- package/build-module/embed/embed-preview.js +2 -2
- package/build-module/embed/embed-preview.js.map +1 -1
- package/build-module/embed/util.js +25 -3
- package/build-module/embed/util.js.map +1 -1
- package/build-module/file/edit.native.js +0 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/inspector.js +2 -4
- package/build-module/file/inspector.js.map +1 -1
- package/build-module/gallery/edit.js +3 -2
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.js +2 -2
- package/build-module/gallery/gallery.js.map +1 -1
- package/build-module/gallery/shared.js +2 -2
- package/build-module/gallery/shared.js.map +1 -1
- package/build-module/gallery/use-get-media.js +2 -1
- package/build-module/gallery/use-get-media.js.map +1 -1
- package/build-module/gallery/use-short-code-transform.js +19 -18
- package/build-module/gallery/use-short-code-transform.js.map +1 -1
- package/build-module/gallery/v1/edit.js +1 -1
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery.js +2 -2
- package/build-module/gallery/v1/gallery.js.map +1 -1
- package/build-module/group/index.js +1 -0
- package/build-module/group/index.js.map +1 -1
- package/build-module/heading/edit.js +6 -2
- package/build-module/heading/edit.js.map +1 -1
- package/build-module/heading/index.js +1 -0
- package/build-module/heading/index.js.map +1 -1
- package/build-module/heading/transforms.js +9 -4
- package/build-module/heading/transforms.js.map +1 -1
- package/build-module/html/edit.js +2 -2
- package/build-module/html/edit.js.map +1 -1
- package/build-module/image/edit.js +10 -9
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js +1 -2
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +3 -3
- package/build-module/image/image.js.map +1 -1
- package/build-module/index.js +43 -11
- package/build-module/index.js.map +1 -1
- package/build-module/index.native.js +14 -3
- package/build-module/index.native.js.map +1 -1
- package/build-module/is-block-metadata-experimental.js +16 -0
- package/build-module/is-block-metadata-experimental.js.map +1 -0
- package/build-module/latest-comments/edit.js +1 -1
- package/build-module/latest-comments/edit.js.map +1 -1
- package/build-module/latest-posts/edit.js +29 -5
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/latest-posts/edit.native.js +51 -2
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/transforms.js +6 -0
- package/build-module/list/transforms.js.map +1 -1
- package/build-module/list/v2/edit.js +2 -1
- package/build-module/list/v2/edit.js.map +1 -1
- package/build-module/list/v2/migrate.js +1 -3
- package/build-module/list/v2/migrate.js.map +1 -1
- package/build-module/list/v2/transforms.js +46 -9
- package/build-module/list/v2/transforms.js.map +1 -1
- package/build-module/list-item/edit.js +8 -9
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/list-item/hooks/index.js +3 -0
- package/build-module/list-item/hooks/index.js.map +1 -1
- package/build-module/list-item/hooks/use-backspace.js +44 -0
- package/build-module/list-item/hooks/use-backspace.js.map +1 -0
- package/build-module/list-item/hooks/use-enter.js +6 -9
- package/build-module/list-item/hooks/use-enter.js.map +1 -1
- package/build-module/list-item/hooks/use-indent-list-item.js +33 -38
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-space.js +40 -0
- package/build-module/list-item/hooks/use-space.js.map +1 -0
- package/build-module/list-item/hooks/use-split.js +19 -0
- package/build-module/list-item/hooks/use-split.js.map +1 -0
- package/build-module/list-item/index.js +1 -0
- package/build-module/list-item/index.js.map +1 -1
- package/build-module/list-item/utils.js +1 -1
- package/build-module/list-item/utils.js.map +1 -1
- package/build-module/loginout/edit.js +1 -1
- package/build-module/loginout/edit.js.map +1 -1
- package/build-module/media-text/edit.js +1 -2
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/edit.native.js +3 -2
- package/build-module/media-text/edit.native.js.map +1 -1
- package/build-module/media-text/media-container.native.js +2 -4
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/media-text/transforms.js +137 -8
- package/build-module/media-text/transforms.js.map +1 -1
- package/build-module/navigation/edit/index.js +87 -82
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +2 -6
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +5 -4
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/index.js +1 -1
- package/build-module/navigation/use-navigation-entities.js +1 -1
- package/build-module/navigation/use-navigation-entities.js.map +1 -1
- package/build-module/navigation/view-modal.js +56 -0
- package/build-module/navigation/view-modal.js.map +1 -0
- package/build-module/navigation/view.js +1 -30
- package/build-module/navigation/view.js.map +1 -1
- package/build-module/navigation-link/edit.js +1 -1
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/fallback-variations.js +1 -1
- package/build-module/navigation-link/fallback-variations.js.map +1 -1
- package/build-module/navigation-link/hooks.js +2 -2
- package/build-module/navigation-link/hooks.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +1 -1
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/page-list/edit.js +1 -1
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/paragraph/edit.js +9 -0
- package/build-module/paragraph/edit.js.map +1 -1
- package/build-module/paragraph/edit.native.js +6 -2
- package/build-module/paragraph/edit.native.js.map +1 -1
- package/build-module/paragraph/use-enter.js +81 -0
- package/build-module/paragraph/use-enter.js.map +1 -0
- package/build-module/post-author/edit.js +2 -2
- package/build-module/post-author/edit.js.map +1 -1
- package/build-module/post-author-name/index.js +1 -0
- package/build-module/post-author-name/index.js.map +1 -1
- package/build-module/post-comment/index.js +2 -1
- package/build-module/post-comment/index.js.map +1 -1
- package/build-module/post-comments/edit.js +13 -35
- package/build-module/post-comments/edit.js.map +1 -1
- package/build-module/post-comments/index.js +1 -1
- package/build-module/post-comments-count/index.js +1 -0
- package/build-module/post-comments-count/index.js.map +1 -1
- package/build-module/post-comments-form/edit.js +38 -26
- package/build-module/post-comments-form/edit.js.map +1 -1
- package/build-module/post-comments-form/form.js +39 -0
- package/build-module/post-comments-form/form.js.map +1 -0
- package/build-module/post-comments-link/index.js +1 -0
- package/build-module/post-comments-link/index.js.map +1 -1
- package/build-module/post-excerpt/edit.js +1 -1
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +1 -1
- package/build-module/post-featured-image/edit.js.map +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 +35 -6
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/post-terms/hooks.js +25 -0
- package/build-module/post-terms/hooks.js.map +1 -0
- package/build-module/post-terms/index.js +18 -8
- package/build-module/post-terms/index.js.map +1 -1
- package/build-module/post-title/index.js +1 -1
- package/build-module/post-title/index.js.map +1 -1
- package/build-module/pullquote/edit.js +2 -2
- package/build-module/pullquote/edit.js.map +1 -1
- package/build-module/pullquote/edit.native.js +2 -2
- package/build-module/pullquote/edit.native.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +24 -17
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/parent-control.js +135 -0
- package/build-module/query/edit/inspector-controls/parent-control.js.map +1 -0
- package/build-module/query/edit/inspector-controls/sticky-control.js +31 -0
- package/build-module/query/edit/inspector-controls/sticky-control.js.map +1 -0
- package/build-module/query/index.js +2 -1
- package/build-module/query/index.js.map +1 -1
- package/build-module/query/utils.js +21 -0
- package/build-module/query/utils.js.map +1 -1
- package/build-module/query-title/index.js +1 -1
- package/build-module/query-title/index.js.map +1 -1
- package/build-module/query-title/variations.js +2 -2
- package/build-module/query-title/variations.js.map +1 -1
- package/build-module/quote/edit.js +4 -3
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/quote/index.js +2 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/v2/edit.js +12 -5
- package/build-module/quote/v2/edit.js.map +1 -1
- package/build-module/rss/edit.js +1 -1
- package/build-module/rss/edit.js.map +1 -1
- package/build-module/search/edit.js +12 -9
- package/build-module/search/edit.js.map +1 -1
- package/build-module/separator/index.js +3 -0
- package/build-module/separator/index.js.map +1 -1
- package/build-module/site-logo/edit.js +1 -1
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/spacer/constants.js +2 -0
- package/build-module/spacer/constants.js.map +1 -0
- package/build-module/spacer/controls.js +2 -2
- package/build-module/spacer/controls.js.map +1 -1
- package/build-module/spacer/controls.native.js +1 -1
- package/build-module/spacer/controls.native.js.map +1 -1
- package/build-module/spacer/edit.js +1 -1
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table/edit.js +26 -7
- package/build-module/table/edit.js.map +1 -1
- package/build-module/table-of-contents/edit.js +136 -68
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/table-of-contents/index.js +12 -3
- package/build-module/table-of-contents/index.js.map +1 -1
- package/build-module/table-of-contents/list.js +18 -10
- package/build-module/table-of-contents/list.js.map +1 -1
- package/build-module/table-of-contents/save.js +28 -0
- package/build-module/table-of-contents/save.js.map +1 -0
- package/build-module/table-of-contents/utils.js +11 -73
- package/build-module/table-of-contents/utils.js.map +1 -1
- package/build-module/tag-cloud/edit.js +1 -1
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +8 -4
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/inner-blocks.js +4 -9
- package/build-module/template-part/edit/inner-blocks.js.map +1 -1
- package/build-module/video/edit.js +6 -10
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +1 -1
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/{comments-query-loop → comments}/editor-rtl.css +0 -0
- package/build-style/{comments-query-loop → comments}/editor.css +0 -0
- package/build-style/common-rtl.css +32 -0
- package/build-style/common.css +32 -0
- package/build-style/cover/style-rtl.css +0 -4
- package/build-style/cover/style.css +0 -4
- package/build-style/editor-rtl.css +16 -10
- package/build-style/editor.css +16 -10
- package/build-style/image/editor-rtl.css +1 -1
- package/build-style/image/editor.css +1 -1
- package/build-style/navigation/style-rtl.css +3 -0
- package/build-style/navigation/style.css +3 -0
- package/build-style/separator/editor-rtl.css +1 -0
- package/build-style/separator/editor.css +1 -0
- package/build-style/style-rtl.css +73 -4
- package/build-style/style.css +73 -4
- package/build-style/table/editor-rtl.css +8 -0
- package/build-style/table/editor.css +8 -0
- package/build-style/table/style-rtl.css +38 -0
- package/build-style/table/style.css +38 -0
- package/build-style/video/editor-rtl.css +2 -5
- package/build-style/video/editor.css +2 -5
- package/build-types/table-of-contents/list.d.ts +12 -0
- package/build-types/table-of-contents/list.d.ts.map +1 -0
- package/build-types/table-of-contents/utils.d.ts +24 -0
- package/build-types/table-of-contents/utils.d.ts.map +1 -0
- package/package.json +30 -29
- package/src/archives/edit.js +1 -1
- package/src/audio/edit.js +7 -10
- package/src/audio/edit.native.js +1 -1
- package/src/avatar/block.json +0 -1
- package/src/avatar/index.php +2 -2
- package/src/block/edit.js +39 -42
- package/src/block/test/edit.native.js +1 -1
- package/src/button/block.json +1 -0
- package/src/button/edit.native.js +6 -3
- package/src/categories/block.json +5 -1
- package/src/categories/edit.js +9 -3
- package/src/categories/index.php +1 -0
- package/src/column/block.json +10 -0
- package/src/comment-author-avatar/block.json +1 -0
- package/src/comment-template/edit.js +1 -5
- package/src/{comments-query-loop → comments}/block.json +1 -1
- package/src/{comments-query-loop → comments}/edit/comments-inspector-controls.js +0 -0
- package/src/{comments-query-loop → comments}/edit.js +1 -1
- package/src/{comments-query-loop → comments}/editor.scss +0 -0
- package/src/{comments-query-loop → comments}/index.js +0 -0
- package/src/{comments-query-loop → comments}/save.js +1 -3
- package/src/comments-title/index.js +1 -1
- package/src/common.scss +24 -1
- package/src/cover/controls.native.js +1 -2
- package/src/cover/edit/block-controls.js +119 -0
- package/src/cover/edit/cover-placeholder.js +39 -0
- package/src/cover/edit/index.js +381 -0
- package/src/cover/edit/inspector-controls.js +286 -0
- package/src/cover/edit/resizable-cover.js +55 -0
- package/src/cover/edit/use-cover-is-dark.js +71 -0
- package/src/cover/edit.native.js +40 -14
- package/src/cover/editor.scss +1 -1
- package/src/cover/focal-point-settings-button.native.js +1 -1
- package/src/cover/shared.js +4 -0
- package/src/cover/style.native.scss +4 -0
- package/src/cover/style.scss +0 -4
- package/src/cover/test/__snapshots__/edit.native.js.snap +6 -6
- package/src/cover/test/block-controls.js +62 -0
- package/src/cover/test/transforms.js +301 -0
- package/src/cover/transforms.js +112 -7
- package/src/cover/use-cover-is-dark.native.js +51 -0
- package/src/editor.scss +1 -1
- package/src/embed/edit.js +19 -24
- package/src/embed/edit.native.js +9 -14
- package/src/embed/embed-preview.js +4 -2
- package/src/embed/util.js +34 -2
- package/src/file/edit.native.js +0 -1
- package/src/file/inspector.js +1 -3
- package/src/gallery/edit.js +3 -2
- package/src/gallery/gallery.js +2 -2
- package/src/gallery/shared.js +3 -2
- package/src/gallery/use-get-media.js +2 -1
- package/src/gallery/use-short-code-transform.js +19 -16
- package/src/gallery/v1/edit.js +1 -1
- package/src/gallery/v1/gallery.js +2 -2
- package/src/group/block.json +1 -0
- package/src/heading/block.json +1 -0
- package/src/heading/edit.js +5 -2
- package/src/heading/transforms.js +4 -3
- package/src/html/edit.js +2 -2
- package/src/image/edit.js +11 -5
- package/src/image/edit.native.js +1 -2
- package/src/image/editor.scss +1 -1
- package/src/image/image.js +9 -3
- package/src/image/test/edit.native.js +7 -7
- package/src/index.js +52 -30
- package/src/index.native.js +12 -2
- package/src/is-block-metadata-experimental.js +19 -0
- package/src/latest-comments/edit.js +1 -1
- package/src/latest-posts/edit.js +27 -2
- package/src/latest-posts/edit.native.js +56 -1
- package/src/list/transforms.js +7 -0
- package/src/list/v2/edit.js +1 -0
- package/src/list/v2/migrate.js +1 -1
- package/src/list/v2/transforms.js +35 -0
- package/src/list-item/block.json +2 -1
- package/src/list-item/edit.js +17 -10
- package/src/list-item/hooks/index.js +3 -0
- package/src/list-item/hooks/use-backspace.js +52 -0
- package/src/list-item/hooks/use-enter.js +9 -16
- package/src/list-item/hooks/use-indent-list-item.js +50 -63
- package/src/list-item/hooks/use-space.js +48 -0
- package/src/list-item/hooks/use-split.js +24 -0
- package/src/list-item/utils.js +1 -1
- package/src/loginout/edit.js +1 -1
- package/src/media-text/edit.js +1 -2
- package/src/media-text/edit.native.js +4 -2
- package/src/media-text/media-container.native.js +2 -4
- package/src/media-text/transforms.js +154 -0
- package/src/navigation/block.json +1 -1
- package/src/navigation/edit/index.js +175 -169
- package/src/navigation/edit/inner-blocks.js +1 -8
- package/src/navigation/edit/unsaved-inner-blocks.js +5 -4
- package/src/navigation/index.php +5 -0
- package/src/navigation/style.scss +3 -0
- package/src/navigation/use-navigation-entities.js +1 -1
- package/src/navigation/view-modal.js +68 -0
- package/src/navigation/view.js +0 -35
- package/src/navigation-link/edit.js +1 -1
- package/src/navigation-link/fallback-variations.js +1 -1
- package/src/navigation-link/hooks.js +2 -2
- package/src/navigation-link/test/__snapshots__/hooks.js.snap +4 -4
- package/src/page-list/convert-to-links-modal.js +1 -1
- package/src/page-list/edit.js +1 -4
- package/src/paragraph/edit.js +6 -0
- package/src/paragraph/edit.native.js +13 -1
- package/src/paragraph/use-enter.js +103 -0
- package/src/post-author/edit.js +25 -23
- package/src/post-author-name/block.json +1 -0
- package/src/post-comment/block.json +2 -1
- package/src/post-comments/block.json +1 -1
- package/src/post-comments/edit.js +13 -43
- package/src/post-comments/index.php +2 -0
- package/src/post-comments-count/block.json +1 -0
- package/src/post-comments-form/edit.js +50 -58
- package/src/post-comments-form/form.js +40 -0
- package/src/post-comments-link/block.json +1 -0
- package/src/post-excerpt/edit.js +1 -1
- package/src/post-featured-image/edit.js +1 -1
- package/src/post-template/edit.js +5 -0
- package/src/post-terms/block.json +8 -0
- package/src/post-terms/edit.js +47 -1
- package/src/post-terms/hooks.js +27 -0
- package/src/post-terms/index.js +14 -7
- package/src/post-terms/index.php +50 -2
- package/src/post-title/index.js +1 -1
- package/src/pullquote/edit.js +2 -2
- package/src/pullquote/edit.native.js +2 -2
- package/src/query/block.json +2 -1
- package/src/query/edit/inspector-controls/index.js +25 -11
- package/src/query/edit/inspector-controls/parent-control.js +133 -0
- package/src/query/edit/inspector-controls/sticky-control.js +25 -0
- package/src/query/utils.js +22 -0
- package/src/query-title/index.js +1 -1
- package/src/query-title/variations.js +2 -2
- package/src/quote/block.json +1 -0
- package/src/quote/edit.js +5 -2
- package/src/quote/index.js +1 -1
- package/src/quote/v2/edit.js +7 -2
- package/src/rss/edit.js +1 -1
- package/src/search/edit.js +14 -7
- package/src/search/index.php +85 -34
- package/src/separator/block.json +3 -0
- package/src/separator/editor.scss +1 -0
- package/src/site-logo/edit.js +1 -1
- package/src/spacer/constants.js +1 -0
- package/src/spacer/controls.js +2 -2
- package/src/spacer/controls.native.js +1 -1
- package/src/spacer/edit.js +1 -2
- package/src/table/edit.js +30 -6
- package/src/table/editor.scss +13 -0
- package/src/table/style.scss +52 -0
- package/src/table-of-contents/block.json +9 -2
- package/src/table-of-contents/edit.js +155 -75
- package/src/table-of-contents/index.js +2 -0
- package/src/table-of-contents/list.tsx +46 -0
- package/src/table-of-contents/save.js +25 -0
- package/src/table-of-contents/utils.ts +71 -0
- package/src/tag-cloud/block.json +1 -1
- package/src/tag-cloud/edit.js +1 -1
- package/src/template-part/edit/index.js +25 -15
- package/src/template-part/edit/inner-blocks.js +2 -10
- package/src/video/edit.js +8 -7
- package/src/video/edit.native.js +1 -1
- package/src/video/editor.scss +3 -6
- package/test/babel-plugin.js +67 -0
- package/tsconfig.json +11 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/build/comments-query-loop/edit/comments-inspector-controls.js.map +0 -1
- package/build/comments-query-loop/edit.js.map +0 -1
- package/build/comments-query-loop/index.js.map +0 -1
- package/build/comments-query-loop/save.js.map +0 -1
- package/build/cover/edit.js +0 -668
- package/build/cover/edit.js.map +0 -1
- package/build/post-terms/variations.js +0 -37
- package/build/post-terms/variations.js.map +0 -1
- package/build-module/comments-query-loop/edit.js.map +0 -1
- package/build-module/comments-query-loop/index.js.map +0 -1
- package/build-module/comments-query-loop/save.js.map +0 -1
- package/build-module/cover/edit.js +0 -645
- package/build-module/cover/edit.js.map +0 -1
- package/build-module/post-terms/variations.js +0 -27
- package/build-module/post-terms/variations.js.map +0 -1
- package/src/cover/edit.js +0 -827
- package/src/post-terms/variations.js +0 -28
- package/src/table-of-contents/index.php +0 -346
- package/src/table-of-contents/list.js +0 -28
- package/src/table-of-contents/utils.js +0 -126
|
@@ -21,121 +21,200 @@ import {
|
|
|
21
21
|
ToolbarButton,
|
|
22
22
|
ToolbarGroup,
|
|
23
23
|
} from '@wordpress/components';
|
|
24
|
+
import { useDisabled } from '@wordpress/compose';
|
|
24
25
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
25
|
-
import {
|
|
26
|
+
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
27
|
+
import { renderToString, useEffect } from '@wordpress/element';
|
|
26
28
|
import { __ } from '@wordpress/i18n';
|
|
29
|
+
import { addQueryArgs, removeQueryArgs } from '@wordpress/url';
|
|
27
30
|
|
|
28
31
|
/**
|
|
29
32
|
* Internal dependencies
|
|
30
33
|
*/
|
|
34
|
+
import icon from './icon';
|
|
31
35
|
import TableOfContentsList from './list';
|
|
32
|
-
import {
|
|
36
|
+
import { linearToNestedHeadingList } from './utils';
|
|
37
|
+
|
|
38
|
+
/** @typedef {import('./utils').HeadingData} HeadingData */
|
|
33
39
|
|
|
34
40
|
/**
|
|
35
41
|
* Table of Contents block edit component.
|
|
36
42
|
*
|
|
37
43
|
* @param {Object} props The props.
|
|
38
44
|
* @param {Object} props.attributes The block attributes.
|
|
39
|
-
* @param {
|
|
40
|
-
*
|
|
41
|
-
* paginated).
|
|
45
|
+
* @param {HeadingData[]} props.attributes.headings A list of data for each heading in the post.
|
|
46
|
+
* @param {boolean} props.attributes.onlyIncludeCurrentPage Whether to only include headings from the current page (if the post is paginated).
|
|
42
47
|
* @param {string} props.clientId
|
|
43
48
|
* @param {(attributes: Object) => void} props.setAttributes
|
|
44
49
|
*
|
|
45
50
|
* @return {WPComponent} The component.
|
|
46
51
|
*/
|
|
47
52
|
export default function TableOfContentsEdit( {
|
|
48
|
-
attributes: { onlyIncludeCurrentPage },
|
|
53
|
+
attributes: { headings = [], onlyIncludeCurrentPage },
|
|
49
54
|
clientId,
|
|
50
55
|
setAttributes,
|
|
51
56
|
} ) {
|
|
52
57
|
const blockProps = useBlockProps();
|
|
58
|
+
const disabledRef = useDisabled();
|
|
53
59
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const [ headingTree, setHeadingTree ] = useState( [] );
|
|
57
|
-
|
|
58
|
-
const { listBlockExists, postContent } = useSelect(
|
|
59
|
-
( select ) => ( {
|
|
60
|
-
listBlockExists: !! select( blocksStore ).getBlockType(
|
|
61
|
-
'core/list'
|
|
62
|
-
),
|
|
63
|
-
// FIXME: @wordpress/block-library should not depend on @wordpress/editor.
|
|
64
|
-
// Blocks can be loaded into a *non-post* block editor.
|
|
65
|
-
// eslint-disable-next-line @wordpress/data-no-store-string-literals
|
|
66
|
-
postContent: select( 'core/editor' ).getEditedPostContent(),
|
|
67
|
-
} ),
|
|
60
|
+
const listBlockExists = useSelect(
|
|
61
|
+
( select ) => !! select( blocksStore ).getBlockType( 'core/list' ),
|
|
68
62
|
[]
|
|
69
63
|
);
|
|
70
64
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if ( ! onlyIncludeCurrentPage ) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
65
|
+
const {
|
|
66
|
+
__unstableMarkNextChangeAsNotPersistent,
|
|
67
|
+
replaceBlocks,
|
|
68
|
+
} = useDispatch( blockEditorStore );
|
|
78
69
|
|
|
70
|
+
/**
|
|
71
|
+
* The latest heading data, or null if the new data deeply equals the saved
|
|
72
|
+
* headings attribute.
|
|
73
|
+
*
|
|
74
|
+
* Since useSelect forces a re-render when its return value is shallowly
|
|
75
|
+
* inequal to its prior call, we would be re-rendering this block every time
|
|
76
|
+
* the stores change, even if the latest headings were deeply equal to the
|
|
77
|
+
* ones saved in the block attributes.
|
|
78
|
+
*
|
|
79
|
+
* By returning null when they're equal, we reduce that to 2 renders: one
|
|
80
|
+
* when there are new latest headings (and so it returns them), and one when
|
|
81
|
+
* they haven't changed (so it returns null). As long as the latest heading
|
|
82
|
+
* data remains the same, further calls of the useSelect callback will
|
|
83
|
+
* continue to return null, thus preventing any forced re-renders.
|
|
84
|
+
*/
|
|
85
|
+
const latestHeadings = useSelect(
|
|
86
|
+
( select ) => {
|
|
79
87
|
const {
|
|
80
88
|
getBlockAttributes,
|
|
81
|
-
getBlockIndex,
|
|
82
89
|
getBlockName,
|
|
83
|
-
|
|
90
|
+
getClientIdsWithDescendants,
|
|
91
|
+
__experimentalGetGlobalBlocksByName: getGlobalBlocksByName,
|
|
84
92
|
} = select( blockEditorStore );
|
|
85
93
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
// FIXME: @wordpress/block-library should not depend on @wordpress/editor.
|
|
95
|
+
// Blocks can be loaded into a *non-post* block editor, so to avoid
|
|
96
|
+
// declaring @wordpress/editor as a dependency, we must access its
|
|
97
|
+
// store by string. When the store is not available, editorSelectors
|
|
98
|
+
// will be null, and the block's saved markup will lack permalinks.
|
|
99
|
+
// eslint-disable-next-line @wordpress/data-no-store-string-literals
|
|
100
|
+
const editorSelectors = select( 'core/editor' );
|
|
101
|
+
|
|
102
|
+
const pageBreakClientIds = getGlobalBlocksByName( 'core/nextpage' );
|
|
103
|
+
|
|
104
|
+
const isPaginated = pageBreakClientIds.length !== 0;
|
|
105
|
+
|
|
106
|
+
// Get the client ids of all blocks in the editor.
|
|
107
|
+
const allBlockClientIds = getClientIdsWithDescendants();
|
|
108
|
+
|
|
109
|
+
// If onlyIncludeCurrentPage is true, calculate the page (of a paginated post) this block is part of, so we know which headings to include; otherwise, skip the calculation.
|
|
110
|
+
let tocPage = 1;
|
|
111
|
+
|
|
112
|
+
if ( isPaginated && onlyIncludeCurrentPage ) {
|
|
113
|
+
// We can't use getBlockIndex because it only returns the index
|
|
114
|
+
// relative to sibling blocks.
|
|
115
|
+
const tocIndex = allBlockClientIds.indexOf( clientId );
|
|
116
|
+
|
|
117
|
+
for ( const [
|
|
118
|
+
blockIndex,
|
|
119
|
+
blockClientId,
|
|
120
|
+
] of allBlockClientIds.entries() ) {
|
|
121
|
+
// If we've reached blocks after the Table of Contents, we've
|
|
122
|
+
// finished calculating which page the block is on.
|
|
123
|
+
if ( blockIndex >= tocIndex ) {
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
if ( getBlockName( blockClientId ) === 'core/nextpage' ) {
|
|
127
|
+
tocPage++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const _latestHeadings = [];
|
|
133
|
+
|
|
134
|
+
/** The page (of a paginated post) a heading will be part of. */
|
|
135
|
+
let headingPage = 1;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* A permalink to the current post. If the core/editor store is
|
|
139
|
+
* unavailable, this variable will be null.
|
|
140
|
+
*/
|
|
141
|
+
const permalink = editorSelectors?.getPermalink() ?? null;
|
|
142
|
+
|
|
143
|
+
let headingPageLink = null;
|
|
144
|
+
|
|
145
|
+
// If the core/editor store is available, we can add permalinks to the
|
|
146
|
+
// generated table of contents.
|
|
147
|
+
if ( typeof permalink === 'string' ) {
|
|
148
|
+
headingPageLink = isPaginated
|
|
149
|
+
? addQueryArgs( permalink, { page: headingPage } )
|
|
150
|
+
: permalink;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
for ( const blockClientId of allBlockClientIds ) {
|
|
154
|
+
const blockName = getBlockName( blockClientId );
|
|
100
155
|
if ( blockName === 'core/nextpage' ) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
156
|
+
headingPage++;
|
|
157
|
+
|
|
158
|
+
// If we're only including headings from the current page (of
|
|
159
|
+
// a paginated post), then exit the loop if we've reached the
|
|
160
|
+
// pages after the one with the Table of Contents block.
|
|
161
|
+
if ( onlyIncludeCurrentPage && headingPage > tocPage ) {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if ( typeof permalink === 'string' ) {
|
|
166
|
+
headingPageLink = addQueryArgs(
|
|
167
|
+
removeQueryArgs( permalink, [ 'page' ] ),
|
|
168
|
+
{ page: headingPage }
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// If we're including all headings or we've reached headings on
|
|
173
|
+
// the same page as the Table of Contents block, add them to the
|
|
174
|
+
// list.
|
|
175
|
+
else if (
|
|
176
|
+
! onlyIncludeCurrentPage ||
|
|
177
|
+
headingPage === tocPage
|
|
178
|
+
) {
|
|
179
|
+
if ( blockName === 'core/heading' ) {
|
|
180
|
+
const headingAttributes = getBlockAttributes(
|
|
181
|
+
blockClientId
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
const canBeLinked =
|
|
185
|
+
typeof headingPageLink === 'string' &&
|
|
186
|
+
typeof headingAttributes.anchor === 'string' &&
|
|
187
|
+
headingAttributes.anchor !== '';
|
|
188
|
+
|
|
189
|
+
_latestHeadings.push( {
|
|
190
|
+
content: stripHTML( headingAttributes.content ),
|
|
191
|
+
level: headingAttributes.level,
|
|
192
|
+
link: canBeLinked
|
|
193
|
+
? `${ headingPageLink }#${ headingAttributes.anchor }`
|
|
194
|
+
: null,
|
|
195
|
+
} );
|
|
110
196
|
}
|
|
111
197
|
}
|
|
112
198
|
}
|
|
113
199
|
|
|
114
|
-
|
|
200
|
+
if ( isEqual( headings, _latestHeadings ) ) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
return _latestHeadings;
|
|
115
204
|
},
|
|
116
|
-
[ clientId, onlyIncludeCurrentPage ]
|
|
205
|
+
[ clientId, onlyIncludeCurrentPage, headings ]
|
|
117
206
|
);
|
|
118
207
|
|
|
119
208
|
useEffect( () => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
latestHeadings = getHeadingsFromContent(
|
|
126
|
-
pagesOfContent[ pageIndex - 1 ]
|
|
127
|
-
);
|
|
128
|
-
} else {
|
|
129
|
-
latestHeadings = getHeadingsFromContent( postContent );
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
if ( ! isEqual( headings, latestHeadings ) ) {
|
|
133
|
-
setHeadings( latestHeadings );
|
|
134
|
-
setHeadingTree( linearToNestedHeadingList( latestHeadings ) );
|
|
209
|
+
if ( latestHeadings !== null ) {
|
|
210
|
+
// This is required to keep undo working and not create 2 undo steps
|
|
211
|
+
// for each heading change.
|
|
212
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
213
|
+
setAttributes( { headings: latestHeadings } );
|
|
135
214
|
}
|
|
136
|
-
}, [
|
|
215
|
+
}, [ latestHeadings ] );
|
|
137
216
|
|
|
138
|
-
const
|
|
217
|
+
const headingTree = linearToNestedHeadingList( headings );
|
|
139
218
|
|
|
140
219
|
const toolbarControls = listBlockExists && (
|
|
141
220
|
<BlockControls>
|
|
@@ -145,6 +224,7 @@ export default function TableOfContentsEdit( {
|
|
|
145
224
|
replaceBlocks(
|
|
146
225
|
clientId,
|
|
147
226
|
createBlock( 'core/list', {
|
|
227
|
+
ordered: true,
|
|
148
228
|
values: renderToString(
|
|
149
229
|
<TableOfContentsList
|
|
150
230
|
nestedHeadingList={ headingTree }
|
|
@@ -162,7 +242,7 @@ export default function TableOfContentsEdit( {
|
|
|
162
242
|
|
|
163
243
|
const inspectorControls = (
|
|
164
244
|
<InspectorControls>
|
|
165
|
-
<PanelBody title={ __( '
|
|
245
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
166
246
|
<ToggleControl
|
|
167
247
|
label={ __( 'Only include current page' ) }
|
|
168
248
|
checked={ onlyIncludeCurrentPage }
|
|
@@ -191,7 +271,7 @@ export default function TableOfContentsEdit( {
|
|
|
191
271
|
<>
|
|
192
272
|
<div { ...blockProps }>
|
|
193
273
|
<Placeholder
|
|
194
|
-
icon={ <BlockIcon icon=
|
|
274
|
+
icon={ <BlockIcon icon={ icon } /> }
|
|
195
275
|
label="Table of Contents"
|
|
196
276
|
instructions={ __(
|
|
197
277
|
'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'
|
|
@@ -206,9 +286,9 @@ export default function TableOfContentsEdit( {
|
|
|
206
286
|
return (
|
|
207
287
|
<>
|
|
208
288
|
<nav { ...blockProps }>
|
|
209
|
-
<
|
|
289
|
+
<ol ref={ disabledRef }>
|
|
210
290
|
<TableOfContentsList nestedHeadingList={ headingTree } />
|
|
211
|
-
</
|
|
291
|
+
</ol>
|
|
212
292
|
</nav>
|
|
213
293
|
{ toolbarControls }
|
|
214
294
|
{ inspectorControls }
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import metadata from './block.json';
|
|
5
5
|
import edit from './edit';
|
|
6
6
|
import icon from './icon';
|
|
7
|
+
import save from './save';
|
|
7
8
|
|
|
8
9
|
const { name } = metadata;
|
|
9
10
|
|
|
@@ -12,4 +13,5 @@ export { metadata, name };
|
|
|
12
13
|
export const settings = {
|
|
13
14
|
icon,
|
|
14
15
|
edit,
|
|
16
|
+
save,
|
|
15
17
|
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { WPElement } from '@wordpress/element';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import type { NestedHeadingData } from './utils';
|
|
10
|
+
|
|
11
|
+
const ENTRY_CLASS_NAME = 'wp-block-table-of-contents__entry';
|
|
12
|
+
|
|
13
|
+
export default function TableOfContentsList( {
|
|
14
|
+
nestedHeadingList,
|
|
15
|
+
}: {
|
|
16
|
+
nestedHeadingList: NestedHeadingData[];
|
|
17
|
+
} ): WPElement {
|
|
18
|
+
return (
|
|
19
|
+
<>
|
|
20
|
+
{ nestedHeadingList.map( ( node, index ) => {
|
|
21
|
+
const { content, link } = node.heading;
|
|
22
|
+
|
|
23
|
+
const entry = link ? (
|
|
24
|
+
<a className={ ENTRY_CLASS_NAME } href={ link }>
|
|
25
|
+
{ content }
|
|
26
|
+
</a>
|
|
27
|
+
) : (
|
|
28
|
+
<span className={ ENTRY_CLASS_NAME }>{ content }</span>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<li key={ index }>
|
|
33
|
+
{ entry }
|
|
34
|
+
{ node.children ? (
|
|
35
|
+
<ol>
|
|
36
|
+
<TableOfContentsList
|
|
37
|
+
nestedHeadingList={ node.children }
|
|
38
|
+
/>
|
|
39
|
+
</ol>
|
|
40
|
+
) : null }
|
|
41
|
+
</li>
|
|
42
|
+
);
|
|
43
|
+
} ) }
|
|
44
|
+
</>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useBlockProps } from '@wordpress/block-editor';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import TableOfContentsList from './list';
|
|
10
|
+
import { linearToNestedHeadingList } from './utils';
|
|
11
|
+
|
|
12
|
+
export default function save( { attributes: { headings = [] } } ) {
|
|
13
|
+
if ( headings.length === 0 ) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return (
|
|
17
|
+
<nav { ...useBlockProps.save() }>
|
|
18
|
+
<ol>
|
|
19
|
+
<TableOfContentsList
|
|
20
|
+
nestedHeadingList={ linearToNestedHeadingList( headings ) }
|
|
21
|
+
/>
|
|
22
|
+
</ol>
|
|
23
|
+
</nav>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export interface HeadingData {
|
|
2
|
+
/** The plain text content of the heading. */
|
|
3
|
+
content: string;
|
|
4
|
+
/** The heading level. */
|
|
5
|
+
level: number;
|
|
6
|
+
/** Link to the heading. */
|
|
7
|
+
link: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface NestedHeadingData {
|
|
11
|
+
/** The heading content, level, and link. */
|
|
12
|
+
heading: HeadingData;
|
|
13
|
+
/** The sub-headings of this heading, if any. */
|
|
14
|
+
children: NestedHeadingData[] | null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Takes a flat list of heading parameters and nests them based on each header's
|
|
19
|
+
* immediate parent's level.
|
|
20
|
+
*
|
|
21
|
+
* @param headingList The flat list of headings to nest.
|
|
22
|
+
*
|
|
23
|
+
* @return The nested list of headings.
|
|
24
|
+
*/
|
|
25
|
+
export function linearToNestedHeadingList(
|
|
26
|
+
headingList: HeadingData[]
|
|
27
|
+
): NestedHeadingData[] {
|
|
28
|
+
const nestedHeadingList: NestedHeadingData[] = [];
|
|
29
|
+
|
|
30
|
+
headingList.forEach( ( heading, key ) => {
|
|
31
|
+
if ( heading.content === '' ) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Make sure we are only working with the same level as the first iteration in our set.
|
|
36
|
+
if ( heading.level === headingList[ 0 ].level ) {
|
|
37
|
+
// Check that the next iteration will return a value.
|
|
38
|
+
// If it does and the next level is greater than the current level,
|
|
39
|
+
// the next iteration becomes a child of the current iteration.
|
|
40
|
+
if ( headingList[ key + 1 ]?.level > heading.level ) {
|
|
41
|
+
// We must calculate the last index before the next iteration that
|
|
42
|
+
// has the same level (siblings). We then use this index to slice
|
|
43
|
+
// the array for use in recursion. This prevents duplicate nodes.
|
|
44
|
+
let endOfSlice = headingList.length;
|
|
45
|
+
for ( let i = key + 1; i < headingList.length; i++ ) {
|
|
46
|
+
if ( headingList[ i ].level === heading.level ) {
|
|
47
|
+
endOfSlice = i;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// We found a child node: Push a new node onto the return array
|
|
53
|
+
// with children.
|
|
54
|
+
nestedHeadingList.push( {
|
|
55
|
+
heading,
|
|
56
|
+
children: linearToNestedHeadingList(
|
|
57
|
+
headingList.slice( key + 1, endOfSlice )
|
|
58
|
+
),
|
|
59
|
+
} );
|
|
60
|
+
} else {
|
|
61
|
+
// No child node: Push a new node onto the return array.
|
|
62
|
+
nestedHeadingList.push( {
|
|
63
|
+
heading,
|
|
64
|
+
children: null,
|
|
65
|
+
} );
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
} );
|
|
69
|
+
|
|
70
|
+
return nestedHeadingList;
|
|
71
|
+
}
|
package/src/tag-cloud/block.json
CHANGED
package/src/tag-cloud/edit.js
CHANGED
|
@@ -110,7 +110,7 @@ function TagCloudEdit( { attributes, setAttributes, taxonomies } ) {
|
|
|
110
110
|
|
|
111
111
|
const inspectorControls = (
|
|
112
112
|
<InspectorControls>
|
|
113
|
-
<PanelBody title={ __( '
|
|
113
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
114
114
|
<SelectControl
|
|
115
115
|
label={ __( 'Taxonomy' ) }
|
|
116
116
|
options={ getTaxonomyOptions() }
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
__experimentalUseNoRecursiveRenders as useNoRecursiveRenders,
|
|
14
14
|
Warning,
|
|
15
15
|
store as blockEditorStore,
|
|
16
|
+
__experimentalUseBlockOverlayActive as useBlockOverlayActive,
|
|
16
17
|
} from '@wordpress/block-editor';
|
|
17
18
|
import {
|
|
18
19
|
ToolbarGroup,
|
|
@@ -95,7 +96,15 @@ export default function TemplatePartEdit( {
|
|
|
95
96
|
const blockPatterns = useAlternativeBlockPatterns( area, clientId );
|
|
96
97
|
const hasReplacements = !! templateParts.length || !! blockPatterns.length;
|
|
97
98
|
const areaObject = useTemplatePartArea( area );
|
|
98
|
-
const
|
|
99
|
+
const hasBlockOverlay = useBlockOverlayActive( clientId );
|
|
100
|
+
const blockProps = useBlockProps(
|
|
101
|
+
{
|
|
102
|
+
className: hasBlockOverlay
|
|
103
|
+
? 'block-editor-block-content-overlay'
|
|
104
|
+
: undefined,
|
|
105
|
+
},
|
|
106
|
+
{ __unstableIsDisabled: hasBlockOverlay }
|
|
107
|
+
);
|
|
99
108
|
const isPlaceholder = ! slug;
|
|
100
109
|
const isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;
|
|
101
110
|
const TagName = tagName || areaObject.tagName;
|
|
@@ -153,22 +162,23 @@ export default function TemplatePartEdit( {
|
|
|
153
162
|
/>
|
|
154
163
|
</TagName>
|
|
155
164
|
) }
|
|
156
|
-
{ isEntityAvailable &&
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
{ isEntityAvailable &&
|
|
166
|
+
hasReplacements &&
|
|
167
|
+
( area === 'header' || area === 'footer' ) && (
|
|
168
|
+
<BlockControls>
|
|
169
|
+
<ToolbarGroup className="wp-block-template-part__block-control-group">
|
|
170
|
+
<ToolbarButton
|
|
171
|
+
onClick={ () =>
|
|
172
|
+
setIsTemplatePartSelectionOpen( true )
|
|
173
|
+
}
|
|
174
|
+
>
|
|
175
|
+
{ __( 'Replace' ) }
|
|
176
|
+
</ToolbarButton>
|
|
177
|
+
</ToolbarGroup>
|
|
178
|
+
</BlockControls>
|
|
179
|
+
) }
|
|
169
180
|
{ isEntityAvailable && (
|
|
170
181
|
<TemplatePartInnerBlocks
|
|
171
|
-
clientId={ clientId }
|
|
172
182
|
tagName={ TagName }
|
|
173
183
|
blockProps={ blockProps }
|
|
174
184
|
postId={ templatePartId }
|
|
@@ -5,7 +5,6 @@ import { useEntityBlockEditor } from '@wordpress/core-data';
|
|
|
5
5
|
import {
|
|
6
6
|
InnerBlocks,
|
|
7
7
|
useInnerBlocksProps,
|
|
8
|
-
__experimentalBlockContentOverlay as BlockContentOverlay,
|
|
9
8
|
useSetting,
|
|
10
9
|
store as blockEditorStore,
|
|
11
10
|
} from '@wordpress/block-editor';
|
|
@@ -15,9 +14,8 @@ export default function TemplatePartInnerBlocks( {
|
|
|
15
14
|
postId: id,
|
|
16
15
|
hasInnerBlocks,
|
|
17
16
|
layout,
|
|
18
|
-
tagName,
|
|
17
|
+
tagName: TagName,
|
|
19
18
|
blockProps,
|
|
20
|
-
clientId,
|
|
21
19
|
} ) {
|
|
22
20
|
const themeSupportsLayout = useSelect( ( select ) => {
|
|
23
21
|
const { getSettings } = select( blockEditorStore );
|
|
@@ -42,11 +40,5 @@ export default function TemplatePartInnerBlocks( {
|
|
|
42
40
|
__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,
|
|
43
41
|
} );
|
|
44
42
|
|
|
45
|
-
return
|
|
46
|
-
<BlockContentOverlay
|
|
47
|
-
clientId={ clientId }
|
|
48
|
-
tagName={ tagName }
|
|
49
|
-
wrapperProps={ innerBlocksProps }
|
|
50
|
-
/>
|
|
51
|
-
);
|
|
43
|
+
return <TagName { ...innerBlocksProps } />;
|
|
52
44
|
}
|
package/src/video/edit.js
CHANGED
|
@@ -32,7 +32,7 @@ import { __, sprintf } from '@wordpress/i18n';
|
|
|
32
32
|
import { useInstanceId } from '@wordpress/compose';
|
|
33
33
|
import { useSelect } from '@wordpress/data';
|
|
34
34
|
import { video as icon } from '@wordpress/icons';
|
|
35
|
-
import { createBlock } from '@wordpress/blocks';
|
|
35
|
+
import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* Internal dependencies
|
|
@@ -61,7 +61,8 @@ function VideoEdit( {
|
|
|
61
61
|
const { id, caption, controls, poster, src, tracks } = attributes;
|
|
62
62
|
const isTemporaryVideo = ! id && isBlobURL( src );
|
|
63
63
|
const mediaUpload = useSelect(
|
|
64
|
-
( select ) => select( blockEditorStore ).getSettings().mediaUpload
|
|
64
|
+
( select ) => select( blockEditorStore ).getSettings().mediaUpload,
|
|
65
|
+
[]
|
|
65
66
|
);
|
|
66
67
|
|
|
67
68
|
useEffect( () => {
|
|
@@ -70,9 +71,7 @@ function VideoEdit( {
|
|
|
70
71
|
if ( file ) {
|
|
71
72
|
mediaUpload( {
|
|
72
73
|
filesList: [ file ],
|
|
73
|
-
onFileChange: ( [
|
|
74
|
-
setAttributes( { src: url } );
|
|
75
|
-
},
|
|
74
|
+
onFileChange: ( [ media ] ) => onSelectVideo( media ),
|
|
76
75
|
onError: ( message ) => {
|
|
77
76
|
noticeOperations.createErrorNotice( message );
|
|
78
77
|
},
|
|
@@ -191,7 +190,7 @@ function VideoEdit( {
|
|
|
191
190
|
/>
|
|
192
191
|
</BlockControls>
|
|
193
192
|
<InspectorControls>
|
|
194
|
-
<PanelBody title={ __( '
|
|
193
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
195
194
|
<VideoCommonSettings
|
|
196
195
|
setAttributes={ setAttributes }
|
|
197
196
|
attributes={ attributes }
|
|
@@ -275,7 +274,9 @@ function VideoEdit( {
|
|
|
275
274
|
}
|
|
276
275
|
inlineToolbar
|
|
277
276
|
__unstableOnSplitAtEnd={ () =>
|
|
278
|
-
insertBlocksAfter(
|
|
277
|
+
insertBlocksAfter(
|
|
278
|
+
createBlock( getDefaultBlockName() )
|
|
279
|
+
)
|
|
279
280
|
}
|
|
280
281
|
/>
|
|
281
282
|
) }
|
package/src/video/edit.native.js
CHANGED
|
@@ -248,7 +248,7 @@ class VideoEdit extends Component {
|
|
|
248
248
|
) }
|
|
249
249
|
{ isSelected && (
|
|
250
250
|
<InspectorControls>
|
|
251
|
-
<PanelBody title={ __( '
|
|
251
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
252
252
|
<VideoCommonSettings
|
|
253
253
|
setAttributes={ setAttributes }
|
|
254
254
|
attributes={ attributes }
|
package/src/video/editor.scss
CHANGED
|
@@ -33,10 +33,6 @@
|
|
|
33
33
|
z-index: z-index("{core/video track editor popover}");
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
.block-library-video-tracks-editor > .components-popover__content {
|
|
37
|
-
width: 360px;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
36
|
.block-library-video-tracks-editor__track-list-track {
|
|
41
37
|
display: flex;
|
|
42
38
|
place-content: space-between;
|
|
@@ -75,9 +71,11 @@
|
|
|
75
71
|
display: block;
|
|
76
72
|
}
|
|
77
73
|
|
|
78
|
-
.block-library-video-tracks-editor > .components-popover__content
|
|
74
|
+
.block-library-video-tracks-editor > .components-popover__content {
|
|
75
|
+
width: 360px;
|
|
79
76
|
padding: 0;
|
|
80
77
|
}
|
|
78
|
+
|
|
81
79
|
.block-library-video-tracks-editor__track-list,
|
|
82
80
|
.block-library-video-tracks-editor__add-tracks-container {
|
|
83
81
|
.components-menu-group__label {
|
|
@@ -85,7 +83,6 @@
|
|
|
85
83
|
}
|
|
86
84
|
}
|
|
87
85
|
|
|
88
|
-
|
|
89
86
|
.block-library-video-tracks-editor__single-track-editor,
|
|
90
87
|
.block-library-video-tracks-editor__track-list,
|
|
91
88
|
.block-library-video-tracks-editor__add-tracks-container {
|