@wordpress/block-library 7.5.0 → 7.8.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/audio/edit.js +1 -1
- package/build/audio/edit.js.map +1 -1
- package/build/audio/index.js +6 -1
- package/build/audio/index.js.map +1 -1
- package/build/avatar/hooks.js +2 -2
- package/build/avatar/hooks.js.map +1 -1
- package/build/block/edit.js +10 -9
- package/build/block/edit.js.map +1 -1
- package/build/block/edit.native.js.map +1 -1
- package/build/button/deprecated.js +175 -35
- package/build/button/deprecated.js.map +1 -1
- package/build/button/edit.js +1 -1
- package/build/button/edit.js.map +1 -1
- package/build/button/edit.native.js.map +1 -1
- package/build/button/index.js +25 -1
- package/build/button/index.js.map +1 -1
- package/build/button/save.js +1 -1
- package/build/button/save.js.map +1 -1
- package/build/buttons/deprecated.js.map +1 -1
- package/build/buttons/edit.js.map +1 -1
- package/build/buttons/edit.native.js.map +1 -1
- package/build/categories/edit.js +1 -1
- package/build/categories/edit.js.map +1 -1
- package/build/categories/index.js +1 -1
- package/build/column/deprecated.js.map +1 -1
- package/build/column/edit.js.map +1 -1
- package/build/column/edit.native.js.map +1 -1
- package/build/columns/deprecated.js.map +1 -1
- package/build/columns/edit.js +1 -1
- package/build/columns/edit.js.map +1 -1
- package/build/columns/edit.native.js +1 -1
- package/build/columns/edit.native.js.map +1 -1
- package/build/columns/index.js +3 -1
- package/build/columns/index.js.map +1 -1
- package/build/columns/utils.js +1 -1
- package/build/columns/utils.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-author-name/edit.js +4 -2
- package/build/comment-author-name/edit.js.map +1 -1
- package/build/comment-date/edit.js +1 -1
- package/build/comment-date/edit.js.map +1 -1
- package/build/comments-title/deprecated.js +110 -0
- package/build/comments-title/deprecated.js.map +1 -0
- package/build/comments-title/edit.js +35 -37
- package/build/comments-title/edit.js.map +1 -1
- package/build/comments-title/index.js +5 -8
- 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/deprecated.js +212 -207
- package/build/cover/deprecated.js.map +1 -1
- package/build/cover/edit/block-controls.js +108 -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 +336 -0
- package/build/cover/edit/index.js.map +1 -0
- package/build/cover/edit/inspector-controls.js +252 -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/{use-cover-is-dark.js → edit/use-cover-is-dark.js} +0 -0
- package/build/cover/edit/use-cover-is-dark.js.map +1 -0
- package/build/cover/edit.native.js +0 -1
- package/build/cover/edit.native.js.map +1 -1
- package/build/cover/focal-point-settings-button.native.js.map +1 -1
- package/build/cover/save.js +18 -5
- package/build/cover/save.js.map +1 -1
- package/build/cover/shared.js +15 -9
- package/build/cover/shared.js.map +1 -1
- package/build/cover/transforms.js.map +1 -1
- package/build/embed/deprecated.js +6 -1
- package/build/embed/deprecated.js.map +1 -1
- package/build/embed/edit.js.map +1 -1
- package/build/embed/edit.native.js.map +1 -1
- package/build/embed/embed-controls.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/index.js +6 -1
- package/build/embed/index.js.map +1 -1
- package/build/embed/transforms.js +6 -1
- package/build/embed/transforms.js.map +1 -1
- package/build/embed/util.js +6 -1
- package/build/embed/util.js.map +1 -1
- package/build/file/edit.js +1 -1
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js +0 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/index.js.map +1 -1
- package/build/file/save.js +9 -1
- package/build/file/save.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/gallery.native.js.map +1 -1
- package/build/gallery/gap-styles.js +14 -4
- package/build/gallery/gap-styles.js.map +1 -1
- package/build/gallery/index.js +1 -1
- package/build/gallery/index.js.map +1 -1
- package/build/gallery/shared.js +29 -12
- 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.map +1 -1
- package/build/gallery/v1/gallery-image.js.map +1 -1
- package/build/gallery/v1/gallery-image.native.js.map +1 -1
- package/build/gallery/v1/gallery.js +1 -1
- package/build/gallery/v1/gallery.js.map +1 -1
- package/build/heading/autogenerate-anchors.js +7 -2
- package/build/heading/autogenerate-anchors.js.map +1 -1
- package/build/heading/deprecated.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 +1 -0
- package/build/heading/transforms.js.map +1 -1
- package/build/image/deprecated.js.map +1 -1
- package/build/image/edit.js +5 -56
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js +56 -4
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +4 -14
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +5 -0
- package/build/image/index.js.map +1 -1
- package/build/image/transforms.js.map +1 -1
- package/build/image/utils.js +2 -1
- package/build/image/utils.js.map +1 -1
- package/build/index.js +46 -10
- package/build/index.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.map +1 -1
- package/build/latest-posts/edit.js +31 -5
- package/build/latest-posts/edit.js.map +1 -1
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/index.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-outdent-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 +44 -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/media-text/deprecated.js +5 -3
- package/build/media-text/deprecated.js.map +1 -1
- package/build/media-text/edit.native.js +2 -1
- package/build/media-text/edit.native.js.map +1 -1
- package/build/media-text/media-container.js +3 -3
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/media-container.native.js +2 -4
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/media-text/save.js +3 -1
- package/build/media-text/save.js.map +1 -1
- package/build/media-text/transforms.js +137 -8
- package/build/media-text/transforms.js.map +1 -1
- package/build/missing/edit.native.js.map +1 -1
- package/build/navigation/deprecated.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/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build/navigation/use-navigation-entities.js +3 -3
- package/build/navigation/use-navigation-entities.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +130 -38
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation/use-template-part-area-label.js +4 -1
- package/build/navigation/use-template-part-area-label.js.map +1 -1
- package/build/navigation-link/edit.js +44 -12
- 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/navigation-submenu/edit.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/deprecated.js +1 -1
- package/build/paragraph/deprecated.js.map +1 -1
- package/build/pattern/edit.js.map +1 -1
- package/build/post-author/edit.js +1 -1
- package/build/post-author/edit.js.map +1 -1
- package/build/post-author-name/index.js +4 -0
- package/build/post-author-name/index.js.map +1 -1
- package/build/post-author-name/transforms.js +41 -0
- package/build/post-author-name/transforms.js.map +1 -0
- package/build/post-comment/index.js +1 -0
- package/build/post-comment/index.js.map +1 -1
- package/build/post-comments/edit.js +34 -16
- package/build/post-comments/edit.js.map +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/form.js +12 -2
- package/build/post-comments-form/form.js.map +1 -1
- package/build/post-comments-link/index.js +1 -0
- package/build/post-comments-link/index.js.map +1 -1
- package/build/post-content/edit.js.map +1 -1
- package/build/post-date/edit.js +13 -7
- package/build/post-date/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +11 -25
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-navigation-link/index.js +4 -0
- package/build/post-navigation-link/index.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 +11 -2
- 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 +12 -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/deprecated.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/index.js +5 -1
- package/build/query/edit/index.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/edit/query-toolbar.js +16 -2
- package/build/query/edit/query-toolbar.js.map +1 -1
- 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/v2/edit.js +1 -1
- package/build/quote/v2/edit.js.map +1 -1
- package/build/search/edit.js +2 -1
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js.map +1 -1
- package/build/search/index.js +4 -0
- package/build/search/index.js.map +1 -1
- package/build/separator/use-deprecated-opacity.js.map +1 -1
- package/build/shortcode/edit.native.js +16 -13
- package/build/shortcode/edit.native.js.map +1 -1
- package/build/site-logo/edit.js +4 -13
- package/build/site-logo/edit.js.map +1 -1
- package/build/social-links/deprecated.js.map +1 -1
- package/build/social-links/edit.js +2 -2
- package/build/social-links/edit.js.map +1 -1
- package/build/social-links/edit.native.js.map +1 -1
- package/build/spacer/controls.js.map +1 -1
- package/build/table/deprecated.js.map +1 -1
- package/build/table/edit.js +15 -2
- package/build/table/edit.js.map +1 -1
- package/build/table/index.js +6 -1
- package/build/table/index.js.map +1 -1
- package/build/table/state.js.map +1 -1
- package/build/table-of-contents/edit.js +145 -65
- 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.map +1 -1
- package/build/template-part/edit/advanced-controls.js +4 -1
- package/build/template-part/edit/advanced-controls.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/template-part/edit/utils/hooks.js +4 -1
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build/transformationCategories.native.js.map +1 -1
- package/build/video/edit-common-settings.js.map +1 -1
- package/build/video/edit.js +1 -1
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +43 -0
- package/build/video/edit.native.js.map +1 -1
- package/build/video/index.js +6 -1
- package/build/video/index.js.map +1 -1
- package/build-module/audio/edit.js +2 -2
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/index.js +6 -1
- package/build-module/audio/index.js.map +1 -1
- package/build-module/avatar/hooks.js +2 -2
- package/build-module/avatar/hooks.js.map +1 -1
- package/build-module/block/edit.js +11 -10
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/edit.native.js.map +1 -1
- package/build-module/button/deprecated.js +175 -35
- package/build-module/button/deprecated.js.map +1 -1
- package/build-module/button/edit.js +2 -2
- package/build-module/button/edit.js.map +1 -1
- package/build-module/button/edit.native.js.map +1 -1
- package/build-module/button/index.js +25 -1
- package/build-module/button/index.js.map +1 -1
- package/build-module/button/save.js +2 -2
- package/build-module/button/save.js.map +1 -1
- package/build-module/buttons/deprecated.js.map +1 -1
- package/build-module/buttons/edit.js.map +1 -1
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/categories/edit.js +1 -1
- package/build-module/categories/edit.js.map +1 -1
- package/build-module/categories/index.js +1 -1
- package/build-module/column/deprecated.js.map +1 -1
- package/build-module/column/edit.js.map +1 -1
- package/build-module/column/edit.native.js.map +1 -1
- package/build-module/columns/deprecated.js.map +1 -1
- package/build-module/columns/edit.js +2 -2
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/columns/edit.native.js +2 -2
- package/build-module/columns/edit.native.js.map +1 -1
- package/build-module/columns/index.js +3 -1
- package/build-module/columns/index.js.map +1 -1
- package/build-module/columns/utils.js +2 -2
- package/build-module/columns/utils.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-author-name/edit.js +4 -2
- package/build-module/comment-author-name/edit.js.map +1 -1
- package/build-module/comment-date/edit.js +1 -1
- package/build-module/comment-date/edit.js.map +1 -1
- package/build-module/comments-title/deprecated.js +102 -0
- package/build-module/comments-title/deprecated.js.map +1 -0
- package/build-module/comments-title/edit.js +38 -40
- package/build-module/comments-title/edit.js.map +1 -1
- package/build-module/comments-title/index.js +4 -8
- 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/deprecated.js +206 -198
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/cover/edit/block-controls.js +99 -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 +310 -0
- package/build-module/cover/edit/index.js.map +1 -0
- package/build-module/cover/edit/inspector-controls.js +240 -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/{use-cover-is-dark.js → edit/use-cover-is-dark.js} +0 -0
- package/build-module/cover/edit/use-cover-is-dark.js.map +1 -0
- package/build-module/cover/edit.native.js +0 -1
- 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/save.js +19 -6
- package/build-module/cover/save.js.map +1 -1
- package/build-module/cover/shared.js +11 -5
- package/build-module/cover/shared.js.map +1 -1
- package/build-module/cover/transforms.js.map +1 -1
- package/build-module/embed/deprecated.js +6 -1
- package/build-module/embed/deprecated.js.map +1 -1
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/embed/edit.native.js.map +1 -1
- package/build-module/embed/embed-controls.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/index.js +6 -1
- package/build-module/embed/index.js.map +1 -1
- package/build-module/embed/transforms.js +6 -1
- package/build-module/embed/transforms.js.map +1 -1
- package/build-module/embed/util.js +6 -1
- package/build-module/embed/util.js.map +1 -1
- package/build-module/file/edit.js +2 -2
- package/build-module/file/edit.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/index.js.map +1 -1
- package/build-module/file/save.js +7 -2
- package/build-module/file/save.js.map +1 -1
- package/build-module/gallery/edit.js +4 -3
- 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/gallery.native.js.map +1 -1
- package/build-module/gallery/gap-styles.js +14 -4
- package/build-module/gallery/gap-styles.js.map +1 -1
- package/build-module/gallery/index.js +1 -1
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/gallery/shared.js +27 -10
- 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.map +1 -1
- package/build-module/gallery/v1/gallery-image.js.map +1 -1
- package/build-module/gallery/v1/gallery-image.native.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/heading/autogenerate-anchors.js +5 -2
- package/build-module/heading/autogenerate-anchors.js.map +1 -1
- package/build-module/heading/deprecated.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 +1 -0
- package/build-module/heading/transforms.js.map +1 -1
- package/build-module/image/deprecated.js.map +1 -1
- package/build-module/image/edit.js +4 -52
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js +57 -6
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +6 -16
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +5 -0
- package/build-module/image/index.js.map +1 -1
- package/build-module/image/transforms.js.map +1 -1
- package/build-module/image/utils.js +2 -2
- package/build-module/image/utils.js.map +1 -1
- package/build-module/index.js +42 -10
- package/build-module/index.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.map +1 -1
- package/build-module/latest-posts/edit.js +31 -7
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/index.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-outdent-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 +33 -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/media-text/deprecated.js +3 -1
- package/build-module/media-text/deprecated.js.map +1 -1
- package/build-module/media-text/edit.native.js +2 -1
- package/build-module/media-text/edit.native.js.map +1 -1
- package/build-module/media-text/media-container.js +3 -1
- package/build-module/media-text/media-container.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/save.js +4 -1
- package/build-module/media-text/save.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/missing/edit.native.js.map +1 -1
- package/build-module/navigation/deprecated.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/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +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/use-navigation-menu.js +130 -38
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation/use-template-part-area-label.js +4 -1
- package/build-module/navigation/use-template-part-area-label.js.map +1 -1
- package/build-module/navigation-link/edit.js +44 -13
- 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/navigation-submenu/edit.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/deprecated.js +2 -2
- package/build-module/paragraph/deprecated.js.map +1 -1
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/post-author/edit.js +1 -1
- package/build-module/post-author/edit.js.map +1 -1
- package/build-module/post-author-name/index.js +3 -0
- package/build-module/post-author-name/index.js.map +1 -1
- package/build-module/post-author-name/transforms.js +32 -0
- package/build-module/post-author-name/transforms.js.map +1 -0
- package/build-module/post-comment/index.js +1 -0
- package/build-module/post-comment/index.js.map +1 -1
- package/build-module/post-comments/edit.js +35 -16
- package/build-module/post-comments/edit.js.map +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/form.js +8 -2
- package/build-module/post-comments-form/form.js.map +1 -1
- 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-content/edit.js.map +1 -1
- package/build-module/post-date/edit.js +15 -9
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +11 -24
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-navigation-link/index.js +4 -0
- package/build-module/post-navigation-link/index.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 +10 -3
- 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 +10 -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/deprecated.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/index.js +5 -1
- package/build-module/query/edit/index.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/edit/query-toolbar.js +14 -2
- package/build-module/query/edit/query-toolbar.js.map +1 -1
- 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/v2/edit.js +2 -2
- package/build-module/quote/v2/edit.js.map +1 -1
- package/build-module/search/edit.js +3 -2
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/search/index.js +4 -0
- package/build-module/search/index.js.map +1 -1
- package/build-module/separator/use-deprecated-opacity.js.map +1 -1
- package/build-module/shortcode/edit.native.js +17 -13
- package/build-module/shortcode/edit.native.js.map +1 -1
- package/build-module/site-logo/edit.js +4 -12
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/social-links/deprecated.js.map +1 -1
- package/build-module/social-links/edit.js +2 -2
- package/build-module/social-links/edit.js.map +1 -1
- package/build-module/social-links/edit.native.js.map +1 -1
- package/build-module/spacer/controls.js.map +1 -1
- package/build-module/table/deprecated.js.map +1 -1
- package/build-module/table/edit.js +17 -4
- package/build-module/table/edit.js.map +1 -1
- package/build-module/table/index.js +6 -1
- package/build-module/table/index.js.map +1 -1
- package/build-module/table/state.js.map +1 -1
- package/build-module/table-of-contents/edit.js +144 -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.map +1 -1
- package/build-module/template-part/edit/advanced-controls.js +4 -1
- package/build-module/template-part/edit/advanced-controls.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/template-part/edit/utils/hooks.js +4 -1
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/transformationCategories.native.js.map +1 -1
- package/build-module/video/edit-common-settings.js.map +1 -1
- package/build-module/video/edit.js +2 -2
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +42 -1
- package/build-module/video/edit.native.js.map +1 -1
- package/build-module/video/index.js +6 -1
- package/build-module/video/index.js.map +1 -1
- package/build-style/audio/style-rtl.css +0 -3
- package/build-style/audio/style.css +0 -3
- package/build-style/button/style-rtl.css +0 -5
- package/build-style/button/style.css +0 -5
- package/build-style/common-rtl.css +1 -3
- package/build-style/common.css +1 -3
- package/build-style/cover/editor-rtl.css +11 -0
- package/build-style/cover/editor.css +11 -0
- package/build-style/cover/style-rtl.css +33 -25
- package/build-style/cover/style.css +33 -25
- package/build-style/editor-rtl.css +15 -45
- package/build-style/editor.css +15 -45
- package/build-style/embed/style-rtl.css +0 -1
- package/build-style/embed/style.css +0 -1
- package/build-style/file/style-rtl.css +9 -7
- package/build-style/file/style.css +9 -7
- package/build-style/gallery/style-rtl.css +2 -4
- package/build-style/gallery/style.css +2 -4
- package/build-style/image/editor-rtl.css +1 -1
- package/build-style/image/editor.css +1 -1
- package/build-style/image/style-rtl.css +0 -3
- package/build-style/image/style.css +0 -3
- package/build-style/post-comments/style-rtl.css +22 -0
- package/build-style/post-comments/style.css +22 -0
- package/build-style/post-comments-form/style-rtl.css +1 -3
- package/build-style/post-comments-form/style.css +1 -3
- package/build-style/post-featured-image/editor-rtl.css +0 -27
- package/build-style/post-featured-image/editor.css +0 -27
- package/build-style/search/style-rtl.css +4 -4
- package/build-style/search/style.css +4 -4
- package/build-style/separator/editor-rtl.css +1 -0
- package/build-style/separator/editor.css +1 -0
- package/build-style/site-logo/editor-rtl.css +0 -12
- package/build-style/site-logo/editor.css +0 -12
- package/build-style/site-logo/style-rtl.css +4 -0
- package/build-style/site-logo/style.css +4 -0
- package/build-style/style-rtl.css +77 -64
- package/build-style/style.css +77 -64
- package/build-style/table/style-rtl.css +0 -1
- package/build-style/table/style.css +0 -1
- package/build-style/video/editor-rtl.css +2 -5
- package/build-style/video/editor.css +2 -5
- package/build-style/video/style-rtl.css +1 -5
- package/build-style/video/style.css +1 -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 +32 -30
- package/src/audio/block.json +6 -1
- package/src/audio/edit.js +4 -2
- package/src/audio/index.js +1 -2
- package/src/audio/style.scss +0 -2
- package/src/avatar/block.json +0 -1
- package/src/avatar/hooks.js +9 -6
- package/src/avatar/index.php +2 -2
- package/src/block/edit.js +43 -48
- package/src/block/edit.native.js +12 -16
- package/src/block/test/edit.native.js +6 -9
- package/src/button/block.json +25 -1
- package/src/button/deprecated.js +145 -36
- package/src/button/edit.js +7 -11
- package/src/button/edit.native.js +2 -3
- package/src/button/save.js +5 -11
- package/src/button/style.scss +0 -5
- package/src/buttons/deprecated.js +4 -6
- package/src/buttons/edit.js +3 -3
- package/src/buttons/edit.native.js +7 -11
- package/src/buttons/test/__snapshots__/edit.native.js.snap +1 -1
- package/src/buttons/test/edit.native.js +1 -1
- package/src/categories/block.json +1 -1
- package/src/categories/edit.js +1 -1
- package/src/column/deprecated.js +2 -1
- package/src/column/edit.js +2 -3
- package/src/column/edit.native.js +2 -2
- package/src/columns/block.json +3 -1
- package/src/columns/deprecated.js +4 -2
- package/src/columns/edit.js +6 -7
- package/src/columns/edit.native.js +12 -16
- package/src/columns/index.js +1 -2
- package/src/columns/utils.js +5 -3
- package/src/comment-author-avatar/block.json +1 -0
- package/src/comment-author-name/edit.js +2 -2
- package/src/comment-date/edit.js +1 -1
- package/src/comments-title/block.json +0 -6
- package/src/comments-title/deprecated.js +34 -0
- package/src/comments-title/edit.js +44 -100
- package/src/comments-title/index.js +3 -1
- package/src/comments-title/index.php +41 -23
- package/src/cover/controls.native.js +3 -6
- package/src/cover/deprecated.js +237 -195
- package/src/cover/edit/block-controls.js +110 -0
- package/src/cover/edit/cover-placeholder.js +39 -0
- package/src/cover/edit/index.js +396 -0
- package/src/cover/edit/inspector-controls.js +317 -0
- package/src/cover/edit/resizable-cover.js +55 -0
- package/src/cover/{use-cover-is-dark.js → edit/use-cover-is-dark.js} +0 -0
- package/src/cover/edit.native.js +8 -14
- package/src/cover/editor.scss +14 -1
- package/src/cover/focal-point-settings-button.native.js +1 -1
- package/src/cover/index.php +20 -37
- package/src/cover/save.js +28 -16
- package/src/cover/shared.js +5 -3
- package/src/cover/style.scss +27 -22
- package/src/cover/test/block-controls.js +62 -0
- package/src/cover/test/edit.native.js +4 -7
- package/src/cover/transforms.js +2 -7
- package/src/embed/block.json +6 -1
- package/src/embed/edit.js +38 -40
- package/src/embed/edit.native.js +46 -49
- package/src/embed/embed-controls.native.js +2 -3
- package/src/embed/embed-preview.js +4 -2
- package/src/embed/style.scss +0 -1
- package/src/embed/test/index.native.js +24 -50
- package/src/file/edit.js +7 -5
- package/src/file/edit.native.js +14 -26
- package/src/file/index.js +1 -2
- package/src/file/save.js +14 -2
- package/src/file/style.scss +15 -14
- package/src/gallery/block.json +1 -1
- package/src/gallery/edit.js +10 -7
- package/src/gallery/gallery.js +2 -2
- package/src/gallery/gallery.native.js +2 -4
- package/src/gallery/gap-styles.js +21 -6
- package/src/gallery/index.js +2 -4
- package/src/gallery/index.php +23 -12
- package/src/gallery/shared.js +25 -11
- package/src/gallery/test/index.native.js +18 -34
- 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 +15 -20
- package/src/gallery/v1/gallery-image.js +6 -11
- package/src/gallery/v1/gallery-image.native.js +8 -17
- package/src/gallery/v1/gallery.js +2 -2
- package/src/heading/autogenerate-anchors.js +8 -5
- package/src/heading/block.json +1 -0
- package/src/heading/deprecated.js +6 -21
- package/src/heading/edit.js +7 -5
- package/src/image/block.json +5 -0
- package/src/image/deprecated.js +6 -29
- package/src/image/edit.js +0 -44
- package/src/image/edit.native.js +74 -25
- package/src/image/editor.scss +1 -1
- package/src/image/image.js +41 -51
- package/src/image/style.scss +0 -2
- package/src/image/styles.native.scss +11 -0
- package/src/image/test/edit.native.js +7 -7
- package/src/image/transforms.js +4 -3
- package/src/image/utils.js +2 -2
- package/src/index.js +51 -28
- package/src/is-block-metadata-experimental.js +19 -0
- package/src/latest-comments/edit.js +2 -6
- package/src/latest-posts/edit.js +33 -9
- package/src/latest-posts/edit.native.js +10 -15
- package/src/latest-posts/index.php +12 -6
- package/src/list/index.js +1 -2
- package/src/list/test/migrate.js +1 -2
- package/src/list/transforms.js +7 -0
- package/src/list/v2/edit.js +7 -9
- 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 +51 -0
- package/src/list-item/hooks/use-enter.js +8 -16
- package/src/list-item/hooks/use-indent-list-item.js +49 -63
- package/src/list-item/hooks/use-outdent-list-item.js +2 -3
- package/src/list-item/hooks/use-space.js +47 -0
- package/src/list-item/hooks/use-split.js +33 -0
- package/src/list-item/utils.js +1 -1
- package/src/media-text/deprecated.js +6 -3
- package/src/media-text/edit.native.js +5 -6
- package/src/media-text/media-container.js +1 -1
- package/src/media-text/media-container.native.js +8 -13
- package/src/media-text/save.js +2 -1
- package/src/media-text/transforms.js +154 -0
- package/src/missing/edit.native.js +2 -3
- package/src/missing/test/edit-integration.native.js +2 -3
- package/src/missing/test/edit.native.js +6 -9
- package/src/navigation/deprecated.js +2 -5
- package/src/navigation/edit/index.js +195 -201
- package/src/navigation/edit/inner-blocks.js +1 -8
- package/src/navigation/edit/navigation-menu-delete-control.js +2 -3
- package/src/navigation/edit/unsaved-inner-blocks.js +31 -30
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -3
- package/src/navigation/index.php +40 -0
- package/src/navigation/test/use-navigation-menu.js +236 -0
- package/src/navigation/use-navigation-entities.js +12 -14
- package/src/navigation/use-navigation-menu.js +152 -82
- package/src/navigation/use-template-part-area-label.js +8 -7
- package/src/navigation-link/edit.js +59 -25
- 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/navigation-link/test/edit.js +2 -24
- package/src/navigation-submenu/edit.js +10 -20
- package/src/page-list/convert-to-links-modal.js +52 -55
- package/src/page-list/edit.js +7 -10
- package/src/page-list/test/convert-to-links-modal.js +6 -12
- package/src/paragraph/deprecated.js +2 -2
- package/src/pattern/edit.js +2 -4
- package/src/post-author/edit.js +26 -25
- package/src/post-author/index.php +3 -2
- package/src/post-author-name/block.json +1 -0
- package/src/post-author-name/index.js +2 -0
- package/src/post-author-name/index.php +1 -1
- package/src/post-author-name/transforms.js +25 -0
- package/src/post-comment/block.json +1 -0
- package/src/post-comments/edit.js +54 -22
- package/src/post-comments/index.php +1 -1
- package/src/post-comments/style.scss +26 -0
- package/src/post-comments-count/block.json +1 -0
- package/src/post-comments-form/form.js +12 -5
- package/src/post-comments-form/index.php +1 -1
- package/src/post-comments-form/style.scss +1 -4
- package/src/post-comments-link/block.json +1 -0
- package/src/post-content/edit.js +2 -3
- package/src/post-date/edit.js +4 -3
- package/src/post-featured-image/edit.js +15 -31
- package/src/post-featured-image/editor.scss +0 -29
- package/src/post-navigation-link/block.json +4 -0
- package/src/post-template/edit.js +5 -0
- package/src/post-template/index.php +30 -0
- package/src/post-terms/edit.js +19 -0
- package/src/post-terms/hooks.js +27 -0
- package/src/post-terms/index.js +14 -7
- package/src/post-terms/index.php +40 -2
- package/src/post-title/index.js +1 -1
- package/src/pullquote/deprecated.js +2 -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/index.js +10 -10
- package/src/query/edit/inspector-controls/index.js +25 -11
- package/src/query/edit/inspector-controls/parent-control.js +132 -0
- package/src/query/edit/inspector-controls/sticky-control.js +25 -0
- package/src/query/edit/query-toolbar.js +25 -5
- package/src/query/utils.js +22 -0
- package/src/query-pagination/index.php +0 -1
- package/src/query-title/index.js +1 -1
- package/src/query-title/variations.js +2 -2
- package/src/quote/edit.js +5 -2
- package/src/quote/v2/edit.js +8 -8
- package/src/quote/v2/test/migrate.js +1 -2
- package/src/search/block.json +4 -0
- package/src/search/edit.js +10 -13
- package/src/search/edit.native.js +4 -6
- package/src/search/index.php +29 -16
- package/src/search/style.scss +2 -1
- package/src/separator/editor.scss +1 -0
- package/src/separator/use-deprecated-opacity.js +2 -4
- package/src/shortcode/edit.native.js +30 -15
- package/src/shortcode/style.native.scss +11 -4
- package/src/shortcode/test/__snapshots__/edit.native.js.snap +9 -0
- package/src/shortcode/test/edit.native.js +55 -40
- package/src/site-logo/edit.js +4 -18
- package/src/site-logo/editor.scss +0 -14
- package/src/site-logo/style.scss +6 -0
- package/src/social-links/deprecated.js +4 -2
- package/src/social-links/edit.js +11 -10
- package/src/social-links/edit.native.js +3 -5
- package/src/spacer/controls.js +2 -3
- package/src/spacer/test/index.native.js +10 -21
- package/src/table/block.json +6 -1
- package/src/table/deprecated.js +4 -8
- package/src/table/edit.js +19 -4
- package/src/table/state.js +2 -4
- package/src/table/style.scss +0 -1
- package/src/table-of-contents/block.json +9 -2
- package/src/table-of-contents/edit.js +166 -77
- 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 +4 -7
- package/src/template-part/edit/advanced-controls.js +4 -4
- package/src/template-part/edit/index.js +31 -25
- package/src/template-part/edit/inner-blocks.js +2 -10
- package/src/template-part/edit/utils/hooks.js +8 -7
- package/src/transformationCategories.native.js +3 -3
- package/src/video/block.json +6 -1
- package/src/video/edit-common-settings.js +2 -8
- package/src/video/edit.js +4 -2
- package/src/video/edit.native.js +38 -16
- package/src/video/editor.scss +3 -6
- package/src/video/index.js +1 -2
- package/src/video/style.scss +0 -2
- package/test/babel-plugin.js +67 -0
- package/tsconfig.json +11 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/build/cover/edit.js +0 -598
- package/build/cover/edit.js.map +0 -1
- package/build/cover/use-cover-is-dark.js.map +0 -1
- package/build/post-terms/variations.js +0 -37
- package/build/post-terms/variations.js.map +0 -1
- package/build-module/cover/edit.js +0 -575
- package/build-module/cover/edit.js.map +0 -1
- package/build-module/cover/use-cover-is-dark.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 -757
- 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
package/src/table/deprecated.js
CHANGED
|
@@ -198,7 +198,8 @@ const deprecated = [
|
|
|
198
198
|
cellIndex
|
|
199
199
|
) => {
|
|
200
200
|
const cellClasses = classnames( {
|
|
201
|
-
[ `has-text-align-${ align }` ]:
|
|
201
|
+
[ `has-text-align-${ align }` ]:
|
|
202
|
+
align,
|
|
202
203
|
} );
|
|
203
204
|
|
|
204
205
|
return (
|
|
@@ -367,13 +368,8 @@ const deprecated = [
|
|
|
367
368
|
},
|
|
368
369
|
supports,
|
|
369
370
|
save( { attributes } ) {
|
|
370
|
-
const {
|
|
371
|
-
|
|
372
|
-
head,
|
|
373
|
-
body,
|
|
374
|
-
foot,
|
|
375
|
-
backgroundColor,
|
|
376
|
-
} = attributes;
|
|
371
|
+
const { hasFixedLayout, head, body, foot, backgroundColor } =
|
|
372
|
+
attributes;
|
|
377
373
|
const isEmpty = ! head.length && ! body.length && ! foot.length;
|
|
378
374
|
|
|
379
375
|
if ( isEmpty ) {
|
package/src/table/edit.js
CHANGED
|
@@ -6,7 +6,7 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useEffect, useState } from '@wordpress/element';
|
|
9
|
+
import { useEffect, useRef, useState } from '@wordpress/element';
|
|
10
10
|
import {
|
|
11
11
|
InspectorControls,
|
|
12
12
|
BlockControls,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
tableRowDelete,
|
|
41
41
|
table,
|
|
42
42
|
} from '@wordpress/icons';
|
|
43
|
-
import { createBlock } from '@wordpress/blocks';
|
|
43
|
+
import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* Internal dependencies
|
|
@@ -105,6 +105,9 @@ function TableEdit( {
|
|
|
105
105
|
const colorProps = useColorProps( attributes );
|
|
106
106
|
const borderProps = useBorderProps( attributes );
|
|
107
107
|
|
|
108
|
+
const tableRef = useRef();
|
|
109
|
+
const [ hasTableCreated, setHasTableCreated ] = useState( false );
|
|
110
|
+
|
|
108
111
|
/**
|
|
109
112
|
* Updates the initial column count used for table creation.
|
|
110
113
|
*
|
|
@@ -137,6 +140,7 @@ function TableEdit( {
|
|
|
137
140
|
columnCount: parseInt( initialColumnCount, 10 ) || 2,
|
|
138
141
|
} )
|
|
139
142
|
);
|
|
143
|
+
setHasTableCreated( true );
|
|
140
144
|
}
|
|
141
145
|
|
|
142
146
|
/**
|
|
@@ -341,6 +345,15 @@ function TableEdit( {
|
|
|
341
345
|
}
|
|
342
346
|
}, [ isSelected ] );
|
|
343
347
|
|
|
348
|
+
useEffect( () => {
|
|
349
|
+
if ( hasTableCreated ) {
|
|
350
|
+
tableRef?.current
|
|
351
|
+
?.querySelector( 'td[contentEditable="true"]' )
|
|
352
|
+
?.focus();
|
|
353
|
+
setHasTableCreated( false );
|
|
354
|
+
}
|
|
355
|
+
}, [ hasTableCreated ] );
|
|
356
|
+
|
|
344
357
|
const sections = [ 'head', 'body', 'foot' ].filter(
|
|
345
358
|
( name ) => ! isEmptyTableSection( attributes[ name ] )
|
|
346
359
|
);
|
|
@@ -426,7 +439,7 @@ function TableEdit( {
|
|
|
426
439
|
const isEmpty = ! sections.length;
|
|
427
440
|
|
|
428
441
|
return (
|
|
429
|
-
<figure { ...useBlockProps() }>
|
|
442
|
+
<figure { ...useBlockProps( { ref: tableRef } ) }>
|
|
430
443
|
{ ! isEmpty && (
|
|
431
444
|
<>
|
|
432
445
|
<BlockControls group="block">
|
|
@@ -505,7 +518,9 @@ function TableEdit( {
|
|
|
505
518
|
// Deselect the selected table cell when the caption is focused.
|
|
506
519
|
unstableOnFocus={ () => setSelectedCell() }
|
|
507
520
|
__unstableOnSplitAtEnd={ () =>
|
|
508
|
-
insertBlocksAfter(
|
|
521
|
+
insertBlocksAfter(
|
|
522
|
+
createBlock( getDefaultBlockName() )
|
|
523
|
+
)
|
|
509
524
|
}
|
|
510
525
|
/>
|
|
511
526
|
) }
|
package/src/table/state.js
CHANGED
|
@@ -79,10 +79,8 @@ export function updateSelectedCell( state, selection, updateCell ) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
const tableSections = pick( state, [ 'head', 'body', 'foot' ] );
|
|
82
|
-
const {
|
|
83
|
-
|
|
84
|
-
rowIndex: selectionRowIndex,
|
|
85
|
-
} = selection;
|
|
82
|
+
const { sectionName: selectionSectionName, rowIndex: selectionRowIndex } =
|
|
83
|
+
selection;
|
|
86
84
|
|
|
87
85
|
return mapValues( tableSections, ( section, sectionName ) => {
|
|
88
86
|
if ( selectionSectionName && selectionSectionName !== sectionName ) {
|
package/src/table/style.scss
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://schemas.wp.org/trunk/block.json",
|
|
3
3
|
"apiVersion": 2,
|
|
4
|
+
"__experimental": true,
|
|
4
5
|
"name": "core/table-of-contents",
|
|
5
6
|
"title": "Table of Contents",
|
|
6
7
|
"category": "layout",
|
|
@@ -8,13 +9,19 @@
|
|
|
8
9
|
"keywords": [ "document outline", "summary" ],
|
|
9
10
|
"textdomain": "default",
|
|
10
11
|
"attributes": {
|
|
12
|
+
"headings": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "object"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
11
18
|
"onlyIncludeCurrentPage": {
|
|
12
19
|
"type": "boolean",
|
|
13
20
|
"default": false
|
|
14
21
|
}
|
|
15
22
|
},
|
|
16
|
-
"usesContext": [ "postId" ],
|
|
17
23
|
"supports": {
|
|
18
24
|
"html": false
|
|
19
|
-
}
|
|
25
|
+
},
|
|
26
|
+
"example": {}
|
|
20
27
|
}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
store as blockEditorStore,
|
|
14
14
|
useBlockProps,
|
|
15
15
|
} from '@wordpress/block-editor';
|
|
16
|
-
import { createBlock
|
|
16
|
+
import { createBlock } from '@wordpress/blocks';
|
|
17
17
|
import {
|
|
18
18
|
PanelBody,
|
|
19
19
|
Placeholder,
|
|
@@ -21,123 +21,211 @@ 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
|
-
|
|
60
|
+
const canInsertList = useSelect(
|
|
61
|
+
( select ) => {
|
|
62
|
+
const { getBlockRootClientId, canInsertBlockType } =
|
|
63
|
+
select( blockEditorStore );
|
|
64
|
+
const rootClientId = getBlockRootClientId( clientId );
|
|
57
65
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
} ),
|
|
68
|
-
[]
|
|
66
|
+
return canInsertBlockType( 'core/list', rootClientId );
|
|
67
|
+
},
|
|
68
|
+
[ clientId ]
|
|
69
69
|
);
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const pageIndex = useSelect(
|
|
74
|
-
( select ) => {
|
|
75
|
-
if ( ! onlyIncludeCurrentPage ) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
71
|
+
const { __unstableMarkNextChangeAsNotPersistent, replaceBlocks } =
|
|
72
|
+
useDispatch( blockEditorStore );
|
|
78
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The latest heading data, or null if the new data deeply equals the saved
|
|
76
|
+
* headings attribute.
|
|
77
|
+
*
|
|
78
|
+
* Since useSelect forces a re-render when its return value is shallowly
|
|
79
|
+
* inequal to its prior call, we would be re-rendering this block every time
|
|
80
|
+
* the stores change, even if the latest headings were deeply equal to the
|
|
81
|
+
* ones saved in the block attributes.
|
|
82
|
+
*
|
|
83
|
+
* By returning null when they're equal, we reduce that to 2 renders: one
|
|
84
|
+
* when there are new latest headings (and so it returns them), and one when
|
|
85
|
+
* they haven't changed (so it returns null). As long as the latest heading
|
|
86
|
+
* data remains the same, further calls of the useSelect callback will
|
|
87
|
+
* continue to return null, thus preventing any forced re-renders.
|
|
88
|
+
*/
|
|
89
|
+
const latestHeadings = useSelect(
|
|
90
|
+
( select ) => {
|
|
79
91
|
const {
|
|
80
92
|
getBlockAttributes,
|
|
81
|
-
getBlockIndex,
|
|
82
93
|
getBlockName,
|
|
83
|
-
|
|
94
|
+
getClientIdsWithDescendants,
|
|
95
|
+
__experimentalGetGlobalBlocksByName: getGlobalBlocksByName,
|
|
84
96
|
} = select( blockEditorStore );
|
|
85
97
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
// FIXME: @wordpress/block-library should not depend on @wordpress/editor.
|
|
99
|
+
// Blocks can be loaded into a *non-post* block editor, so to avoid
|
|
100
|
+
// declaring @wordpress/editor as a dependency, we must access its
|
|
101
|
+
// store by string. When the store is not available, editorSelectors
|
|
102
|
+
// will be null, and the block's saved markup will lack permalinks.
|
|
103
|
+
// eslint-disable-next-line @wordpress/data-no-store-string-literals
|
|
104
|
+
const editorSelectors = select( 'core/editor' );
|
|
105
|
+
|
|
106
|
+
const pageBreakClientIds = getGlobalBlocksByName( 'core/nextpage' );
|
|
107
|
+
|
|
108
|
+
const isPaginated = pageBreakClientIds.length !== 0;
|
|
109
|
+
|
|
110
|
+
// Get the client ids of all blocks in the editor.
|
|
111
|
+
const allBlockClientIds = getClientIdsWithDescendants();
|
|
112
|
+
|
|
113
|
+
// 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.
|
|
114
|
+
let tocPage = 1;
|
|
115
|
+
|
|
116
|
+
if ( isPaginated && onlyIncludeCurrentPage ) {
|
|
117
|
+
// We can't use getBlockIndex because it only returns the index
|
|
118
|
+
// relative to sibling blocks.
|
|
119
|
+
const tocIndex = allBlockClientIds.indexOf( clientId );
|
|
120
|
+
|
|
121
|
+
for ( const [
|
|
122
|
+
blockIndex,
|
|
123
|
+
blockClientId,
|
|
124
|
+
] of allBlockClientIds.entries() ) {
|
|
125
|
+
// If we've reached blocks after the Table of Contents, we've
|
|
126
|
+
// finished calculating which page the block is on.
|
|
127
|
+
if ( blockIndex >= tocIndex ) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
if ( getBlockName( blockClientId ) === 'core/nextpage' ) {
|
|
131
|
+
tocPage++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const _latestHeadings = [];
|
|
137
|
+
|
|
138
|
+
/** The page (of a paginated post) a heading will be part of. */
|
|
139
|
+
let headingPage = 1;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* A permalink to the current post. If the core/editor store is
|
|
143
|
+
* unavailable, this variable will be null.
|
|
144
|
+
*/
|
|
145
|
+
const permalink = editorSelectors?.getPermalink() ?? null;
|
|
146
|
+
|
|
147
|
+
let headingPageLink = null;
|
|
148
|
+
|
|
149
|
+
// If the core/editor store is available, we can add permalinks to the
|
|
150
|
+
// generated table of contents.
|
|
151
|
+
if ( typeof permalink === 'string' ) {
|
|
152
|
+
headingPageLink = isPaginated
|
|
153
|
+
? addQueryArgs( permalink, { page: headingPage } )
|
|
154
|
+
: permalink;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
for ( const blockClientId of allBlockClientIds ) {
|
|
158
|
+
const blockName = getBlockName( blockClientId );
|
|
100
159
|
if ( blockName === 'core/nextpage' ) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
160
|
+
headingPage++;
|
|
161
|
+
|
|
162
|
+
// If we're only including headings from the current page (of
|
|
163
|
+
// a paginated post), then exit the loop if we've reached the
|
|
164
|
+
// pages after the one with the Table of Contents block.
|
|
165
|
+
if ( onlyIncludeCurrentPage && headingPage > tocPage ) {
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if ( typeof permalink === 'string' ) {
|
|
170
|
+
headingPageLink = addQueryArgs(
|
|
171
|
+
removeQueryArgs( permalink, [ 'page' ] ),
|
|
172
|
+
{ page: headingPage }
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// If we're including all headings or we've reached headings on
|
|
177
|
+
// the same page as the Table of Contents block, add them to the
|
|
178
|
+
// list.
|
|
179
|
+
else if (
|
|
180
|
+
! onlyIncludeCurrentPage ||
|
|
181
|
+
headingPage === tocPage
|
|
182
|
+
) {
|
|
183
|
+
if ( blockName === 'core/heading' ) {
|
|
184
|
+
const headingAttributes =
|
|
185
|
+
getBlockAttributes( blockClientId );
|
|
186
|
+
|
|
187
|
+
const canBeLinked =
|
|
188
|
+
typeof headingPageLink === 'string' &&
|
|
189
|
+
typeof headingAttributes.anchor === 'string' &&
|
|
190
|
+
headingAttributes.anchor !== '';
|
|
191
|
+
|
|
192
|
+
_latestHeadings.push( {
|
|
193
|
+
// Convert line breaks to spaces, and get rid of HTML tags in the headings.
|
|
194
|
+
content: stripHTML(
|
|
195
|
+
headingAttributes.content.replace(
|
|
196
|
+
/(<br *\/?>)+/g,
|
|
197
|
+
' '
|
|
198
|
+
)
|
|
199
|
+
),
|
|
200
|
+
level: headingAttributes.level,
|
|
201
|
+
link: canBeLinked
|
|
202
|
+
? `${ headingPageLink }#${ headingAttributes.anchor }`
|
|
203
|
+
: null,
|
|
204
|
+
} );
|
|
110
205
|
}
|
|
111
206
|
}
|
|
112
207
|
}
|
|
113
208
|
|
|
114
|
-
|
|
209
|
+
if ( isEqual( headings, _latestHeadings ) ) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
return _latestHeadings;
|
|
115
213
|
},
|
|
116
|
-
[ clientId, onlyIncludeCurrentPage ]
|
|
214
|
+
[ clientId, onlyIncludeCurrentPage, headings ]
|
|
117
215
|
);
|
|
118
216
|
|
|
119
217
|
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 ) );
|
|
218
|
+
if ( latestHeadings !== null ) {
|
|
219
|
+
// This is required to keep undo working and not create 2 undo steps
|
|
220
|
+
// for each heading change.
|
|
221
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
222
|
+
setAttributes( { headings: latestHeadings } );
|
|
135
223
|
}
|
|
136
|
-
}, [
|
|
224
|
+
}, [ latestHeadings ] );
|
|
137
225
|
|
|
138
|
-
const
|
|
226
|
+
const headingTree = linearToNestedHeadingList( headings );
|
|
139
227
|
|
|
140
|
-
const toolbarControls =
|
|
228
|
+
const toolbarControls = canInsertList && (
|
|
141
229
|
<BlockControls>
|
|
142
230
|
<ToolbarGroup>
|
|
143
231
|
<ToolbarButton
|
|
@@ -145,6 +233,7 @@ export default function TableOfContentsEdit( {
|
|
|
145
233
|
replaceBlocks(
|
|
146
234
|
clientId,
|
|
147
235
|
createBlock( 'core/list', {
|
|
236
|
+
ordered: true,
|
|
148
237
|
values: renderToString(
|
|
149
238
|
<TableOfContentsList
|
|
150
239
|
nestedHeadingList={ headingTree }
|
|
@@ -162,7 +251,7 @@ export default function TableOfContentsEdit( {
|
|
|
162
251
|
|
|
163
252
|
const inspectorControls = (
|
|
164
253
|
<InspectorControls>
|
|
165
|
-
<PanelBody title={ __( '
|
|
254
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
166
255
|
<ToggleControl
|
|
167
256
|
label={ __( 'Only include current page' ) }
|
|
168
257
|
checked={ onlyIncludeCurrentPage }
|
|
@@ -191,7 +280,7 @@ export default function TableOfContentsEdit( {
|
|
|
191
280
|
<>
|
|
192
281
|
<div { ...blockProps }>
|
|
193
282
|
<Placeholder
|
|
194
|
-
icon={ <BlockIcon icon=
|
|
283
|
+
icon={ <BlockIcon icon={ icon } /> }
|
|
195
284
|
label="Table of Contents"
|
|
196
285
|
instructions={ __(
|
|
197
286
|
'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'
|
|
@@ -206,9 +295,9 @@ export default function TableOfContentsEdit( {
|
|
|
206
295
|
return (
|
|
207
296
|
<>
|
|
208
297
|
<nav { ...blockProps }>
|
|
209
|
-
<
|
|
298
|
+
<ol ref={ disabledRef }>
|
|
210
299
|
<TableOfContentsList nestedHeadingList={ headingTree } />
|
|
211
|
-
</
|
|
300
|
+
</ol>
|
|
212
301
|
</nav>
|
|
213
302
|
{ toolbarControls }
|
|
214
303
|
{ 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
|
@@ -83,9 +83,8 @@ function TagCloudEdit( { attributes, setAttributes, taxonomies } ) {
|
|
|
83
83
|
|
|
84
84
|
const onFontSizeChange = ( fontSizeLabel, newValue ) => {
|
|
85
85
|
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
|
|
86
|
-
const [ quantity, newUnit ] =
|
|
87
|
-
newValue
|
|
88
|
-
);
|
|
86
|
+
const [ quantity, newUnit ] =
|
|
87
|
+
parseQuantityAndUnitFromRawValue( newValue );
|
|
89
88
|
if ( ! Number.isFinite( quantity ) ) {
|
|
90
89
|
return;
|
|
91
90
|
}
|
|
@@ -96,10 +95,8 @@ function TagCloudEdit( { attributes, setAttributes, taxonomies } ) {
|
|
|
96
95
|
smallestFontSize,
|
|
97
96
|
largestFontSize,
|
|
98
97
|
} ).forEach( ( [ attribute, currentValue ] ) => {
|
|
99
|
-
const [
|
|
100
|
-
|
|
101
|
-
currentUnit,
|
|
102
|
-
] = parseQuantityAndUnitFromRawValue( currentValue );
|
|
98
|
+
const [ currentQuantity, currentUnit ] =
|
|
99
|
+
parseQuantityAndUnitFromRawValue( currentValue );
|
|
103
100
|
// Only add an update if the other font size attribute has a different unit.
|
|
104
101
|
if ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {
|
|
105
102
|
updateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;
|