@wordpress/block-library 10.5.2-next.v.202608281122.0 → 11.0.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 +19 -1
- package/build/audio/edit.cjs +5 -5
- package/build/audio/edit.cjs.map +2 -2
- package/build/audio/index.cjs +0 -37
- package/build/audio/index.cjs.map +3 -3
- package/build/button/index.cjs +0 -34
- package/build/button/index.cjs.map +3 -3
- package/build/code/index.cjs +0 -17
- package/build/code/index.cjs.map +3 -3
- package/build/comment-template/edit.cjs.map +1 -1
- package/build/cover/index.cjs +0 -38
- package/build/cover/index.cjs.map +3 -3
- package/build/details/index.cjs +0 -17
- package/build/details/index.cjs.map +3 -3
- package/build/file/index.cjs +0 -43
- package/build/file/index.cjs.map +3 -3
- package/build/footnotes/format.cjs +1 -1
- package/build/footnotes/format.cjs.map +2 -2
- package/build/gallery/dynamic-gallery.cjs +22 -12
- package/build/gallery/dynamic-gallery.cjs.map +2 -2
- package/build/heading/index.cjs +0 -16
- package/build/heading/index.cjs.map +3 -3
- package/build/image/image.cjs +7 -5
- package/build/image/image.cjs.map +2 -2
- package/build/image/index.cjs +0 -81
- package/build/image/index.cjs.map +3 -3
- package/build/image/use-open-image-media-editor-modal.cjs +81 -14
- package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
- package/build/index.cjs +0 -10
- package/build/index.cjs.map +2 -2
- package/build/latest-posts/edit.cjs.map +1 -1
- package/build/list-item/edit.cjs +14 -11
- package/build/list-item/edit.cjs.map +2 -2
- package/build/list-item/hooks/index.cjs +6 -9
- package/build/list-item/hooks/index.cjs.map +2 -2
- package/build/list-item/hooks/use-enter.cjs +62 -67
- package/build/list-item/hooks/use-enter.cjs.map +3 -3
- package/build/list-item/hooks/use-merge.cjs +26 -44
- package/build/list-item/hooks/use-merge.cjs.map +3 -3
- package/build/list-item/hooks/use-multi-select-tab.cjs +80 -0
- package/build/list-item/hooks/use-multi-select-tab.cjs.map +7 -0
- package/build/list-item/hooks/use-tab.cjs +65 -0
- package/build/list-item/hooks/use-tab.cjs.map +7 -0
- package/build/list-item/index.cjs +0 -17
- package/build/list-item/index.cjs.map +3 -3
- package/build/list-item/utils.cjs +169 -0
- package/build/list-item/utils.cjs.map +7 -0
- package/build/math/block.json +3 -0
- package/build/media-text/index.cjs +0 -50
- package/build/media-text/index.cjs.map +3 -3
- package/build/media-text/media-container.cjs +16 -11
- package/build/media-text/media-container.cjs.map +2 -2
- package/build/more/index.cjs +0 -18
- package/build/more/index.cjs.map +3 -3
- package/build/navigation/constants.cjs +1 -1
- package/build/navigation/constants.cjs.map +1 -1
- package/build/navigation-link/block.json +1 -1
- package/build/navigation-link/deprecated.cjs +69 -0
- package/build/navigation-link/deprecated.cjs.map +7 -0
- package/build/navigation-link/index.cjs +6 -74
- package/build/navigation-link/index.cjs.map +4 -4
- package/build/{form-submit-button/init.cjs → navigation-link/variations.cjs} +23 -8
- package/build/navigation-link/variations.cjs.map +7 -0
- package/build/navigation-submenu/index.cjs +0 -32
- package/build/navigation-submenu/index.cjs.map +3 -3
- package/build/paragraph/index.cjs +0 -17
- package/build/paragraph/index.cjs.map +3 -3
- package/build/paragraph/use-enter.cjs +8 -4
- package/build/paragraph/use-enter.cjs.map +2 -2
- package/build/post-template/edit.cjs +3 -1
- package/build/post-template/edit.cjs.map +2 -2
- package/build/preformatted/index.cjs +0 -17
- package/build/preformatted/index.cjs.map +3 -3
- package/build/pullquote/index.cjs +0 -24
- package/build/pullquote/index.cjs.map +3 -3
- package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs +13 -5
- package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs.map +2 -2
- package/build/query/edit/inspector-controls/index.cjs +9 -4
- package/build/query/edit/inspector-controls/index.cjs.map +2 -2
- package/build/query/edit/query-content.cjs +30 -9
- package/build/query/edit/query-content.cjs.map +3 -3
- package/build/query/utils.cjs +11 -4
- package/build/query/utils.cjs.map +2 -2
- package/build/search/edit.cjs +3 -1
- package/build/search/edit.cjs.map +2 -2
- package/build/search/index.cjs +0 -31
- package/build/search/index.cjs.map +3 -3
- package/build/site-tagline/edit.cjs +11 -17
- package/build/site-tagline/edit.cjs.map +2 -2
- package/build/site-title/edit.cjs +12 -18
- package/build/site-title/edit.cjs.map +2 -2
- package/build/social-link/index.cjs +0 -31
- package/build/social-link/index.cjs.map +3 -3
- package/build/verse/index.cjs +0 -17
- package/build/verse/index.cjs.map +3 -3
- package/build/video/index.cjs +0 -40
- package/build/video/index.cjs.map +3 -3
- package/build/video/tracks-editor.cjs +2 -3
- package/build/video/tracks-editor.cjs.map +3 -3
- package/build-module/audio/edit.mjs +5 -5
- package/build-module/audio/edit.mjs.map +2 -2
- package/build-module/audio/index.mjs +0 -37
- package/build-module/audio/index.mjs.map +2 -2
- package/build-module/button/index.mjs +0 -34
- package/build-module/button/index.mjs.map +2 -2
- package/build-module/code/index.mjs +0 -17
- package/build-module/code/index.mjs.map +2 -2
- package/build-module/comment-template/edit.mjs.map +1 -1
- package/build-module/cover/index.mjs +0 -38
- package/build-module/cover/index.mjs.map +2 -2
- package/build-module/details/index.mjs +0 -17
- package/build-module/details/index.mjs.map +2 -2
- package/build-module/file/index.mjs +1 -44
- package/build-module/file/index.mjs.map +2 -2
- package/build-module/footnotes/format.mjs +1 -1
- package/build-module/footnotes/format.mjs.map +2 -2
- package/build-module/gallery/dynamic-gallery.mjs +23 -13
- package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
- package/build-module/heading/index.mjs +1 -21
- package/build-module/heading/index.mjs.map +2 -2
- package/build-module/image/image.mjs +7 -5
- package/build-module/image/image.mjs.map +2 -2
- package/build-module/image/index.mjs +0 -81
- package/build-module/image/index.mjs.map +2 -2
- package/build-module/image/use-open-image-media-editor-modal.mjs +84 -14
- package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
- package/build-module/index.mjs +0 -10
- package/build-module/index.mjs.map +2 -2
- package/build-module/latest-posts/edit.mjs.map +1 -1
- package/build-module/list-item/edit.mjs +20 -18
- package/build-module/list-item/edit.mjs.map +2 -2
- package/build-module/list-item/hooks/index.mjs +8 -10
- package/build-module/list-item/hooks/index.mjs.map +2 -2
- package/build-module/list-item/hooks/use-enter.mjs +63 -58
- package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
- package/build-module/list-item/hooks/use-merge.mjs +27 -35
- package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
- package/build-module/list-item/hooks/use-multi-select-tab.mjs +59 -0
- package/build-module/list-item/hooks/use-multi-select-tab.mjs.map +7 -0
- package/build-module/list-item/hooks/use-tab.mjs +44 -0
- package/build-module/list-item/hooks/use-tab.mjs.map +7 -0
- package/build-module/list-item/index.mjs +0 -17
- package/build-module/list-item/index.mjs.map +2 -2
- package/build-module/list-item/utils.mjs +140 -0
- package/build-module/list-item/utils.mjs.map +7 -0
- package/build-module/math/block.json +3 -0
- package/build-module/media-text/index.mjs +0 -50
- package/build-module/media-text/index.mjs.map +2 -2
- package/build-module/media-text/media-container.mjs +17 -12
- package/build-module/media-text/media-container.mjs.map +2 -2
- package/build-module/more/index.mjs +0 -18
- package/build-module/more/index.mjs.map +2 -2
- package/build-module/navigation/constants.mjs +1 -1
- package/build-module/navigation/constants.mjs.map +1 -1
- package/build-module/navigation-link/block.json +1 -1
- package/build-module/navigation-link/deprecated.mjs +48 -0
- package/build-module/navigation-link/deprecated.mjs.map +7 -0
- package/build-module/navigation-link/index.mjs +7 -75
- package/build-module/navigation-link/index.mjs.map +3 -3
- package/build-module/navigation-link/variations.mjs +22 -0
- package/build-module/navigation-link/variations.mjs.map +7 -0
- package/build-module/navigation-submenu/index.mjs +1 -33
- package/build-module/navigation-submenu/index.mjs.map +2 -2
- package/build-module/paragraph/index.mjs +0 -17
- package/build-module/paragraph/index.mjs.map +2 -2
- package/build-module/paragraph/use-enter.mjs +8 -4
- package/build-module/paragraph/use-enter.mjs.map +2 -2
- package/build-module/post-template/edit.mjs +3 -1
- package/build-module/post-template/edit.mjs.map +2 -2
- package/build-module/preformatted/index.mjs +0 -17
- package/build-module/preformatted/index.mjs.map +2 -2
- package/build-module/pullquote/index.mjs +0 -24
- package/build-module/pullquote/index.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs +14 -6
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/index.mjs +9 -4
- package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
- package/build-module/query/edit/query-content.mjs +32 -11
- package/build-module/query/edit/query-content.mjs.map +2 -2
- package/build-module/query/utils.mjs +10 -7
- package/build-module/query/utils.mjs.map +2 -2
- package/build-module/search/edit.mjs +4 -2
- package/build-module/search/edit.mjs.map +2 -2
- package/build-module/search/index.mjs +0 -31
- package/build-module/search/index.mjs.map +2 -2
- package/build-module/site-tagline/edit.mjs +13 -19
- package/build-module/site-tagline/edit.mjs.map +2 -2
- package/build-module/site-title/edit.mjs +14 -20
- package/build-module/site-title/edit.mjs.map +2 -2
- package/build-module/social-link/index.mjs +0 -31
- package/build-module/social-link/index.mjs.map +2 -2
- package/build-module/verse/index.mjs +0 -17
- package/build-module/verse/index.mjs.map +2 -2
- package/build-module/video/index.mjs +0 -40
- package/build-module/video/index.mjs.map +2 -2
- package/build-module/video/tracks-editor.mjs +3 -5
- package/build-module/video/tracks-editor.mjs.map +2 -2
- package/build-style/columns/style-rtl.css +1 -1
- package/build-style/columns/style.css +1 -1
- package/build-style/comment-template/style-rtl.css +0 -1
- package/build-style/comment-template/style.css +0 -1
- package/build-style/cover/style-rtl.css +1 -2
- package/build-style/cover/style.css +1 -2
- package/build-style/editor-rtl.css +20 -81
- package/build-style/editor.css +20 -81
- package/build-style/gallery/style-rtl.css +2 -4
- package/build-style/gallery/style.css +2 -4
- package/build-style/group/theme-rtl.css +1 -1
- package/build-style/group/theme.css +1 -1
- package/build-style/heading/style-rtl.css +1 -1
- package/build-style/heading/style.css +1 -1
- package/build-style/icon/style-rtl.css +3 -0
- package/build-style/icon/style.css +3 -0
- package/build-style/image/editor-rtl.css +0 -1
- package/build-style/image/editor.css +0 -1
- package/build-style/list/style-rtl.css +1 -1
- package/build-style/list/style.css +1 -1
- package/build-style/media-text/style-rtl.css +2 -3
- package/build-style/media-text/style.css +2 -3
- package/build-style/navigation/editor-rtl.css +8 -0
- package/build-style/navigation/editor.css +8 -0
- package/build-style/paragraph/style-rtl.css +1 -1
- package/build-style/paragraph/style.css +1 -1
- package/build-style/playlist/style-rtl.css +1 -2
- package/build-style/playlist/style.css +1 -2
- package/build-style/playlist-track/style-rtl.css +1 -2
- package/build-style/playlist-track/style.css +1 -2
- package/build-style/preformatted/style-rtl.css +1 -1
- package/build-style/preformatted/style.css +1 -1
- package/build-style/query/editor-rtl.css +5 -15
- package/build-style/query/editor.css +5 -15
- package/build-style/read-more/style-rtl.css +0 -1
- package/build-style/read-more/style.css +0 -1
- package/build-style/reset-rtl.css +1 -3
- package/build-style/reset.css +1 -3
- package/build-style/search/style-rtl.css +1 -3
- package/build-style/search/style.css +1 -3
- package/build-style/site-logo/editor-rtl.css +1 -2
- package/build-style/site-logo/editor.css +1 -2
- package/build-style/style-rtl.css +18 -77
- package/build-style/style.css +18 -77
- package/build-style/tab-list/style-rtl.css +1 -3
- package/build-style/tab-list/style.css +1 -3
- package/build-style/template-part/editor-rtl.css +4 -8
- package/build-style/template-part/editor.css +4 -8
- package/build-style/template-part/theme-rtl.css +1 -1
- package/build-style/template-part/theme.css +1 -1
- package/build-style/theme-rtl.css +2 -2
- package/build-style/theme.css +2 -2
- package/build-style/video/style-rtl.css +1 -2
- package/build-style/video/style.css +1 -2
- package/build-types/navigation-link/deprecated.d.ts +48 -0
- package/build-types/navigation-link/deprecated.d.ts.map +1 -0
- package/package.json +43 -43
- package/src/accordion/index.php +2 -2
- package/src/accordion-item/index.php +1 -1
- package/src/audio/edit.jsx +6 -7
- package/src/audio/index.js +0 -37
- package/src/breadcrumbs/index.php +4 -4
- package/src/button/index.js +0 -34
- package/src/button/style.scss +16 -15
- package/src/button/test/{get-experimental-label.js → get-experimental-label.jsdom.test.js} +1 -0
- package/src/button/test/get-updated-link-attributes.js +1 -0
- package/src/button/test/utils.js +1 -0
- package/src/categories/index.php +4 -0
- package/src/code/index.js +0 -18
- package/src/code/test/utils.js +1 -0
- package/src/columns/style.scss +2 -1
- package/src/columns/test/{transforms.js → transforms.jsdom.test.js} +1 -0
- package/src/columns/test/utils.js +1 -0
- package/src/comment-template/edit.jsx +1 -1
- package/src/comment-template/index.php +2 -2
- package/src/comment-template/test/index.js +1 -0
- package/src/common.scss +51 -50
- package/src/cover/README.md +37 -0
- package/src/cover/index.js +0 -39
- package/src/cover/style.scss +3 -3
- package/src/cover/test/{edit.js → edit.jsdom.test.js} +18 -17
- package/src/cover/test/{transforms.js → transforms.jsdom.test.js} +1 -0
- package/src/details/index.js +0 -18
- package/src/editor.scss +0 -2
- package/src/embed/editor.scss +1 -0
- package/src/embed/test/{index.js → index.jsdom.test.js} +5 -1
- package/src/file/index.js +1 -43
- package/src/footnotes/format.jsx +5 -1
- package/src/gallery/dynamic-gallery.jsx +31 -4
- package/src/gallery/test/dynamic-source.js +1 -0
- package/src/gallery/test/{edit.js → edit.jsdom.test.js} +4 -0
- package/src/gallery/test/responsive-styles.js +1 -0
- package/src/gallery/test/shared.js +1 -0
- package/src/gallery/test/{transforms.js → transforms.jsdom.test.js} +1 -0
- package/src/gallery/test/{use-get-new-images.jsx → use-get-new-images.jsdom.test.jsx} +1 -0
- package/src/gallery/test/variations.js +1 -0
- package/src/group/test/{placeholder.jsx → placeholder.jsdom.test.jsx} +1 -0
- package/src/group/theme.scss +1 -1
- package/src/heading/index.js +1 -22
- package/src/heading/index.php +1 -1
- package/src/heading/style.scss +1 -1
- package/src/heading/test/shared.js +1 -0
- package/src/home-link/index.php +2 -2
- package/src/html/test/{index.js → index.jsdom.test.js} +9 -0
- package/src/html/test/{utils.js → utils.jsdom.test.js} +1 -0
- package/src/icon/index.php +18 -6
- package/src/icon/style.scss +7 -0
- package/src/image/image.jsx +18 -11
- package/src/image/index.js +0 -80
- package/src/image/test/{transforms.js → transforms.jsdom.test.js} +1 -0
- package/src/image/test/{use-open-image-media-editor-modal.js → use-open-image-media-editor-modal.jsdom.test.js} +343 -28
- package/src/image/use-open-image-media-editor-modal.js +184 -21
- package/src/index.jsx +0 -11
- package/src/latest-posts/edit.jsx +1 -1
- package/src/latest-posts/test/{deprecated.js → deprecated.jsdom.test.js} +1 -0
- package/src/list/index.php +1 -1
- package/src/list/style.scss +1 -1
- package/src/list-item/edit.jsx +20 -20
- package/src/list-item/hooks/index.js +2 -3
- package/src/list-item/hooks/use-enter.js +82 -70
- package/src/list-item/hooks/use-merge.js +28 -36
- package/src/list-item/hooks/use-multi-select-tab.js +83 -0
- package/src/list-item/hooks/use-tab.js +62 -0
- package/src/list-item/index.js +0 -18
- package/src/list-item/utils.js +236 -0
- package/src/math/README.md +2 -0
- package/src/math/block.json +3 -0
- package/src/media-text/index.js +0 -50
- package/src/media-text/media-container.jsx +22 -12
- package/src/media-text/style.scss +2 -1
- package/src/media-text/test/image-fill.js +1 -0
- package/src/more/index.js +0 -19
- package/src/navigation/constants.js +1 -1
- package/src/navigation/edit/test/are-blocks-dirty.js +1 -0
- package/src/navigation/edit/test/{layout-custom-properties.js → layout-custom-properties.jsdom.test.js} +8 -7
- package/src/navigation/edit/test/{navigation-menu-selector.jsx → navigation-menu-selector.jsdom.test.jsx} +23 -14
- package/src/navigation/edit/test/{overlay-template-part-selector.jsx → overlay-template-part-selector.jsdom.test.jsx} +22 -20
- package/src/navigation/edit/test/{responsive-wrapper.jsx → responsive-wrapper.jsdom.test.jsx} +14 -13
- package/src/navigation/edit/test/{use-create-overlay.js → use-create-overlay.jsdom.test.js} +19 -24
- package/src/navigation/edit/test/utils.js +1 -0
- package/src/navigation/editor.scss +13 -0
- package/src/navigation/index.php +14 -14
- package/src/navigation/test/{menu-items-to-blocks.js → menu-items-to-blocks.jsdom.test.js} +3 -2
- package/src/navigation/test/{use-navigation-menu.js → use-navigation-menu.jsdom.test.js} +7 -4
- package/src/navigation/test/{view.js → view.jsdom.test.js} +4 -2
- package/src/navigation-link/block.json +1 -1
- package/src/navigation-link/deprecated.tsx +58 -0
- package/src/navigation-link/{index.jsx → index.js} +5 -77
- package/src/navigation-link/index.php +5 -5
- package/src/navigation-link/shared/test/{controls.jsx → controls.jsdom.test.jsx} +18 -18
- package/src/navigation-link/shared/test/update-attributes.test.js +52 -51
- package/src/navigation-link/shared/test/{use-enable-link-status-validation.test.js → use-enable-link-status-validation.jsdom.test.js} +8 -6
- package/src/navigation-link/shared/test/{use-entity-binding.js → use-entity-binding.jsdom.test.js} +12 -11
- package/src/navigation-link/shared/test/{use-handle-link-change.test.js → use-handle-link-change.jsdom.test.js} +23 -20
- package/src/navigation-link/shared/test/{use-link-preview.test.js → use-link-preview.jsdom.test.js} +17 -14
- package/src/navigation-link/test/__snapshots__/{hooks.js.snap → hooks.jsdom.test.js.snap} +23 -6
- package/src/navigation-link/test/block-labelling.js +1 -0
- package/src/navigation-link/test/{hooks.js → hooks.jsdom.test.js} +1 -0
- package/src/navigation-link/variations.js +19 -0
- package/src/navigation-submenu/index.js +1 -33
- package/src/page-list/index.php +10 -10
- package/src/page-list/test/{convert-to-navigation-links.js → convert-to-navigation-links.jsdom.test.js} +3 -2
- package/src/paragraph/index.js +0 -18
- package/src/paragraph/style.scss +1 -1
- package/src/paragraph/use-enter.js +13 -6
- package/src/pattern/test/index.js +1 -0
- package/src/playlist/test/{edit-component.jsx → edit-component.jsdom.test.jsx} +31 -30
- package/src/playlist/test/{edit.js → edit.jsdom.test.js} +1 -0
- package/src/playlist/test/{transforms.js → transforms.jsdom.test.js} +1 -0
- package/src/playlist-track/test/{edit.jsx → edit.jsdom.test.jsx} +20 -19
- package/src/post-author/index.php +3 -3
- package/src/post-author-biography/index.php +3 -3
- package/src/post-author-name/index.php +3 -3
- package/src/post-comments-link/index.php +4 -4
- package/src/post-date/test/{edit.js → edit.jsdom.test.js} +1 -0
- package/src/post-template/edit.jsx +3 -1
- package/src/post-time-to-read/index.php +3 -3
- package/src/post-title/style.scss +1 -0
- package/src/preformatted/index.js +0 -18
- package/src/preformatted/style.scss +1 -1
- package/src/pullquote/index.js +0 -24
- package/src/query/edit/inspector-controls/enhanced-pagination-control.jsx +13 -6
- package/src/query/edit/inspector-controls/index.jsx +9 -4
- package/src/query/edit/query-content.jsx +31 -8
- package/src/query/editor.scss +1 -7
- package/src/query/index.php +2 -2
- package/src/query/test/{utils.js → utils.jsdom.test.js} +1 -0
- package/src/query/utils.js +15 -11
- package/src/quote/test/{migrate.js → migrate.jsdom.test.js} +1 -0
- package/src/read-more/index.php +1 -1
- package/src/search/edit.jsx +12 -2
- package/src/search/index.js +0 -30
- package/src/search/index.php +1 -1
- package/src/separator/test/{edit.jsx → edit.jsdom.test.jsx} +5 -4
- package/src/site-logo/index.php +1 -1
- package/src/site-tagline/edit.jsx +18 -27
- package/src/site-title/edit.jsx +20 -27
- package/src/social-link/index.js +0 -32
- package/src/social-link/index.php +0 -1
- package/src/style.scss +0 -1
- package/src/table/editor.scss +1 -0
- package/src/table/style.scss +2 -0
- package/src/table/test/state.js +1 -0
- package/src/table/test/utils.js +1 -0
- package/src/table-of-contents/index.php +3 -3
- package/src/template-part/theme.scss +1 -1
- package/src/utils/test/search-patterns.js +1 -0
- package/src/utils/test/{style-state.js → style-state.jsdom.test.js} +1 -0
- package/src/utils/test/{waveform-player-dependency.js → waveform-player-dependency.jsdom.test.js} +15 -21
- package/src/verse/index.js +0 -18
- package/src/verse/style.scss +1 -0
- package/src/video/index.js +0 -40
- package/src/video/test/variations.js +1 -0
- package/src/video/tracks-editor.jsx +4 -5
- package/build/form/block.json +0 -65
- package/build/form/deprecated.cjs +0 -111
- package/build/form/deprecated.cjs.map +0 -7
- package/build/form/edit.cjs +0 -180
- package/build/form/edit.cjs.map +0 -7
- package/build/form/icons.cjs +0 -33
- package/build/form/icons.cjs.map +0 -7
- package/build/form/index.cjs +0 -118
- package/build/form/index.cjs.map +0 -7
- package/build/form/init.cjs +0 -28
- package/build/form/init.cjs.map +0 -7
- package/build/form/save.cjs +0 -40
- package/build/form/save.cjs.map +0 -7
- package/build/form/utils.cjs +0 -61
- package/build/form/utils.cjs.map +0 -7
- package/build/form/variations.cjs +0 -152
- package/build/form/variations.cjs.map +0 -7
- package/build/form/view.cjs +0 -48
- package/build/form/view.cjs.map +0 -7
- package/build/form-input/block.json +0 -72
- package/build/form-input/deprecated.cjs +0 -252
- package/build/form-input/deprecated.cjs.map +0 -7
- package/build/form-input/edit.cjs +0 -206
- package/build/form-input/edit.cjs.map +0 -7
- package/build/form-input/icons.cjs +0 -33
- package/build/form-input/icons.cjs.map +0 -7
- package/build/form-input/index.cjs +0 -63
- package/build/form-input/index.cjs.map +0 -7
- package/build/form-input/init.cjs +0 -28
- package/build/form-input/init.cjs.map +0 -7
- package/build/form-input/save.cjs +0 -88
- package/build/form-input/save.cjs.map +0 -7
- package/build/form-input/variations.cjs +0 -105
- package/build/form-input/variations.cjs.map +0 -7
- package/build/form-submission-notification/block.json +0 -19
- package/build/form-submission-notification/edit.cjs +0 -71
- package/build/form-submission-notification/edit.cjs.map +0 -7
- package/build/form-submission-notification/index.cjs +0 -73
- package/build/form-submission-notification/index.cjs.map +0 -7
- package/build/form-submission-notification/init.cjs +0 -28
- package/build/form-submission-notification/init.cjs.map +0 -7
- package/build/form-submission-notification/save.cjs +0 -54
- package/build/form-submission-notification/save.cjs.map +0 -7
- package/build/form-submission-notification/variations.cjs +0 -78
- package/build/form-submission-notification/variations.cjs.map +0 -7
- package/build/form-submit-button/block.json +0 -15
- package/build/form-submit-button/edit.cjs +0 -36
- package/build/form-submit-button/edit.cjs.map +0 -7
- package/build/form-submit-button/index.cjs +0 -75
- package/build/form-submit-button/index.cjs.map +0 -7
- package/build/form-submit-button/init.cjs.map +0 -7
- package/build/form-submit-button/save.cjs +0 -32
- package/build/form-submit-button/save.cjs.map +0 -7
- package/build/list-item/hooks/use-indent-list-item.cjs +0 -79
- package/build/list-item/hooks/use-indent-list-item.cjs.map +0 -7
- package/build/list-item/hooks/use-outdent-list-item.cjs +0 -106
- package/build/list-item/hooks/use-outdent-list-item.cjs.map +0 -7
- package/build/list-item/hooks/use-space.cjs +0 -83
- package/build/list-item/hooks/use-space.cjs.map +0 -7
- package/build/query/edit/enhanced-pagination-modal.cjs +0 -89
- package/build/query/edit/enhanced-pagination-modal.cjs.map +0 -7
- package/build-module/form/block.json +0 -65
- package/build-module/form/deprecated.mjs +0 -96
- package/build-module/form/deprecated.mjs.map +0 -7
- package/build-module/form/edit.mjs +0 -170
- package/build-module/form/edit.mjs.map +0 -7
- package/build-module/form/icons.mjs +0 -8
- package/build-module/form/icons.mjs.map +0 -7
- package/build-module/form/index.mjs +0 -83
- package/build-module/form/index.mjs.map +0 -7
- package/build-module/form/init.mjs +0 -7
- package/build-module/form/init.mjs.map +0 -7
- package/build-module/form/save.mjs +0 -19
- package/build-module/form/save.mjs.map +0 -7
- package/build-module/form/utils.mjs +0 -35
- package/build-module/form/utils.mjs.map +0 -7
- package/build-module/form/variations.mjs +0 -134
- package/build-module/form/variations.mjs.map +0 -7
- package/build-module/form/view.mjs +0 -46
- package/build-module/form/view.mjs.map +0 -7
- package/build-module/form-input/block.json +0 -72
- package/build-module/form-input/deprecated.mjs +0 -226
- package/build-module/form-input/deprecated.mjs.map +0 -7
- package/build-module/form-input/edit.mjs +0 -186
- package/build-module/form-input/edit.mjs.map +0 -7
- package/build-module/form-input/icons.mjs +0 -8
- package/build-module/form-input/icons.mjs.map +0 -7
- package/build-module/form-input/index.mjs +0 -25
- package/build-module/form-input/index.mjs.map +0 -7
- package/build-module/form-input/init.mjs +0 -7
- package/build-module/form-input/init.mjs.map +0 -7
- package/build-module/form-input/save.mjs +0 -62
- package/build-module/form-input/save.mjs.map +0 -7
- package/build-module/form-input/variations.mjs +0 -84
- package/build-module/form-input/variations.mjs.map +0 -7
- package/build-module/form-submission-notification/block.json +0 -19
- package/build-module/form-submission-notification/edit.mjs +0 -45
- package/build-module/form-submission-notification/edit.mjs.map +0 -7
- package/build-module/form-submission-notification/index.mjs +0 -35
- package/build-module/form-submission-notification/index.mjs.map +0 -7
- package/build-module/form-submission-notification/init.mjs +0 -7
- package/build-module/form-submission-notification/init.mjs.map +0 -7
- package/build-module/form-submission-notification/save.mjs +0 -23
- package/build-module/form-submission-notification/save.mjs.map +0 -7
- package/build-module/form-submission-notification/variations.mjs +0 -57
- package/build-module/form-submission-notification/variations.mjs.map +0 -7
- package/build-module/form-submit-button/block.json +0 -15
- package/build-module/form-submit-button/edit.mjs +0 -15
- package/build-module/form-submit-button/edit.mjs.map +0 -7
- package/build-module/form-submit-button/index.mjs +0 -37
- package/build-module/form-submit-button/index.mjs.map +0 -7
- package/build-module/form-submit-button/init.mjs +0 -7
- package/build-module/form-submit-button/init.mjs.map +0 -7
- package/build-module/form-submit-button/save.mjs +0 -11
- package/build-module/form-submit-button/save.mjs.map +0 -7
- package/build-module/list-item/hooks/use-indent-list-item.mjs +0 -58
- package/build-module/list-item/hooks/use-indent-list-item.mjs.map +0 -7
- package/build-module/list-item/hooks/use-outdent-list-item.mjs +0 -85
- package/build-module/list-item/hooks/use-outdent-list-item.mjs.map +0 -7
- package/build-module/list-item/hooks/use-space.mjs +0 -52
- package/build-module/list-item/hooks/use-space.mjs.map +0 -7
- package/build-module/query/edit/enhanced-pagination-modal.mjs +0 -72
- package/build-module/query/edit/enhanced-pagination-modal.mjs.map +0 -7
- package/build-style/form-input/editor-rtl.css +0 -19
- package/build-style/form-input/editor.css +0 -19
- package/build-style/form-input/style-rtl.css +0 -48
- package/build-style/form-input/style.css +0 -48
- package/build-style/form-submission-notification/editor-rtl.css +0 -30
- package/build-style/form-submission-notification/editor.css +0 -30
- package/build-style/form-submit-button/style-rtl.css +0 -3
- package/build-style/form-submit-button/style.css +0 -3
- package/src/form/README.md +0 -90
- package/src/form/block.json +0 -65
- package/src/form/deprecated.jsx +0 -93
- package/src/form/edit.jsx +0 -169
- package/src/form/icons.jsx +0 -7
- package/src/form/index.js +0 -91
- package/src/form/index.php +0 -197
- package/src/form/init.js +0 -3
- package/src/form/save.jsx +0 -15
- package/src/form/utils.js +0 -36
- package/src/form/variations.js +0 -133
- package/src/form/view.js +0 -54
- package/src/form-input/README.md +0 -74
- package/src/form-input/block.json +0 -72
- package/src/form-input/deprecated.jsx +0 -248
- package/src/form-input/edit.jsx +0 -187
- package/src/form-input/editor.scss +0 -24
- package/src/form-input/icons.jsx +0 -7
- package/src/form-input/index.js +0 -22
- package/src/form-input/index.php +0 -47
- package/src/form-input/init.js +0 -3
- package/src/form-input/save.jsx +0 -89
- package/src/form-input/style.scss +0 -64
- package/src/form-input/variations.js +0 -82
- package/src/form-submission-notification/README.md +0 -50
- package/src/form-submission-notification/block.json +0 -19
- package/src/form-submission-notification/edit.jsx +0 -44
- package/src/form-submission-notification/editor.scss +0 -45
- package/src/form-submission-notification/index.js +0 -33
- package/src/form-submission-notification/index.php +0 -48
- package/src/form-submission-notification/init.js +0 -3
- package/src/form-submission-notification/save.jsx +0 -18
- package/src/form-submission-notification/variations.js +0 -56
- package/src/form-submit-button/README.md +0 -54
- package/src/form-submit-button/block.json +0 -15
- package/src/form-submit-button/edit.jsx +0 -12
- package/src/form-submit-button/index.js +0 -35
- package/src/form-submit-button/init.js +0 -3
- package/src/form-submit-button/save.jsx +0 -10
- package/src/form-submit-button/style.scss +0 -3
- package/src/list-item/hooks/use-indent-list-item.js +0 -73
- package/src/list-item/hooks/use-outdent-list-item.js +0 -100
- package/src/list-item/hooks/use-space.js +0 -66
- package/src/query/edit/enhanced-pagination-modal.jsx +0 -77
- /package/src/utils/test/{waveform-player.jsx → waveform-player.jsdom.test.jsx} +0 -0
- /package/src/utils/test/{waveform-utils.js → waveform-utils.jsdom.test.js} +0 -0
|
@@ -7,6 +7,11 @@ import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
|
7
7
|
import { useRegistry, useSelect } from '@wordpress/data';
|
|
8
8
|
import { useCallback, useEffect, useRef } from '@wordpress/element';
|
|
9
9
|
import { unlock } from '../lock-unlock';
|
|
10
|
+
import {
|
|
11
|
+
DEFAULT_MEDIA_SIZE_SLUG,
|
|
12
|
+
LINK_DESTINATION_ATTACHMENT,
|
|
13
|
+
LINK_DESTINATION_MEDIA,
|
|
14
|
+
} from './constants';
|
|
10
15
|
|
|
11
16
|
function normalizeImageBlockCaption( caption ) {
|
|
12
17
|
if ( typeof caption !== 'string' ) {
|
|
@@ -96,6 +101,107 @@ export function getSyncedImageBlockAttributes(
|
|
|
96
101
|
return syncedAttributes;
|
|
97
102
|
}
|
|
98
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Resolves the attributes needed to keep the selected image size on a new
|
|
106
|
+
* attachment.
|
|
107
|
+
*
|
|
108
|
+
* WordPress skips generating a sub-size larger than the file itself, so the
|
|
109
|
+
* selected size may not exist on the edited image; fall back to full when it
|
|
110
|
+
* doesn't.
|
|
111
|
+
*
|
|
112
|
+
* @param {string|undefined} sizeSlug The block's currently selected size.
|
|
113
|
+
* @param {Object} attachment The new attachment record.
|
|
114
|
+
*
|
|
115
|
+
* @return {Object|undefined} Attributes to apply, if any.
|
|
116
|
+
*/
|
|
117
|
+
function getNewAttachmentSizeAttributes( sizeSlug, attachment ) {
|
|
118
|
+
const sizes = attachment.media_details?.sizes;
|
|
119
|
+
|
|
120
|
+
if ( ! sizeSlug || sizeSlug === DEFAULT_MEDIA_SIZE_SLUG || ! sizes ) {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const sizeUrl = sizes[ sizeSlug ]?.source_url;
|
|
125
|
+
|
|
126
|
+
if ( sizeUrl ) {
|
|
127
|
+
return { url: sizeUrl };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const fullUrl = attachment.source_url ?? sizes.full?.source_url;
|
|
131
|
+
|
|
132
|
+
return fullUrl
|
|
133
|
+
? { url: fullUrl, sizeSlug: DEFAULT_MEDIA_SIZE_SLUG }
|
|
134
|
+
: undefined;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Resolves the link attributes needed to keep the block's link pointing at the
|
|
139
|
+
* new attachment.
|
|
140
|
+
*
|
|
141
|
+
* Only the destinations derived from the attachment follow the edited image. A
|
|
142
|
+
* `custom` link is the user's own URL and a `none` link has nothing to point
|
|
143
|
+
* at, so both are left alone. When the record doesn't carry the field, the
|
|
144
|
+
* existing link is kept rather than cleared.
|
|
145
|
+
*
|
|
146
|
+
* @param {string|undefined} linkDestination The block's link destination.
|
|
147
|
+
* @param {Object} attachment The new attachment record.
|
|
148
|
+
*
|
|
149
|
+
* @return {Object|undefined} Attributes to apply, if any.
|
|
150
|
+
*/
|
|
151
|
+
function getNewAttachmentLinkAttributes( linkDestination, attachment ) {
|
|
152
|
+
// Media file links point at the full-size file, independently of the size
|
|
153
|
+
// the block renders.
|
|
154
|
+
if ( linkDestination === LINK_DESTINATION_MEDIA ) {
|
|
155
|
+
return attachment.source_url
|
|
156
|
+
? { href: attachment.source_url }
|
|
157
|
+
: undefined;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if ( linkDestination === LINK_DESTINATION_ATTACHMENT ) {
|
|
161
|
+
return attachment.link ? { href: attachment.link } : undefined;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Resolves the block attributes that are derived from the attachment, for an
|
|
169
|
+
* edit that saved to a different one.
|
|
170
|
+
*
|
|
171
|
+
* Editing media (crop, rotate, flip) creates a new attachment with its own
|
|
172
|
+
* generated sub-sizes and its own attachment page, and the media editor
|
|
173
|
+
* reports the full-size file. Without re-deriving these, the size control
|
|
174
|
+
* keeps reporting e.g. "Medium" while the block renders the full-size image,
|
|
175
|
+
* and a "Media file" or "Attachment page" link still points at the image as it
|
|
176
|
+
* was before the edit. Everything else the user set on the block — dimensions,
|
|
177
|
+
* lightbox, title, custom links — is left untouched.
|
|
178
|
+
*
|
|
179
|
+
* @param {Object} blockAttributes The block's current attributes.
|
|
180
|
+
* @param {Object|undefined} attachment The new attachment record.
|
|
181
|
+
*
|
|
182
|
+
* @return {Object|undefined} Attributes to apply, or undefined when the
|
|
183
|
+
* attachment record isn't known yet.
|
|
184
|
+
*/
|
|
185
|
+
export function getNewAttachmentImageBlockAttributes(
|
|
186
|
+
blockAttributes,
|
|
187
|
+
attachment
|
|
188
|
+
) {
|
|
189
|
+
if ( ! attachment ) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return {
|
|
194
|
+
...getNewAttachmentSizeAttributes(
|
|
195
|
+
blockAttributes.sizeSlug,
|
|
196
|
+
attachment
|
|
197
|
+
),
|
|
198
|
+
...getNewAttachmentLinkAttributes(
|
|
199
|
+
blockAttributes.linkDestination,
|
|
200
|
+
attachment
|
|
201
|
+
),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
99
205
|
const { openMediaEditorModalKey } = unlock( blockEditorPrivateApis );
|
|
100
206
|
|
|
101
207
|
function getAttachmentFallbackForEmptyBlockMetadata( { alt, caption } ) {
|
|
@@ -134,8 +240,10 @@ export function useOpenImageMediaEditorModal( {
|
|
|
134
240
|
} ) {
|
|
135
241
|
// Keep this hook private to the Image block and pass the block attributes
|
|
136
242
|
// object so the callsite stays compact. Destructure only the attributes
|
|
137
|
-
//
|
|
138
|
-
|
|
243
|
+
// the update needs to read — those synced from the attachment's metadata,
|
|
244
|
+
// and those derived from which attachment the block points at; add more
|
|
245
|
+
// here if the sync policy grows.
|
|
246
|
+
const { id, url, alt, caption, sizeSlug, linkDestination } = attributes;
|
|
139
247
|
const registry = useRegistry();
|
|
140
248
|
const openMediaEditorModal = useSelect(
|
|
141
249
|
( select ) =>
|
|
@@ -151,6 +259,8 @@ export function useOpenImageMediaEditorModal( {
|
|
|
151
259
|
url,
|
|
152
260
|
alt,
|
|
153
261
|
caption: caption?.toString(),
|
|
262
|
+
sizeSlug,
|
|
263
|
+
linkDestination,
|
|
154
264
|
} );
|
|
155
265
|
// Snapshot of the attachment's metadata taken just before the modal opens,
|
|
156
266
|
// used as the baseline for detecting what changed during the editing session.
|
|
@@ -165,8 +275,10 @@ export function useOpenImageMediaEditorModal( {
|
|
|
165
275
|
url,
|
|
166
276
|
alt,
|
|
167
277
|
caption: caption?.toString(),
|
|
278
|
+
sizeSlug,
|
|
279
|
+
linkDestination,
|
|
168
280
|
};
|
|
169
|
-
}, [ alt, caption, id, url ] );
|
|
281
|
+
}, [ alt, caption, id, linkDestination, sizeSlug, url ] );
|
|
170
282
|
|
|
171
283
|
// Reads the cached attachment record. The `attachment` postType entity
|
|
172
284
|
// fetches with `context: 'edit'` by default, so `getEditedEntityRecord`
|
|
@@ -236,14 +348,19 @@ export function useOpenImageMediaEditorModal( {
|
|
|
236
348
|
const nextAttributes = {};
|
|
237
349
|
|
|
238
350
|
const currentBlockAttributes = blockAttributesRef.current;
|
|
351
|
+
const isNewAttachment = newId !== currentBlockAttributes.id;
|
|
239
352
|
|
|
240
|
-
if (
|
|
353
|
+
if ( isNewAttachment ) {
|
|
241
354
|
nextAttributes.id = newId;
|
|
242
355
|
nextAttributes.url = newUrl ?? currentBlockAttributes.url;
|
|
243
356
|
if ( nextAttributes.url !== currentBlockAttributes.url ) {
|
|
244
357
|
// The block is about to point at a freshly generated file
|
|
245
358
|
// the browser hasn't loaded yet; let the caller show a
|
|
246
|
-
// loading state until its <img> fires load/error.
|
|
359
|
+
// loading state until its <img> fires load/error. Raising
|
|
360
|
+
// it here, before anything is awaited, keeps the rest of
|
|
361
|
+
// this update behind that loading state: the attributes
|
|
362
|
+
// land in a single `setAttributes` at the end, so the
|
|
363
|
+
// image never renders against half-updated settings.
|
|
247
364
|
onUrlChange?.( nextAttributes.url );
|
|
248
365
|
}
|
|
249
366
|
blockAttributesRef.current = {
|
|
@@ -253,10 +370,9 @@ export function useOpenImageMediaEditorModal( {
|
|
|
253
370
|
};
|
|
254
371
|
}
|
|
255
372
|
|
|
256
|
-
if ( originalAttachment ) {
|
|
257
|
-
// Fetch fresh server state so
|
|
258
|
-
//
|
|
259
|
-
// cache.
|
|
373
|
+
if ( originalAttachment || isNewAttachment ) {
|
|
374
|
+
// Fetch fresh server state so this reflects what the media
|
|
375
|
+
// editor actually saved, not a potentially stale cache.
|
|
260
376
|
const resolvedAttachment =
|
|
261
377
|
await resolveFreshAttachmentRecord( newId );
|
|
262
378
|
|
|
@@ -268,21 +384,63 @@ export function useOpenImageMediaEditorModal( {
|
|
|
268
384
|
return;
|
|
269
385
|
}
|
|
270
386
|
|
|
387
|
+
// A failed refetch returns nothing, which would leave the
|
|
388
|
+
// block pointing at the new file while its size and link
|
|
389
|
+
// still describe the old one. The record the media editor
|
|
390
|
+
// received when it saved is already in the store, so fall
|
|
391
|
+
// back to that rather than half-updating the block.
|
|
392
|
+
const attachmentRecord =
|
|
393
|
+
resolvedAttachment ?? getCachedAttachmentRecord( newId );
|
|
394
|
+
|
|
395
|
+
const latestBlockAttributes = blockAttributesRef.current;
|
|
396
|
+
|
|
271
397
|
// Sync alt text and caption back to the block only when
|
|
272
398
|
// they were changed in the media editor. Fields the user
|
|
273
399
|
// has independently customised on the block (i.e. values
|
|
274
400
|
// that don't match the pre-session attachment metadata)
|
|
275
|
-
// are left untouched.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
Object.
|
|
401
|
+
// are left untouched. Without a baseline there's no way to
|
|
402
|
+
// tell the two apart, so nothing is synced.
|
|
403
|
+
if ( originalAttachment ) {
|
|
404
|
+
const resolvedMetadataAttributes =
|
|
405
|
+
getSyncedImageBlockAttributes(
|
|
406
|
+
latestBlockAttributes,
|
|
407
|
+
originalAttachment,
|
|
408
|
+
attachmentRecord
|
|
409
|
+
);
|
|
410
|
+
|
|
411
|
+
if ( Object.keys( resolvedMetadataAttributes ).length ) {
|
|
412
|
+
Object.assign(
|
|
413
|
+
nextAttributes,
|
|
414
|
+
resolvedMetadataAttributes
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
if ( isNewAttachment ) {
|
|
420
|
+
const derivedAttributes =
|
|
421
|
+
getNewAttachmentImageBlockAttributes(
|
|
422
|
+
latestBlockAttributes,
|
|
423
|
+
attachmentRecord
|
|
424
|
+
);
|
|
425
|
+
|
|
426
|
+
if ( derivedAttributes ) {
|
|
427
|
+
Object.assign( nextAttributes, derivedAttributes );
|
|
428
|
+
|
|
429
|
+
// The URL announced before the resolve was the
|
|
430
|
+
// full-size file the media editor reported, and
|
|
431
|
+
// deriving the selected size can change it.
|
|
432
|
+
// Re-announce so the pending swap names the file
|
|
433
|
+
// that actually lands: an update that is undone or
|
|
434
|
+
// superseded never changes the <img> src, and the
|
|
435
|
+
// block then clears its loading state by matching
|
|
436
|
+
// the pending URL against the rendered one.
|
|
437
|
+
if (
|
|
438
|
+
derivedAttributes.url &&
|
|
439
|
+
derivedAttributes.url !== latestBlockAttributes.url
|
|
440
|
+
) {
|
|
441
|
+
onUrlChange?.( derivedAttributes.url );
|
|
442
|
+
}
|
|
443
|
+
}
|
|
286
444
|
}
|
|
287
445
|
}
|
|
288
446
|
|
|
@@ -294,7 +452,12 @@ export function useOpenImageMediaEditorModal( {
|
|
|
294
452
|
setAttributes( nextAttributes );
|
|
295
453
|
}
|
|
296
454
|
},
|
|
297
|
-
[
|
|
455
|
+
[
|
|
456
|
+
getCachedAttachmentRecord,
|
|
457
|
+
onUrlChange,
|
|
458
|
+
resolveFreshAttachmentRecord,
|
|
459
|
+
setAttributes,
|
|
460
|
+
]
|
|
298
461
|
);
|
|
299
462
|
|
|
300
463
|
const openImageMediaEditorModal = useCallback( async () => {
|
package/src/index.jsx
CHANGED
|
@@ -49,10 +49,6 @@ import * as cover from './cover';
|
|
|
49
49
|
import * as details from './details';
|
|
50
50
|
import * as embed from './embed';
|
|
51
51
|
import * as file from './file';
|
|
52
|
-
import * as form from './form';
|
|
53
|
-
import * as formInput from './form-input';
|
|
54
|
-
import * as formSubmitButton from './form-submit-button';
|
|
55
|
-
import * as formSubmissionNotification from './form-submission-notification';
|
|
56
52
|
import * as gallery from './gallery';
|
|
57
53
|
import * as group from './group';
|
|
58
54
|
import * as heading from './heading';
|
|
@@ -267,13 +263,6 @@ const getAllBlocks = () => {
|
|
|
267
263
|
breadcrumbs,
|
|
268
264
|
];
|
|
269
265
|
|
|
270
|
-
if ( window?.__experimentalEnableFormBlocks ) {
|
|
271
|
-
blocks.push( form );
|
|
272
|
-
blocks.push( formInput );
|
|
273
|
-
blocks.push( formSubmitButton );
|
|
274
|
-
blocks.push( formSubmissionNotification );
|
|
275
|
-
}
|
|
276
|
-
|
|
277
266
|
if ( window?.__experimentalEnableBlockExperiments ) {
|
|
278
267
|
// Blocks added here are only registered when the "Block experiments"
|
|
279
268
|
// option is enabled in the Gutenberg > Experiments settings page.
|
|
@@ -164,7 +164,7 @@ function Controls( { attributes, setAttributes } ) {
|
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
// Categories that are already will be objects, while new additions will be strings (the name).
|
|
167
|
-
// allCategories
|
|
167
|
+
// allCategories normalizes the array so that they are all objects.
|
|
168
168
|
const allCategories = tokens.map( ( token ) => {
|
|
169
169
|
return typeof token === 'string'
|
|
170
170
|
? categorySuggestions[ token ]
|
package/src/list/index.php
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* @see https://github.com/WordPress/gutenberg/issues/12420
|
|
16
16
|
*
|
|
17
17
|
* @param array $attributes Attributes of the block being rendered.
|
|
18
|
-
* @param string $content
|
|
18
|
+
* @param string $content Content of the block being rendered.
|
|
19
19
|
*
|
|
20
20
|
* @return string The content of the block being rendered.
|
|
21
21
|
*/
|
package/src/list/style.scss
CHANGED
package/src/list-item/edit.jsx
CHANGED
|
@@ -14,29 +14,24 @@ import {
|
|
|
14
14
|
formatIndent,
|
|
15
15
|
} from '@wordpress/icons';
|
|
16
16
|
import { useMergeRefs } from '@wordpress/compose';
|
|
17
|
-
import { useSelect } from '@wordpress/data';
|
|
17
|
+
import { useSelect, useRegistry } from '@wordpress/data';
|
|
18
18
|
import { displayShortcut } from '@wordpress/keycodes';
|
|
19
|
+
import { useEnter, useTab, useMultiSelectTab, useMerge } from './hooks';
|
|
19
20
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} from './hooks';
|
|
21
|
+
indentListItems,
|
|
22
|
+
outdentListItems,
|
|
23
|
+
getIndentTarget,
|
|
24
|
+
getOutdentTarget,
|
|
25
|
+
} from './utils';
|
|
26
26
|
|
|
27
27
|
export function IndentUI( { clientId } ) {
|
|
28
|
-
const
|
|
29
|
-
const outdentListItem = useOutdentListItem();
|
|
28
|
+
const registry = useRegistry();
|
|
30
29
|
const { canIndent, canOutdent } = useSelect(
|
|
31
30
|
( select ) => {
|
|
32
|
-
const
|
|
33
|
-
select( blockEditorStore );
|
|
31
|
+
const storeSelect = select( blockEditorStore );
|
|
34
32
|
return {
|
|
35
|
-
canIndent:
|
|
36
|
-
canOutdent:
|
|
37
|
-
getBlockName(
|
|
38
|
-
getBlockRootClientId( getBlockRootClientId( clientId ) )
|
|
39
|
-
) === 'core/list-item',
|
|
33
|
+
canIndent: !! getIndentTarget( storeSelect, clientId ),
|
|
34
|
+
canOutdent: !! getOutdentTarget( storeSelect, clientId ),
|
|
40
35
|
};
|
|
41
36
|
},
|
|
42
37
|
[ clientId ]
|
|
@@ -50,7 +45,7 @@ export function IndentUI( { clientId } ) {
|
|
|
50
45
|
shortcut={ displayShortcut.shift( 'Tab' ) }
|
|
51
46
|
description={ __( 'Outdent list item' ) }
|
|
52
47
|
disabled={ ! canOutdent }
|
|
53
|
-
onClick={ () =>
|
|
48
|
+
onClick={ () => outdentListItems( registry ) }
|
|
54
49
|
/>
|
|
55
50
|
<ToolbarButton
|
|
56
51
|
icon={ isRTL() ? formatIndentRTL : formatIndent }
|
|
@@ -58,7 +53,7 @@ export function IndentUI( { clientId } ) {
|
|
|
58
53
|
shortcut="Tab"
|
|
59
54
|
description={ __( 'Indent list item' ) }
|
|
60
55
|
disabled={ ! canIndent }
|
|
61
|
-
onClick={ () =>
|
|
56
|
+
onClick={ () => indentListItems( registry, clientId ) }
|
|
62
57
|
/>
|
|
63
58
|
</>
|
|
64
59
|
);
|
|
@@ -77,13 +72,18 @@ export default function ListItemEdit( {
|
|
|
77
72
|
__unstableDisableDropZone: true,
|
|
78
73
|
} );
|
|
79
74
|
const useEnterRef = useEnter( clientId );
|
|
80
|
-
const
|
|
75
|
+
const useTabRef = useTab();
|
|
76
|
+
const useMultiSelectTabRef = useMultiSelectTab( clientId );
|
|
81
77
|
const onMerge = useMerge( clientId, mergeBlocks );
|
|
82
78
|
return (
|
|
83
79
|
<>
|
|
84
80
|
<li { ...innerBlocksProps }>
|
|
85
81
|
<RichText
|
|
86
|
-
ref={ useMergeRefs( [
|
|
82
|
+
ref={ useMergeRefs( [
|
|
83
|
+
useEnterRef,
|
|
84
|
+
useTabRef,
|
|
85
|
+
useMultiSelectTabRef,
|
|
86
|
+
] ) }
|
|
87
87
|
identifier="content"
|
|
88
88
|
tagName="div"
|
|
89
89
|
onChange={ ( nextContent ) =>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export { default as useOutdentListItem } from './use-outdent-list-item';
|
|
2
|
-
export { default as useIndentListItem } from './use-indent-list-item';
|
|
3
1
|
export { default as useEnter } from './use-enter';
|
|
4
|
-
export { default as
|
|
2
|
+
export { default as useTab } from './use-tab';
|
|
3
|
+
export { default as useMultiSelectTab } from './use-multi-select-tab';
|
|
5
4
|
export { default as useMerge } from './use-merge';
|
|
@@ -5,82 +5,94 @@ import {
|
|
|
5
5
|
} from '@wordpress/blocks';
|
|
6
6
|
import { useRefEffect } from '@wordpress/compose';
|
|
7
7
|
import { privateApis as richTextPrivateApis } from '@wordpress/rich-text';
|
|
8
|
-
import {
|
|
9
|
-
import { useSelect, useDispatch } from '@wordpress/data';
|
|
8
|
+
import { useRegistry } from '@wordpress/data';
|
|
10
9
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
11
|
-
import
|
|
10
|
+
import { outdentListItems, getOutdentTarget } from '../utils';
|
|
12
11
|
import { unlock } from '../../lock-unlock';
|
|
13
12
|
|
|
14
13
|
const { subscribeOwnedListener } = unlock( richTextPrivateApis );
|
|
15
14
|
|
|
16
15
|
export default function useEnter( clientId ) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
16
|
+
const registry = useRegistry();
|
|
17
|
+
return useRefEffect(
|
|
18
|
+
( element ) => {
|
|
19
|
+
function onBeforeInput( event ) {
|
|
20
|
+
if (
|
|
21
|
+
event.defaultPrevented ||
|
|
22
|
+
event.inputType !== 'insertParagraph'
|
|
23
|
+
) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const select = registry.select( blockEditorStore );
|
|
27
|
+
const {
|
|
28
|
+
getBlock,
|
|
29
|
+
getBlockAttributes,
|
|
30
|
+
getBlockRootClientId,
|
|
31
|
+
getBlockIndex,
|
|
32
|
+
} = select;
|
|
33
|
+
const { replaceBlocks, selectionChange } =
|
|
34
|
+
registry.dispatch( blockEditorStore );
|
|
35
|
+
|
|
36
|
+
const { content } = getBlockAttributes( clientId ) ?? {};
|
|
37
|
+
if ( content?.length ) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
const canOutdent = !! getOutdentTarget( select, clientId );
|
|
42
|
+
if ( canOutdent ) {
|
|
43
|
+
outdentListItems( registry );
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Here we are in top level list so we need to split.
|
|
47
|
+
const topParentListBlock = getBlock(
|
|
48
|
+
getBlockRootClientId( clientId )
|
|
49
|
+
);
|
|
50
|
+
const blockIndex = getBlockIndex( clientId );
|
|
51
|
+
const head = cloneBlock( {
|
|
52
|
+
...topParentListBlock,
|
|
53
|
+
innerBlocks: topParentListBlock.innerBlocks.slice(
|
|
54
|
+
0,
|
|
55
|
+
blockIndex
|
|
56
|
+
),
|
|
57
|
+
} );
|
|
58
|
+
const middle = createBlock( getDefaultBlockName() );
|
|
59
|
+
// Last list item might contain a `list` block innerBlock
|
|
60
|
+
// In that case append remaining innerBlocks blocks.
|
|
61
|
+
const after = [
|
|
62
|
+
...( topParentListBlock.innerBlocks[ blockIndex ]
|
|
63
|
+
.innerBlocks[ 0 ]?.innerBlocks || [] ),
|
|
64
|
+
...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),
|
|
65
|
+
];
|
|
66
|
+
const tail = after.length
|
|
67
|
+
? [
|
|
68
|
+
cloneBlock( {
|
|
69
|
+
...topParentListBlock,
|
|
70
|
+
innerBlocks: after,
|
|
71
|
+
} ),
|
|
72
|
+
]
|
|
73
|
+
: [];
|
|
74
|
+
replaceBlocks(
|
|
75
|
+
topParentListBlock.clientId,
|
|
76
|
+
[ head, middle, ...tail ],
|
|
77
|
+
1
|
|
78
|
+
);
|
|
79
|
+
// We manually change the selection here because we are replacing
|
|
80
|
+
// a different block than the selected one.
|
|
81
|
+
selectionChange( middle.clientId );
|
|
43
82
|
}
|
|
44
|
-
// Here we are in top level list so we need to split.
|
|
45
|
-
const topParentListBlock = getBlock(
|
|
46
|
-
getBlockRootClientId( clientId )
|
|
47
|
-
);
|
|
48
|
-
const blockIndex = getBlockIndex( clientId );
|
|
49
|
-
const head = cloneBlock( {
|
|
50
|
-
...topParentListBlock,
|
|
51
|
-
innerBlocks: topParentListBlock.innerBlocks.slice(
|
|
52
|
-
0,
|
|
53
|
-
blockIndex
|
|
54
|
-
),
|
|
55
|
-
} );
|
|
56
|
-
const middle = createBlock( getDefaultBlockName() );
|
|
57
|
-
// Last list item might contain a `list` block innerBlock
|
|
58
|
-
// In that case append remaining innerBlocks blocks.
|
|
59
|
-
const after = [
|
|
60
|
-
...( topParentListBlock.innerBlocks[ blockIndex ]
|
|
61
|
-
.innerBlocks[ 0 ]?.innerBlocks || [] ),
|
|
62
|
-
...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),
|
|
63
|
-
];
|
|
64
|
-
const tail = after.length
|
|
65
|
-
? [
|
|
66
|
-
cloneBlock( {
|
|
67
|
-
...topParentListBlock,
|
|
68
|
-
innerBlocks: after,
|
|
69
|
-
} ),
|
|
70
|
-
]
|
|
71
|
-
: [];
|
|
72
|
-
replaceBlocks(
|
|
73
|
-
topParentListBlock.clientId,
|
|
74
|
-
[ head, middle, ...tail ],
|
|
75
|
-
1
|
|
76
|
-
);
|
|
77
|
-
// We manually change the selection here because we are replacing
|
|
78
|
-
// a different block than the selected one.
|
|
79
|
-
selectionChange( middle.clientId );
|
|
80
|
-
}
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
// Enter is handled on beforeinput: moving focus while the
|
|
85
|
+
// keydown is still being handled leaves the iOS keyboard's
|
|
86
|
+
// auto-capitalization stale. Capture phase so we run before
|
|
87
|
+
// writing-flow's ancestor-bubble handler that gates on
|
|
88
|
+
// `event.defaultPrevented`.
|
|
89
|
+
return subscribeOwnedListener(
|
|
90
|
+
element,
|
|
91
|
+
'beforeinput',
|
|
92
|
+
onBeforeInput,
|
|
93
|
+
true
|
|
94
|
+
);
|
|
95
|
+
},
|
|
96
|
+
[ clientId, registry ]
|
|
97
|
+
);
|
|
86
98
|
}
|