@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
|
@@ -6,70 +6,75 @@ import {
|
|
|
6
6
|
} from "@wordpress/blocks";
|
|
7
7
|
import { useRefEffect } from "@wordpress/compose";
|
|
8
8
|
import { privateApis as richTextPrivateApis } from "@wordpress/rich-text";
|
|
9
|
-
import {
|
|
10
|
-
import { useSelect, useDispatch } from "@wordpress/data";
|
|
9
|
+
import { useRegistry } from "@wordpress/data";
|
|
11
10
|
import { store as blockEditorStore } from "@wordpress/block-editor";
|
|
12
|
-
import
|
|
11
|
+
import { outdentListItems, getOutdentTarget } from "../utils.mjs";
|
|
13
12
|
import { unlock } from "../../lock-unlock.mjs";
|
|
14
13
|
var { subscribeOwnedListener } = unlock(richTextPrivateApis);
|
|
15
14
|
function useEnter(clientId) {
|
|
16
|
-
const
|
|
17
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const head = cloneBlock({
|
|
47
|
-
...topParentListBlock,
|
|
48
|
-
innerBlocks: topParentListBlock.innerBlocks.slice(
|
|
49
|
-
0,
|
|
50
|
-
blockIndex
|
|
51
|
-
)
|
|
52
|
-
});
|
|
53
|
-
const middle = createBlock(getDefaultBlockName());
|
|
54
|
-
const after = [
|
|
55
|
-
...topParentListBlock.innerBlocks[blockIndex].innerBlocks[0]?.innerBlocks || [],
|
|
56
|
-
...topParentListBlock.innerBlocks.slice(blockIndex + 1)
|
|
57
|
-
];
|
|
58
|
-
const tail = after.length ? [
|
|
59
|
-
cloneBlock({
|
|
15
|
+
const registry = useRegistry();
|
|
16
|
+
return useRefEffect(
|
|
17
|
+
(element) => {
|
|
18
|
+
function onBeforeInput(event) {
|
|
19
|
+
if (event.defaultPrevented || event.inputType !== "insertParagraph") {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const select = registry.select(blockEditorStore);
|
|
23
|
+
const {
|
|
24
|
+
getBlock,
|
|
25
|
+
getBlockAttributes,
|
|
26
|
+
getBlockRootClientId,
|
|
27
|
+
getBlockIndex
|
|
28
|
+
} = select;
|
|
29
|
+
const { replaceBlocks, selectionChange } = registry.dispatch(blockEditorStore);
|
|
30
|
+
const { content } = getBlockAttributes(clientId) ?? {};
|
|
31
|
+
if (content?.length) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
const canOutdent = !!getOutdentTarget(select, clientId);
|
|
36
|
+
if (canOutdent) {
|
|
37
|
+
outdentListItems(registry);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const topParentListBlock = getBlock(
|
|
41
|
+
getBlockRootClientId(clientId)
|
|
42
|
+
);
|
|
43
|
+
const blockIndex = getBlockIndex(clientId);
|
|
44
|
+
const head = cloneBlock({
|
|
60
45
|
...topParentListBlock,
|
|
61
|
-
innerBlocks:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
46
|
+
innerBlocks: topParentListBlock.innerBlocks.slice(
|
|
47
|
+
0,
|
|
48
|
+
blockIndex
|
|
49
|
+
)
|
|
50
|
+
});
|
|
51
|
+
const middle = createBlock(getDefaultBlockName());
|
|
52
|
+
const after = [
|
|
53
|
+
...topParentListBlock.innerBlocks[blockIndex].innerBlocks[0]?.innerBlocks || [],
|
|
54
|
+
...topParentListBlock.innerBlocks.slice(blockIndex + 1)
|
|
55
|
+
];
|
|
56
|
+
const tail = after.length ? [
|
|
57
|
+
cloneBlock({
|
|
58
|
+
...topParentListBlock,
|
|
59
|
+
innerBlocks: after
|
|
60
|
+
})
|
|
61
|
+
] : [];
|
|
62
|
+
replaceBlocks(
|
|
63
|
+
topParentListBlock.clientId,
|
|
64
|
+
[head, middle, ...tail],
|
|
65
|
+
1
|
|
66
|
+
);
|
|
67
|
+
selectionChange(middle.clientId);
|
|
68
|
+
}
|
|
69
|
+
return subscribeOwnedListener(
|
|
70
|
+
element,
|
|
71
|
+
"beforeinput",
|
|
72
|
+
onBeforeInput,
|
|
73
|
+
true
|
|
68
74
|
);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}, []);
|
|
75
|
+
},
|
|
76
|
+
[clientId, registry]
|
|
77
|
+
);
|
|
73
78
|
}
|
|
74
79
|
export {
|
|
75
80
|
useEnter as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/list-item/hooks/use-enter.js"],
|
|
4
|
-
"sourcesContent": ["import {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRefEffect } from '@wordpress/compose';\nimport { privateApis as richTextPrivateApis } from '@wordpress/rich-text';\nimport {
|
|
5
|
-
"mappings": ";AAAA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,oBAAoB;AAC7B,SAAS,eAAe,2BAA2B;AACnD,SAAS,
|
|
4
|
+
"sourcesContent": ["import {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRefEffect } from '@wordpress/compose';\nimport { privateApis as richTextPrivateApis } from '@wordpress/rich-text';\nimport { useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { outdentListItems, getOutdentTarget } from '../utils';\nimport { unlock } from '../../lock-unlock';\n\nconst { subscribeOwnedListener } = unlock( richTextPrivateApis );\n\nexport default function useEnter( clientId ) {\n\tconst registry = useRegistry();\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onBeforeInput( event ) {\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\tevent.inputType !== 'insertParagraph'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst select = registry.select( blockEditorStore );\n\t\t\t\tconst {\n\t\t\t\t\tgetBlock,\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockIndex,\n\t\t\t\t} = select;\n\t\t\t\tconst { replaceBlocks, selectionChange } =\n\t\t\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\t\t\tconst { content } = getBlockAttributes( clientId ) ?? {};\n\t\t\t\tif ( content?.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst canOutdent = !! getOutdentTarget( select, clientId );\n\t\t\t\tif ( canOutdent ) {\n\t\t\t\t\toutdentListItems( registry );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Here we are in top level list so we need to split.\n\t\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t);\n\t\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\t\tconst head = cloneBlock( {\n\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tblockIndex\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\t\tconst after = [\n\t\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t\t];\n\t\t\t\tconst tail = after.length\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [];\n\t\t\t\treplaceBlocks(\n\t\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t\t// We manually change the selection here because we are replacing\n\t\t\t\t// a different block than the selected one.\n\t\t\t\tselectionChange( middle.clientId );\n\t\t\t}\n\n\t\t\t// Enter is handled on beforeinput: moving focus while the\n\t\t\t// keydown is still being handled leaves the iOS keyboard's\n\t\t\t// auto-capitalization stale. Capture phase so we run before\n\t\t\t// writing-flow's ancestor-bubble handler that gates on\n\t\t\t// `event.defaultPrevented`.\n\t\t\treturn subscribeOwnedListener(\n\t\t\t\telement,\n\t\t\t\t'beforeinput',\n\t\t\t\tonBeforeInput,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\t[ clientId, registry ]\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,oBAAoB;AAC7B,SAAS,eAAe,2BAA2B;AACnD,SAAS,mBAAmB;AAC5B,SAAS,SAAS,wBAAwB;AAC1C,SAAS,kBAAkB,wBAAwB;AACnD,SAAS,cAAc;AAEvB,IAAM,EAAE,uBAAuB,IAAI,OAAQ,mBAAoB;AAEhD,SAAR,SAA2B,UAAW;AAC5C,QAAM,WAAW,YAAY;AAC7B,SAAO;AAAA,IACN,CAAE,YAAa;AACd,eAAS,cAAe,OAAQ;AAC/B,YACC,MAAM,oBACN,MAAM,cAAc,mBACnB;AACD;AAAA,QACD;AACA,cAAM,SAAS,SAAS,OAAQ,gBAAiB;AACjD,cAAM;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,cAAM,EAAE,eAAe,gBAAgB,IACtC,SAAS,SAAU,gBAAiB;AAErC,cAAM,EAAE,QAAQ,IAAI,mBAAoB,QAAS,KAAK,CAAC;AACvD,YAAK,SAAS,QAAS;AACtB;AAAA,QACD;AACA,cAAM,eAAe;AACrB,cAAM,aAAa,CAAC,CAAE,iBAAkB,QAAQ,QAAS;AACzD,YAAK,YAAa;AACjB,2BAAkB,QAAS;AAC3B;AAAA,QACD;AAEA,cAAM,qBAAqB;AAAA,UAC1B,qBAAsB,QAAS;AAAA,QAChC;AACA,cAAM,aAAa,cAAe,QAAS;AAC3C,cAAM,OAAO,WAAY;AAAA,UACxB,GAAG;AAAA,UACH,aAAa,mBAAmB,YAAY;AAAA,YAC3C;AAAA,YACA;AAAA,UACD;AAAA,QACD,CAAE;AACF,cAAM,SAAS,YAAa,oBAAoB,CAAE;AAGlD,cAAM,QAAQ;AAAA,UACb,GAAK,mBAAmB,YAAa,UAAW,EAC9C,YAAa,CAAE,GAAG,eAAe,CAAC;AAAA,UACpC,GAAG,mBAAmB,YAAY,MAAO,aAAa,CAAE;AAAA,QACzD;AACA,cAAM,OAAO,MAAM,SAChB;AAAA,UACA,WAAY;AAAA,YACX,GAAG;AAAA,YACH,aAAa;AAAA,UACd,CAAE;AAAA,QACF,IACA,CAAC;AACJ;AAAA,UACC,mBAAmB;AAAA,UACnB,CAAE,MAAM,QAAQ,GAAG,IAAK;AAAA,UACxB;AAAA,QACD;AAGA,wBAAiB,OAAO,QAAS;AAAA,MAClC;AAOA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,UAAU,QAAS;AAAA,EACtB;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
1
|
// packages/block-library/src/list-item/hooks/use-merge.js
|
|
2
|
-
import { useRegistry
|
|
2
|
+
import { useRegistry } from "@wordpress/data";
|
|
3
3
|
import { store as blockEditorStore } from "@wordpress/block-editor";
|
|
4
4
|
import { isUnmodifiedBlock, switchToBlockType } from "@wordpress/blocks";
|
|
5
|
-
import
|
|
5
|
+
import { outdentListItems, getOutdentTarget } from "../utils.mjs";
|
|
6
6
|
function useMerge(clientId, onMerge) {
|
|
7
7
|
const registry = useRegistry();
|
|
8
|
-
const {
|
|
9
|
-
getPreviousBlockClientId,
|
|
10
|
-
getNextBlockClientId,
|
|
11
|
-
getBlockOrder,
|
|
12
|
-
getBlockIndex,
|
|
13
|
-
getBlockRootClientId,
|
|
14
|
-
getBlockName,
|
|
15
|
-
getBlock
|
|
16
|
-
} = useSelect(blockEditorStore);
|
|
17
|
-
const { mergeBlocks, moveBlocksToPosition, removeBlock, insertBlocks } = useDispatch(blockEditorStore);
|
|
18
|
-
const outdentListItem = useOutdentListItem();
|
|
19
|
-
function getTrailingId(id) {
|
|
20
|
-
const order = getBlockOrder(id);
|
|
21
|
-
if (!order.length) {
|
|
22
|
-
return id;
|
|
23
|
-
}
|
|
24
|
-
return getTrailingId(order[order.length - 1]);
|
|
25
|
-
}
|
|
26
|
-
function getParentListItemId(id) {
|
|
27
|
-
const listId = getBlockRootClientId(id);
|
|
28
|
-
const parentListItemId = getBlockRootClientId(listId);
|
|
29
|
-
if (!parentListItemId) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
if (getBlockName(parentListItemId) !== "core/list-item") {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
return parentListItemId;
|
|
36
|
-
}
|
|
37
8
|
return (forward) => {
|
|
9
|
+
const select = registry.select(blockEditorStore);
|
|
10
|
+
const {
|
|
11
|
+
getPreviousBlockClientId,
|
|
12
|
+
getNextBlockClientId,
|
|
13
|
+
getBlockOrder,
|
|
14
|
+
getBlockIndex,
|
|
15
|
+
getBlockRootClientId,
|
|
16
|
+
getBlockName,
|
|
17
|
+
getBlock
|
|
18
|
+
} = select;
|
|
19
|
+
const { mergeBlocks, moveBlocksToPosition, removeBlock, insertBlocks } = registry.dispatch(blockEditorStore);
|
|
20
|
+
function getTrailingId(id) {
|
|
21
|
+
const order = getBlockOrder(id);
|
|
22
|
+
if (!order.length) {
|
|
23
|
+
return id;
|
|
24
|
+
}
|
|
25
|
+
return getTrailingId(order[order.length - 1]);
|
|
26
|
+
}
|
|
38
27
|
function mergeWithNested(clientIdA, clientIdB) {
|
|
39
28
|
registry.batch(() => {
|
|
40
29
|
const [nestedListClientId] = getBlockOrder(clientIdB);
|
|
@@ -45,7 +34,7 @@ function useMerge(clientId, onMerge) {
|
|
|
45
34
|
clientIdB,
|
|
46
35
|
clientIdA
|
|
47
36
|
);
|
|
48
|
-
} else if (
|
|
37
|
+
} else if (getOutdentTarget(select, clientIdB) === clientIdA) {
|
|
49
38
|
moveBlocksToPosition(
|
|
50
39
|
getBlockOrder(nestedListClientId),
|
|
51
40
|
nestedListClientId,
|
|
@@ -75,7 +64,7 @@ function useMerge(clientId, onMerge) {
|
|
|
75
64
|
nextBlockClientId = getBlockOrder(innerListId)[0];
|
|
76
65
|
} else {
|
|
77
66
|
while (!(nextBlockClientId = getNextBlockClientId(listItemId))) {
|
|
78
|
-
const parentLi =
|
|
67
|
+
const parentLi = getOutdentTarget(select, listItemId);
|
|
79
68
|
if (!parentLi) {
|
|
80
69
|
break;
|
|
81
70
|
}
|
|
@@ -124,7 +113,7 @@ function useMerge(clientId, onMerge) {
|
|
|
124
113
|
mergeWithNested(trailingId, clientId);
|
|
125
114
|
return;
|
|
126
115
|
}
|
|
127
|
-
const parentListItemId =
|
|
116
|
+
const parentListItemId = getOutdentTarget(select, clientId);
|
|
128
117
|
if (parentListItemId) {
|
|
129
118
|
mergeWithNested(parentListItemId, clientId);
|
|
130
119
|
return;
|
|
@@ -132,7 +121,10 @@ function useMerge(clientId, onMerge) {
|
|
|
132
121
|
const blockOrder = getBlockOrder(clientId);
|
|
133
122
|
if (isUnmodifiedBlock(getBlock(clientId), "content") && blockOrder.length > 0) {
|
|
134
123
|
registry.batch(() => {
|
|
135
|
-
|
|
124
|
+
outdentListItems(
|
|
125
|
+
registry,
|
|
126
|
+
getBlockOrder(blockOrder[0])
|
|
127
|
+
);
|
|
136
128
|
removeBlock(clientId, true);
|
|
137
129
|
});
|
|
138
130
|
} else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/list-item/hooks/use-merge.js"],
|
|
4
|
-
"sourcesContent": ["import { useRegistry
|
|
5
|
-
"mappings": ";AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { isUnmodifiedBlock, switchToBlockType } from '@wordpress/blocks';\nimport { outdentListItems, getOutdentTarget } from '../utils';\n\nexport default function useMerge( clientId, onMerge ) {\n\tconst registry = useRegistry();\n\n\treturn ( forward ) => {\n\t\tconst select = registry.select( blockEditorStore );\n\t\tconst {\n\t\t\tgetPreviousBlockClientId,\n\t\t\tgetNextBlockClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockName,\n\t\t\tgetBlock,\n\t\t} = select;\n\t\tconst { mergeBlocks, moveBlocksToPosition, removeBlock, insertBlocks } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tfunction getTrailingId( id ) {\n\t\t\tconst order = getBlockOrder( id );\n\n\t\t\tif ( ! order.length ) {\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\treturn getTrailingId( order[ order.length - 1 ] );\n\t\t}\n\n\t\tfunction mergeWithNested( clientIdA, clientIdB ) {\n\t\t\tregistry.batch( () => {\n\t\t\t\t// When merging a sub list item with a higher next list item, we\n\t\t\t\t// also need to move any nested list items. Check if there's a\n\t\t\t\t// listed list, and append its nested list items to the current\n\t\t\t\t// list.\n\t\t\t\tconst [ nestedListClientId ] = getBlockOrder( clientIdB );\n\t\t\t\tif ( nestedListClientId ) {\n\t\t\t\t\t// If we are merging with the previous list item, and the\n\t\t\t\t\t// previous list item does not have nested list, move the\n\t\t\t\t\t// nested list to the previous list item.\n\t\t\t\t\tif (\n\t\t\t\t\t\tgetPreviousBlockClientId( clientIdB ) === clientIdA &&\n\t\t\t\t\t\t! getBlockOrder( clientIdA ).length\n\t\t\t\t\t) {\n\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t[ nestedListClientId ],\n\t\t\t\t\t\t\tclientIdB,\n\t\t\t\t\t\t\tclientIdA\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tgetOutdentTarget( select, clientIdB ) === clientIdA\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Merging into the parent item's own line: the\n\t\t\t\t\t\t// children take the item's place in its list, one\n\t\t\t\t\t\t// level up, since their line moved there.\n\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\tgetBlockOrder( nestedListClientId ),\n\t\t\t\t\t\t\tnestedListClientId,\n\t\t\t\t\t\t\tgetBlockRootClientId( clientIdB ),\n\t\t\t\t\t\t\tgetBlockIndex( clientIdB ) + 1\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\tgetBlockOrder( nestedListClientId ),\n\t\t\t\t\t\t\tnestedListClientId,\n\t\t\t\t\t\t\tgetBlockRootClientId( clientIdA )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst listId = getBlockRootClientId( clientIdB );\n\t\t\t\tmergeBlocks( clientIdA, clientIdB );\n\t\t\t\t// Merging the last item of a nested list into its parent\n\t\t\t\t// line leaves the list block empty.\n\t\t\t\tif ( ! getBlockOrder( listId ).length ) {\n\t\t\t\t\tremoveBlock( listId, false );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tif ( forward ) {\n\t\t\t// Start by diving into the nested list (if any); otherwise walk up\n\t\t\t// parent list items for a next sibling. `listItemId` ends on the\n\t\t\t// topmost list item if none is found.\n\t\t\tconst innerListId = getBlockOrder( clientId )[ 0 ];\n\t\t\tlet nextBlockClientId;\n\t\t\tlet listItemId = clientId;\n\t\t\tif ( innerListId ) {\n\t\t\t\tnextBlockClientId = getBlockOrder( innerListId )[ 0 ];\n\t\t\t} else {\n\t\t\t\twhile (\n\t\t\t\t\t! ( nextBlockClientId = getNextBlockClientId( listItemId ) )\n\t\t\t\t) {\n\t\t\t\t\tconst parentLi = getOutdentTarget( select, listItemId );\n\t\t\t\t\tif ( ! parentLi ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlistItemId = parentLi;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\tconst outerListId = getBlockRootClientId( listItemId );\n\t\t\t\tconst followingBlockId = getNextBlockClientId( outerListId );\n\n\t\t\t\tif ( followingBlockId ) {\n\t\t\t\t\tif ( getBlockName( followingBlockId ) === 'core/list' ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\tgetBlockOrder( followingBlockId ),\n\t\t\t\t\t\t\t\tfollowingBlockId,\n\t\t\t\t\t\t\t\touterListId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tremoveBlock( followingBlockId, false );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst transformed = switchToBlockType(\n\t\t\t\t\t\t\tgetBlock( followingBlockId ),\n\t\t\t\t\t\t\t'core/list'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst newInnerBlocks = transformed?.[ 0 ]?.innerBlocks;\n\t\t\t\t\t\tif ( newInnerBlocks?.length ) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\tnewInnerBlocks,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\touterListId,\n\t\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( followingBlockId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmergeWithNested( clientId, nextBlockClientId );\n\t\t\t}\n\t\t} else {\n\t\t\t// Merge into the previous line: the trailing item of the\n\t\t\t// previous sibling, or the parent item's own line for a first\n\t\t\t// child.\n\t\t\tconst previousBlockClientId = getPreviousBlockClientId( clientId );\n\t\t\tif ( previousBlockClientId ) {\n\t\t\t\tconst trailingId = getTrailingId( previousBlockClientId );\n\t\t\t\tmergeWithNested( trailingId, clientId );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst parentListItemId = getOutdentTarget( select, clientId );\n\t\t\tif ( parentListItemId ) {\n\t\t\t\tmergeWithNested( parentListItemId, clientId );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blockOrder = getBlockOrder( clientId );\n\t\t\tif (\n\t\t\t\tisUnmodifiedBlock( getBlock( clientId ), 'content' ) &&\n\t\t\t\tblockOrder.length > 0\n\t\t\t) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\toutdentListItems(\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetBlockOrder( blockOrder[ 0 ] )\n\t\t\t\t\t);\n\t\t\t\t\tremoveBlock( clientId, true );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tonMerge( forward );\n\t\t\t}\n\t\t}\n\t};\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,mBAAmB;AAC5B,SAAS,SAAS,wBAAwB;AAC1C,SAAS,mBAAmB,yBAAyB;AACrD,SAAS,kBAAkB,wBAAwB;AAEpC,SAAR,SAA2B,UAAU,SAAU;AACrD,QAAM,WAAW,YAAY;AAE7B,SAAO,CAAE,YAAa;AACrB,UAAM,SAAS,SAAS,OAAQ,gBAAiB;AACjD,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,UAAM,EAAE,aAAa,sBAAsB,aAAa,aAAa,IACpE,SAAS,SAAU,gBAAiB;AAErC,aAAS,cAAe,IAAK;AAC5B,YAAM,QAAQ,cAAe,EAAG;AAEhC,UAAK,CAAE,MAAM,QAAS;AACrB,eAAO;AAAA,MACR;AAEA,aAAO,cAAe,MAAO,MAAM,SAAS,CAAE,CAAE;AAAA,IACjD;AAEA,aAAS,gBAAiB,WAAW,WAAY;AAChD,eAAS,MAAO,MAAM;AAKrB,cAAM,CAAE,kBAAmB,IAAI,cAAe,SAAU;AACxD,YAAK,oBAAqB;AAIzB,cACC,yBAA0B,SAAU,MAAM,aAC1C,CAAE,cAAe,SAAU,EAAE,QAC5B;AACD;AAAA,cACC,CAAE,kBAAmB;AAAA,cACrB;AAAA,cACA;AAAA,YACD;AAAA,UACD,WACC,iBAAkB,QAAQ,SAAU,MAAM,WACzC;AAID;AAAA,cACC,cAAe,kBAAmB;AAAA,cAClC;AAAA,cACA,qBAAsB,SAAU;AAAA,cAChC,cAAe,SAAU,IAAI;AAAA,YAC9B;AAAA,UACD,OAAO;AACN;AAAA,cACC,cAAe,kBAAmB;AAAA,cAClC;AAAA,cACA,qBAAsB,SAAU;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AACA,cAAM,SAAS,qBAAsB,SAAU;AAC/C,oBAAa,WAAW,SAAU;AAGlC,YAAK,CAAE,cAAe,MAAO,EAAE,QAAS;AACvC,sBAAa,QAAQ,KAAM;AAAA,QAC5B;AAAA,MACD,CAAE;AAAA,IACH;AAEA,QAAK,SAAU;AAId,YAAM,cAAc,cAAe,QAAS,EAAG,CAAE;AACjD,UAAI;AACJ,UAAI,aAAa;AACjB,UAAK,aAAc;AAClB,4BAAoB,cAAe,WAAY,EAAG,CAAE;AAAA,MACrD,OAAO;AACN,eACC,EAAI,oBAAoB,qBAAsB,UAAW,IACxD;AACD,gBAAM,WAAW,iBAAkB,QAAQ,UAAW;AACtD,cAAK,CAAE,UAAW;AACjB;AAAA,UACD;AACA,uBAAa;AAAA,QACd;AAAA,MACD;AAEA,UAAK,CAAE,mBAAoB;AAC1B,cAAM,cAAc,qBAAsB,UAAW;AACrD,cAAM,mBAAmB,qBAAsB,WAAY;AAE3D,YAAK,kBAAmB;AACvB,cAAK,aAAc,gBAAiB,MAAM,aAAc;AACvD,qBAAS,MAAO,MAAM;AACrB;AAAA,gBACC,cAAe,gBAAiB;AAAA,gBAChC;AAAA,gBACA;AAAA,cACD;AACA,0BAAa,kBAAkB,KAAM;AAAA,YACtC,CAAE;AAAA,UACH,OAAO;AACN,kBAAM,cAAc;AAAA,cACnB,SAAU,gBAAiB;AAAA,cAC3B;AAAA,YACD;AACA,kBAAM,iBAAiB,cAAe,CAAE,GAAG;AAC3C,gBAAK,gBAAgB,QAAS;AAC7B,uBAAS,MAAO,MAAM;AACrB;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AACA,4BAAa,kBAAkB,KAAM;AAAA,cACtC,CAAE;AAAA,YACH;AAAA,UACD;AAAA,QACD;AAAA,MACD,OAAO;AACN,wBAAiB,UAAU,iBAAkB;AAAA,MAC9C;AAAA,IACD,OAAO;AAIN,YAAM,wBAAwB,yBAA0B,QAAS;AACjE,UAAK,uBAAwB;AAC5B,cAAM,aAAa,cAAe,qBAAsB;AACxD,wBAAiB,YAAY,QAAS;AACtC;AAAA,MACD;AACA,YAAM,mBAAmB,iBAAkB,QAAQ,QAAS;AAC5D,UAAK,kBAAmB;AACvB,wBAAiB,kBAAkB,QAAS;AAC5C;AAAA,MACD;AAEA,YAAM,aAAa,cAAe,QAAS;AAC3C,UACC,kBAAmB,SAAU,QAAS,GAAG,SAAU,KACnD,WAAW,SAAS,GACnB;AACD,iBAAS,MAAO,MAAM;AACrB;AAAA,YACC;AAAA,YACA,cAAe,WAAY,CAAE,CAAE;AAAA,UAChC;AACA,sBAAa,UAAU,IAAK;AAAA,QAC7B,CAAE;AAAA,MACH,OAAO;AACN,gBAAS,OAAQ;AAAA,MAClB;AAAA,IACD;AAAA,EACD;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// packages/block-library/src/list-item/hooks/use-multi-select-tab.js
|
|
2
|
+
import { useRefEffect } from "@wordpress/compose";
|
|
3
|
+
import { TAB } from "@wordpress/keycodes";
|
|
4
|
+
import { store as blockEditorStore } from "@wordpress/block-editor";
|
|
5
|
+
import { useSelect, useRegistry } from "@wordpress/data";
|
|
6
|
+
import { indentListItems, outdentListItems } from "../utils.mjs";
|
|
7
|
+
function useMultiSelectTab(clientId) {
|
|
8
|
+
const registry = useRegistry();
|
|
9
|
+
const isActive = useSelect(
|
|
10
|
+
(select) => {
|
|
11
|
+
const {
|
|
12
|
+
hasMultiSelection,
|
|
13
|
+
getMultiSelectedBlockClientIds,
|
|
14
|
+
getBlockName
|
|
15
|
+
} = select(blockEditorStore);
|
|
16
|
+
if (!hasMultiSelection()) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const clientIds = getMultiSelectedBlockClientIds();
|
|
20
|
+
return clientIds[0] === clientId && clientIds.every(
|
|
21
|
+
(id) => getBlockName(id) === "core/list-item"
|
|
22
|
+
);
|
|
23
|
+
},
|
|
24
|
+
[clientId]
|
|
25
|
+
);
|
|
26
|
+
return useRefEffect(
|
|
27
|
+
(element) => {
|
|
28
|
+
if (!isActive) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
function onKeyDown(event) {
|
|
32
|
+
const { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;
|
|
33
|
+
if (keyCode !== TAB || event.defaultPrevented || altKey || metaKey || ctrlKey) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!event.target.contains(element)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (shiftKey) {
|
|
40
|
+
if (outdentListItems(registry)) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
}
|
|
43
|
+
} else if (indentListItems(registry)) {
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const { ownerDocument } = element;
|
|
48
|
+
ownerDocument.addEventListener("keydown", onKeyDown, true);
|
|
49
|
+
return () => {
|
|
50
|
+
ownerDocument.removeEventListener("keydown", onKeyDown, true);
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
[isActive, registry]
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
useMultiSelectTab as default
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=use-multi-select-tab.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/list-item/hooks/use-multi-select-tab.js"],
|
|
4
|
+
"sourcesContent": ["import { useRefEffect } from '@wordpress/compose';\nimport { TAB } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { indentListItems, outdentListItems } from '../utils';\n\nexport default function useMultiSelectTab( clientId ) {\n\tconst registry = useRegistry();\n\t// Only the first item of an all-list-item multi selection attaches the\n\t// listener, so there is a single handler regardless of how many list items\n\t// are rendered, and only while such a selection exists.\n\tconst isActive = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasMultiSelection,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\tgetBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst clientIds = getMultiSelectedBlockClientIds();\n\t\t\treturn (\n\t\t\t\tclientIds[ 0 ] === clientId &&\n\t\t\t\tclientIds.every(\n\t\t\t\t\t( id ) => getBlockName( id ) === 'core/list-item'\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tif ( ! isActive ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tkeyCode !== TAB ||\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// The listener is on the document, so it also sees a Tab from\n\t\t\t\t// other editor UI while the multi selection lingers (moving\n\t\t\t\t// focus does not clear it). A multi selection keeps focus on the\n\t\t\t\t// canvas host that wraps the blocks, so only act when the key\n\t\t\t\t// comes from an ancestor of them, not from a toolbar or panel.\n\t\t\t\tif ( ! event.target.contains( element ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( outdentListItems( registry ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if ( indentListItems( registry ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// During a multi selection focus sits on the writing flow\n\t\t\t// container, not inside any item, so an element listener never sees\n\t\t\t// the key. Listen on the document. Capture phase so we run before\n\t\t\t// writing-flow's keydown handlers, which gate on\n\t\t\t// `event.defaultPrevented`.\n\t\t\tconst { ownerDocument } = element;\n\t\t\townerDocument.addEventListener( 'keydown', onKeyDown, true );\n\t\t\treturn () => {\n\t\t\t\townerDocument.removeEventListener( 'keydown', onKeyDown, true );\n\t\t\t};\n\t\t},\n\t\t[ isActive, registry ]\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,WAAW;AACpB,SAAS,SAAS,wBAAwB;AAC1C,SAAS,WAAW,mBAAmB;AACvC,SAAS,iBAAiB,wBAAwB;AAEnC,SAAR,kBAAoC,UAAW;AACrD,QAAM,WAAW,YAAY;AAI7B,QAAM,WAAW;AAAA,IAChB,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,gBAAiB;AAC7B,UAAK,CAAE,kBAAkB,GAAI;AAC5B,eAAO;AAAA,MACR;AACA,YAAM,YAAY,+BAA+B;AACjD,aACC,UAAW,CAAE,MAAM,YACnB,UAAU;AAAA,QACT,CAAE,OAAQ,aAAc,EAAG,MAAM;AAAA,MAClC;AAAA,IAEF;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,SAAO;AAAA,IACN,CAAE,YAAa;AACd,UAAK,CAAE,UAAW;AACjB;AAAA,MACD;AAEA,eAAS,UAAW,OAAQ;AAC3B,cAAM,EAAE,SAAS,UAAU,QAAQ,SAAS,QAAQ,IAAI;AAExD,YACC,YAAY,OACZ,MAAM,oBACN,UACA,WACA,SACC;AACD;AAAA,QACD;AAOA,YAAK,CAAE,MAAM,OAAO,SAAU,OAAQ,GAAI;AACzC;AAAA,QACD;AAEA,YAAK,UAAW;AACf,cAAK,iBAAkB,QAAS,GAAI;AACnC,kBAAM,eAAe;AAAA,UACtB;AAAA,QACD,WAAY,gBAAiB,QAAS,GAAI;AACzC,gBAAM,eAAe;AAAA,QACtB;AAAA,MACD;AAOA,YAAM,EAAE,cAAc,IAAI;AAC1B,oBAAc,iBAAkB,WAAW,WAAW,IAAK;AAC3D,aAAO,MAAM;AACZ,sBAAc,oBAAqB,WAAW,WAAW,IAAK;AAAA,MAC/D;AAAA,IACD;AAAA,IACA,CAAE,UAAU,QAAS;AAAA,EACtB;AACD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// packages/block-library/src/list-item/hooks/use-tab.js
|
|
2
|
+
import { useRefEffect } from "@wordpress/compose";
|
|
3
|
+
import { privateApis as richTextPrivateApis } from "@wordpress/rich-text";
|
|
4
|
+
import { SPACE, TAB } from "@wordpress/keycodes";
|
|
5
|
+
import { store as blockEditorStore } from "@wordpress/block-editor";
|
|
6
|
+
import { useRegistry } from "@wordpress/data";
|
|
7
|
+
import { isEntirelySelected } from "@wordpress/dom";
|
|
8
|
+
import { indentListItems, outdentListItems } from "../utils.mjs";
|
|
9
|
+
import { unlock } from "../../lock-unlock.mjs";
|
|
10
|
+
var { subscribeOwnedListener } = unlock(richTextPrivateApis);
|
|
11
|
+
function useTab() {
|
|
12
|
+
const registry = useRegistry();
|
|
13
|
+
return useRefEffect(
|
|
14
|
+
(element) => {
|
|
15
|
+
function onKeyDown(event) {
|
|
16
|
+
const { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;
|
|
17
|
+
if (event.defaultPrevented || keyCode !== SPACE && keyCode !== TAB || // Shift selects outdent; other modifiers pass through.
|
|
18
|
+
altKey || metaKey || ctrlKey) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const { getSelectionStart, getSelectionEnd } = registry.select(blockEditorStore);
|
|
22
|
+
const isAtStart = getSelectionStart().offset === 0 && getSelectionEnd().offset === 0;
|
|
23
|
+
if (!isAtStart && !(keyCode === TAB && isEntirelySelected(element))) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const move = shiftKey ? outdentListItems : indentListItems;
|
|
27
|
+
if (move(registry)) {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return subscribeOwnedListener(
|
|
32
|
+
element,
|
|
33
|
+
"keydown",
|
|
34
|
+
onKeyDown,
|
|
35
|
+
true
|
|
36
|
+
);
|
|
37
|
+
},
|
|
38
|
+
[registry]
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
useTab as default
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=use-tab.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/list-item/hooks/use-tab.js"],
|
|
4
|
+
"sourcesContent": ["import { useRefEffect } from '@wordpress/compose';\nimport { privateApis as richTextPrivateApis } from '@wordpress/rich-text';\nimport { SPACE, TAB } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useRegistry } from '@wordpress/data';\nimport { isEntirelySelected } from '@wordpress/dom';\nimport { indentListItems, outdentListItems } from '../utils';\nimport { unlock } from '../../lock-unlock';\n\nconst { subscribeOwnedListener } = unlock( richTextPrivateApis );\n\nexport default function useTab() {\n\tconst registry = useRegistry();\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t( keyCode !== SPACE && keyCode !== TAB ) ||\n\t\t\t\t\t// Shift selects outdent; other modifiers pass through.\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\t\t\tregistry.select( blockEditorStore );\n\t\t\t\tconst isAtStart =\n\t\t\t\t\tgetSelectionStart().offset === 0 &&\n\t\t\t\t\tgetSelectionEnd().offset === 0;\n\n\t\t\t\t// Both keys act at the start of an item; Tab also acts on a\n\t\t\t\t// full selection.\n\t\t\t\tif (\n\t\t\t\t\t! isAtStart &&\n\t\t\t\t\t! ( keyCode === TAB && isEntirelySelected( element ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst move = shiftKey ? outdentListItems : indentListItems;\n\t\t\t\tif ( move( registry ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Capture phase so we run before writing-flow's ancestor-bubble\n\t\t\t// keydown handlers that gate on `event.defaultPrevented`.\n\t\t\treturn subscribeOwnedListener(\n\t\t\t\telement,\n\t\t\t\t'keydown',\n\t\t\t\tonKeyDown,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\t[ registry ]\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,eAAe,2BAA2B;AACnD,SAAS,OAAO,WAAW;AAC3B,SAAS,SAAS,wBAAwB;AAC1C,SAAS,mBAAmB;AAC5B,SAAS,0BAA0B;AACnC,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,cAAc;AAEvB,IAAM,EAAE,uBAAuB,IAAI,OAAQ,mBAAoB;AAEhD,SAAR,SAA0B;AAChC,QAAM,WAAW,YAAY;AAE7B,SAAO;AAAA,IACN,CAAE,YAAa;AACd,eAAS,UAAW,OAAQ;AAC3B,cAAM,EAAE,SAAS,UAAU,QAAQ,SAAS,QAAQ,IAAI;AAExD,YACC,MAAM,oBACJ,YAAY,SAAS,YAAY;AAAA,QAEnC,UACA,WACA,SACC;AACD;AAAA,QACD;AAEA,cAAM,EAAE,mBAAmB,gBAAgB,IAC1C,SAAS,OAAQ,gBAAiB;AACnC,cAAM,YACL,kBAAkB,EAAE,WAAW,KAC/B,gBAAgB,EAAE,WAAW;AAI9B,YACC,CAAE,aACF,EAAI,YAAY,OAAO,mBAAoB,OAAQ,IAClD;AACD;AAAA,QACD;AACA,cAAM,OAAO,WAAW,mBAAmB;AAC3C,YAAK,KAAM,QAAS,GAAI;AACvB,gBAAM,eAAe;AAAA,QACtB;AAAA,MACD;AAIA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
// packages/block-library/src/list-item/index.js
|
|
2
|
-
import { __ } from "@wordpress/i18n";
|
|
3
2
|
import { listItem as icon } from "@wordpress/icons";
|
|
4
3
|
import { privateApis } from "@wordpress/block-editor";
|
|
5
|
-
import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
|
|
6
4
|
import initBlock from "../utils/init-block.mjs";
|
|
7
5
|
import metadata from "./block.json";
|
|
8
6
|
import edit from "./edit.mjs";
|
|
9
7
|
import save from "./save.mjs";
|
|
10
8
|
import transforms from "./transforms.mjs";
|
|
11
9
|
import { unlock } from "../lock-unlock.mjs";
|
|
12
|
-
var { fieldsKey, formKey } = unlock(blocksPrivateApis);
|
|
13
10
|
var { name } = metadata;
|
|
14
11
|
var settings = {
|
|
15
12
|
icon,
|
|
@@ -35,20 +32,6 @@ var settings = {
|
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
|
-
if (window.__experimentalContentOnlyInspectorFields) {
|
|
39
|
-
settings[fieldsKey] = [
|
|
40
|
-
{
|
|
41
|
-
id: "content",
|
|
42
|
-
label: __("Content"),
|
|
43
|
-
type: "text",
|
|
44
|
-
Edit: "rich-text"
|
|
45
|
-
// TODO: replace with custom component
|
|
46
|
-
}
|
|
47
|
-
];
|
|
48
|
-
settings[formKey] = {
|
|
49
|
-
fields: ["content"]
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
35
|
var init = () => initBlock({ name, metadata, settings });
|
|
53
36
|
export {
|
|
54
37
|
init,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/list-item/index.js"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { listItem as icon } from '@wordpress/icons';\nimport { privateApis } from '@wordpress/block-editor';\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport transforms from './transforms';\nimport { unlock } from '../lock-unlock';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\t...attributes,\n\t\t\tcontent: attributes.content + attributesToMerge.content,\n\t\t};\n\t},\n\ttransforms,\n\t[ unlock( privateApis ).requiresWrapperOnCopy ]: true,\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { content } = attributes;\n\n\t\tconst customName = attributes?.metadata?.name;\n\t\tconst hasContent = content?.trim().length > 0;\n\n\t\t// In the list view, use the block's content as the label.\n\t\t// If the content is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && ( customName || hasContent ) ) {\n\t\t\treturn customName || content;\n\t\t}\n\n\t\tif ( context === 'breadcrumb' && customName ) {\n\t\t\treturn customName;\n\t\t}\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,YAAY,YAAY;AACjC,SAAS,mBAAmB;AAC5B,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AAEvB,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAO,YAAY,mBAAoB;AACtC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,SAAS,WAAW,UAAU,kBAAkB;AAAA,IACjD;AAAA,EACD;AAAA,EACA;AAAA,EACA,CAAE,OAAQ,WAAY,EAAE,qBAAsB,GAAG;AAAA,EACjD,oBAAqB,YAAY,EAAE,QAAQ,GAAI;AAC9C,UAAM,EAAE,QAAQ,IAAI;AAEpB,UAAM,aAAa,YAAY,UAAU;AACzC,UAAM,aAAa,SAAS,KAAK,EAAE,SAAS;AAI5C,QAAK,YAAY,gBAAiB,cAAc,aAAe;AAC9D,aAAO,cAAc;AAAA,IACtB;AAEA,QAAK,YAAY,gBAAgB,YAAa;AAC7C,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// packages/block-library/src/list-item/utils.js
|
|
2
|
+
import { store as blockEditorStore } from "@wordpress/block-editor";
|
|
3
|
+
import { cloneBlock } from "@wordpress/blocks";
|
|
4
|
+
function getIndentTarget(select, clientId) {
|
|
5
|
+
return select.getPreviousBlockClientId(clientId);
|
|
6
|
+
}
|
|
7
|
+
function getOutdentTarget(select, clientId) {
|
|
8
|
+
const listId = select.getBlockRootClientId(clientId);
|
|
9
|
+
const parentListItemId = select.getBlockRootClientId(listId);
|
|
10
|
+
if (!parentListItemId || select.getBlockName(parentListItemId) !== "core/list-item") {
|
|
11
|
+
return void 0;
|
|
12
|
+
}
|
|
13
|
+
return parentListItemId;
|
|
14
|
+
}
|
|
15
|
+
function moveBlocksToNestedList(registry, clientIds, sourceListId, listItemId) {
|
|
16
|
+
const { getBlockOrder, getBlock } = registry.select(blockEditorStore);
|
|
17
|
+
const { moveBlocksToPosition, removeBlocks, insertBlock } = registry.dispatch(blockEditorStore);
|
|
18
|
+
const nestedLists = getBlockOrder(listItemId);
|
|
19
|
+
const nestedListId = nestedLists[nestedLists.length - 1];
|
|
20
|
+
if (nestedListId) {
|
|
21
|
+
moveBlocksToPosition(clientIds, sourceListId, nestedListId);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const nestedList = cloneBlock(
|
|
25
|
+
getBlock(sourceListId),
|
|
26
|
+
{},
|
|
27
|
+
clientIds.map((id) => getBlock(id))
|
|
28
|
+
);
|
|
29
|
+
registry.batch(() => {
|
|
30
|
+
removeBlocks(clientIds, false);
|
|
31
|
+
insertBlock(nestedList, 0, listItemId, false);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function indentListItems(registry, clientId) {
|
|
35
|
+
const select = registry.select(blockEditorStore);
|
|
36
|
+
const {
|
|
37
|
+
getBlockRootClientId,
|
|
38
|
+
getSelectedBlockClientIds,
|
|
39
|
+
getSelectionStart,
|
|
40
|
+
getSelectionEnd,
|
|
41
|
+
hasMultiSelection,
|
|
42
|
+
getMultiSelectedBlockClientIds
|
|
43
|
+
} = select;
|
|
44
|
+
const { selectionChange, multiSelect } = registry.dispatch(blockEditorStore);
|
|
45
|
+
const _hasMultiSelection = hasMultiSelection();
|
|
46
|
+
const clientIds = _hasMultiSelection ? getMultiSelectedBlockClientIds() : getSelectedBlockClientIds();
|
|
47
|
+
if (clientId === void 0) {
|
|
48
|
+
clientId = clientIds[0];
|
|
49
|
+
}
|
|
50
|
+
const previousSiblingId = getIndentTarget(select, clientId);
|
|
51
|
+
if (!previousSiblingId) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const rootClientId = getBlockRootClientId(clientId);
|
|
55
|
+
const selectionStart = getSelectionStart();
|
|
56
|
+
const selectionEnd = getSelectionEnd();
|
|
57
|
+
registry.batch(() => {
|
|
58
|
+
moveBlocksToNestedList(
|
|
59
|
+
registry,
|
|
60
|
+
clientIds,
|
|
61
|
+
rootClientId,
|
|
62
|
+
previousSiblingId
|
|
63
|
+
);
|
|
64
|
+
if (!_hasMultiSelection) {
|
|
65
|
+
selectionChange(
|
|
66
|
+
clientIds[0],
|
|
67
|
+
selectionEnd.attributeKey,
|
|
68
|
+
selectionEnd.clientId === selectionStart.clientId ? selectionStart.offset : selectionEnd.offset,
|
|
69
|
+
selectionEnd.offset
|
|
70
|
+
);
|
|
71
|
+
} else {
|
|
72
|
+
multiSelect(clientIds[0], clientIds[clientIds.length - 1]);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function outdentListItems(registry, clientIds) {
|
|
78
|
+
const select = registry.select(blockEditorStore);
|
|
79
|
+
const {
|
|
80
|
+
getBlockRootClientId,
|
|
81
|
+
getBlockName,
|
|
82
|
+
getBlockOrder,
|
|
83
|
+
getBlockIndex,
|
|
84
|
+
getSelectedBlockClientIds
|
|
85
|
+
} = select;
|
|
86
|
+
const { moveBlocksToPosition, removeBlock, multiSelect } = registry.dispatch(blockEditorStore);
|
|
87
|
+
if (clientIds === void 0) {
|
|
88
|
+
clientIds = getSelectedBlockClientIds();
|
|
89
|
+
}
|
|
90
|
+
if (!Array.isArray(clientIds)) {
|
|
91
|
+
clientIds = [clientIds];
|
|
92
|
+
}
|
|
93
|
+
if (!clientIds.length) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const firstClientId = clientIds[0];
|
|
97
|
+
if (getBlockName(firstClientId) !== "core/list-item") {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
const parentListItemId = getOutdentTarget(select, firstClientId);
|
|
101
|
+
if (!parentListItemId) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
const parentListId = getBlockRootClientId(firstClientId);
|
|
105
|
+
const lastClientId = clientIds[clientIds.length - 1];
|
|
106
|
+
const order = getBlockOrder(parentListId);
|
|
107
|
+
const followingListItems = order.slice(getBlockIndex(lastClientId) + 1);
|
|
108
|
+
registry.batch(() => {
|
|
109
|
+
if (followingListItems.length) {
|
|
110
|
+
moveBlocksToNestedList(
|
|
111
|
+
registry,
|
|
112
|
+
followingListItems,
|
|
113
|
+
parentListId,
|
|
114
|
+
firstClientId
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
moveBlocksToPosition(
|
|
118
|
+
clientIds,
|
|
119
|
+
parentListId,
|
|
120
|
+
getBlockRootClientId(parentListItemId),
|
|
121
|
+
getBlockIndex(parentListItemId) + 1
|
|
122
|
+
);
|
|
123
|
+
if (!getBlockOrder(parentListId).length) {
|
|
124
|
+
const shouldSelectParent = false;
|
|
125
|
+
removeBlock(parentListId, shouldSelectParent);
|
|
126
|
+
}
|
|
127
|
+
if (clientIds.length > 1) {
|
|
128
|
+
multiSelect(firstClientId, lastClientId);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
export {
|
|
134
|
+
getIndentTarget,
|
|
135
|
+
getOutdentTarget,
|
|
136
|
+
indentListItems,
|
|
137
|
+
moveBlocksToNestedList,
|
|
138
|
+
outdentListItems
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=utils.mjs.map
|