@wordpress/block-library 10.1.1-next.v.202607070741.0 → 10.3.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 +25 -0
- package/build/accordion/block.json +1 -0
- package/build/accordion-panel/block.json +1 -0
- package/build/button/edit.cjs +18 -8
- package/build/button/edit.cjs.map +2 -2
- package/build/code/edit.cjs +3 -1
- package/build/code/edit.cjs.map +2 -2
- package/build/cover/block.json +12 -0
- package/build/cover/edit/block-controls.cjs +14 -5
- package/build/cover/edit/block-controls.cjs.map +2 -2
- package/build/cover/edit/embed-video-url-input.cjs +5 -3
- package/build/cover/edit/embed-video-url-input.cjs.map +3 -3
- package/build/cover/edit/index.cjs +76 -32
- package/build/cover/edit/index.cjs.map +2 -2
- package/build/cover/embed-video-utils.cjs +17 -7
- package/build/cover/embed-video-utils.cjs.map +2 -2
- package/build/details/transforms.cjs +1 -3
- package/build/details/transforms.cjs.map +2 -2
- package/build/embed/edit.cjs +1 -1
- package/build/embed/edit.cjs.map +2 -2
- package/build/embed/embed-placeholder.cjs +1 -2
- package/build/embed/embed-placeholder.cjs.map +2 -2
- package/build/file/edit.cjs +4 -3
- package/build/file/edit.cjs.map +2 -2
- package/build/file/transforms.cjs +25 -60
- package/build/file/transforms.cjs.map +2 -2
- package/build/gallery/block.json +4 -2
- package/build/gallery/dynamic-gallery.cjs +104 -61
- package/build/gallery/dynamic-gallery.cjs.map +3 -3
- package/build/gallery/edit.cjs +1 -1
- package/build/gallery/edit.cjs.map +3 -3
- package/build/gallery/gap-styles.cjs +49 -13
- package/build/gallery/gap-styles.cjs.map +3 -3
- package/build/gallery/use-dynamic-gallery.cjs +15 -8
- package/build/gallery/use-dynamic-gallery.cjs.map +2 -2
- package/build/group/transforms.cjs +1 -1
- package/build/group/transforms.cjs.map +2 -2
- package/build/heading/edit.cjs +1 -1
- package/build/heading/edit.cjs.map +2 -2
- package/build/html/modal.cjs +63 -54
- package/build/html/modal.cjs.map +3 -3
- package/build/icon/block.json +5 -3
- package/build/icon/components/custom-inserter/icon-grid.cjs +25 -12
- package/build/icon/components/custom-inserter/icon-grid.cjs.map +2 -2
- package/build/icon/components/custom-inserter/index.cjs +100 -31
- package/build/icon/components/custom-inserter/index.cjs.map +3 -3
- package/build/icon/edit.cjs +11 -12
- package/build/icon/edit.cjs.map +2 -2
- package/build/image/block.json +1 -1
- package/build/image/edit.cjs +1 -35
- package/build/image/edit.cjs.map +2 -2
- package/build/image/image.cjs +23 -18
- package/build/image/image.cjs.map +3 -3
- package/build/image/transforms.cjs +78 -0
- package/build/image/transforms.cjs.map +3 -3
- package/build/image/use-open-image-media-editor-modal.cjs +6 -2
- package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
- package/build/index.cjs +18 -8
- package/build/index.cjs.map +2 -2
- package/build/latest-posts/edit.cjs +5 -8
- package/build/latest-posts/edit.cjs.map +2 -2
- package/build/list-item/edit.cjs +1 -1
- package/build/list-item/edit.cjs.map +2 -2
- package/build/list-item/hooks/use-enter.cjs +14 -17
- package/build/list-item/hooks/use-enter.cjs.map +3 -3
- package/build/list-item/hooks/use-indent-list-item.cjs +10 -2
- package/build/list-item/hooks/use-indent-list-item.cjs.map +2 -2
- package/build/list-item/hooks/use-space.cjs +3 -2
- package/build/list-item/hooks/use-space.cjs.map +3 -3
- package/build/math/edit.cjs +39 -56
- package/build/math/edit.cjs.map +3 -3
- package/build/media-text/edit.cjs +2 -1
- package/build/media-text/edit.cjs.map +2 -2
- package/build/more/edit.cjs +2 -2
- package/build/more/edit.cjs.map +2 -2
- package/build/navigation/edit/index.cjs +30 -16
- package/build/navigation/edit/index.cjs.map +3 -3
- package/build/navigation/edit/use-layout-custom-properties.cjs +72 -0
- package/build/navigation/edit/use-layout-custom-properties.cjs.map +7 -0
- package/build/navigation/view.cjs +9 -6
- package/build/navigation/view.cjs.map +2 -2
- package/build/navigation-link/edit.cjs +3 -3
- package/build/navigation-link/edit.cjs.map +2 -2
- package/build/navigation-link/link-ui/index.cjs +2 -2
- package/build/navigation-link/link-ui/index.cjs.map +2 -2
- package/build/paragraph/edit.cjs +5 -2
- package/build/paragraph/edit.cjs.map +3 -3
- package/build/paragraph/index.cjs +4 -1
- package/build/paragraph/index.cjs.map +2 -2
- package/build/paragraph/use-enter.cjs +3 -7
- package/build/paragraph/use-enter.cjs.map +3 -3
- package/build/playlist/block.json +29 -10
- package/build/playlist/context.cjs +2 -1
- package/build/playlist/context.cjs.map +2 -2
- package/build/playlist/edit.cjs +328 -39
- package/build/playlist/edit.cjs.map +3 -3
- package/build/playlist/index.cjs +1 -1
- package/build/playlist/index.cjs.map +2 -2
- package/build/playlist/utils.cjs +37 -8
- package/build/playlist/utils.cjs.map +2 -2
- package/build/playlist/view.cjs +83 -13
- package/build/playlist/view.cjs.map +2 -2
- package/build/playlist-track/block.json +4 -2
- package/build/playlist-track/edit.cjs +115 -70
- package/build/playlist-track/edit.cjs.map +2 -2
- package/build/post-content/block.json +1 -0
- package/build/post-content/edit.cjs +36 -15
- package/build/post-content/edit.cjs.map +2 -2
- package/build/post-featured-image/edit.cjs +3 -2
- package/build/post-featured-image/edit.cjs.map +2 -2
- package/build/post-template/block.json +2 -1
- package/build/post-template/edit.cjs +10 -1
- package/build/post-template/edit.cjs.map +2 -2
- package/build/post-terms/edit.cjs +2 -2
- package/build/post-terms/edit.cjs.map +2 -2
- package/build/post-title/edit.cjs +2 -2
- package/build/post-title/edit.cjs.map +2 -2
- package/build/preformatted/edit.cjs +3 -1
- package/build/preformatted/edit.cjs.map +2 -2
- package/build/pullquote/block.json +3 -1
- package/build/pullquote/edit.cjs +5 -3
- package/build/pullquote/edit.cjs.map +2 -2
- package/build/query/block.json +3 -2
- package/build/query/edit/inspector-controls/index.cjs +42 -5
- package/build/query/edit/inspector-controls/index.cjs.map +2 -2
- package/build/query/edit/inspector-controls/offset-controls.cjs +1 -2
- package/build/query/edit/inspector-controls/offset-controls.cjs.map +2 -2
- package/build/query/edit/inspector-controls/pages-control.cjs +0 -1
- package/build/query/edit/inspector-controls/pages-control.cjs.map +2 -2
- package/build/query/edit/query-content.cjs +10 -3
- package/build/query/edit/query-content.cjs.map +2 -2
- package/build/query/index.cjs +2 -1
- package/build/query/index.cjs.map +2 -2
- package/build/quote/block.json +3 -1
- package/build/quote/transforms.cjs +1 -3
- package/build/quote/transforms.cjs.map +2 -2
- package/build/read-more/edit.cjs +3 -1
- package/build/read-more/edit.cjs.map +2 -2
- package/build/rss/edit.cjs +0 -1
- package/build/rss/edit.cjs.map +2 -2
- package/build/site-tagline/edit.cjs +3 -1
- package/build/site-tagline/edit.cjs.map +2 -2
- package/build/site-title/edit.cjs +3 -1
- package/build/site-title/edit.cjs.map +2 -2
- package/build/social-links/edit.cjs +11 -4
- package/build/social-links/edit.cjs.map +2 -2
- package/build/tab-list/block.json +4 -3
- package/build/tab-list/edit.cjs +67 -11
- package/build/tab-list/edit.cjs.map +3 -3
- package/build/tab-list/tab-movers.cjs +87 -0
- package/build/tab-list/tab-movers.cjs.map +7 -0
- package/build/tab-panel/block.json +1 -6
- package/build/tab-panel/edit.cjs +16 -24
- package/build/tab-panel/edit.cjs.map +2 -2
- package/build/tab-panels/block.json +0 -1
- package/build/table/edit.cjs +1 -1
- package/build/table/edit.cjs.map +2 -2
- package/build/tabs/block.json +0 -5
- package/build/tabs/edit.cjs +4 -39
- package/build/tabs/edit.cjs.map +3 -3
- package/build/tabs/use-tab-actions.cjs +23 -1
- package/build/tabs/use-tab-actions.cjs.map +2 -2
- package/build/tabs/use-tab-list-items-sync.cjs +19 -1
- package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
- package/build/term-name/block.json +1 -3
- package/build/term-name/deprecated.cjs +105 -0
- package/build/term-name/deprecated.cjs.map +7 -0
- package/build/term-name/edit.cjs +11 -37
- package/build/term-name/edit.cjs.map +3 -3
- package/build/term-name/index.cjs +3 -1
- package/build/term-name/index.cjs.map +3 -3
- package/build/utils/caption.cjs +2 -2
- package/build/utils/caption.cjs.map +2 -2
- package/build/utils/waveform-player.cjs +138 -22
- package/build/utils/waveform-player.cjs.map +2 -2
- package/build/utils/waveform-utils.cjs +315 -17
- package/build/utils/waveform-utils.cjs.map +2 -2
- package/build/verse/edit.cjs +3 -1
- package/build/verse/edit.cjs.map +2 -2
- package/build/video/edit.cjs +2 -11
- package/build/video/edit.cjs.map +3 -3
- package/build/video/tracks-editor.cjs +0 -1
- package/build/video/tracks-editor.cjs.map +2 -2
- package/build-module/accordion/block.json +1 -0
- package/build-module/accordion-panel/block.json +1 -0
- package/build-module/button/edit.mjs +19 -14
- package/build-module/button/edit.mjs.map +2 -2
- package/build-module/code/edit.mjs +3 -1
- package/build-module/code/edit.mjs.map +2 -2
- package/build-module/cover/block.json +12 -0
- package/build-module/cover/edit/block-controls.mjs +14 -5
- package/build-module/cover/edit/block-controls.mjs.map +2 -2
- package/build-module/cover/edit/embed-video-url-input.mjs +5 -4
- package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
- package/build-module/cover/edit/index.mjs +79 -35
- package/build-module/cover/edit/index.mjs.map +2 -2
- package/build-module/cover/embed-video-utils.mjs +16 -7
- package/build-module/cover/embed-video-utils.mjs.map +2 -2
- package/build-module/details/transforms.mjs +2 -7
- package/build-module/details/transforms.mjs.map +2 -2
- package/build-module/embed/edit.mjs +1 -1
- package/build-module/embed/edit.mjs.map +2 -2
- package/build-module/embed/embed-placeholder.mjs +1 -2
- package/build-module/embed/embed-placeholder.mjs.map +2 -2
- package/build-module/file/edit.mjs +4 -3
- package/build-module/file/edit.mjs.map +2 -2
- package/build-module/file/transforms.mjs +25 -60
- package/build-module/file/transforms.mjs.map +2 -2
- package/build-module/gallery/block.json +4 -2
- package/build-module/gallery/dynamic-gallery.mjs +104 -61
- package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
- package/build-module/gallery/edit.mjs +3 -3
- package/build-module/gallery/edit.mjs.map +2 -2
- package/build-module/gallery/gap-styles.mjs +53 -14
- package/build-module/gallery/gap-styles.mjs.map +2 -2
- package/build-module/gallery/use-dynamic-gallery.mjs +16 -9
- package/build-module/gallery/use-dynamic-gallery.mjs.map +2 -2
- package/build-module/group/transforms.mjs +2 -5
- package/build-module/group/transforms.mjs.map +2 -2
- package/build-module/heading/edit.mjs +1 -1
- package/build-module/heading/edit.mjs.map +2 -2
- package/build-module/html/modal.mjs +68 -55
- package/build-module/html/modal.mjs.map +2 -2
- package/build-module/icon/block.json +5 -3
- package/build-module/icon/components/custom-inserter/icon-grid.mjs +25 -12
- package/build-module/icon/components/custom-inserter/icon-grid.mjs.map +2 -2
- package/build-module/icon/components/custom-inserter/index.mjs +102 -33
- package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
- package/build-module/icon/edit.mjs +11 -12
- package/build-module/icon/edit.mjs.map +2 -2
- package/build-module/image/block.json +1 -1
- package/build-module/image/edit.mjs +1 -35
- package/build-module/image/edit.mjs.map +2 -2
- package/build-module/image/image.mjs +23 -18
- package/build-module/image/image.mjs.map +2 -2
- package/build-module/image/transforms.mjs +78 -0
- package/build-module/image/transforms.mjs.map +2 -2
- package/build-module/image/use-open-image-media-editor-modal.mjs +6 -2
- package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
- package/build-module/index.mjs +18 -8
- package/build-module/index.mjs.map +2 -2
- package/build-module/latest-posts/edit.mjs +5 -8
- package/build-module/latest-posts/edit.mjs.map +2 -2
- package/build-module/list-item/edit.mjs +1 -1
- package/build-module/list-item/edit.mjs.map +2 -2
- package/build-module/list-item/hooks/use-enter.mjs +15 -21
- package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
- package/build-module/list-item/hooks/use-indent-list-item.mjs +10 -2
- package/build-module/list-item/hooks/use-indent-list-item.mjs.map +2 -2
- package/build-module/list-item/hooks/use-space.mjs +4 -6
- package/build-module/list-item/hooks/use-space.mjs.map +2 -2
- package/build-module/math/edit.mjs +41 -60
- package/build-module/math/edit.mjs.map +2 -2
- package/build-module/media-text/edit.mjs +2 -1
- package/build-module/media-text/edit.mjs.map +2 -2
- package/build-module/more/edit.mjs +2 -2
- package/build-module/more/edit.mjs.map +2 -2
- package/build-module/navigation/edit/index.mjs +30 -16
- package/build-module/navigation/edit/index.mjs.map +2 -2
- package/build-module/navigation/edit/use-layout-custom-properties.mjs +51 -0
- package/build-module/navigation/edit/use-layout-custom-properties.mjs.map +7 -0
- package/build-module/navigation/view.mjs +9 -6
- package/build-module/navigation/view.mjs.map +2 -2
- package/build-module/navigation-link/edit.mjs +3 -3
- package/build-module/navigation-link/edit.mjs.map +2 -2
- package/build-module/navigation-link/link-ui/index.mjs +2 -2
- package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
- package/build-module/paragraph/edit.mjs +6 -2
- package/build-module/paragraph/edit.mjs.map +2 -2
- package/build-module/paragraph/index.mjs +4 -1
- package/build-module/paragraph/index.mjs.map +2 -2
- package/build-module/paragraph/use-enter.mjs +4 -11
- package/build-module/paragraph/use-enter.mjs.map +2 -2
- package/build-module/playlist/block.json +29 -10
- package/build-module/playlist/context.mjs +2 -1
- package/build-module/playlist/context.mjs.map +2 -2
- package/build-module/playlist/edit.mjs +331 -41
- package/build-module/playlist/edit.mjs.map +2 -2
- package/build-module/playlist/index.mjs +1 -1
- package/build-module/playlist/index.mjs.map +2 -2
- package/build-module/playlist/utils.mjs +35 -7
- package/build-module/playlist/utils.mjs.map +2 -2
- package/build-module/playlist/view.mjs +89 -14
- package/build-module/playlist/view.mjs.map +2 -2
- package/build-module/playlist-track/block.json +4 -2
- package/build-module/playlist-track/edit.mjs +117 -71
- package/build-module/playlist-track/edit.mjs.map +2 -2
- package/build-module/post-content/block.json +1 -0
- package/build-module/post-content/edit.mjs +37 -15
- package/build-module/post-content/edit.mjs.map +2 -2
- package/build-module/post-featured-image/edit.mjs +3 -2
- package/build-module/post-featured-image/edit.mjs.map +2 -2
- package/build-module/post-template/block.json +2 -1
- package/build-module/post-template/edit.mjs +10 -1
- package/build-module/post-template/edit.mjs.map +2 -2
- package/build-module/post-terms/edit.mjs +2 -2
- package/build-module/post-terms/edit.mjs.map +2 -2
- package/build-module/post-title/edit.mjs +2 -2
- package/build-module/post-title/edit.mjs.map +2 -2
- package/build-module/preformatted/edit.mjs +3 -1
- package/build-module/preformatted/edit.mjs.map +2 -2
- package/build-module/pullquote/block.json +3 -1
- package/build-module/pullquote/edit.mjs +5 -3
- package/build-module/pullquote/edit.mjs.map +2 -2
- package/build-module/query/block.json +3 -2
- package/build-module/query/edit/inspector-controls/index.mjs +44 -6
- package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/offset-controls.mjs +2 -3
- package/build-module/query/edit/inspector-controls/offset-controls.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/pages-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/pages-control.mjs.map +2 -2
- package/build-module/query/edit/query-content.mjs +10 -3
- package/build-module/query/edit/query-content.mjs.map +2 -2
- package/build-module/query/index.mjs +2 -1
- package/build-module/query/index.mjs.map +2 -2
- package/build-module/quote/block.json +3 -1
- package/build-module/quote/transforms.mjs +2 -4
- package/build-module/quote/transforms.mjs.map +2 -2
- package/build-module/read-more/edit.mjs +3 -1
- package/build-module/read-more/edit.mjs.map +2 -2
- package/build-module/rss/edit.mjs +0 -1
- package/build-module/rss/edit.mjs.map +2 -2
- package/build-module/site-tagline/edit.mjs +3 -1
- package/build-module/site-tagline/edit.mjs.map +2 -2
- package/build-module/site-title/edit.mjs +3 -1
- package/build-module/site-title/edit.mjs.map +2 -2
- package/build-module/social-links/edit.mjs +11 -4
- package/build-module/social-links/edit.mjs.map +2 -2
- package/build-module/tab-list/block.json +4 -3
- package/build-module/tab-list/edit.mjs +74 -13
- package/build-module/tab-list/edit.mjs.map +2 -2
- package/build-module/tab-list/tab-movers.mjs +59 -0
- package/build-module/tab-list/tab-movers.mjs.map +7 -0
- package/build-module/tab-panel/block.json +1 -6
- package/build-module/tab-panel/edit.mjs +17 -25
- package/build-module/tab-panel/edit.mjs.map +2 -2
- package/build-module/tab-panels/block.json +0 -1
- package/build-module/table/edit.mjs +1 -1
- package/build-module/table/edit.mjs.map +2 -2
- package/build-module/tabs/block.json +0 -5
- package/build-module/tabs/edit.mjs +5 -45
- package/build-module/tabs/edit.mjs.map +2 -2
- package/build-module/tabs/use-tab-actions.mjs +23 -1
- package/build-module/tabs/use-tab-actions.mjs.map +2 -2
- package/build-module/tabs/use-tab-list-items-sync.mjs +19 -1
- package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
- package/build-module/term-name/block.json +1 -3
- package/build-module/term-name/deprecated.mjs +74 -0
- package/build-module/term-name/deprecated.mjs.map +7 -0
- package/build-module/term-name/edit.mjs +11 -28
- package/build-module/term-name/edit.mjs.map +2 -2
- package/build-module/term-name/index.mjs +3 -1
- package/build-module/term-name/index.mjs.map +2 -2
- package/build-module/utils/caption.mjs +2 -2
- package/build-module/utils/caption.mjs.map +2 -2
- package/build-module/utils/waveform-player.mjs +144 -23
- package/build-module/utils/waveform-player.mjs.map +2 -2
- package/build-module/utils/waveform-utils.mjs +310 -16
- package/build-module/utils/waveform-utils.mjs.map +2 -2
- package/build-module/verse/edit.mjs +3 -1
- package/build-module/verse/edit.mjs.map +2 -2
- package/build-module/video/edit.mjs +2 -11
- package/build-module/video/edit.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-style/cover/editor-rtl.css +3 -0
- package/build-style/cover/editor.css +3 -0
- package/build-style/editor-rtl.css +61 -59
- package/build-style/editor.css +61 -59
- package/build-style/icon/editor-rtl.css +80 -10
- package/build-style/icon/editor.css +80 -10
- package/build-style/image/editor-rtl.css +3 -32
- package/build-style/image/editor.css +3 -32
- package/build-style/more/editor-rtl.css +2 -2
- package/build-style/more/editor.css +2 -2
- package/build-style/navigation/editor-rtl.css +3 -4
- package/build-style/navigation/editor.css +3 -4
- package/build-style/navigation-link/editor-rtl.css +1 -1
- package/build-style/navigation-link/editor.css +1 -1
- package/build-style/nextpage/editor-rtl.css +2 -2
- package/build-style/nextpage/editor.css +2 -2
- package/build-style/playlist/editor-rtl.css +4 -3
- package/build-style/playlist/editor.css +4 -3
- package/build-style/playlist/style-rtl.css +81 -5
- package/build-style/playlist/style.css +81 -5
- package/build-style/playlist-track/style-rtl.css +10 -0
- package/build-style/playlist-track/style.css +10 -0
- package/build-style/pullquote/editor-rtl.css +4 -0
- package/build-style/pullquote/editor.css +4 -0
- package/build-style/style-rtl.css +91 -5
- package/build-style/style.css +91 -5
- package/build-style/tab-list/editor-rtl.css +101 -0
- package/build-style/tab-list/editor.css +101 -0
- package/build-style/video/editor-rtl.css +1 -1
- package/build-style/video/editor.css +1 -1
- package/build-types/table-of-contents/list.d.ts +1 -1
- package/build-types/table-of-contents/list.d.ts.map +1 -1
- package/package.json +47 -45
- package/src/accordion/README.md +1 -0
- package/src/accordion/block.json +1 -0
- package/src/accordion-panel/block.json +1 -0
- package/src/breadcrumbs/index.php +3 -1
- package/src/button/edit.js +21 -15
- package/src/button/index.php +1 -1
- package/src/code/edit.js +7 -2
- package/src/cover/README.md +60 -0
- package/src/cover/block.json +12 -0
- package/src/cover/edit/block-controls.js +26 -11
- package/src/cover/edit/embed-video-url-input.js +5 -4
- package/src/cover/edit/index.js +109 -46
- package/src/cover/editor.scss +6 -0
- package/src/cover/embed-video-utils.js +38 -13
- package/src/cover/index.php +9 -2
- package/src/details/transforms.js +2 -7
- package/src/editor.scss +1 -0
- package/src/embed/edit.js +3 -1
- package/src/embed/embed-placeholder.js +9 -8
- package/src/file/edit.js +8 -8
- package/src/file/transforms.js +28 -60
- package/src/form/index.php +6 -4
- package/src/gallery/README.md +1 -1
- package/src/gallery/block.json +4 -2
- package/src/gallery/dynamic-gallery.js +133 -74
- package/src/gallery/edit.js +3 -3
- package/src/gallery/gap-styles.js +79 -20
- package/src/gallery/index.php +103 -43
- package/src/gallery/use-dynamic-gallery.js +27 -12
- package/src/group/transforms.js +2 -5
- package/src/heading/edit.js +1 -1
- package/src/html/modal.js +13 -2
- package/src/icon/README.md +1 -3
- package/src/icon/block.json +5 -3
- package/src/icon/components/custom-inserter/icon-grid.js +40 -11
- package/src/icon/components/custom-inserter/index.js +98 -25
- package/src/icon/edit.js +11 -17
- package/src/icon/editor.scss +33 -11
- package/src/image/README.md +1 -1
- package/src/image/block.json +1 -1
- package/src/image/edit.js +1 -57
- package/src/image/editor.scss +6 -44
- package/src/image/image.js +56 -27
- package/src/image/test/use-open-image-media-editor-modal.js +37 -1
- package/src/image/transforms.js +128 -0
- package/src/image/use-open-image-media-editor-modal.js +8 -1
- package/src/index.js +19 -7
- package/src/latest-posts/edit.js +5 -8
- package/src/latest-posts/index.php +49 -18
- package/src/list-item/edit.js +1 -1
- package/src/list-item/hooks/use-enter.js +15 -22
- package/src/list-item/hooks/use-indent-list-item.js +10 -1
- package/src/list-item/hooks/use-space.js +4 -6
- package/src/math/edit.js +42 -59
- package/src/media-text/edit.js +1 -0
- package/src/media-text/editor.scss +1 -0
- package/src/media-text/index.php +11 -2
- package/src/more/edit.js +7 -4
- package/src/more/editor.scss +1 -1
- package/src/navigation/edit/index.js +52 -36
- package/src/navigation/edit/test/layout-custom-properties.js +138 -0
- package/src/navigation/edit/use-layout-custom-properties.js +84 -0
- package/src/navigation/editor.scss +1 -2
- package/src/navigation/index.php +123 -12
- package/src/navigation/test/view.js +51 -0
- package/src/navigation/view.js +15 -14
- package/src/navigation-link/edit.js +11 -7
- package/src/navigation-link/editor.scss +1 -1
- package/src/navigation-link/index.php +70 -3
- package/src/navigation-link/link-ui/index.js +2 -1
- package/src/navigation-link/test/__snapshots__/hooks.js.snap +1 -1
- package/src/navigation-submenu/index.php +6 -3
- package/src/nextpage/editor.scss +1 -1
- package/src/page-list/index.php +4 -3
- package/src/paragraph/edit.js +9 -2
- package/src/paragraph/index.js +4 -1
- package/src/paragraph/use-enter.js +4 -11
- package/src/pattern/index.php +5 -5
- package/src/playlist/README.md +17 -18
- package/src/playlist/block.json +29 -10
- package/src/playlist/context.js +1 -0
- package/src/playlist/edit.js +395 -59
- package/src/playlist/editor.scss +4 -5
- package/src/playlist/index.js +1 -1
- package/src/playlist/index.php +71 -22
- package/src/playlist/style.scss +54 -1
- package/src/playlist/test/edit-component.js +139 -0
- package/src/playlist/test/edit.js +43 -2
- package/src/playlist/utils.js +49 -10
- package/src/playlist/view.js +97 -16
- package/src/playlist-track/README.md +3 -3
- package/src/playlist-track/block.json +4 -2
- package/src/playlist-track/edit.js +116 -75
- package/src/playlist-track/index.php +26 -11
- package/src/playlist-track/style.scss +10 -0
- package/src/playlist-track/test/edit.js +253 -0
- package/src/post-content/README.md +1 -0
- package/src/post-content/block.json +1 -0
- package/src/post-content/edit.js +45 -16
- package/src/post-excerpt/index.php +4 -1
- package/src/post-featured-image/edit.js +3 -2
- package/src/post-featured-image/index.php +4 -1
- package/src/post-template/README.md +1 -0
- package/src/post-template/block.json +2 -1
- package/src/post-template/edit.js +9 -0
- package/src/post-terms/edit.js +7 -4
- package/src/post-title/edit.js +5 -3
- package/src/preformatted/edit.js +7 -2
- package/src/pullquote/README.md +1 -0
- package/src/pullquote/block.json +3 -1
- package/src/pullquote/edit.js +9 -4
- package/src/pullquote/editor.scss +6 -0
- package/src/query/README.md +2 -1
- package/src/query/block.json +3 -2
- package/src/query/edit/inspector-controls/index.js +47 -4
- package/src/query/edit/inspector-controls/offset-controls.js +2 -3
- package/src/query/edit/inspector-controls/pages-control.js +0 -1
- package/src/query/edit/query-content.js +19 -3
- package/src/query/index.js +1 -0
- package/src/quote/README.md +1 -0
- package/src/quote/block.json +3 -1
- package/src/quote/transforms.js +2 -4
- package/src/read-more/edit.js +7 -2
- package/src/rss/edit.js +0 -1
- package/src/rss/index.php +10 -4
- package/src/site-tagline/edit.js +7 -2
- package/src/site-title/edit.js +7 -2
- package/src/social-link/index.php +19 -9
- package/src/social-links/edit.js +21 -12
- package/src/tab-list/README.md +4 -5
- package/src/tab-list/block.json +4 -3
- package/src/tab-list/edit.js +92 -28
- package/src/tab-list/editor.scss +9 -0
- package/src/tab-list/index.php +9 -4
- package/src/tab-list/tab-movers.js +72 -0
- package/src/tab-panel/README.md +4 -6
- package/src/tab-panel/block.json +1 -6
- package/src/tab-panel/edit.js +20 -33
- package/src/tab-panels/README.md +5 -3
- package/src/tab-panels/block.json +0 -1
- package/src/table/edit.js +1 -1
- package/src/table-of-contents/index.php +386 -1
- package/src/tabs/README.md +18 -9
- package/src/tabs/block.json +0 -5
- package/src/tabs/edit.js +7 -64
- package/src/tabs/use-tab-actions.js +32 -3
- package/src/tabs/use-tab-list-items-sync.js +24 -4
- package/src/tag-cloud/index.php +3 -2
- package/src/template-part/index.php +3 -17
- package/src/term-name/README.md +1 -1
- package/src/term-name/block.json +1 -3
- package/src/term-name/deprecated.js +74 -0
- package/src/term-name/edit.js +2 -18
- package/src/term-name/index.js +2 -0
- package/src/utils/caption.js +7 -4
- package/src/utils/media-control.scss +1 -5
- package/src/utils/test/waveform-player.js +297 -34
- package/src/utils/test/waveform-utils.js +473 -5
- package/src/utils/waveform-player.js +189 -59
- package/src/utils/waveform-utils.js +443 -40
- package/src/verse/edit.js +7 -2
- package/src/video/edit.js +0 -8
- package/src/video/editor.scss +1 -1
- package/src/video/index.php +2 -2
- package/src/video/tracks-editor.js +0 -1
- package/build/image/animated-gif-convert-control.cjs +0 -105
- package/build/image/animated-gif-convert-control.cjs.map +0 -7
- package/build/utils/gif-conversion-attributes.cjs +0 -40
- package/build/utils/gif-conversion-attributes.cjs.map +0 -7
- package/build/video/gif-restore-control.cjs +0 -73
- package/build/video/gif-restore-control.cjs.map +0 -7
- package/build-module/image/animated-gif-convert-control.mjs +0 -87
- package/build-module/image/animated-gif-convert-control.mjs.map +0 -7
- package/build-module/utils/gif-conversion-attributes.mjs +0 -15
- package/build-module/utils/gif-conversion-attributes.mjs.map +0 -7
- package/build-module/video/gif-restore-control.mjs +0 -55
- package/build-module/video/gif-restore-control.mjs.map +0 -7
- package/src/image/animated-gif-convert-control.js +0 -135
- package/src/image/test/animated-gif-convert-control.js +0 -276
- package/src/utils/gif-conversion-attributes.js +0 -30
- package/src/utils/test/gif-conversion-attributes.js +0 -60
- package/src/video/gif-restore-control.js +0 -92
package/src/cover/edit/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
useLayoutEffect,
|
|
14
14
|
useMemo,
|
|
15
15
|
useRef,
|
|
16
|
+
useState,
|
|
16
17
|
} from '@wordpress/element';
|
|
17
18
|
import { Placeholder, SandBox, Spinner } from '@wordpress/components';
|
|
18
19
|
import { compose, useResizeObserver } from '@wordpress/compose';
|
|
@@ -20,7 +21,6 @@ import {
|
|
|
20
21
|
withColors,
|
|
21
22
|
ColorPalette,
|
|
22
23
|
useBlockProps,
|
|
23
|
-
useSettings,
|
|
24
24
|
useInnerBlocksProps,
|
|
25
25
|
__experimentalUseGradient,
|
|
26
26
|
store as blockEditorStore,
|
|
@@ -28,7 +28,8 @@ import {
|
|
|
28
28
|
privateApis as blockEditorPrivateApis,
|
|
29
29
|
} from '@wordpress/block-editor';
|
|
30
30
|
import { __ } from '@wordpress/i18n';
|
|
31
|
-
import { useSelect, useDispatch } from '@wordpress/data';
|
|
31
|
+
import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
|
|
32
|
+
import { createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';
|
|
32
33
|
import { isBlobURL } from '@wordpress/blob';
|
|
33
34
|
import { store as noticesStore } from '@wordpress/notices';
|
|
34
35
|
|
|
@@ -134,8 +135,9 @@ function CoverEdit( {
|
|
|
134
135
|
[]
|
|
135
136
|
);
|
|
136
137
|
|
|
137
|
-
const { __unstableMarkNextChangeAsNotPersistent } =
|
|
138
|
+
const { __unstableMarkNextChangeAsNotPersistent, replaceInnerBlocks } =
|
|
138
139
|
useDispatch( blockEditorStore );
|
|
140
|
+
const registry = useRegistry();
|
|
139
141
|
|
|
140
142
|
// Ref to access latest values after async operations (e.g. getMediaColor),
|
|
141
143
|
// avoiding stale values that could overwrite concurrent remote changes.
|
|
@@ -225,6 +227,35 @@ function CoverEdit( {
|
|
|
225
227
|
const { createErrorNotice } = useDispatch( noticesStore );
|
|
226
228
|
const { gradientClass, gradientValue } = __experimentalUseGradient();
|
|
227
229
|
|
|
230
|
+
// Create the initial inner paragraph when the block gains a background
|
|
231
|
+
// and has no content yet.
|
|
232
|
+
const scaffoldInnerBlocks = () => {
|
|
233
|
+
const {
|
|
234
|
+
getBlocks,
|
|
235
|
+
isBlockSelected,
|
|
236
|
+
getSelectedBlocksInitialCaretPosition,
|
|
237
|
+
} = registry.select( blockEditorStore );
|
|
238
|
+
if ( getBlocks( clientId ).length > 0 ) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
// Check for fontSize support before we pass a fontSize attribute to
|
|
242
|
+
// the innerBlocks.
|
|
243
|
+
const [ fontSizes ] = unlock(
|
|
244
|
+
registry.select( blockEditorStore )
|
|
245
|
+
).getBlockSettings( clientId, 'typography.fontSizes' );
|
|
246
|
+
const hasFontSizes = fontSizes?.length > 0;
|
|
247
|
+
replaceInnerBlocks(
|
|
248
|
+
clientId,
|
|
249
|
+
createBlocksFromInnerBlocksTemplate(
|
|
250
|
+
getInnerBlocksTemplate( {
|
|
251
|
+
fontSize: hasFontSizes ? 'large' : undefined,
|
|
252
|
+
} )
|
|
253
|
+
),
|
|
254
|
+
isBlockSelected( clientId ),
|
|
255
|
+
getSelectedBlocksInitialCaretPosition()
|
|
256
|
+
);
|
|
257
|
+
};
|
|
258
|
+
|
|
228
259
|
const onSelectMedia = async ( newMedia ) => {
|
|
229
260
|
const mediaAttributes = attributesFromMedia( newMedia );
|
|
230
261
|
const isImage = [ newMedia?.type, newMedia?.media_type ].includes(
|
|
@@ -243,8 +274,7 @@ function CoverEdit( {
|
|
|
243
274
|
if ( ! currentAttrs.isUserOverlayColor ) {
|
|
244
275
|
newOverlayColor = averageBackgroundColor;
|
|
245
276
|
setOverlayColor( newOverlayColor );
|
|
246
|
-
|
|
247
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
277
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
248
278
|
__unstableMarkNextChangeAsNotPersistent();
|
|
249
279
|
}
|
|
250
280
|
|
|
@@ -290,23 +320,29 @@ function CoverEdit( {
|
|
|
290
320
|
}
|
|
291
321
|
}
|
|
292
322
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
323
|
+
registry.batch( () => {
|
|
324
|
+
setAttributes( {
|
|
325
|
+
...mediaAttributes,
|
|
326
|
+
focalPoint: undefined,
|
|
327
|
+
useFeaturedImage: undefined,
|
|
328
|
+
dimRatio: newDimRatio,
|
|
329
|
+
isDark: newIsDark,
|
|
330
|
+
isUserOverlayColor: currentAttrs.isUserOverlayColor || false,
|
|
331
|
+
} );
|
|
332
|
+
|
|
333
|
+
scaffoldInnerBlocks();
|
|
300
334
|
} );
|
|
301
335
|
};
|
|
302
336
|
|
|
303
337
|
const onClearMedia = () => {
|
|
304
338
|
let newOverlayColor = overlayColor.color;
|
|
305
|
-
|
|
339
|
+
|
|
340
|
+
// Skip for embeds, which never auto-assign an overlay color; otherwise
|
|
341
|
+
// the non-persistent flag lands on the media reset itself (unsaveable).
|
|
342
|
+
if ( ! isUserOverlayColor && overlayColor.color ) {
|
|
306
343
|
newOverlayColor = DEFAULT_OVERLAY_COLOR;
|
|
307
344
|
setOverlayColor( undefined );
|
|
308
|
-
|
|
309
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
345
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
310
346
|
__unstableMarkNextChangeAsNotPersistent();
|
|
311
347
|
}
|
|
312
348
|
|
|
@@ -341,13 +377,20 @@ function CoverEdit( {
|
|
|
341
377
|
);
|
|
342
378
|
|
|
343
379
|
setOverlayColor( newOverlayColor );
|
|
344
|
-
|
|
345
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
380
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
346
381
|
__unstableMarkNextChangeAsNotPersistent();
|
|
347
382
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
383
|
+
registry.batch( () => {
|
|
384
|
+
setAttributes( {
|
|
385
|
+
isUserOverlayColor: true,
|
|
386
|
+
isDark: newIsDark,
|
|
387
|
+
} );
|
|
388
|
+
|
|
389
|
+
// Skip when the color is cleared: that returns the block to its
|
|
390
|
+
// placeholder, which only renders while there is no content.
|
|
391
|
+
if ( newOverlayColor ) {
|
|
392
|
+
scaffoldInnerBlocks();
|
|
393
|
+
}
|
|
351
394
|
} );
|
|
352
395
|
};
|
|
353
396
|
|
|
@@ -424,6 +467,12 @@ function CoverEdit( {
|
|
|
424
467
|
return getBackgroundEmbedHtml( embedPreview.html );
|
|
425
468
|
}, [ embedPreview, backgroundType ] );
|
|
426
469
|
|
|
470
|
+
// Set while the media editor has pointed the cover at a freshly
|
|
471
|
+
// generated file the browser hasn't finished loading; cleared by the
|
|
472
|
+
// background <img> load/error handlers (or immediately after
|
|
473
|
+
// setAttributes for CSS backgrounds, which never fire load events).
|
|
474
|
+
const [ isSwappingMedia, setIsSwappingMedia ] = useState( false );
|
|
475
|
+
|
|
427
476
|
const isUploadingMedia = isTemporaryMedia( id, url );
|
|
428
477
|
|
|
429
478
|
const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;
|
|
@@ -477,22 +526,11 @@ function CoverEdit( {
|
|
|
477
526
|
const ref = useRef();
|
|
478
527
|
const blockProps = useBlockProps( { ref } );
|
|
479
528
|
|
|
480
|
-
// Check for fontSize support before we pass a fontSize attribute to the innerBlocks.
|
|
481
|
-
const [ fontSizes ] = useSettings( 'typography.fontSizes' );
|
|
482
|
-
const hasFontSizes = fontSizes?.length > 0;
|
|
483
|
-
const innerBlocksTemplate = getInnerBlocksTemplate( {
|
|
484
|
-
fontSize: hasFontSizes ? 'large' : undefined,
|
|
485
|
-
} );
|
|
486
|
-
|
|
487
529
|
const innerBlocksProps = useInnerBlocksProps(
|
|
488
530
|
{
|
|
489
531
|
className: 'wp-block-cover__inner-container',
|
|
490
532
|
},
|
|
491
533
|
{
|
|
492
|
-
// Avoid template sync when the `templateLock` value is `all` or `contentOnly`.
|
|
493
|
-
// See: https://github.com/WordPress/gutenberg/pull/45632
|
|
494
|
-
template: ! hasInnerBlocks ? innerBlocksTemplate : undefined,
|
|
495
|
-
templateInsertUpdatesSelection: true,
|
|
496
534
|
allowedBlocks,
|
|
497
535
|
templateLock,
|
|
498
536
|
dropZoneElement: ref.current,
|
|
@@ -526,6 +564,10 @@ function CoverEdit( {
|
|
|
526
564
|
return;
|
|
527
565
|
}
|
|
528
566
|
|
|
567
|
+
if ( newId !== id && newUrl ) {
|
|
568
|
+
setIsSwappingMedia( true );
|
|
569
|
+
}
|
|
570
|
+
|
|
529
571
|
const nextAttributes = {
|
|
530
572
|
id: newId,
|
|
531
573
|
backgroundType: IMAGE_BACKGROUND_TYPE,
|
|
@@ -549,8 +591,7 @@ function CoverEdit( {
|
|
|
549
591
|
if ( ! currentAttrs.isUserOverlayColor ) {
|
|
550
592
|
newOverlayColor = averageBackgroundColor;
|
|
551
593
|
setOverlayColor( newOverlayColor );
|
|
552
|
-
|
|
553
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
594
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
554
595
|
__unstableMarkNextChangeAsNotPersistent();
|
|
555
596
|
}
|
|
556
597
|
|
|
@@ -564,6 +605,17 @@ function CoverEdit( {
|
|
|
564
605
|
}
|
|
565
606
|
|
|
566
607
|
setAttributes( nextAttributes );
|
|
608
|
+
|
|
609
|
+
// A CSS background (parallax/repeated) renders as a div and
|
|
610
|
+
// never fires a load event; getMediaColor already fetched
|
|
611
|
+
// the file, so the swap is done once attributes are set.
|
|
612
|
+
const {
|
|
613
|
+
hasParallax: currentHasParallax,
|
|
614
|
+
isRepeated: currentIsRepeated,
|
|
615
|
+
} = propsRef.current.attributes;
|
|
616
|
+
if ( currentHasParallax || currentIsRepeated ) {
|
|
617
|
+
setIsSwappingMedia( false );
|
|
618
|
+
}
|
|
567
619
|
},
|
|
568
620
|
} );
|
|
569
621
|
}, [
|
|
@@ -604,8 +656,7 @@ function CoverEdit( {
|
|
|
604
656
|
} else {
|
|
605
657
|
setOverlayColor( undefined );
|
|
606
658
|
}
|
|
607
|
-
|
|
608
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
659
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
609
660
|
__unstableMarkNextChangeAsNotPersistent();
|
|
610
661
|
}
|
|
611
662
|
|
|
@@ -617,15 +668,24 @@ function CoverEdit( {
|
|
|
617
668
|
averageBackgroundColor
|
|
618
669
|
);
|
|
619
670
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
671
|
+
registry.batch( () => {
|
|
672
|
+
setAttributes( {
|
|
673
|
+
id: undefined,
|
|
674
|
+
url: undefined,
|
|
675
|
+
useFeaturedImage: newUseFeaturedImage,
|
|
676
|
+
dimRatio: newDimRatio,
|
|
677
|
+
backgroundType: useFeaturedImage
|
|
678
|
+
? IMAGE_BACKGROUND_TYPE
|
|
679
|
+
: undefined,
|
|
680
|
+
isDark: newIsDark,
|
|
681
|
+
} );
|
|
682
|
+
|
|
683
|
+
// Skip when the featured image is disabled: that can return the
|
|
684
|
+
// block to its placeholder, which only renders while there is no
|
|
685
|
+
// content.
|
|
686
|
+
if ( newUseFeaturedImage ) {
|
|
687
|
+
scaffoldInnerBlocks();
|
|
688
|
+
}
|
|
629
689
|
} );
|
|
630
690
|
};
|
|
631
691
|
|
|
@@ -642,6 +702,7 @@ function CoverEdit( {
|
|
|
642
702
|
onEditMedia={ openCoverMediaEditorModal }
|
|
643
703
|
editMediaButtonRef={ editMediaButtonRef }
|
|
644
704
|
showEditMediaButton={ showEditMediaButton }
|
|
705
|
+
isEditMediaDisabled={ isSwappingMedia }
|
|
645
706
|
/>
|
|
646
707
|
);
|
|
647
708
|
|
|
@@ -724,7 +785,7 @@ function CoverEdit( {
|
|
|
724
785
|
{
|
|
725
786
|
'is-dark-theme': isDark,
|
|
726
787
|
'is-light': ! isDark,
|
|
727
|
-
'is-transient': isUploadingMedia,
|
|
788
|
+
'is-transient': isUploadingMedia || isSwappingMedia,
|
|
728
789
|
'has-parallax': hasParallax,
|
|
729
790
|
'is-repeated': isRepeated,
|
|
730
791
|
'has-custom-content-position':
|
|
@@ -764,6 +825,8 @@ function CoverEdit( {
|
|
|
764
825
|
alt={ alt }
|
|
765
826
|
src={ url }
|
|
766
827
|
style={ mediaStyle }
|
|
828
|
+
onLoad={ () => setIsSwappingMedia( false ) }
|
|
829
|
+
onError={ () => setIsSwappingMedia( false ) }
|
|
767
830
|
/>
|
|
768
831
|
) : (
|
|
769
832
|
<div
|
|
@@ -831,7 +894,7 @@ function CoverEdit( {
|
|
|
831
894
|
/>
|
|
832
895
|
) }
|
|
833
896
|
|
|
834
|
-
{ isUploadingMedia && <Spinner /> }
|
|
897
|
+
{ ( isUploadingMedia || isSwappingMedia ) && <Spinner /> }
|
|
835
898
|
|
|
836
899
|
<CoverPlaceholder
|
|
837
900
|
disableMediaButtons
|
package/src/cover/editor.scss
CHANGED
|
@@ -44,6 +44,12 @@
|
|
|
44
44
|
.wp-block-cover__inner-container {
|
|
45
45
|
z-index: 2;
|
|
46
46
|
}
|
|
47
|
+
|
|
48
|
+
// Keep the loading spinner above the dim overlay (1) and the inner
|
|
49
|
+
// blocks (2) so it stays visible over child content while media loads.
|
|
50
|
+
.components-spinner {
|
|
51
|
+
z-index: 3;
|
|
52
|
+
}
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
// Shown while media is being uploaded
|
|
@@ -11,7 +11,7 @@ import { matchesPatterns } from '../embed/util';
|
|
|
11
11
|
const DEFAULT_EMBED_BLOCK = 'core/embed';
|
|
12
12
|
|
|
13
13
|
// List of supported video providers for cover block backgrounds
|
|
14
|
-
const
|
|
14
|
+
const DEFAULT_VIDEO_PROVIDERS = [
|
|
15
15
|
'youtube',
|
|
16
16
|
'vimeo',
|
|
17
17
|
'videopress',
|
|
@@ -21,38 +21,63 @@ const VIDEO_PROVIDERS = [
|
|
|
21
21
|
];
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Resolves the list of providers that are actually allowed.
|
|
25
25
|
*
|
|
26
|
-
* @param {string}
|
|
27
|
-
* @return {
|
|
26
|
+
* @param {string[]} [allowedVideoProviders] The providers configured via the block attribute.
|
|
27
|
+
* @return {string[]} The supported providers that remain allowed.
|
|
28
28
|
*/
|
|
29
|
-
export function
|
|
29
|
+
export function getAllowedVideoProviders( allowedVideoProviders ) {
|
|
30
|
+
if ( ! Array.isArray( allowedVideoProviders ) ) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return DEFAULT_VIDEO_PROVIDERS.filter( ( provider ) =>
|
|
35
|
+
allowedVideoProviders.includes( provider )
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Checks if a URL is a valid video embed URL from allowed providers.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} url The URL to validate.
|
|
43
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
44
|
+
* supported providers.
|
|
45
|
+
* @return {boolean} True if the URL matches an allowed video provider pattern.
|
|
46
|
+
*/
|
|
47
|
+
export function isValidVideoEmbedUrl( url, allowedProviders ) {
|
|
30
48
|
if ( ! url ) {
|
|
31
49
|
return false;
|
|
32
50
|
}
|
|
33
51
|
|
|
34
|
-
const embedBlock = findVideoEmbedProvider( url );
|
|
52
|
+
const embedBlock = findVideoEmbedProvider( url, allowedProviders );
|
|
35
53
|
return embedBlock !== null;
|
|
36
54
|
}
|
|
37
55
|
|
|
38
56
|
/**
|
|
39
|
-
* Finds the embed provider for a given URL if it's
|
|
57
|
+
* Finds the embed provider for a given URL if it's an allowed video provider.
|
|
40
58
|
*
|
|
41
|
-
* @param {string}
|
|
59
|
+
* @param {string} url The URL to check.
|
|
60
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
61
|
+
* supported providers.
|
|
42
62
|
* @return {string|null} The provider name slug (e.g., 'youtube') or null if not found.
|
|
43
63
|
*/
|
|
44
|
-
export function getVideoEmbedProvider( url ) {
|
|
45
|
-
const embedBlock = findVideoEmbedProvider( url );
|
|
64
|
+
export function getVideoEmbedProvider( url, allowedProviders ) {
|
|
65
|
+
const embedBlock = findVideoEmbedProvider( url, allowedProviders );
|
|
46
66
|
return embedBlock ? embedBlock.name : null;
|
|
47
67
|
}
|
|
48
68
|
|
|
49
69
|
/**
|
|
50
70
|
* Finds a matching video embed block variation for the given URL.
|
|
51
71
|
*
|
|
52
|
-
* @param {string}
|
|
72
|
+
* @param {string} url The URL to match against provider patterns.
|
|
73
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
74
|
+
* supported providers.
|
|
53
75
|
* @return {Object|null} The matching block variation or null if not found.
|
|
54
76
|
*/
|
|
55
|
-
function findVideoEmbedProvider(
|
|
77
|
+
function findVideoEmbedProvider(
|
|
78
|
+
url,
|
|
79
|
+
allowedProviders = DEFAULT_VIDEO_PROVIDERS
|
|
80
|
+
) {
|
|
56
81
|
const embedVariations = getBlockVariations( DEFAULT_EMBED_BLOCK );
|
|
57
82
|
|
|
58
83
|
if ( ! embedVariations ) {
|
|
@@ -65,7 +90,7 @@ function findVideoEmbedProvider( url ) {
|
|
|
65
90
|
|
|
66
91
|
if (
|
|
67
92
|
! matchingVariation ||
|
|
68
|
-
!
|
|
93
|
+
! allowedProviders.includes( matchingVariation.name )
|
|
69
94
|
) {
|
|
70
95
|
return null;
|
|
71
96
|
}
|
package/src/cover/index.php
CHANGED
|
@@ -134,8 +134,15 @@ function render_block_core_cover( $attributes, $content ) {
|
|
|
134
134
|
return $content;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
$
|
|
138
|
-
|
|
137
|
+
$cover_focal_point = $attributes['focalPoint'] ?? null;
|
|
138
|
+
$focal_point_x = null;
|
|
139
|
+
$focal_point_y = null;
|
|
140
|
+
if ( is_array( $cover_focal_point ) ) {
|
|
141
|
+
$focal_point_x = isset( $cover_focal_point['x'] ) && is_numeric( $cover_focal_point['x'] ) ? $cover_focal_point['x'] : null;
|
|
142
|
+
$focal_point_y = isset( $cover_focal_point['y'] ) && is_numeric( $cover_focal_point['y'] ) ? $cover_focal_point['y'] : null;
|
|
143
|
+
}
|
|
144
|
+
$object_position = null !== $focal_point_x && null !== $focal_point_y
|
|
145
|
+
? round( $focal_point_x * 100 ) . '% ' . round( $focal_point_y * 100 ) . '%'
|
|
139
146
|
: null;
|
|
140
147
|
|
|
141
148
|
if ( ! ( $attributes['hasParallax'] || $attributes['isRepeated'] ) ) {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
createBlock,
|
|
6
|
-
__experimentalCloneSanitizedBlock,
|
|
7
|
-
} from '@wordpress/blocks';
|
|
4
|
+
import { createBlock, cloneSanitizedBlock } from '@wordpress/blocks';
|
|
8
5
|
|
|
9
6
|
export default {
|
|
10
7
|
from: [
|
|
@@ -21,9 +18,7 @@ export default {
|
|
|
21
18
|
return createBlock(
|
|
22
19
|
'core/details',
|
|
23
20
|
{},
|
|
24
|
-
blocks.map( ( block ) =>
|
|
25
|
-
__experimentalCloneSanitizedBlock( block )
|
|
26
|
-
)
|
|
21
|
+
blocks.map( ( block ) => cloneSanitizedBlock( block ) )
|
|
27
22
|
);
|
|
28
23
|
},
|
|
29
24
|
},
|
package/src/editor.scss
CHANGED
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
@use "./social-link/editor.scss" as *;
|
|
49
49
|
@use "./social-links/editor.scss" as *;
|
|
50
50
|
@use "./spacer/editor.scss" as *;
|
|
51
|
+
@use "./tab-list/editor.scss" as *;
|
|
51
52
|
@use "./table/editor.scss" as *;
|
|
52
53
|
@use "./template-part/editor.scss" as *;
|
|
53
54
|
@use "./term-template/editor.scss" as *;
|
package/src/embed/edit.js
CHANGED
|
@@ -239,7 +239,9 @@ const EmbedEdit = ( props ) => {
|
|
|
239
239
|
value={ url }
|
|
240
240
|
cannotEmbed={ cannotEmbed }
|
|
241
241
|
onChange={ ( value ) => setURL( value ) }
|
|
242
|
-
fallback={
|
|
242
|
+
fallback={
|
|
243
|
+
onReplace ? () => fallback( url, onReplace ) : undefined
|
|
244
|
+
}
|
|
243
245
|
tryAgain={ () => {
|
|
244
246
|
invalidateResolution( 'getEmbedPreview', [ url ] );
|
|
245
247
|
} }
|
|
@@ -31,7 +31,6 @@ export default function EmbedPlaceholder( {
|
|
|
31
31
|
>
|
|
32
32
|
<form onSubmit={ onSubmit }>
|
|
33
33
|
<InputControl
|
|
34
|
-
__next40pxDefaultSize
|
|
35
34
|
type="url"
|
|
36
35
|
value={ value || '' }
|
|
37
36
|
className="wp-block-embed__placeholder-input"
|
|
@@ -71,13 +70,15 @@ export default function EmbedPlaceholder( {
|
|
|
71
70
|
>
|
|
72
71
|
{ _x( 'Try again', 'button label' ) }
|
|
73
72
|
</Button>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
{ fallback && (
|
|
74
|
+
<Button
|
|
75
|
+
__next40pxDefaultSize
|
|
76
|
+
variant="secondary"
|
|
77
|
+
onClick={ fallback }
|
|
78
|
+
>
|
|
79
|
+
{ _x( 'Convert to link', 'button label' ) }
|
|
80
|
+
</Button>
|
|
81
|
+
) }
|
|
81
82
|
</Stack>
|
|
82
83
|
</Stack>
|
|
83
84
|
) }
|
package/src/file/edit.js
CHANGED
|
@@ -77,14 +77,14 @@ function FileEdit( { attributes, isSelected, setAttributes, clientId } ) {
|
|
|
77
77
|
const [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );
|
|
78
78
|
const { media } = useSelect(
|
|
79
79
|
( select ) => ( {
|
|
80
|
-
media:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
media: !! id
|
|
81
|
+
? select( coreStore ).getEntityRecord(
|
|
82
|
+
'postType',
|
|
83
|
+
'attachment',
|
|
84
|
+
id,
|
|
85
|
+
{ context: 'view' }
|
|
86
|
+
)
|
|
87
|
+
: undefined,
|
|
88
88
|
} ),
|
|
89
89
|
[ id ]
|
|
90
90
|
);
|
package/src/file/transforms.js
CHANGED
|
@@ -11,6 +11,31 @@ import { getFilename } from '@wordpress/url';
|
|
|
11
11
|
// Transforms bypass the default variation, so set the localized default here.
|
|
12
12
|
const downloadButtonText = _x( 'Download', 'button label' );
|
|
13
13
|
|
|
14
|
+
// The File → audio/video/image transforms are identical apart from the target
|
|
15
|
+
// block, its media MIME type, and the src attribute name (image uses `url`).
|
|
16
|
+
const toMediaTransform = ( blockName, mediaType, srcAttribute ) => ( {
|
|
17
|
+
type: 'block',
|
|
18
|
+
blocks: [ blockName ],
|
|
19
|
+
isMatch: ( { id } ) => {
|
|
20
|
+
if ( ! id ) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const { getEntityRecord } = select( coreStore );
|
|
24
|
+
const media = getEntityRecord( 'postType', 'attachment', id, {
|
|
25
|
+
context: 'view',
|
|
26
|
+
} );
|
|
27
|
+
return !! media && media.mime_type.includes( mediaType );
|
|
28
|
+
},
|
|
29
|
+
transform: ( attributes ) => {
|
|
30
|
+
return createBlock( blockName, {
|
|
31
|
+
[ srcAttribute ]: attributes.href,
|
|
32
|
+
caption: attributes.fileName,
|
|
33
|
+
id: attributes.id,
|
|
34
|
+
anchor: attributes.anchor,
|
|
35
|
+
} );
|
|
36
|
+
},
|
|
37
|
+
} );
|
|
38
|
+
|
|
14
39
|
const transforms = {
|
|
15
40
|
from: [
|
|
16
41
|
{
|
|
@@ -78,66 +103,9 @@ const transforms = {
|
|
|
78
103
|
},
|
|
79
104
|
],
|
|
80
105
|
to: [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
isMatch: ( { id } ) => {
|
|
85
|
-
if ( ! id ) {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
const { getEntityRecord } = select( coreStore );
|
|
89
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
90
|
-
return !! media && media.mime_type.includes( 'audio' );
|
|
91
|
-
},
|
|
92
|
-
transform: ( attributes ) => {
|
|
93
|
-
return createBlock( 'core/audio', {
|
|
94
|
-
src: attributes.href,
|
|
95
|
-
caption: attributes.fileName,
|
|
96
|
-
id: attributes.id,
|
|
97
|
-
anchor: attributes.anchor,
|
|
98
|
-
} );
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
type: 'block',
|
|
103
|
-
blocks: [ 'core/video' ],
|
|
104
|
-
isMatch: ( { id } ) => {
|
|
105
|
-
if ( ! id ) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
const { getEntityRecord } = select( coreStore );
|
|
109
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
110
|
-
return !! media && media.mime_type.includes( 'video' );
|
|
111
|
-
},
|
|
112
|
-
transform: ( attributes ) => {
|
|
113
|
-
return createBlock( 'core/video', {
|
|
114
|
-
src: attributes.href,
|
|
115
|
-
caption: attributes.fileName,
|
|
116
|
-
id: attributes.id,
|
|
117
|
-
anchor: attributes.anchor,
|
|
118
|
-
} );
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'block',
|
|
123
|
-
blocks: [ 'core/image' ],
|
|
124
|
-
isMatch: ( { id } ) => {
|
|
125
|
-
if ( ! id ) {
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
const { getEntityRecord } = select( coreStore );
|
|
129
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
130
|
-
return !! media && media.mime_type.includes( 'image' );
|
|
131
|
-
},
|
|
132
|
-
transform: ( attributes ) => {
|
|
133
|
-
return createBlock( 'core/image', {
|
|
134
|
-
url: attributes.href,
|
|
135
|
-
caption: attributes.fileName,
|
|
136
|
-
id: attributes.id,
|
|
137
|
-
anchor: attributes.anchor,
|
|
138
|
-
} );
|
|
139
|
-
},
|
|
140
|
-
},
|
|
106
|
+
toMediaTransform( 'core/audio', 'audio', 'src' ),
|
|
107
|
+
toMediaTransform( 'core/video', 'video', 'src' ),
|
|
108
|
+
toMediaTransform( 'core/image', 'image', 'url' ),
|
|
141
109
|
],
|
|
142
110
|
};
|
|
143
111
|
|
package/src/form/index.php
CHANGED
|
@@ -20,12 +20,13 @@ function render_block_core_form( $attributes, $content ) {
|
|
|
20
20
|
$processed_content->next_tag( 'form' );
|
|
21
21
|
|
|
22
22
|
// Get the action for this form.
|
|
23
|
-
$action
|
|
24
|
-
|
|
23
|
+
$action = '';
|
|
24
|
+
$form_action = $attributes['action'] ?? null;
|
|
25
|
+
if ( is_string( $form_action ) ) {
|
|
25
26
|
$action = str_replace(
|
|
26
27
|
array( '{SITE_URL}', '{ADMIN_URL}' ),
|
|
27
28
|
array( site_url(), admin_url() ),
|
|
28
|
-
$
|
|
29
|
+
$form_action
|
|
29
30
|
);
|
|
30
31
|
}
|
|
31
32
|
$processed_content->set_attribute( 'action', esc_attr( $action ) );
|
|
@@ -55,7 +56,8 @@ function render_block_core_form( $attributes, $content ) {
|
|
|
55
56
|
* @return string The extra fields.
|
|
56
57
|
*/
|
|
57
58
|
function block_core_form_extra_fields_comment_form( $extra_fields, $attributes ) {
|
|
58
|
-
|
|
59
|
+
$form_action = $attributes['action'] ?? null;
|
|
60
|
+
if ( ! empty( $form_action ) && is_string( $form_action ) && str_ends_with( $form_action, '/wp-comments-post.php' ) ) {
|
|
59
61
|
$extra_fields .= '<input type="hidden" name="comment_post_ID" value="' . get_the_ID() . '" id="comment_post_ID">';
|
|
60
62
|
}
|
|
61
63
|
return $extra_fields;
|
package/src/gallery/README.md
CHANGED
|
@@ -47,7 +47,7 @@ _Defined via the [`supports`](https://developer.wordpress.org/block-editor/refer
|
|
|
47
47
|
- [`spacing`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#spacing):
|
|
48
48
|
- `margin`: `true`
|
|
49
49
|
- `padding`: `true`
|
|
50
|
-
- `blockGap`: `["horizontal","vertical"]`
|
|
50
|
+
- `blockGap`: `{"sides":["horizontal","vertical"],"__experimentalDefault":"var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )"}`
|
|
51
51
|
- [`color`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color):
|
|
52
52
|
- [`text`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-text): `false`
|
|
53
53
|
- [`background`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-background): `true`
|
package/src/gallery/block.json
CHANGED
|
@@ -142,8 +142,10 @@
|
|
|
142
142
|
"spacing": {
|
|
143
143
|
"margin": true,
|
|
144
144
|
"padding": true,
|
|
145
|
-
"blockGap":
|
|
146
|
-
|
|
145
|
+
"blockGap": {
|
|
146
|
+
"sides": [ "horizontal", "vertical" ],
|
|
147
|
+
"__experimentalDefault": "var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )"
|
|
148
|
+
},
|
|
147
149
|
"__experimentalDefaultControls": {
|
|
148
150
|
"blockGap": true,
|
|
149
151
|
"margin": false,
|