@wordpress/block-library 10.0.1 → 10.1.1-next.v.202607070741.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 +11 -0
- package/build/accordion/edit.cjs +0 -1
- package/build/accordion/edit.cjs.map +2 -2
- package/build/accordion/view.cjs +23 -0
- package/build/accordion/view.cjs.map +2 -2
- package/build/accordion-heading/deprecated.cjs +121 -1
- package/build/accordion-heading/deprecated.cjs.map +2 -2
- package/build/accordion-heading/edit.cjs +18 -1
- package/build/accordion-heading/edit.cjs.map +3 -3
- package/build/accordion-heading/save.cjs +18 -1
- package/build/accordion-heading/save.cjs.map +3 -3
- package/build/accordion-panel/edit.cjs +1 -1
- package/build/accordion-panel/edit.cjs.map +2 -2
- package/build/archives/edit.cjs +0 -1
- package/build/archives/edit.cjs.map +2 -2
- package/build/audio/edit.cjs +0 -1
- package/build/audio/edit.cjs.map +2 -2
- package/build/avatar/edit.cjs +0 -1
- package/build/avatar/edit.cjs.map +2 -2
- package/build/avatar/user-control.cjs +0 -1
- package/build/avatar/user-control.cjs.map +2 -2
- package/build/categories/edit.cjs +0 -1
- package/build/categories/edit.cjs.map +2 -2
- package/build/code/transforms.cjs +5 -3
- package/build/code/transforms.cjs.map +2 -2
- package/build/column/edit.cjs +0 -1
- package/build/column/edit.cjs.map +2 -2
- package/build/columns/edit.cjs +0 -1
- package/build/columns/edit.cjs.map +2 -2
- package/build/columns/transforms.cjs +9 -2
- package/build/columns/transforms.cjs.map +2 -2
- package/build/comment-author-avatar/edit.cjs +0 -1
- package/build/comment-author-avatar/edit.cjs.map +2 -2
- package/build/comments-pagination/comments-pagination-arrow-controls.cjs +0 -1
- package/build/comments-pagination/comments-pagination-arrow-controls.cjs.map +2 -2
- package/build/cover/edit/inspector-controls.cjs +1 -3
- package/build/cover/edit/inspector-controls.cjs.map +2 -2
- package/build/details/transforms.cjs +3 -1
- package/build/details/transforms.cjs.map +2 -2
- package/build/embed/edit.cjs +2 -3
- package/build/embed/edit.cjs.map +2 -2
- package/build/embed/embed-placeholder.cjs +20 -20
- package/build/embed/embed-placeholder.cjs.map +3 -3
- package/build/file/inspector.cjs +0 -2
- package/build/file/inspector.cjs.map +2 -2
- package/build/form/edit.cjs +0 -2
- package/build/form/edit.cjs.map +2 -2
- package/build/freeform/convert-to-blocks-button.cjs +52 -0
- package/build/freeform/convert-to-blocks-button.cjs.map +7 -0
- package/build/freeform/edit.cjs +14 -33
- package/build/freeform/edit.cjs.map +3 -3
- package/build/freeform/index.cjs +1 -7
- package/build/freeform/index.cjs.map +3 -3
- package/build/gallery/block.json +4 -1
- package/build/gallery/dynamic-gallery.cjs +263 -0
- package/build/gallery/dynamic-gallery.cjs.map +7 -0
- package/build/gallery/dynamic-source.cjs +85 -0
- package/build/gallery/dynamic-source.cjs.map +7 -0
- package/build/gallery/edit.cjs +285 -205
- package/build/gallery/edit.cjs.map +3 -3
- package/build/gallery/gallery.cjs +0 -3
- package/build/gallery/gallery.cjs.map +2 -2
- package/build/gallery/index.cjs +2 -0
- package/build/gallery/index.cjs.map +3 -3
- package/build/gallery/save.cjs +16 -12
- package/build/gallery/save.cjs.map +2 -2
- package/build/gallery/use-dynamic-gallery.cjs +181 -0
- package/build/gallery/use-dynamic-gallery.cjs.map +7 -0
- package/build/gallery/variations.cjs +54 -0
- package/build/gallery/variations.cjs.map +7 -0
- package/build/group/edit.cjs +1 -2
- package/build/group/edit.cjs.map +2 -2
- package/build/group/transforms.cjs +3 -7
- package/build/group/transforms.cjs.map +2 -2
- package/build/heading/edit.cjs +10 -3
- package/build/heading/edit.cjs.map +2 -2
- package/build/html/block.json +2 -2
- package/build/html/edit.cjs +65 -23
- package/build/html/edit.cjs.map +3 -3
- package/build/html/index.cjs +3 -3
- package/build/html/index.cjs.map +2 -2
- package/build/html/modal.cjs +4 -8
- package/build/html/modal.cjs.map +2 -2
- package/build/html/save.cjs +2 -4
- package/build/html/save.cjs.map +2 -2
- package/build/html/transforms.cjs +7 -5
- package/build/html/transforms.cjs.map +2 -2
- package/build/image/animated-gif-convert-control.cjs +105 -0
- package/build/image/animated-gif-convert-control.cjs.map +7 -0
- package/build/image/edit.cjs +34 -0
- package/build/image/edit.cjs.map +2 -2
- package/build/image/image.cjs +38 -66
- package/build/image/image.cjs.map +3 -3
- package/build/index.cjs.map +2 -2
- package/build/latest-comments/edit.cjs +0 -2
- package/build/latest-comments/edit.cjs.map +2 -2
- package/build/latest-posts/block.json +8 -9
- package/build/latest-posts/constants.cjs +0 -3
- package/build/latest-posts/constants.cjs.map +2 -2
- package/build/latest-posts/deprecated.cjs +100 -8
- package/build/latest-posts/deprecated.cjs.map +2 -2
- package/build/latest-posts/edit.cjs +62 -76
- package/build/latest-posts/edit.cjs.map +2 -2
- package/build/list/ordered-list-settings.cjs +0 -1
- package/build/list/ordered-list-settings.cjs.map +2 -2
- package/build/media-text/edit.cjs +0 -1
- package/build/media-text/edit.cjs.map +2 -2
- package/build/missing/edit.cjs +1 -3
- package/build/missing/edit.cjs.map +2 -2
- package/build/navigation/edit/index.cjs +0 -1
- package/build/navigation/edit/index.cjs.map +2 -2
- package/build/navigation/edit/overlay-menu-preview-controls.cjs +0 -1
- package/build/navigation/edit/overlay-menu-preview-controls.cjs.map +2 -2
- package/build/navigation/edit/overlay-menu-preview.cjs +0 -1
- package/build/navigation/edit/overlay-menu-preview.cjs.map +2 -2
- package/build/navigation/edit/overlay-template-part-selector.cjs +0 -1
- package/build/navigation/edit/overlay-template-part-selector.cjs.map +2 -2
- package/build/navigation/edit/overlay-visibility-control.cjs +0 -1
- package/build/navigation/edit/overlay-visibility-control.cjs.map +2 -2
- package/build/navigation-link/shared/use-link-preview.cjs +11 -1
- package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
- package/build/navigation-overlay-close/edit.cjs +0 -1
- package/build/navigation-overlay-close/edit.cjs.map +2 -2
- package/build/page-list/edit.cjs +0 -1
- package/build/page-list/edit.cjs.map +2 -2
- package/build/playlist/block.json +1 -7
- package/build/playlist/context.cjs +36 -0
- package/build/playlist/context.cjs.map +7 -0
- package/build/playlist/edit.cjs +43 -69
- package/build/playlist/edit.cjs.map +3 -3
- package/build/playlist/utils.cjs +0 -3
- package/build/playlist/utils.cjs.map +3 -3
- package/build/playlist/view.cjs +4 -4
- package/build/playlist/view.cjs.map +2 -2
- package/build/playlist-track/block.json +1 -4
- package/build/playlist-track/edit.cjs +22 -8
- package/build/playlist-track/edit.cjs.map +3 -3
- package/build/post-author/edit.cjs +0 -2
- package/build/post-author/edit.cjs.map +2 -2
- package/build/post-excerpt/edit.cjs +0 -1
- package/build/post-excerpt/edit.cjs.map +2 -2
- package/build/post-featured-image/overlay-controls.cjs +1 -2
- package/build/post-featured-image/overlay-controls.cjs.map +2 -2
- package/build/post-navigation-link/edit.cjs +0 -2
- package/build/post-navigation-link/edit.cjs.map +2 -2
- package/build/query/edit/inspector-controls/author-control.cjs +1 -2
- package/build/query/edit/inspector-controls/author-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/format-controls.cjs +1 -2
- package/build/query/edit/inspector-controls/format-controls.cjs.map +2 -2
- package/build/query/edit/inspector-controls/index.cjs +0 -3
- package/build/query/edit/inspector-controls/index.cjs.map +2 -2
- package/build/query/edit/inspector-controls/order-control.cjs +0 -1
- package/build/query/edit/inspector-controls/order-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/parent-control.cjs +0 -1
- package/build/query/edit/inspector-controls/parent-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/per-page-control.cjs +0 -1
- package/build/query/edit/inspector-controls/per-page-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/sticky-control.cjs +0 -1
- package/build/query/edit/inspector-controls/sticky-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/taxonomy-controls.cjs +1 -2
- package/build/query/edit/inspector-controls/taxonomy-controls.cjs.map +2 -2
- package/build/query-pagination/query-pagination-arrow-controls.cjs +0 -1
- package/build/query-pagination/query-pagination-arrow-controls.cjs.map +2 -2
- package/build/query-pagination-numbers/edit.cjs +0 -1
- package/build/query-pagination-numbers/edit.cjs.map +2 -2
- package/build/quote/transforms.cjs +1 -5
- package/build/quote/transforms.cjs.map +2 -2
- package/build/rss/edit.cjs +0 -3
- package/build/rss/edit.cjs.map +2 -2
- package/build/search/edit.cjs +0 -4
- package/build/search/edit.cjs.map +2 -2
- package/build/separator/edit.cjs +1 -2
- package/build/separator/edit.cjs.map +2 -2
- package/build/site-logo/edit.cjs +34 -63
- package/build/site-logo/edit.cjs.map +3 -3
- package/build/social-links/edit.cjs +0 -1
- package/build/social-links/edit.cjs.map +2 -2
- package/build/spacer/controls.cjs +2 -4
- package/build/spacer/controls.cjs.map +2 -2
- package/build/spacer/edit.cjs +1 -2
- package/build/spacer/edit.cjs.map +2 -2
- package/build/tab-list/block.json +3 -2
- package/build/tab-list/edit.cjs +38 -51
- package/build/tab-list/edit.cjs.map +3 -3
- package/build/tab-list/save.cjs +4 -3
- package/build/tab-list/save.cjs.map +2 -2
- package/build/tab-panel/controls.cjs +2 -4
- package/build/tab-panel/controls.cjs.map +3 -3
- package/build/tab-panels/edit.cjs +2 -4
- package/build/tab-panels/edit.cjs.map +3 -3
- package/build/table-of-contents/edit.cjs +0 -1
- package/build/table-of-contents/edit.cjs.map +2 -2
- package/build/tabs/edit.cjs +2 -2
- package/build/tabs/edit.cjs.map +3 -3
- package/build/tabs/tab-toolbar-controls.cjs +74 -0
- package/build/tabs/tab-toolbar-controls.cjs.map +7 -0
- package/build/tabs/use-tab-actions.cjs +87 -0
- package/build/tabs/use-tab-actions.cjs.map +7 -0
- package/build/tabs/use-tab-list-items-sync.cjs +4 -4
- package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
- package/build/tag-cloud/edit.cjs +2 -6
- package/build/tag-cloud/edit.cjs.map +2 -2
- package/build/template-part/edit/advanced-controls.cjs +0 -1
- package/build/template-part/edit/advanced-controls.cjs.map +2 -2
- package/build/template-part/edit/import-controls.cjs +1 -2
- package/build/template-part/edit/import-controls.cjs.map +2 -2
- package/build/terms-query/edit/inspector-controls/include-control.cjs +0 -1
- package/build/terms-query/edit/inspector-controls/include-control.cjs.map +2 -2
- package/build/terms-query/edit/inspector-controls/inherit-control.cjs +0 -1
- package/build/terms-query/edit/inspector-controls/inherit-control.cjs.map +2 -2
- package/build/terms-query/edit/inspector-controls/max-terms-control.cjs +0 -1
- package/build/terms-query/edit/inspector-controls/max-terms-control.cjs.map +2 -2
- package/build/terms-query/edit/inspector-controls/order-control.cjs +0 -1
- package/build/terms-query/edit/inspector-controls/order-control.cjs.map +2 -2
- package/build/terms-query/edit/inspector-controls/taxonomy-control.cjs +0 -1
- package/build/terms-query/edit/inspector-controls/taxonomy-control.cjs.map +2 -2
- package/build/text-columns/edit.cjs +0 -1
- package/build/text-columns/edit.cjs.map +2 -2
- package/build/utils/gif-conversion-attributes.cjs +40 -0
- package/build/utils/gif-conversion-attributes.cjs.map +7 -0
- package/build/verse/block.json +3 -1
- package/build/video/block.json +6 -0
- package/build/video/edit-common-settings.cjs +0 -1
- package/build/video/edit-common-settings.cjs.map +2 -2
- package/build/video/edit.cjs +28 -3
- package/build/video/edit.cjs.map +3 -3
- package/build/video/gif-restore-control.cjs +73 -0
- package/build/video/gif-restore-control.cjs.map +7 -0
- package/build/video/index.cjs +2 -0
- package/build/video/index.cjs.map +3 -3
- package/build/video/save.cjs +7 -1
- package/build/video/save.cjs.map +2 -2
- package/build/video/tracks-editor.cjs +0 -1
- package/build/video/tracks-editor.cjs.map +2 -2
- package/build/video/variations.cjs +75 -0
- package/build/video/variations.cjs.map +7 -0
- package/build-module/accordion/edit.mjs +0 -1
- package/build-module/accordion/edit.mjs.map +2 -2
- package/build-module/accordion/view.mjs +23 -0
- package/build-module/accordion/view.mjs.map +2 -2
- package/build-module/accordion-heading/deprecated.mjs +121 -1
- package/build-module/accordion-heading/deprecated.mjs.map +2 -2
- package/build-module/accordion-heading/edit.mjs +8 -1
- package/build-module/accordion-heading/edit.mjs.map +2 -2
- package/build-module/accordion-heading/save.mjs +8 -1
- package/build-module/accordion-heading/save.mjs.map +2 -2
- package/build-module/accordion-panel/edit.mjs +1 -1
- package/build-module/accordion-panel/edit.mjs.map +2 -2
- package/build-module/archives/edit.mjs +0 -1
- package/build-module/archives/edit.mjs.map +2 -2
- package/build-module/audio/edit.mjs +0 -1
- package/build-module/audio/edit.mjs.map +2 -2
- package/build-module/avatar/edit.mjs +0 -1
- package/build-module/avatar/edit.mjs.map +2 -2
- package/build-module/avatar/user-control.mjs +0 -1
- package/build-module/avatar/user-control.mjs.map +2 -2
- package/build-module/categories/edit.mjs +0 -1
- package/build-module/categories/edit.mjs.map +2 -2
- package/build-module/code/transforms.mjs +6 -4
- package/build-module/code/transforms.mjs.map +2 -2
- package/build-module/column/edit.mjs +0 -1
- package/build-module/column/edit.mjs.map +2 -2
- package/build-module/columns/edit.mjs +0 -1
- package/build-module/columns/edit.mjs.map +2 -2
- package/build-module/columns/transforms.mjs +9 -2
- package/build-module/columns/transforms.mjs.map +2 -2
- package/build-module/comment-author-avatar/edit.mjs +0 -1
- package/build-module/comment-author-avatar/edit.mjs.map +2 -2
- package/build-module/comments-pagination/comments-pagination-arrow-controls.mjs +0 -1
- package/build-module/comments-pagination/comments-pagination-arrow-controls.mjs.map +2 -2
- package/build-module/cover/edit/inspector-controls.mjs +1 -3
- package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
- package/build-module/details/transforms.mjs +7 -2
- package/build-module/details/transforms.mjs.map +2 -2
- package/build-module/embed/edit.mjs +2 -3
- package/build-module/embed/edit.mjs.map +2 -2
- package/build-module/embed/embed-placeholder.mjs +20 -23
- package/build-module/embed/embed-placeholder.mjs.map +2 -2
- package/build-module/file/inspector.mjs +0 -2
- package/build-module/file/inspector.mjs.map +2 -2
- package/build-module/form/edit.mjs +0 -2
- package/build-module/form/edit.mjs.map +2 -2
- package/build-module/freeform/convert-to-blocks-button.mjs +31 -0
- package/build-module/freeform/convert-to-blocks-button.mjs.map +7 -0
- package/build-module/freeform/edit.mjs +15 -34
- package/build-module/freeform/edit.mjs.map +2 -2
- package/build-module/freeform/index.mjs +1 -7
- package/build-module/freeform/index.mjs.map +2 -2
- package/build-module/gallery/block.json +4 -1
- package/build-module/gallery/dynamic-gallery.mjs +253 -0
- package/build-module/gallery/dynamic-gallery.mjs.map +7 -0
- package/build-module/gallery/dynamic-source.mjs +55 -0
- package/build-module/gallery/dynamic-source.mjs.map +7 -0
- package/build-module/gallery/edit.mjs +288 -206
- package/build-module/gallery/edit.mjs.map +2 -2
- package/build-module/gallery/gallery.mjs +0 -3
- package/build-module/gallery/gallery.mjs.map +2 -2
- package/build-module/gallery/index.mjs +2 -0
- package/build-module/gallery/index.mjs.map +2 -2
- package/build-module/gallery/save.mjs +16 -12
- package/build-module/gallery/save.mjs.map +2 -2
- package/build-module/gallery/use-dynamic-gallery.mjs +167 -0
- package/build-module/gallery/use-dynamic-gallery.mjs.map +7 -0
- package/build-module/gallery/variations.mjs +33 -0
- package/build-module/gallery/variations.mjs.map +7 -0
- package/build-module/group/edit.mjs +1 -2
- package/build-module/group/edit.mjs.map +2 -2
- package/build-module/group/transforms.mjs +7 -8
- package/build-module/group/transforms.mjs.map +2 -2
- package/build-module/heading/edit.mjs +11 -4
- package/build-module/heading/edit.mjs.map +2 -2
- package/build-module/html/block.json +2 -2
- package/build-module/html/edit.mjs +69 -25
- package/build-module/html/edit.mjs.map +2 -2
- package/build-module/html/index.mjs +3 -3
- package/build-module/html/index.mjs.map +2 -2
- package/build-module/html/modal.mjs +4 -8
- package/build-module/html/modal.mjs.map +2 -2
- package/build-module/html/save.mjs +2 -4
- package/build-module/html/save.mjs.map +2 -2
- package/build-module/html/transforms.mjs +8 -6
- package/build-module/html/transforms.mjs.map +2 -2
- package/build-module/image/animated-gif-convert-control.mjs +87 -0
- package/build-module/image/animated-gif-convert-control.mjs.map +7 -0
- package/build-module/image/edit.mjs +34 -0
- package/build-module/image/edit.mjs.map +2 -2
- package/build-module/image/image.mjs +28 -67
- package/build-module/image/image.mjs.map +2 -2
- package/build-module/index.mjs.map +2 -2
- package/build-module/latest-comments/edit.mjs +0 -2
- package/build-module/latest-comments/edit.mjs.map +2 -2
- package/build-module/latest-posts/block.json +8 -9
- package/build-module/latest-posts/constants.mjs +0 -2
- package/build-module/latest-posts/constants.mjs.map +2 -2
- package/build-module/latest-posts/deprecated.mjs +100 -8
- package/build-module/latest-posts/deprecated.mjs.map +2 -2
- package/build-module/latest-posts/edit.mjs +62 -77
- package/build-module/latest-posts/edit.mjs.map +2 -2
- package/build-module/list/ordered-list-settings.mjs +0 -1
- package/build-module/list/ordered-list-settings.mjs.map +2 -2
- package/build-module/media-text/edit.mjs +0 -1
- package/build-module/media-text/edit.mjs.map +2 -2
- package/build-module/missing/edit.mjs +1 -3
- package/build-module/missing/edit.mjs.map +2 -2
- package/build-module/navigation/edit/index.mjs +0 -1
- package/build-module/navigation/edit/index.mjs.map +2 -2
- package/build-module/navigation/edit/overlay-menu-preview-controls.mjs +0 -1
- package/build-module/navigation/edit/overlay-menu-preview-controls.mjs.map +2 -2
- package/build-module/navigation/edit/overlay-menu-preview.mjs +0 -1
- package/build-module/navigation/edit/overlay-menu-preview.mjs.map +2 -2
- package/build-module/navigation/edit/overlay-template-part-selector.mjs +0 -1
- package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +2 -2
- package/build-module/navigation/edit/overlay-visibility-control.mjs +0 -1
- package/build-module/navigation/edit/overlay-visibility-control.mjs.map +2 -2
- package/build-module/navigation-link/shared/use-link-preview.mjs +11 -1
- package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
- package/build-module/navigation-overlay-close/edit.mjs +0 -1
- package/build-module/navigation-overlay-close/edit.mjs.map +2 -2
- package/build-module/page-list/edit.mjs +0 -1
- package/build-module/page-list/edit.mjs.map +2 -2
- package/build-module/playlist/block.json +1 -7
- package/build-module/playlist/context.mjs +11 -0
- package/build-module/playlist/context.mjs.map +7 -0
- package/build-module/playlist/edit.mjs +44 -70
- package/build-module/playlist/edit.mjs.map +2 -2
- package/build-module/playlist/utils.mjs +0 -3
- package/build-module/playlist/utils.mjs.map +2 -2
- package/build-module/playlist/view.mjs +4 -4
- package/build-module/playlist/view.mjs.map +2 -2
- package/build-module/playlist-track/block.json +1 -4
- package/build-module/playlist-track/edit.mjs +23 -9
- package/build-module/playlist-track/edit.mjs.map +2 -2
- package/build-module/post-author/edit.mjs +0 -2
- package/build-module/post-author/edit.mjs.map +2 -2
- package/build-module/post-excerpt/edit.mjs +0 -1
- package/build-module/post-excerpt/edit.mjs.map +2 -2
- package/build-module/post-featured-image/overlay-controls.mjs +1 -2
- package/build-module/post-featured-image/overlay-controls.mjs.map +2 -2
- package/build-module/post-navigation-link/edit.mjs +0 -2
- package/build-module/post-navigation-link/edit.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/author-control.mjs +1 -2
- package/build-module/query/edit/inspector-controls/author-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/format-controls.mjs +1 -2
- package/build-module/query/edit/inspector-controls/format-controls.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/index.mjs +0 -3
- package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/order-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/parent-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/parent-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/per-page-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/per-page-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/sticky-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/sticky-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs +1 -2
- package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs.map +2 -2
- package/build-module/query-pagination/query-pagination-arrow-controls.mjs +0 -1
- package/build-module/query-pagination/query-pagination-arrow-controls.mjs.map +2 -2
- package/build-module/query-pagination-numbers/edit.mjs +0 -1
- package/build-module/query-pagination-numbers/edit.mjs.map +2 -2
- package/build-module/quote/transforms.mjs +6 -6
- package/build-module/quote/transforms.mjs.map +2 -2
- package/build-module/rss/edit.mjs +0 -3
- package/build-module/rss/edit.mjs.map +2 -2
- package/build-module/search/edit.mjs +0 -4
- package/build-module/search/edit.mjs.map +2 -2
- package/build-module/separator/edit.mjs +1 -2
- package/build-module/separator/edit.mjs.map +2 -2
- package/build-module/site-logo/edit.mjs +34 -64
- package/build-module/site-logo/edit.mjs.map +2 -2
- package/build-module/social-links/edit.mjs +0 -1
- package/build-module/social-links/edit.mjs.map +2 -2
- package/build-module/spacer/controls.mjs +2 -4
- package/build-module/spacer/controls.mjs.map +2 -2
- package/build-module/spacer/edit.mjs +1 -2
- package/build-module/spacer/edit.mjs.map +2 -2
- package/build-module/tab-list/block.json +3 -2
- package/build-module/tab-list/edit.mjs +39 -52
- package/build-module/tab-list/edit.mjs.map +2 -2
- package/build-module/tab-list/save.mjs +5 -3
- package/build-module/tab-list/save.mjs.map +2 -2
- package/build-module/tab-panel/controls.mjs +2 -4
- package/build-module/tab-panel/controls.mjs.map +2 -2
- package/build-module/tab-panels/edit.mjs +2 -4
- package/build-module/tab-panels/edit.mjs.map +2 -2
- package/build-module/table-of-contents/edit.mjs +0 -1
- package/build-module/table-of-contents/edit.mjs.map +2 -2
- package/build-module/tabs/edit.mjs +2 -2
- package/build-module/tabs/edit.mjs.map +2 -2
- package/build-module/tabs/tab-toolbar-controls.mjs +46 -0
- package/build-module/tabs/tab-toolbar-controls.mjs.map +7 -0
- package/build-module/tabs/use-tab-actions.mjs +66 -0
- package/build-module/tabs/use-tab-actions.mjs.map +7 -0
- package/build-module/tabs/use-tab-list-items-sync.mjs +6 -6
- package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
- package/build-module/tag-cloud/edit.mjs +2 -6
- package/build-module/tag-cloud/edit.mjs.map +2 -2
- package/build-module/template-part/edit/advanced-controls.mjs +0 -1
- package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
- package/build-module/template-part/edit/import-controls.mjs +1 -2
- package/build-module/template-part/edit/import-controls.mjs.map +2 -2
- package/build-module/terms-query/edit/inspector-controls/include-control.mjs +0 -1
- package/build-module/terms-query/edit/inspector-controls/include-control.mjs.map +2 -2
- package/build-module/terms-query/edit/inspector-controls/inherit-control.mjs +0 -1
- package/build-module/terms-query/edit/inspector-controls/inherit-control.mjs.map +2 -2
- package/build-module/terms-query/edit/inspector-controls/max-terms-control.mjs +0 -1
- package/build-module/terms-query/edit/inspector-controls/max-terms-control.mjs.map +2 -2
- package/build-module/terms-query/edit/inspector-controls/order-control.mjs +0 -1
- package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
- package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs +0 -1
- package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs.map +2 -2
- package/build-module/text-columns/edit.mjs +0 -1
- package/build-module/text-columns/edit.mjs.map +2 -2
- package/build-module/utils/gif-conversion-attributes.mjs +15 -0
- package/build-module/utils/gif-conversion-attributes.mjs.map +7 -0
- package/build-module/verse/block.json +3 -1
- package/build-module/video/block.json +6 -0
- package/build-module/video/edit-common-settings.mjs +0 -1
- package/build-module/video/edit-common-settings.mjs.map +2 -2
- package/build-module/video/edit.mjs +28 -3
- package/build-module/video/edit.mjs.map +2 -2
- package/build-module/video/gif-restore-control.mjs +55 -0
- package/build-module/video/gif-restore-control.mjs.map +7 -0
- package/build-module/video/index.mjs +2 -0
- package/build-module/video/index.mjs.map +2 -2
- package/build-module/video/save.mjs +7 -1
- package/build-module/video/save.mjs.map +2 -2
- package/build-module/video/tracks-editor.mjs +0 -1
- package/build-module/video/tracks-editor.mjs.map +2 -2
- package/build-module/video/variations.mjs +50 -0
- package/build-module/video/variations.mjs.map +7 -0
- package/build-style/accordion-panel/style-rtl.css +1 -2
- package/build-style/accordion-panel/style.css +1 -2
- package/build-style/audio/style-rtl.css +6 -0
- package/build-style/audio/style.css +6 -0
- package/build-style/audio/theme-rtl.css +6 -0
- package/build-style/audio/theme.css +6 -0
- package/build-style/columns/style-rtl.css +6 -0
- package/build-style/columns/style.css +6 -0
- package/build-style/common-rtl.css +6 -4
- package/build-style/common.css +6 -4
- package/build-style/editor-rtl.css +38 -3
- package/build-style/editor.css +38 -3
- package/build-style/embed/style-rtl.css +6 -0
- package/build-style/embed/style.css +6 -0
- package/build-style/embed/theme-rtl.css +6 -0
- package/build-style/embed/theme.css +6 -0
- package/build-style/freeform/editor-rtl.css +6 -0
- package/build-style/freeform/editor.css +6 -0
- package/build-style/gallery/editor-rtl.css +27 -3
- package/build-style/gallery/editor.css +27 -3
- package/build-style/gallery/style-rtl.css +6 -0
- package/build-style/gallery/style.css +6 -0
- package/build-style/gallery/theme-rtl.css +6 -0
- package/build-style/gallery/theme.css +6 -0
- package/build-style/html/editor-rtl.css +13 -0
- package/build-style/html/editor.css +13 -0
- package/build-style/image/editor-rtl.css +10 -0
- package/build-style/image/editor.css +10 -0
- package/build-style/image/style-rtl.css +6 -1
- package/build-style/image/style.css +6 -1
- package/build-style/image/theme-rtl.css +6 -0
- package/build-style/image/theme.css +6 -0
- package/build-style/latest-posts/style-rtl.css +26 -15
- package/build-style/latest-posts/style.css +26 -15
- package/build-style/navigation/editor-rtl.css +6 -0
- package/build-style/navigation/editor.css +6 -0
- package/build-style/navigation/style-rtl.css +6 -0
- package/build-style/navigation/style.css +6 -0
- package/build-style/navigation-submenu/editor-rtl.css +6 -0
- package/build-style/navigation-submenu/editor.css +6 -0
- package/build-style/page-list/editor-rtl.css +6 -0
- package/build-style/page-list/editor.css +6 -0
- package/build-style/playlist/style-rtl.css +121 -19
- package/build-style/playlist/style.css +121 -19
- package/build-style/post-template/style-rtl.css +6 -0
- package/build-style/post-template/style.css +6 -0
- package/build-style/query/editor-rtl.css +6 -0
- package/build-style/query/editor.css +6 -0
- package/build-style/rss/style-rtl.css +6 -0
- package/build-style/rss/style.css +6 -0
- package/build-style/shortcode/editor-rtl.css +6 -0
- package/build-style/shortcode/editor.css +6 -0
- package/build-style/style-rtl.css +145 -38
- package/build-style/style.css +145 -38
- package/build-style/table/editor-rtl.css +6 -0
- package/build-style/table/editor.css +6 -0
- package/build-style/table/theme-rtl.css +6 -0
- package/build-style/table/theme.css +6 -0
- package/build-style/template-part/editor-rtl.css +6 -0
- package/build-style/template-part/editor.css +6 -0
- package/build-style/theme-rtl.css +6 -0
- package/build-style/theme.css +6 -0
- package/build-style/video/style-rtl.css +6 -0
- package/build-style/video/style.css +6 -0
- package/build-style/video/theme-rtl.css +6 -0
- package/build-style/video/theme.css +6 -0
- package/package.json +43 -41
- package/src/accordion/README.md +1 -1
- package/src/accordion/edit.js +0 -1
- package/src/accordion/view.js +24 -0
- package/src/accordion-heading/README.md +1 -1
- package/src/accordion-heading/deprecated.js +122 -1
- package/src/accordion-heading/edit.js +12 -1
- package/src/accordion-heading/save.js +12 -1
- package/src/accordion-item/README.md +1 -1
- package/src/accordion-item/index.php +2 -1
- package/src/accordion-panel/edit.js +1 -1
- package/src/accordion-panel/style.scss +1 -4
- package/src/archives/edit.js +0 -1
- package/src/audio/edit.js +0 -1
- package/src/avatar/edit.js +0 -1
- package/src/avatar/user-control.js +0 -1
- package/src/categories/edit.js +0 -1
- package/src/code/transforms.js +6 -4
- package/src/column/edit.js +0 -1
- package/src/columns/edit.js +0 -1
- package/src/columns/transforms.js +9 -2
- package/src/comment-author-avatar/edit.js +0 -1
- package/src/comments-pagination/comments-pagination-arrow-controls.js +0 -1
- package/src/common.scss +0 -4
- package/src/cover/edit/inspector-controls.js +0 -2
- package/src/cover/test/edit.js +4 -42
- package/src/details/transforms.js +7 -2
- package/src/embed/edit.js +4 -5
- package/src/embed/embed-placeholder.js +16 -19
- package/src/file/inspector.js +0 -2
- package/src/form/edit.js +0 -2
- package/src/freeform/convert-to-blocks-button.js +33 -0
- package/src/freeform/edit.js +11 -21
- package/src/freeform/index.js +1 -9
- package/src/gallery/README.md +3 -0
- package/src/gallery/block.json +4 -1
- package/src/gallery/dynamic-gallery.js +384 -0
- package/src/gallery/dynamic-source.js +117 -0
- package/src/gallery/edit.js +152 -46
- package/src/gallery/editor.scss +32 -4
- package/src/gallery/gallery.js +0 -7
- package/src/gallery/index.js +2 -0
- package/src/gallery/index.php +277 -0
- package/src/gallery/save.js +22 -11
- package/src/gallery/test/dynamic-source.js +90 -0
- package/src/gallery/use-dynamic-gallery.js +275 -0
- package/src/gallery/variations.js +37 -0
- package/src/group/edit.js +2 -3
- package/src/group/transforms.js +7 -8
- package/src/heading/edit.js +19 -14
- package/src/home-link/index.php +1 -1
- package/src/html/README.md +2 -1
- package/src/html/block.json +2 -2
- package/src/html/edit.js +86 -14
- package/src/html/editor.scss +10 -0
- package/src/html/index.js +3 -4
- package/src/html/modal.js +5 -9
- package/src/html/save.js +4 -7
- package/src/html/test/index.js +143 -0
- package/src/html/transforms.js +11 -6
- package/src/icon/index.php +38 -45
- package/src/image/animated-gif-convert-control.js +135 -0
- package/src/image/edit.js +52 -0
- package/src/image/editor.scss +9 -0
- package/src/image/image.js +121 -180
- package/src/image/style.scss +0 -1
- package/src/image/test/animated-gif-convert-control.js +276 -0
- package/src/image/test/use-open-image-media-editor-modal.js +19 -4
- package/src/index.js +0 -2
- package/src/latest-comments/edit.js +0 -2
- package/src/latest-posts/README.md +2 -2
- package/src/latest-posts/block.json +8 -9
- package/src/latest-posts/constants.js +0 -1
- package/src/latest-posts/deprecated.js +112 -9
- package/src/latest-posts/edit.js +33 -45
- package/src/latest-posts/index.php +14 -3
- package/src/latest-posts/style.scss +12 -2
- package/src/latest-posts/test/deprecated.js +153 -0
- package/src/list/ordered-list-settings.js +0 -1
- package/src/media-text/edit.js +0 -1
- package/src/missing/edit.js +1 -3
- package/src/navigation/edit/index.js +0 -1
- package/src/navigation/edit/overlay-menu-preview-controls.js +0 -1
- package/src/navigation/edit/overlay-menu-preview.js +0 -1
- package/src/navigation/edit/overlay-template-part-selector.js +0 -1
- package/src/navigation/edit/overlay-visibility-control.js +0 -1
- package/src/navigation-link/shared/test/controls.js +0 -4
- package/src/navigation-link/shared/test/use-entity-binding.js +8 -12
- package/src/navigation-link/shared/test/use-handle-link-change.test.js +0 -4
- package/src/navigation-link/shared/test/use-link-preview.test.js +17 -4
- package/src/navigation-link/shared/use-link-preview.js +24 -4
- package/src/navigation-overlay-close/edit.js +0 -1
- package/src/page-list/edit.js +0 -1
- package/src/page-list/index.php +1 -1
- package/src/playlist/README.md +0 -2
- package/src/playlist/block.json +1 -7
- package/src/playlist/context.js +9 -0
- package/src/playlist/edit.js +51 -82
- package/src/playlist/index.php +37 -26
- package/src/playlist/style.scss +0 -5
- package/src/playlist/test/edit.js +0 -10
- package/src/playlist/utils.js +0 -6
- package/src/playlist/view.js +4 -4
- package/src/playlist-track/README.md +0 -2
- package/src/playlist-track/block.json +1 -4
- package/src/playlist-track/edit.js +25 -16
- package/src/playlist-track/index.php +4 -11
- package/src/post-author/edit.js +0 -2
- package/src/post-excerpt/edit.js +0 -1
- package/src/post-featured-image/overlay-controls.js +0 -1
- package/src/post-navigation-link/edit.js +0 -2
- package/src/query/edit/inspector-controls/author-control.js +0 -1
- package/src/query/edit/inspector-controls/format-controls.js +0 -1
- package/src/query/edit/inspector-controls/index.js +0 -3
- package/src/query/edit/inspector-controls/order-control.js +0 -1
- package/src/query/edit/inspector-controls/parent-control.js +0 -1
- package/src/query/edit/inspector-controls/per-page-control.js +0 -1
- package/src/query/edit/inspector-controls/sticky-control.js +0 -1
- package/src/query/edit/inspector-controls/taxonomy-controls.js +0 -1
- package/src/query-pagination/query-pagination-arrow-controls.js +0 -1
- package/src/query-pagination-numbers/edit.js +0 -1
- package/src/quote/transforms.js +6 -6
- package/src/rss/edit.js +0 -3
- package/src/search/edit.js +0 -4
- package/src/separator/edit.js +0 -1
- package/src/site-logo/edit.js +38 -78
- package/src/social-links/edit.js +0 -1
- package/src/spacer/controls.js +2 -4
- package/src/spacer/edit.js +2 -3
- package/src/tab-list/block.json +3 -2
- package/src/tab-list/edit.js +53 -55
- package/src/tab-list/save.js +5 -4
- package/src/tab-panel/controls.js +2 -4
- package/src/tab-panels/edit.js +2 -4
- package/src/table-of-contents/edit.js +0 -1
- package/src/tabs/edit.js +2 -2
- package/src/tabs/tab-toolbar-controls.js +58 -0
- package/src/tabs/use-tab-actions.js +102 -0
- package/src/tabs/use-tab-list-items-sync.js +7 -8
- package/src/tag-cloud/edit.js +0 -4
- package/src/tag-cloud/index.php +1 -1
- package/src/template-part/edit/advanced-controls.js +0 -1
- package/src/template-part/edit/import-controls.js +0 -1
- package/src/terms-query/edit/inspector-controls/include-control.js +0 -1
- package/src/terms-query/edit/inspector-controls/inherit-control.js +0 -1
- package/src/terms-query/edit/inspector-controls/max-terms-control.js +0 -1
- package/src/terms-query/edit/inspector-controls/order-control.js +0 -1
- package/src/terms-query/edit/inspector-controls/taxonomy-control.js +0 -1
- package/src/text-columns/edit.js +0 -1
- package/src/utils/gif-conversion-attributes.js +30 -0
- package/src/utils/test/gif-conversion-attributes.js +60 -0
- package/src/utils/test/waveform-player.js +0 -4
- package/src/utils/test/waveform-utils.js +0 -4
- package/src/verse/README.md +1 -0
- package/src/verse/block.json +3 -1
- package/src/video/README.md +2 -0
- package/src/video/block.json +6 -0
- package/src/video/edit-common-settings.js +0 -1
- package/src/video/edit.js +38 -1
- package/src/video/gif-restore-control.js +92 -0
- package/src/video/index.js +2 -0
- package/src/video/save.js +12 -0
- package/src/video/test/variations.js +65 -0
- package/src/video/tracks-editor.js +0 -1
- package/src/video/variations.js +65 -0
- package/build/freeform/migration-notice.cjs +0 -58
- package/build/freeform/migration-notice.cjs.map +0 -7
- package/build/tab-panel/add-tab-toolbar-control.cjs +0 -90
- package/build/tab-panel/add-tab-toolbar-control.cjs.map +0 -7
- package/build/tab-panel/remove-tab-toolbar-control.cjs +0 -99
- package/build/tab-panel/remove-tab-toolbar-control.cjs.map +0 -7
- package/build/tabs/controls.cjs +0 -45
- package/build/tabs/controls.cjs.map +0 -7
- package/build-module/freeform/migration-notice.mjs +0 -37
- package/build-module/freeform/migration-notice.mjs.map +0 -7
- package/build-module/tab-panel/add-tab-toolbar-control.mjs +0 -72
- package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +0 -7
- package/build-module/tab-panel/remove-tab-toolbar-control.mjs +0 -81
- package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +0 -7
- package/build-module/tabs/controls.mjs +0 -14
- package/build-module/tabs/controls.mjs.map +0 -7
- package/src/freeform/migration-notice.js +0 -49
- package/src/tab-panel/add-tab-toolbar-control.js +0 -90
- package/src/tab-panel/remove-tab-toolbar-control.js +0 -110
- package/src/tabs/controls.js +0 -14
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useMemo } from '@wordpress/element';
|
|
5
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
|
+
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
7
|
+
import { store as coreStore } from '@wordpress/core-data';
|
|
8
|
+
import { createBlock } from '@wordpress/blocks';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
import { pickRelevantMediaFiles } from './shared';
|
|
14
|
+
import { getHrefAndDestination } from './utils';
|
|
15
|
+
import { getUpdatedLinkTargetSettings } from '../image/utils';
|
|
16
|
+
import {
|
|
17
|
+
getSourceQuery,
|
|
18
|
+
getDynamicSource,
|
|
19
|
+
ATTACHED_MEDIA,
|
|
20
|
+
DEFAULT_ORDERBY,
|
|
21
|
+
DEFAULT_ORDER,
|
|
22
|
+
MAX_IMAGES,
|
|
23
|
+
} from './dynamic-source';
|
|
24
|
+
|
|
25
|
+
const EMPTY_ARRAY = [];
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Builds the attributes for a `core/image` block from a media (attachment)
|
|
29
|
+
* record, applying the gallery-wide settings that affect how the image renders.
|
|
30
|
+
*
|
|
31
|
+
* Used to construct the (non-persisted) image blocks previewed in dynamic mode,
|
|
32
|
+
* and the real image blocks created when a dynamic gallery is converted
|
|
33
|
+
* ("pinned") back to individual images. The frontend equivalent is
|
|
34
|
+
* `block_core_gallery_render_dynamic_image()` in `index.php`.
|
|
35
|
+
*
|
|
36
|
+
* @param {Object} media A media object as returned by the REST API.
|
|
37
|
+
* @param {Object} galleryAttributes The gallery block's attributes.
|
|
38
|
+
* @return {Object} Attributes to pass to `createBlock( 'core/image', ... )`.
|
|
39
|
+
*/
|
|
40
|
+
function buildImageBlockAttributes( media, galleryAttributes ) {
|
|
41
|
+
const { sizeSlug, linkTo, linkTarget, aspectRatio } = galleryAttributes;
|
|
42
|
+
const hasAspectRatio = !! aspectRatio && aspectRatio !== 'auto';
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
id: media.id,
|
|
46
|
+
...pickRelevantMediaFiles( media, sizeSlug ),
|
|
47
|
+
...getHrefAndDestination( media, linkTo ),
|
|
48
|
+
...getUpdatedLinkTargetSettings( linkTarget, galleryAttributes ),
|
|
49
|
+
sizeSlug,
|
|
50
|
+
// Raw caption, mirroring the frontend (`index.php`). Gap: the REST API
|
|
51
|
+
// exposes no caption run through `wp_get_attachment_caption`, so neither
|
|
52
|
+
// side applies that filter.
|
|
53
|
+
caption: media.caption?.raw || '',
|
|
54
|
+
alt: media.alt_text || '',
|
|
55
|
+
aspectRatio: hasAspectRatio ? aspectRatio : undefined,
|
|
56
|
+
// Pair `scale` with `aspectRatio` so the image crops rather than stretches,
|
|
57
|
+
// matching the image block's UI and the frontend (`index.php`).
|
|
58
|
+
scale: hasAspectRatio ? 'cover' : undefined,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Builds a set of `core/image` blocks from the resolved media, applying the
|
|
64
|
+
* gallery-wide settings. Each call mints fresh client IDs, so it can produce
|
|
65
|
+
* both the editor preview and the materialized inner blocks on convert.
|
|
66
|
+
*
|
|
67
|
+
* @param {Object[]} media Media records from the REST API.
|
|
68
|
+
* @param {Object} galleryAttributes The image-relevant gallery attributes.
|
|
69
|
+
* @return {Object[]} New `core/image` block instances.
|
|
70
|
+
*/
|
|
71
|
+
function buildImageBlocks( media, galleryAttributes ) {
|
|
72
|
+
return media.map( ( mediaItem ) =>
|
|
73
|
+
createBlock(
|
|
74
|
+
'core/image',
|
|
75
|
+
buildImageBlockAttributes( mediaItem, galleryAttributes )
|
|
76
|
+
)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Bundles the Gallery block's "dynamic mode" source resolution and actions.
|
|
82
|
+
*
|
|
83
|
+
* Dynamic mode resolves the gallery's images from a configured source
|
|
84
|
+
* (`attributes.dynamicContent`) instead of from manually-added inner image
|
|
85
|
+
* blocks. This hook centralizes the shared, single-instance pieces — the source
|
|
86
|
+
* resolution (one `getEntityRecords`), the editor-preview blocks, and the
|
|
87
|
+
* mode/ordering actions — out of the block's `edit` component. Transient UI
|
|
88
|
+
* concerns (e.g. the convert-to-dynamic confirmation) live in the components
|
|
89
|
+
* that own them.
|
|
90
|
+
*
|
|
91
|
+
* @param {Object} options
|
|
92
|
+
* @param {Object} options.attributes The gallery block attributes.
|
|
93
|
+
* @param {Function} options.setAttributes The block's `setAttributes`.
|
|
94
|
+
* @param {string} options.clientId The block client ID.
|
|
95
|
+
* @param {?number} options.postId The current post ID (from block context).
|
|
96
|
+
* @param {?string} options.postType The current post type (from block context).
|
|
97
|
+
* @return {Object} Dynamic-mode source data and actions.
|
|
98
|
+
*/
|
|
99
|
+
export default function useDynamicGallery( {
|
|
100
|
+
attributes,
|
|
101
|
+
setAttributes,
|
|
102
|
+
clientId,
|
|
103
|
+
postId,
|
|
104
|
+
postType,
|
|
105
|
+
} ) {
|
|
106
|
+
const { dynamicContent } = attributes;
|
|
107
|
+
|
|
108
|
+
// Whether dynamic mode makes sense in the current editing context. A
|
|
109
|
+
// `postType` means the block will resolve against some post at render time —
|
|
110
|
+
// either a concrete post (post/page editor, Query Loop item) or a post-bound
|
|
111
|
+
// template (`single`, `page`) whose post is filled in by `get_the_ID()` on the
|
|
112
|
+
// frontend (see `index.php`). Without it (template part, pattern, generic
|
|
113
|
+
// template) there's no post to attach to, so the source can never resolve.
|
|
114
|
+
const canUseDynamicSource = !! postType;
|
|
115
|
+
|
|
116
|
+
// The descriptor for the configured source (its `title`/`description`/
|
|
117
|
+
// `emptyMessage`), resolved once here so consumers read the copy without
|
|
118
|
+
// re-deriving it from `dynamicContent`. `undefined` for an unknown source.
|
|
119
|
+
const sourceDescriptor = getDynamicSource( dynamicContent?.source );
|
|
120
|
+
|
|
121
|
+
// Current source ordering, falling back to the shared defaults when unset.
|
|
122
|
+
const sourceOrderby = dynamicContent?.args?.orderBy ?? DEFAULT_ORDERBY;
|
|
123
|
+
const sourceOrder = dynamicContent?.args?.order ?? DEFAULT_ORDER;
|
|
124
|
+
|
|
125
|
+
const { replaceInnerBlocks } = useDispatch( blockEditorStore );
|
|
126
|
+
|
|
127
|
+
// Resolve the configured source to a media query. `null` (static mode, or an
|
|
128
|
+
// unresolvable source) short-circuits the select below so no request fires.
|
|
129
|
+
const query = useMemo(
|
|
130
|
+
() =>
|
|
131
|
+
dynamicContent
|
|
132
|
+
? getSourceQuery( dynamicContent, { postId } )
|
|
133
|
+
: null,
|
|
134
|
+
[ dynamicContent, postId ]
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
const { dynamicMedia, dynamicMediaTotal, isResolvingDynamic } = useSelect(
|
|
138
|
+
( select ) => {
|
|
139
|
+
if ( ! query ) {
|
|
140
|
+
return {
|
|
141
|
+
dynamicMedia: EMPTY_ARRAY,
|
|
142
|
+
dynamicMediaTotal: 0,
|
|
143
|
+
isResolvingDynamic: false,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const selectorArgs = [ 'postType', 'attachment', query ];
|
|
147
|
+
return {
|
|
148
|
+
dynamicMedia:
|
|
149
|
+
select( coreStore ).getEntityRecords( ...selectorArgs ) ??
|
|
150
|
+
EMPTY_ARRAY,
|
|
151
|
+
// Total matching attachments (the `X-WP-Total` header), which the
|
|
152
|
+
// query's `per_page` cap doesn't bound — so it reveals when the
|
|
153
|
+
// post has more attached images than are shown.
|
|
154
|
+
dynamicMediaTotal:
|
|
155
|
+
select( coreStore ).getEntityRecordsTotalItems(
|
|
156
|
+
...selectorArgs
|
|
157
|
+
) ?? 0,
|
|
158
|
+
isResolvingDynamic: ! select( coreStore ).hasFinishedResolution(
|
|
159
|
+
'getEntityRecords',
|
|
160
|
+
selectorArgs
|
|
161
|
+
),
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
[ query ]
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
// The source caps results at `MAX_IMAGES` (matching the frontend), so flag
|
|
168
|
+
// when the post has more attached images than the gallery can show.
|
|
169
|
+
const hasMoreImagesThanCap = dynamicMediaTotal > MAX_IMAGES;
|
|
170
|
+
|
|
171
|
+
// The only gallery settings that affect how an image renders, and so the
|
|
172
|
+
// only ones `buildImageBlockAttributes` reads. Depending on this narrowed
|
|
173
|
+
// set (rather than the whole `attributes` object) keeps the preview from
|
|
174
|
+
// rebuilding on unrelated edits, e.g. typing in the gallery caption.
|
|
175
|
+
const { sizeSlug, linkTo, linkTarget, aspectRatio } = attributes;
|
|
176
|
+
const imageAttributes = useMemo(
|
|
177
|
+
() => ( { sizeSlug, linkTo, linkTarget, aspectRatio } ),
|
|
178
|
+
[ sizeSlug, linkTo, linkTarget, aspectRatio ]
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
// The (non-persisted) `core/image` blocks used for the editor preview.
|
|
182
|
+
// Rebuilt when the resolved media or an image-relevant setting changes.
|
|
183
|
+
const dynamicImageBlocks = useMemo(
|
|
184
|
+
() => buildImageBlocks( dynamicMedia, imageAttributes ),
|
|
185
|
+
[ dynamicMedia, imageAttributes ]
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
// Context the gallery provides to its (previewed) image blocks.
|
|
189
|
+
const galleryContext = useMemo(
|
|
190
|
+
() => ( {
|
|
191
|
+
allowResize: attributes.allowResize ?? false,
|
|
192
|
+
imageCrop: attributes.imageCrop,
|
|
193
|
+
fixedHeight: attributes.fixedHeight,
|
|
194
|
+
navigationButtonType: attributes.navigationButtonType,
|
|
195
|
+
} ),
|
|
196
|
+
[
|
|
197
|
+
attributes.allowResize,
|
|
198
|
+
attributes.imageCrop,
|
|
199
|
+
attributes.fixedHeight,
|
|
200
|
+
attributes.navigationButtonType,
|
|
201
|
+
]
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
// Switches the gallery into dynamic mode, displaying images attached to the
|
|
205
|
+
// current post. Clearing the inner blocks removes the manually-added images:
|
|
206
|
+
// they're the gallery's image data, so there's nothing else to reset. The
|
|
207
|
+
// legacy `images`/`ids` attributes aren't touched — they're back-compat shims
|
|
208
|
+
// for the pre-innerBlocks format (see `deprecated.js`/`transforms.js`), empty
|
|
209
|
+
// on any gallery reachable here.
|
|
210
|
+
function enableDynamicMode() {
|
|
211
|
+
setAttributes( { dynamicContent: { source: ATTACHED_MEDIA } } );
|
|
212
|
+
replaceInnerBlocks( clientId, [] );
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// "Pins" a dynamic gallery: materializes the currently-resolved media as
|
|
216
|
+
// real, editable image blocks and leaves dynamic mode.
|
|
217
|
+
function convertToStatic() {
|
|
218
|
+
// Build fresh blocks rather than reusing the preview's `dynamicImageBlocks`
|
|
219
|
+
// so the materialized inner blocks get their own client IDs, distinct from
|
|
220
|
+
// the (disabled) preview instances.
|
|
221
|
+
replaceInnerBlocks(
|
|
222
|
+
clientId,
|
|
223
|
+
buildImageBlocks( dynamicMedia, imageAttributes )
|
|
224
|
+
);
|
|
225
|
+
setAttributes( { dynamicContent: undefined } );
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Updates the source ordering within `dynamicContent.args`. Passing
|
|
229
|
+
// `undefined` (or the default order) strips the keys so they aren't
|
|
230
|
+
// persisted redundantly and the ToolsPanel item reads as unset.
|
|
231
|
+
function setSourceOrder( nextOrderby, nextOrder ) {
|
|
232
|
+
const nextArgs = { ...dynamicContent?.args };
|
|
233
|
+
delete nextArgs.orderBy;
|
|
234
|
+
delete nextArgs.order;
|
|
235
|
+
if (
|
|
236
|
+
nextOrderby !== undefined &&
|
|
237
|
+
( nextOrderby !== DEFAULT_ORDERBY || nextOrder !== DEFAULT_ORDER )
|
|
238
|
+
) {
|
|
239
|
+
nextArgs.orderBy = nextOrderby;
|
|
240
|
+
nextArgs.order = nextOrder;
|
|
241
|
+
}
|
|
242
|
+
const nextSource = { ...dynamicContent };
|
|
243
|
+
if ( Object.keys( nextArgs ).length ) {
|
|
244
|
+
nextSource.args = nextArgs;
|
|
245
|
+
} else {
|
|
246
|
+
delete nextSource.args;
|
|
247
|
+
}
|
|
248
|
+
setAttributes( { dynamicContent: nextSource } );
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Resets the source to its bare form: keeps the source kind, drops its args.
|
|
252
|
+
function resetSource() {
|
|
253
|
+
setAttributes( {
|
|
254
|
+
dynamicContent: { source: dynamicContent.source },
|
|
255
|
+
} );
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return {
|
|
259
|
+
dynamicContent,
|
|
260
|
+
canUseDynamicSource,
|
|
261
|
+
sourceDescriptor,
|
|
262
|
+
hasMoreImagesThanCap,
|
|
263
|
+
dynamicMediaTotal,
|
|
264
|
+
sourceOrderby,
|
|
265
|
+
sourceOrder,
|
|
266
|
+
dynamicMedia,
|
|
267
|
+
dynamicImageBlocks,
|
|
268
|
+
isResolvingDynamic,
|
|
269
|
+
galleryContext,
|
|
270
|
+
enableDynamicMode,
|
|
271
|
+
convertToStatic,
|
|
272
|
+
setSourceOrder,
|
|
273
|
+
resetSource,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { ATTACHED_MEDIA } from './dynamic-source';
|
|
10
|
+
|
|
11
|
+
const variations = [
|
|
12
|
+
{
|
|
13
|
+
name: 'dynamic-gallery',
|
|
14
|
+
title: __( 'Dynamic Gallery' ),
|
|
15
|
+
description: __(
|
|
16
|
+
'Display images from a source, such as those attached to the current post.'
|
|
17
|
+
),
|
|
18
|
+
attributes: {
|
|
19
|
+
dynamicContent: { source: ATTACHED_MEDIA },
|
|
20
|
+
},
|
|
21
|
+
// Match any gallery that has a dynamic source configured, regardless of
|
|
22
|
+
// the specific source or options, so the variation's title and
|
|
23
|
+
// description describe the block whenever it runs in dynamic mode.
|
|
24
|
+
isActive: ( blockAttributes ) => !! blockAttributes.dynamicContent,
|
|
25
|
+
// No scopes for now. While dynamic mode only supports the "attached to the
|
|
26
|
+
// current post" source, `'inserter'` is intentionally omitted: a dedicated
|
|
27
|
+
// inserter entry would surface in post-less contexts (templates, template
|
|
28
|
+
// parts, synced patterns) where there's no post to resolve images from. The
|
|
29
|
+
// entry point is instead the inspector toggle on a regular Gallery.
|
|
30
|
+
// `isActive` still relabels the block card to "Dynamic Gallery" regardless
|
|
31
|
+
// of scope. Revisit adding `'inserter'` in a follow-up as the feature grows
|
|
32
|
+
// beyond the post-attached source.
|
|
33
|
+
scope: [],
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
export default variations;
|
package/src/group/edit.js
CHANGED
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
} from '@wordpress/block-editor';
|
|
13
13
|
import { useRef } from '@wordpress/element';
|
|
14
14
|
import { __ } from '@wordpress/i18n';
|
|
15
|
-
import { View } from '@wordpress/primitives';
|
|
16
15
|
|
|
17
16
|
/**
|
|
18
17
|
* Internal dependencies
|
|
@@ -132,13 +131,13 @@ function GroupEdit( { attributes, name, setAttributes, clientId } ) {
|
|
|
132
131
|
clientId={ clientId }
|
|
133
132
|
/>
|
|
134
133
|
{ showPlaceholder && (
|
|
135
|
-
<
|
|
134
|
+
<div>
|
|
136
135
|
{ innerBlocksProps.children }
|
|
137
136
|
<GroupPlaceHolder
|
|
138
137
|
name={ name }
|
|
139
138
|
onSelect={ selectVariation }
|
|
140
139
|
/>
|
|
141
|
-
</
|
|
140
|
+
</div>
|
|
142
141
|
) }
|
|
143
142
|
{ layoutSupportEnabled && ! showPlaceholder && (
|
|
144
143
|
<TagName { ...innerBlocksProps } />
|
package/src/group/transforms.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createBlock,
|
|
6
|
+
__experimentalCloneSanitizedBlock,
|
|
7
|
+
} from '@wordpress/blocks';
|
|
5
8
|
|
|
6
9
|
const transforms = {
|
|
7
10
|
from: [
|
|
@@ -29,13 +32,9 @@ const transforms = {
|
|
|
29
32
|
// to be replaced in the switchToBlockType call thereby meaning they
|
|
30
33
|
// are removed both from their original location and within the
|
|
31
34
|
// new group block.
|
|
32
|
-
const groupInnerBlocks = blocks.map( ( block ) =>
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
block.attributes,
|
|
36
|
-
block.innerBlocks
|
|
37
|
-
);
|
|
38
|
-
} );
|
|
35
|
+
const groupInnerBlocks = blocks.map( ( block ) =>
|
|
36
|
+
__experimentalCloneSanitizedBlock( block )
|
|
37
|
+
);
|
|
39
38
|
|
|
40
39
|
return createBlock(
|
|
41
40
|
'core/group',
|
package/src/heading/edit.js
CHANGED
|
@@ -64,7 +64,14 @@ function HeadingEdit( props ) {
|
|
|
64
64
|
|
|
65
65
|
// Remove anchor map when block unmounts.
|
|
66
66
|
return () => setAnchor( clientId, null );
|
|
67
|
-
}, [
|
|
67
|
+
}, [
|
|
68
|
+
anchor,
|
|
69
|
+
content,
|
|
70
|
+
clientId,
|
|
71
|
+
canGenerateAnchors,
|
|
72
|
+
setAttributes,
|
|
73
|
+
__unstableMarkNextChangeAsNotPersistent,
|
|
74
|
+
] );
|
|
68
75
|
|
|
69
76
|
const onContentChange = ( value ) => {
|
|
70
77
|
const newAttrs = { content: value };
|
|
@@ -80,19 +87,17 @@ function HeadingEdit( props ) {
|
|
|
80
87
|
};
|
|
81
88
|
|
|
82
89
|
return (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/>
|
|
95
|
-
</>
|
|
90
|
+
<RichText
|
|
91
|
+
identifier="content"
|
|
92
|
+
tagName={ tagName }
|
|
93
|
+
value={ content }
|
|
94
|
+
onChange={ onContentChange }
|
|
95
|
+
onMerge={ mergeBlocks }
|
|
96
|
+
onReplace={ onReplace }
|
|
97
|
+
onRemove={ () => onReplace( [] ) }
|
|
98
|
+
placeholder={ placeholder || __( 'Heading' ) }
|
|
99
|
+
{ ...blockProps }
|
|
100
|
+
/>
|
|
96
101
|
);
|
|
97
102
|
}
|
|
98
103
|
|
package/src/home-link/index.php
CHANGED
|
@@ -73,7 +73,7 @@ function block_core_home_link_build_li_wrapper_attributes( $context ) {
|
|
|
73
73
|
$colors['css_classes']
|
|
74
74
|
);
|
|
75
75
|
|
|
76
|
-
$style_attribute =
|
|
76
|
+
$style_attribute = $colors['inline_styles'];
|
|
77
77
|
$classes[] = 'wp-block-navigation-item';
|
|
78
78
|
|
|
79
79
|
if ( is_front_page() ) {
|
package/src/html/README.md
CHANGED
|
@@ -15,7 +15,7 @@ _Defined via the [`attributes`](https://developer.wordpress.org/block-editor/ref
|
|
|
15
15
|
|
|
16
16
|
| Attribute | [Type](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#type-validation) | [Default](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#default-value) | Description |
|
|
17
17
|
|-----------|------|---------|-------------|
|
|
18
|
-
| `content` | `string` | — | [
|
|
18
|
+
| `content` | `string` | — | [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `local` |
|
|
19
19
|
|
|
20
20
|
## Supports
|
|
21
21
|
|
|
@@ -26,6 +26,7 @@ _Defined via the [`supports`](https://developer.wordpress.org/block-editor/refer
|
|
|
26
26
|
- [`html`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#html): `false`
|
|
27
27
|
- [`interactivity`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#interactivity):
|
|
28
28
|
- `clientNavigation`: `true`
|
|
29
|
+
- [`listView`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#listview): `true`
|
|
29
30
|
- `customCSS`: `false`
|
|
30
31
|
- [`visibility`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#visibility): `false`
|
|
31
32
|
|
package/src/html/block.json
CHANGED
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
"attributes": {
|
|
11
11
|
"content": {
|
|
12
12
|
"type": "string",
|
|
13
|
-
"
|
|
14
|
-
"role": "content"
|
|
13
|
+
"role": "local"
|
|
15
14
|
}
|
|
16
15
|
},
|
|
17
16
|
"supports": {
|
|
@@ -21,6 +20,7 @@
|
|
|
21
20
|
"interactivity": {
|
|
22
21
|
"clientNavigation": true
|
|
23
22
|
},
|
|
23
|
+
"listView": true,
|
|
24
24
|
"customCSS": false,
|
|
25
25
|
"visibility": false
|
|
26
26
|
},
|
package/src/html/edit.js
CHANGED
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import { useState } from '@wordpress/element';
|
|
5
|
+
import { useEffect, useState } from '@wordpress/element';
|
|
6
6
|
import {
|
|
7
7
|
BlockControls,
|
|
8
8
|
BlockIcon,
|
|
9
9
|
InspectorControls,
|
|
10
10
|
useBlockProps,
|
|
11
|
+
store as blockEditorStore,
|
|
12
|
+
privateApis as blockEditorPrivateApis,
|
|
11
13
|
} from '@wordpress/block-editor';
|
|
14
|
+
import { parse, serialize, getBlockContent } from '@wordpress/blocks';
|
|
15
|
+
import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
|
|
16
|
+
import deprecated from '@wordpress/deprecated';
|
|
12
17
|
import {
|
|
13
18
|
ToolbarButton,
|
|
14
19
|
ToolbarGroup,
|
|
@@ -21,17 +26,87 @@ import { code } from '@wordpress/icons';
|
|
|
21
26
|
/**
|
|
22
27
|
* Internal dependencies
|
|
23
28
|
*/
|
|
24
|
-
import
|
|
29
|
+
import { unlock } from '../lock-unlock';
|
|
25
30
|
import HTMLEditModal from './modal';
|
|
26
31
|
|
|
27
|
-
|
|
32
|
+
const { InnerContent } = unlock( blockEditorPrivateApis );
|
|
33
|
+
|
|
34
|
+
export default function HTMLEdit( { clientId, attributes } ) {
|
|
28
35
|
const [ isModalOpen, setIsModalOpen ] = useState( false );
|
|
36
|
+
const registry = useRegistry();
|
|
37
|
+
const { updateBlock, replaceInnerBlocks } = useDispatch( blockEditorStore );
|
|
38
|
+
const content = useSelect(
|
|
39
|
+
( select ) => {
|
|
40
|
+
const block = select( blockEditorStore ).getBlock( clientId );
|
|
41
|
+
return block ? getBlockContent( block ) : '';
|
|
42
|
+
},
|
|
43
|
+
[ clientId ]
|
|
44
|
+
);
|
|
29
45
|
const blockProps = useBlockProps( {
|
|
30
46
|
className: 'block-library-html__edit',
|
|
31
47
|
} );
|
|
32
48
|
|
|
49
|
+
// Re-parse the edited content: static HTML becomes the block's
|
|
50
|
+
// `innerContent` fragments and `<!-- wp:* -->` delimited segments become
|
|
51
|
+
// inner blocks mounted at their positions within the static markup.
|
|
52
|
+
const onUpdate = ( nextContent ) => {
|
|
53
|
+
if ( nextContent === content ) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const [ parsedBlock ] = parse(
|
|
58
|
+
`<!-- wp:html -->\n${ nextContent }\n<!-- /wp:html -->`
|
|
59
|
+
);
|
|
60
|
+
const nextInnerBlocks = parsedBlock?.innerBlocks ?? [];
|
|
61
|
+
const prevInnerBlocks = registry
|
|
62
|
+
.select( blockEditorStore )
|
|
63
|
+
.getBlocks( clientId );
|
|
64
|
+
// Keep the existing inner blocks, and thereby their client IDs and
|
|
65
|
+
// selection, when their markup is unchanged — e.g. when only the
|
|
66
|
+
// surrounding static HTML was edited.
|
|
67
|
+
const innerBlocksUnchanged =
|
|
68
|
+
prevInnerBlocks.length === nextInnerBlocks.length &&
|
|
69
|
+
prevInnerBlocks.every(
|
|
70
|
+
( block, index ) =>
|
|
71
|
+
serialize( block ) === serialize( nextInnerBlocks[ index ] )
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
registry.batch( () => {
|
|
75
|
+
updateBlock( clientId, {
|
|
76
|
+
innerContent:
|
|
77
|
+
parsedBlock?.innerContent ??
|
|
78
|
+
( nextContent ? [ nextContent ] : [] ),
|
|
79
|
+
} );
|
|
80
|
+
if ( ! innerBlocksUnchanged ) {
|
|
81
|
+
replaceInnerBlocks( clientId, nextInnerBlocks, false );
|
|
82
|
+
}
|
|
83
|
+
} );
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Migrate the deprecated `content` attribute. The block's markup now lives
|
|
87
|
+
// in its inner content, but a block created via `createBlock( 'core/html',
|
|
88
|
+
// { content } )` still arrives with a `content` attribute. As soon as it
|
|
89
|
+
// loads, move that markup into the block's inner content and clear the
|
|
90
|
+
// attribute.
|
|
91
|
+
useEffect( () => {
|
|
92
|
+
if ( ! attributes.content ) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
deprecated( 'The content attribute on the Custom HTML block', {
|
|
97
|
+
since: '7.1',
|
|
98
|
+
alternative: 'inner content',
|
|
99
|
+
} );
|
|
100
|
+
|
|
101
|
+
updateBlock( clientId, {
|
|
102
|
+
attributes: { content: undefined },
|
|
103
|
+
innerContent: [ attributes.content ],
|
|
104
|
+
} );
|
|
105
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
106
|
+
}, [ attributes.content ] );
|
|
107
|
+
|
|
33
108
|
// Show placeholder when content is empty
|
|
34
|
-
if ( !
|
|
109
|
+
if ( ! content?.trim() ) {
|
|
35
110
|
return (
|
|
36
111
|
<div { ...blockProps }>
|
|
37
112
|
<Placeholder
|
|
@@ -52,8 +127,8 @@ export default function HTMLEdit( { attributes, setAttributes, isSelected } ) {
|
|
|
52
127
|
{ isModalOpen && (
|
|
53
128
|
<HTMLEditModal
|
|
54
129
|
onRequestClose={ () => setIsModalOpen( false ) }
|
|
55
|
-
content={
|
|
56
|
-
|
|
130
|
+
content={ content }
|
|
131
|
+
onUpdate={ onUpdate }
|
|
57
132
|
/>
|
|
58
133
|
) }
|
|
59
134
|
</div>
|
|
@@ -70,12 +145,9 @@ export default function HTMLEdit( { attributes, setAttributes, isSelected } ) {
|
|
|
70
145
|
</ToolbarGroup>
|
|
71
146
|
</BlockControls>
|
|
72
147
|
<InspectorControls>
|
|
73
|
-
<VStack
|
|
74
|
-
className="block-editor-block-inspector-edit-contents"
|
|
75
|
-
expanded
|
|
76
|
-
>
|
|
148
|
+
<VStack className="block-library-html__edit-code" expanded>
|
|
77
149
|
<Button
|
|
78
|
-
className="block-
|
|
150
|
+
className="block-library-html__edit-code-button"
|
|
79
151
|
__next40pxDefaultSize
|
|
80
152
|
variant="secondary"
|
|
81
153
|
onClick={ () => setIsModalOpen( true ) }
|
|
@@ -84,12 +156,12 @@ export default function HTMLEdit( { attributes, setAttributes, isSelected } ) {
|
|
|
84
156
|
</Button>
|
|
85
157
|
</VStack>
|
|
86
158
|
</InspectorControls>
|
|
87
|
-
<
|
|
159
|
+
<InnerContent clientId={ clientId } />
|
|
88
160
|
{ isModalOpen && (
|
|
89
161
|
<HTMLEditModal
|
|
90
162
|
onRequestClose={ () => setIsModalOpen( false ) }
|
|
91
|
-
content={
|
|
92
|
-
|
|
163
|
+
content={ content }
|
|
164
|
+
onUpdate={ onUpdate }
|
|
93
165
|
/>
|
|
94
166
|
) }
|
|
95
167
|
</div>
|
package/src/html/editor.scss
CHANGED
|
@@ -12,6 +12,16 @@
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
// The "Edit code" button in the inspector renders inside the tabs panel, so
|
|
16
|
+
// it needs spacing on all sides, including against the tab list above it.
|
|
17
|
+
.block-library-html__edit-code {
|
|
18
|
+
margin: $grid-unit-20;
|
|
19
|
+
|
|
20
|
+
.block-library-html__edit-code-button {
|
|
21
|
+
justify-content: center;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
15
25
|
// Modal styles
|
|
16
26
|
.block-library-html__modal {
|
|
17
27
|
|
package/src/html/index.js
CHANGED
|
@@ -20,12 +20,11 @@ export { metadata, name };
|
|
|
20
20
|
export const settings = {
|
|
21
21
|
icon,
|
|
22
22
|
example: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
'<marquee>' +
|
|
23
|
+
innerContent: [
|
|
24
|
+
'<marquee>' +
|
|
26
25
|
__( 'Welcome to the wonderful world of blocks…' ) +
|
|
27
26
|
'</marquee>',
|
|
28
|
-
|
|
27
|
+
],
|
|
29
28
|
},
|
|
30
29
|
edit,
|
|
31
30
|
save,
|
package/src/html/modal.js
CHANGED
|
@@ -26,11 +26,7 @@ import { parseContent, serializeContent } from './utils';
|
|
|
26
26
|
|
|
27
27
|
const { Tabs } = unlock( componentsPrivateApis );
|
|
28
28
|
|
|
29
|
-
export default function HTMLEditModal( {
|
|
30
|
-
onRequestClose,
|
|
31
|
-
content,
|
|
32
|
-
setAttributes,
|
|
33
|
-
} ) {
|
|
29
|
+
export default function HTMLEditModal( { onRequestClose, content, onUpdate } ) {
|
|
34
30
|
// Parse content into separate sections and use as initial state
|
|
35
31
|
const { html, css, js } = parseContent( content );
|
|
36
32
|
const [ editedHtml, setEditedHtml ] = useState( html );
|
|
@@ -56,13 +52,13 @@ export default function HTMLEditModal( {
|
|
|
56
52
|
const handleUpdate = () => {
|
|
57
53
|
// For users without unfiltered_html capability, strip CSS and JS content
|
|
58
54
|
// to prevent kses from leaving broken content
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
onUpdate(
|
|
56
|
+
serializeContent( {
|
|
61
57
|
html: editedHtml,
|
|
62
58
|
css: canUserUseUnfilteredHTML ? editedCss : '',
|
|
63
59
|
js: canUserUseUnfilteredHTML ? editedJs : '',
|
|
64
|
-
} )
|
|
65
|
-
|
|
60
|
+
} )
|
|
61
|
+
);
|
|
66
62
|
};
|
|
67
63
|
const handleUpdateAndClose = () => {
|
|
68
64
|
handleUpdate();
|