@wordpress/block-editor 12.21.0 → 12.23.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 +4 -0
- package/README.md +4 -0
- package/build/components/block-actions/index.js +2 -4
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.js +5 -5
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build/components/block-list/block-crash-boundary.native.js +49 -0
- package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build/components/block-list/block-crash-warning.native.js +24 -0
- package/build/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build/components/block-list/block.js +11 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +7 -2
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +5 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +4 -1
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-settings/container.native.js +2 -1
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +36 -32
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -3
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +4 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +8 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +19 -10
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +48 -8
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +14 -2
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +108 -11
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +11 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +9 -2
- package/build/components/global-styles/advanced-panel.js.map +1 -1
- package/build/components/global-styles/background-panel.js +444 -0
- package/build/components/global-styles/background-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +8 -33
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -0
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +13 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +16 -15
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -3
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +43 -34
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +11 -11
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/mobile-tab-navigation.js +1 -1
- package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build/components/inserter/search-items.js +36 -15
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +2 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -2
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build/components/keyboard-shortcuts/index.js +11 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +18 -12
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +4 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +17 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-collapse-items.js +47 -0
- package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build/components/list-view/utils.js +5 -3
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/rich-text/index.js +14 -11
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +17 -11
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +2 -2
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/with-deprecations.js +0 -3
- package/build/components/rich-text/with-deprecations.js.map +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +50 -36
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-display-information/index.js +4 -6
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +4 -0
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/warning/index.native.js +9 -4
- package/build/components/warning/index.native.js.map +1 -1
- package/build/hooks/anchor.js +9 -10
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +85 -402
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/index.js +9 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +28 -6
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/layout.js +21 -10
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +1 -1
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/use-zoom-out.js +47 -0
- package/build/hooks/use-zoom-out.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +5 -1
- package/build/private-apis.native.js.map +1 -1
- package/build/store/private-actions.js +13 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +24 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +53 -26
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +34 -32
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +7 -1
- package/build/store/utils.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -1
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +2 -4
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +5 -5
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
- package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build-module/components/block-list/block-crash-warning.native.js +15 -0
- package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build-module/components/block-list/block.js +11 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +7 -2
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +5 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +4 -1
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +3 -2
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +37 -33
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +1 -3
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +4 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +8 -5
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +19 -10
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +50 -10
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -2
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +109 -12
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +9 -2
- package/build-module/components/global-styles/advanced-panel.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +430 -0
- package/build-module/components/global-styles/background-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +2 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +9 -34
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -0
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +17 -16
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -2
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +43 -34
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +11 -11
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build-module/components/inserter/search-items.js +33 -15
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +2 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -2
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build-module/components/keyboard-shortcuts/index.js +11 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +19 -13
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +6 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +17 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
- package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build-module/components/list-view/utils.js +2 -1
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/rich-text/index.js +15 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +16 -11
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +2 -2
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/with-deprecations.js +0 -3
- package/build-module/components/rich-text/with-deprecations.js.map +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +50 -36
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -7
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +4 -0
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/warning/index.native.js +9 -4
- package/build-module/components/warning/index.native.js.map +1 -1
- package/build-module/hooks/anchor.js +10 -11
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +82 -397
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/index.js +3 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +28 -6
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/layout.js +21 -10
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +1 -1
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +41 -0
- package/build-module/hooks/use-zoom-out.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +7 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +5 -1
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/private-actions.js +12 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +22 -4
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +52 -26
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +35 -33
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +6 -1
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -1
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +18 -1
- package/build-style/content.css +18 -1
- package/build-style/style-rtl.css +92 -99
- package/build-style/style.css +92 -99
- package/package.json +31 -31
- package/src/components/block-actions/index.js +2 -8
- package/src/components/block-bindings-toolbar-indicator/style.scss +10 -8
- package/src/components/block-heading-level-dropdown/README.md +5 -5
- package/src/components/block-heading-level-dropdown/index.js +5 -5
- package/src/components/block-heading-level-dropdown/index.native.js +5 -4
- package/src/components/block-list/block-crash-boundary.native.js +43 -0
- package/src/components/block-list/block-crash-warning.native.js +19 -0
- package/src/components/block-list/block.js +19 -3
- package/src/components/block-list/block.native.js +14 -7
- package/src/components/block-list/content.scss +16 -0
- package/src/components/block-mover/button.js +4 -1
- package/src/components/block-mover/index.js +8 -1
- package/src/components/block-patterns-list/index.js +22 -17
- package/src/components/block-preview/style.scss +28 -0
- package/src/components/block-settings/container.native.js +5 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +49 -58
- package/src/components/block-settings-menu-controls/README.md +0 -9
- package/src/components/block-settings-menu-controls/index.js +1 -6
- package/src/components/block-switcher/index.js +5 -3
- package/src/components/block-switcher/style.scss +1 -1
- package/src/components/block-toolbar/index.js +25 -20
- package/src/components/block-toolbar/shuffle.js +20 -14
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-toolbar/test/index.native.js +1 -7
- package/src/components/block-tools/block-selection-button.js +66 -9
- package/src/components/block-tools/index.js +18 -1
- package/src/components/button-block-appender/content.scss +5 -1
- package/src/components/child-layout-control/index.js +147 -35
- package/src/components/convert-to-group-buttons/toolbar.js +13 -1
- package/src/components/default-block-appender/content.scss +2 -2
- package/src/components/global-styles/advanced-panel.js +8 -2
- package/src/components/global-styles/background-panel.js +591 -0
- package/src/components/global-styles/color-panel.js +2 -1
- package/src/components/global-styles/dimensions-panel.js +9 -34
- package/src/components/global-styles/get-global-styles-changes.js +3 -0
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/index.js +4 -0
- package/src/components/global-styles/style.scss +78 -1
- package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
- package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
- package/src/components/global-styles/test/use-global-styles-output.js +40 -9
- package/src/components/global-styles/use-global-styles-output.js +30 -17
- package/src/components/global-styles/utils.js +1 -18
- package/src/components/iframe/index.js +79 -53
- package/src/components/inserter/block-patterns-explorer/index.js +2 -9
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
- package/src/components/inserter/block-patterns-tab/index.js +1 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/src/components/inserter/library.js +4 -0
- package/src/components/inserter/menu.js +12 -11
- package/src/components/inserter/mobile-tab-navigation.js +1 -1
- package/src/components/inserter/search-items.js +37 -15
- package/src/components/inserter/search-results.js +1 -2
- package/src/components/inserter/style.scss +6 -12
- package/src/components/inserter/tabs.js +1 -2
- package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
- package/src/components/keyboard-shortcuts/index.js +11 -0
- package/src/components/link-control/style.scss +0 -5
- package/src/components/list-view/block-select-button.js +15 -19
- package/src/components/list-view/block.js +12 -21
- package/src/components/list-view/index.js +18 -1
- package/src/components/list-view/style.scss +38 -28
- package/src/components/list-view/use-list-view-collapse-items.js +33 -0
- package/src/components/list-view/utils.js +4 -1
- package/src/components/rich-text/README.md +6 -0
- package/src/components/rich-text/index.js +30 -13
- package/src/components/rich-text/index.native.js +14 -11
- package/src/components/rich-text/native/get-format-colors.native.js +1 -1
- package/src/components/rich-text/native/index.native.js +2 -2
- package/src/components/rich-text/with-deprecations.js +0 -3
- package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/src/components/url-popover/image-url-input-ui.js +68 -51
- package/src/components/use-block-display-information/index.js +8 -10
- package/src/components/use-moving-animation/index.js +1 -0
- package/src/components/warning/index.native.js +19 -15
- package/src/hooks/anchor.js +43 -61
- package/src/hooks/background.js +100 -516
- package/src/hooks/index.js +3 -0
- package/src/hooks/layout-child.js +44 -8
- package/src/hooks/layout.js +22 -18
- package/src/hooks/position.js +1 -1
- package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
- package/src/hooks/test/anchor.native.js +32 -0
- package/src/hooks/use-zoom-out.js +36 -0
- package/src/index.js +1 -0
- package/src/private-apis.js +13 -1
- package/src/private-apis.native.js +4 -0
- package/src/store/private-actions.js +12 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +54 -27
- package/src/store/reducer.js +63 -41
- package/src/store/selectors.js +195 -180
- package/src/store/test/private-actions.js +10 -0
- package/src/store/test/private-selectors.js +13 -0
- package/src/store/test/reducer.js +26 -0
- package/src/store/test/selectors.js +90 -199
- package/src/store/utils.js +13 -0
- package/src/style.scss +0 -2
- package/src/utils/transform-styles/index.js +2 -1
- package/tsconfig.json +1 -0
- package/build/utils/calculate-scale.js +0 -17
- package/build/utils/calculate-scale.js.map +0 -1
- package/build-module/utils/calculate-scale.js +0 -11
- package/build-module/utils/calculate-scale.js.map +0 -1
- package/src/hooks/anchor.scss +0 -4
- package/src/hooks/background.scss +0 -75
- package/src/utils/calculate-scale.js +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","hasBlockSupport","Button","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Tooltip","forwardRef","Icon","connection","lockSmall","lock","pinSmall","SPACE","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","__unstableUseShortcutEventMatch","useShortcutEventMatch","__","sprintf","isShallowEqual","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","ListViewExpander","useBlockLock","store","blockEditorStore","useListViewImages","useListViewContext","canBindBlock","ListViewBlockSelectButton","className","block","clientId","name","blockName","onClick","onContextMenu","onMouseDown","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","isExpanded","ariaLabel","ariaDescribedBy","updateFocusAndSelection","ref","blockInformation","blockTitle","context","isLocked","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlocksByClientId","getBlockAttributes","canRemoveBlocks","duplicateBlocks","multiSelect","removeBlocks","isMatch","isSticky","positionType","images","rootClientId","isConnected","metadata","bindings","positionLabel","onDragStartHandler","event","dataTransfer","clearData","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDownHandler","keyCode","_getPreviousBlockClie","blocksToDelete","blockToFocus","shouldUpdateSelection","length","defaultPrevented","preventDefault","canDuplicate","every","updatedBlocks","blockClientIds","createElement","Fragment","onKeyDown","href","icon","showColors","alignment","justify","spacing","ellipsizeMode","anchor","text","map","image","index","key","style","backgroundImage","url","zIndex"],"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tTooltip,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport {\n\tIcon,\n\tconnection,\n\tlockSmall as lock,\n\tpinSmall,\n} from '@wordpress/icons';\nimport { SPACE, ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { __, sprintf } from '@wordpress/i18n';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport ListViewExpander from './expander';\nimport { useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport useListViewImages from './use-list-view-images';\nimport { useListViewContext } from './context';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId, name: blockName },\n\t\tonClick,\n\t\tonContextMenu,\n\t\tonMouseDown,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t\tisExpanded,\n\t\tariaLabel,\n\t\tariaDescribedBy,\n\t\tupdateFocusAndSelection,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlocksByClientId,\n\t\tgetBlockAttributes,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { duplicateBlocks, multiSelect, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\tconst isSticky = blockInformation?.positionType === 'sticky';\n\tconst images = useListViewImages( { clientId, isExpanded } );\n\tconst { rootClientId } = useListViewContext();\n\n\tconst isConnected = getBlockAttributes( clientId )?.metadata?.bindings;\n\n\tconst positionLabel = blockInformation?.positionLabel\n\t\t? sprintf(\n\t\t\t\t// translators: 1: Position of selected block, e.g. \"Sticky\" or \"Fixed\".\n\t\t\t\t__( 'Position: %1$s' ),\n\t\t\t\tblockInformation.positionLabel\n\t\t )\n\t\t: '';\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart?.( event );\n\t};\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t} else if (\n\t\t\tevent.keyCode === BACKSPACE ||\n\t\t\tevent.keyCode === DELETE ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete, firstBlockRootClientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, firstBlockRootClientId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-label={ ariaLabel }\n\t\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ blockInformation?.icon }\n\t\t\t\t\tshowColors\n\t\t\t\t\tcontext=\"list-view\"\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__label-wrapper\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t\t<Truncate ellipsizeMode=\"auto\">{ blockTitle }</Truncate>\n\t\t\t\t\t</span>\n\t\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor-wrapper\">\n\t\t\t\t\t\t\t<Truncate\n\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__anchor\"\n\t\t\t\t\t\t\t\tellipsizeMode=\"auto\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isConnected && canBindBlock( blockName ) && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__bindings\">\n\t\t\t\t\t\t\t<Icon icon={ connection } />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ positionLabel && isSticky && (\n\t\t\t\t\t\t<Tooltip text={ positionLabel }>\n\t\t\t\t\t\t\t<Icon icon={ pinSmall } />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ images.length ? (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__images\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ images.map( ( image, index ) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__image\"\n\t\t\t\t\t\t\t\t\tkey={ image.clientId }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${ image.url })`,\n\t\t\t\t\t\t\t\t\t\tzIndex: images.length - index, // Ensure the first image is on top, and subsequent images are behind.\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : null }\n\t\t\t\t\t{ isLocked && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__lock\">\n\t\t\t\t\t\t\t<Icon icon={ lock } />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SACCC,MAAM,EACNC,oBAAoB,IAAIC,MAAM,EAC9BC,sBAAsB,IAAIC,QAAQ,EAClCC,OAAO,QACD,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SACCC,IAAI,EACJC,UAAU,EACVC,SAAS,IAAIC,IAAI,EACjBC,QAAQ,QACF,kBAAkB;AACzB,SAASC,KAAK,EAAEC,KAAK,EAAEC,SAAS,EAAEC,MAAM,QAAQ,qBAAqB;AACrE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,+BAA+B,IAAIC,qBAAqB,QAAQ,+BAA+B;AACxG,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,OAAOC,cAAc,MAAM,6BAA6B;;AAExD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,0BAA0B,MAAM,kCAAkC;AACzE,OAAOC,oBAAoB,MAAM,wCAAwC;AACzE,OAAOC,gBAAgB,MAAM,YAAY;AACzC,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,iBAAiB,MAAM,wBAAwB;AACtD,SAASC,kBAAkB,QAAQ,WAAW;AAC9C,SAASC,YAAY,QAAQ,qCAAqC;AAElE,SAASC,yBAAyBA,CACjC;EACCC,SAAS;EACTC,KAAK,EAAE;IAAEC,QAAQ;IAAEC,IAAI,EAAEC;EAAU,CAAC;EACpCC,OAAO;EACPC,aAAa;EACbC,WAAW;EACXC,gBAAgB;EAChBC,QAAQ;EACRC,OAAO;EACPC,WAAW;EACXC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,eAAe;EACfC;AACD,CAAC,EACDC,GAAG,EACF;EACD,MAAMC,gBAAgB,GAAG7B,0BAA0B,CAAEY,QAAS,CAAC;EAC/D,MAAMkB,UAAU,GAAG7B,oBAAoB,CAAE;IACxCW,QAAQ;IACRmB,OAAO,EAAE;EACV,CAAE,CAAC;EACH,MAAM;IAAEC;EAAS,CAAC,GAAG7B,YAAY,CAAES,QAAS,CAAC;EAC7C,MAAM;IACLqB,kBAAkB;IAClBC,yBAAyB;IACzBC,wBAAwB;IACxBC,oBAAoB;IACpBC,aAAa;IACbC,mBAAmB;IACnBC,kBAAkB;IAClBC;EACD,CAAC,GAAGhD,SAAS,CAAEa,gBAAiB,CAAC;EACjC,MAAM;IAAEoC,eAAe;IAAEC,WAAW;IAAEC;EAAa,CAAC,GACnDlD,WAAW,CAAEY,gBAAiB,CAAC;EAChC,MAAMuC,OAAO,GAAGjD,qBAAqB,CAAC,CAAC;EACvC,MAAMkD,QAAQ,GAAGhB,gBAAgB,EAAEiB,YAAY,KAAK,QAAQ;EAC5D,MAAMC,MAAM,GAAGzC,iBAAiB,CAAE;IAAEM,QAAQ;IAAEY;EAAW,CAAE,CAAC;EAC5D,MAAM;IAAEwB;EAAa,CAAC,GAAGzC,kBAAkB,CAAC,CAAC;EAE7C,MAAM0C,WAAW,GAAGV,kBAAkB,CAAE3B,QAAS,CAAC,EAAEsC,QAAQ,EAAEC,QAAQ;EAEtE,MAAMC,aAAa,GAAGvB,gBAAgB,EAAEuB,aAAa,GAClDvD,OAAO;EACP;EACAD,EAAE,CAAE,gBAAiB,CAAC,EACtBiC,gBAAgB,CAACuB,aACjB,CAAC,GACD,EAAE;;EAEL;EACA;EACA;EACA;EACA,MAAMC,kBAAkB,GAAKC,KAAK,IAAM;IACvCA,KAAK,CAACC,YAAY,CAACC,SAAS,CAAC,CAAC;IAC9BnC,WAAW,GAAIiC,KAAM,CAAC;EACvB,CAAC;;EAED;EACA;EACA;EACA,SAASG,iBAAiBA,CAAA,EAAG;IAC5B,MAAMC,sBAAsB,GAAGxB,yBAAyB,CAAC,CAAC;IAC1D,MAAMyB,wBAAwB,GAC7BD,sBAAsB,CAACE,QAAQ,CAAEhD,QAAS,CAAC;IAC5C,MAAMiD,kBAAkB,GAAGF,wBAAwB,GAChDD,sBAAsB,CAAE,CAAC,CAAE,GAC3B9C,QAAQ;IACX,MAAMkD,sBAAsB,GAC3B1B,oBAAoB,CAAEyB,kBAAmB,CAAC;IAE3C,MAAME,cAAc,GAAGJ,wBAAwB,GAC5CD,sBAAsB,GACtB,CAAE9C,QAAQ,CAAE;IAEf,OAAO;MACNmD,cAAc;MACdF,kBAAkB;MAClBC,sBAAsB;MACtBJ;IACD,CAAC;EACF;;EAEA;AACD;AACA;EACC,eAAeM,gBAAgBA,CAAEV,KAAK,EAAG;IACxC,IAAKA,KAAK,CAACW,OAAO,KAAK5E,KAAK,IAAIiE,KAAK,CAACW,OAAO,KAAK7E,KAAK,EAAG;MACzD2B,OAAO,CAAEuC,KAAM,CAAC;IACjB,CAAC,MAAM,IACNA,KAAK,CAACW,OAAO,KAAK3E,SAAS,IAC3BgE,KAAK,CAACW,OAAO,KAAK1E,MAAM,IACxBqD,OAAO,CAAE,0BAA0B,EAAEU,KAAM,CAAC,EAC3C;MAAA,IAAAY,qBAAA;MACD,MAAM;QACLH,cAAc,EAAEI,cAAc;QAC9BN,kBAAkB;QAClBC,sBAAsB;QACtBJ;MACD,CAAC,GAAGD,iBAAiB,CAAC,CAAC;;MAEvB;MACA,IAAK,CAAEjB,eAAe,CAAE2B,cAAc,EAAEL,sBAAuB,CAAC,EAAG;QAClE;MACD;MAEA,IAAIM,YAAY,IAAAF,qBAAA,GACf/B,wBAAwB,CAAE0B,kBAAmB,CAAC,cAAAK,qBAAA,cAAAA,qBAAA;MAC9C;MACA;MACAJ,sBAAsB;MAEvBnB,YAAY,CAAEwB,cAAc,EAAE,KAAM,CAAC;;MAErC;MACA,MAAME,qBAAqB,GAC1BX,sBAAsB,CAACY,MAAM,GAAG,CAAC,IACjCpC,yBAAyB,CAAC,CAAC,CAACoC,MAAM,KAAK,CAAC;;MAEzC;MACA,IAAK,CAAEF,YAAY,EAAG;QACrBA,YAAY,GAAG/B,aAAa,CAAC,CAAC,CAAE,CAAC,CAAE;MACpC;MAEAV,uBAAuB,CAAEyC,YAAY,EAAEC,qBAAsB,CAAC;IAC/D,CAAC,MAAM,IAAKzB,OAAO,CAAE,6BAA6B,EAAEU,KAAM,CAAC,EAAG;MAC7D,IAAKA,KAAK,CAACiB,gBAAgB,EAAG;QAC7B;MACD;MACAjB,KAAK,CAACkB,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAET,cAAc;QAAED;MAAuB,CAAC,GAC/CL,iBAAiB,CAAC,CAAC;MAEpB,MAAMgB,YAAY,GAAGnC,mBAAmB,CAAEyB,cAAe,CAAC,CAACW,KAAK,CAC7D/D,KAAK,IAAM;QACZ,OACC,CAAC,CAAEA,KAAK,IACRpC,eAAe,CAAEoC,KAAK,CAACE,IAAI,EAAE,UAAU,EAAE,IAAK,CAAC,IAC/CoB,kBAAkB,CAAEtB,KAAK,CAACE,IAAI,EAAEiD,sBAAuB,CAAC;MAE1D,CACD,CAAC;MAED,IAAKW,YAAY,EAAG;QACnB,MAAME,aAAa,GAAG,MAAMlC,eAAe,CAC1CsB,cAAc,EACd,KACD,CAAC;QAED,IAAKY,aAAa,EAAEL,MAAM,EAAG;UAC5B;UACA3C,uBAAuB,CAAEgD,aAAa,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;QACrD;MACD;IACD,CAAC,MAAM,IAAK/B,OAAO,CAAE,8BAA8B,EAAEU,KAAM,CAAC,EAAG;MAC9D,IAAKA,KAAK,CAACiB,gBAAgB,EAAG;QAC7B;MACD;MACAjB,KAAK,CAACkB,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEV,sBAAsB;QAAEJ;MAAuB,CAAC,GACvDD,iBAAiB,CAAC,CAAC;MACpB,MAAMmB,cAAc,GAAGvC,aAAa,CAAEyB,sBAAuB,CAAC;MAC9D,IAAK,CAAEc,cAAc,CAACN,MAAM,EAAG;QAC9B;MACD;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA,IAAKxE,cAAc,CAAE4D,sBAAsB,EAAEkB,cAAe,CAAC,EAAG;QAC/D;QACA;QACA;QACA,IACCd,sBAAsB,IACtBA,sBAAsB,KAAKd,YAAY,EACtC;UACDrB,uBAAuB,CAAEmC,sBAAsB,EAAE,IAAK,CAAC;UACvD;QACD;MACD;;MAEA;MACA;MACApB,WAAW,CACVkC,cAAc,CAAE,CAAC,CAAE,EACnBA,cAAc,CAAEA,cAAc,CAACN,MAAM,GAAG,CAAC,CAAE,EAC3C,IACD,CAAC;IACF;EACD;EAEA,OACCO,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACrG,MAAM;IACNkC,SAAS,EAAGpC,UAAU,CACrB,4CAA4C,EAC5CoC,SACD,CAAG;IACHK,OAAO,EAAGA,OAAS;IACnBC,aAAa,EAAGA,aAAe;IAC/B+D,SAAS,EAAGf,gBAAkB;IAC9B/C,WAAW,EAAGA,WAAa;IAC3BW,GAAG,EAAGA,GAAK;IACXT,QAAQ,EAAGA,QAAU;IACrBC,OAAO,EAAGA,OAAS;IACnBC,WAAW,EAAGgC,kBAAoB;IAClC/B,SAAS,EAAGA,SAAW;IACvBC,SAAS,EAAGA,SAAW;IACvByD,IAAI,EAAI,UAAUpE,QAAU,EAAG;IAC/B,cAAaa,SAAW;IACxB,oBAAmBC,eAAiB;IACpC,iBAAgBF;EAAY,GAE5BqD,aAAA,CAAC3E,gBAAgB;IAACa,OAAO,EAAGG;EAAkB,CAAE,CAAC,EACjD2D,aAAA,CAAC9E,SAAS;IACTkF,IAAI,EAAGpD,gBAAgB,EAAEoD,IAAM;IAC/BC,UAAU;IACVnD,OAAO,EAAC;EAAW,CACnB,CAAC,EACF8C,aAAA,CAACnG,MAAM;IACNyG,SAAS,EAAC,QAAQ;IAClBzE,SAAS,EAAC,2DAA2D;IACrE0E,OAAO,EAAC,YAAY;IACpBC,OAAO,EAAG;EAAG,GAEbR,aAAA;IAAMnE,SAAS,EAAC;EAAmD,GAClEmE,aAAA,CAACjG,QAAQ;IAAC0G,aAAa,EAAC;EAAM,GAAGxD,UAAsB,CAClD,CAAC,EACLD,gBAAgB,EAAE0D,MAAM,IACzBV,aAAA;IAAMnE,SAAS,EAAC;EAA4D,GAC3EmE,aAAA,CAACjG,QAAQ;IACR8B,SAAS,EAAC,oDAAoD;IAC9D4E,aAAa,EAAC;EAAM,GAElBzD,gBAAgB,CAAC0D,MACV,CACL,CACN,EACCtC,WAAW,IAAIzC,YAAY,CAAEM,SAAU,CAAC,IACzC+D,aAAA;IAAMnE,SAAS,EAAC;EAAsD,GACrEmE,aAAA,CAAC9F,IAAI;IAACkG,IAAI,EAAGjG;EAAY,CAAE,CACtB,CACN,EACCoE,aAAa,IAAIP,QAAQ,IAC1BgC,aAAA,CAAChG,OAAO;IAAC2G,IAAI,EAAGpC;EAAe,GAC9ByB,aAAA,CAAC9F,IAAI;IAACkG,IAAI,EAAG9F;EAAU,CAAE,CACjB,CACT,EACC4D,MAAM,CAACuB,MAAM,GACdO,aAAA;IACCnE,SAAS,EAAC,oDAAoD;IAC9D;EAAW,GAETqC,MAAM,CAAC0C,GAAG,CAAE,CAAEC,KAAK,EAAEC,KAAK,KAC3Bd,aAAA;IACCnE,SAAS,EAAC,mDAAmD;IAC7DkF,GAAG,EAAGF,KAAK,CAAC9E,QAAU;IACtBiF,KAAK,EAAG;MACPC,eAAe,EAAG,OAAOJ,KAAK,CAACK,GAAK,GAAE;MACtCC,MAAM,EAAEjD,MAAM,CAACuB,MAAM,GAAGqB,KAAK,CAAE;IAChC;EAAG,CACH,CACA,CACG,CAAC,GACJ,IAAI,EACN3D,QAAQ,IACT6C,aAAA;IAAMnE,SAAS,EAAC;EAAkD,GACjEmE,aAAA,CAAC9F,IAAI;IAACkG,IAAI,EAAG/F;EAAM,CAAE,CAChB,CAEA,CACD,CACP,CAAC;AAEL;AAEA,eAAeJ,UAAU,CAAE2B,yBAA0B,CAAC"}
|
|
1
|
+
{"version":3,"names":["classnames","hasBlockSupport","Button","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Tooltip","forwardRef","Icon","lockSmall","lock","pinSmall","SPACE","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","__unstableUseShortcutEventMatch","useShortcutEventMatch","__","sprintf","isShallowEqual","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","ListViewExpander","useBlockLock","store","blockEditorStore","useListViewImages","useListViewContext","ListViewBlockSelectButton","className","block","clientId","onClick","onContextMenu","onMouseDown","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","isExpanded","ariaDescribedBy","updateFocusAndSelection","ref","blockInformation","blockTitle","context","isLocked","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlockParents","getBlocksByClientId","canRemoveBlocks","duplicateBlocks","multiSelect","removeBlocks","isMatch","isSticky","positionType","images","collapseAll","expand","rootClientId","positionLabel","onDragStartHandler","event","dataTransfer","clearData","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDownHandler","keyCode","_getPreviousBlockClie","blocksToDelete","blockToFocus","shouldUpdateSelection","length","defaultPrevented","preventDefault","canDuplicate","every","name","updatedBlocks","blockClientIds","blockParents","createElement","Fragment","onKeyDown","href","icon","showColors","alignment","justify","spacing","ellipsizeMode","anchor","text","map","image","index","key","style","backgroundImage","url","zIndex"],"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tTooltip,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport { Icon, lockSmall as lock, pinSmall } from '@wordpress/icons';\nimport { SPACE, ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { __, sprintf } from '@wordpress/i18n';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport ListViewExpander from './expander';\nimport { useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport useListViewImages from './use-list-view-images';\nimport { useListViewContext } from './context';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId },\n\t\tonClick,\n\t\tonContextMenu,\n\t\tonMouseDown,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t\tisExpanded,\n\t\tariaDescribedBy,\n\t\tupdateFocusAndSelection,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockParents,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { duplicateBlocks, multiSelect, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\tconst isSticky = blockInformation?.positionType === 'sticky';\n\tconst images = useListViewImages( { clientId, isExpanded } );\n\tconst { collapseAll, expand, rootClientId } = useListViewContext();\n\n\tconst positionLabel = blockInformation?.positionLabel\n\t\t? sprintf(\n\t\t\t\t// translators: 1: Position of selected block, e.g. \"Sticky\" or \"Fixed\".\n\t\t\t\t__( 'Position: %1$s' ),\n\t\t\t\tblockInformation.positionLabel\n\t\t )\n\t\t: '';\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart?.( event );\n\t};\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t} else if (\n\t\t\tevent.keyCode === BACKSPACE ||\n\t\t\tevent.keyCode === DELETE ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete, firstBlockRootClientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, firstBlockRootClientId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if ( isMatch( 'core/block-editor/collapse-list-view', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tconst { firstBlockClientId } = getBlocksToUpdate();\n\t\t\tconst blockParents = getBlockParents( firstBlockClientId, false );\n\t\t\t// Collapse all blocks.\n\t\t\tcollapseAll();\n\t\t\t// Expand all parents of the current block.\n\t\t\texpand( blockParents );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ blockInformation?.icon }\n\t\t\t\t\tshowColors\n\t\t\t\t\tcontext=\"list-view\"\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__label-wrapper\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t\t<Truncate ellipsizeMode=\"auto\">{ blockTitle }</Truncate>\n\t\t\t\t\t</span>\n\t\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor-wrapper\">\n\t\t\t\t\t\t\t<Truncate\n\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__anchor\"\n\t\t\t\t\t\t\t\tellipsizeMode=\"auto\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ positionLabel && isSticky && (\n\t\t\t\t\t\t<Tooltip text={ positionLabel }>\n\t\t\t\t\t\t\t<Icon icon={ pinSmall } />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ images.length ? (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__images\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ images.map( ( image, index ) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__image\"\n\t\t\t\t\t\t\t\t\tkey={ image.clientId }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${ image.url })`,\n\t\t\t\t\t\t\t\t\t\tzIndex: images.length - index, // Ensure the first image is on top, and subsequent images are behind.\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : null }\n\t\t\t\t\t{ isLocked && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__lock\">\n\t\t\t\t\t\t\t<Icon icon={ lock } />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { useInstanceId } from '@wordpress/compose';
|
|
|
13
13
|
import { moreVertical } from '@wordpress/icons';
|
|
14
14
|
import { useCallback, useMemo, useState, useRef, memo } from '@wordpress/element';
|
|
15
15
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
16
|
-
import {
|
|
16
|
+
import { __ } from '@wordpress/i18n';
|
|
17
17
|
import { ESCAPE } from '@wordpress/keycodes';
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -24,7 +24,7 @@ import useListViewScrollIntoView from './use-list-view-scroll-into-view';
|
|
|
24
24
|
import { BlockMoverUpButton, BlockMoverDownButton } from '../block-mover/button';
|
|
25
25
|
import ListViewBlockContents from './block-contents';
|
|
26
26
|
import { useListViewContext } from './context';
|
|
27
|
-
import { getBlockPositionDescription, focusListItem } from './utils';
|
|
27
|
+
import { getBlockPositionDescription, getBlockPropertiesDescription, focusListItem } from './utils';
|
|
28
28
|
import { store as blockEditorStore } from '../../store';
|
|
29
29
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
30
30
|
import { useBlockLock } from '../block-lock';
|
|
@@ -66,7 +66,6 @@ function ListViewBlock({
|
|
|
66
66
|
toggleBlockHighlight
|
|
67
67
|
} = useDispatch(blockEditorStore);
|
|
68
68
|
const blockInformation = useBlockDisplayInformation(clientId);
|
|
69
|
-
const blockTitle = blockInformation?.name || blockInformation?.title || __('Untitled');
|
|
70
69
|
const {
|
|
71
70
|
block,
|
|
72
71
|
blockName,
|
|
@@ -92,7 +91,7 @@ function ListViewBlock({
|
|
|
92
91
|
// Don't show the settings menu if block is disabled or content only.
|
|
93
92
|
blockEditingMode === 'default';
|
|
94
93
|
const instanceId = useInstanceId(ListViewBlock);
|
|
95
|
-
const descriptionId = `list-view-block-select-
|
|
94
|
+
const descriptionId = `list-view-block-select-button__description-${instanceId}`;
|
|
96
95
|
const {
|
|
97
96
|
expand,
|
|
98
97
|
collapse,
|
|
@@ -198,12 +197,7 @@ function ListViewBlock({
|
|
|
198
197
|
return null;
|
|
199
198
|
}
|
|
200
199
|
const blockPositionDescription = getBlockPositionDescription(position, siblingBlockCount, level);
|
|
201
|
-
const
|
|
202
|
-
// translators: %s: The title of the block. This string indicates a link to select the locked block.
|
|
203
|
-
__('%s (locked)'), blockTitle) : blockTitle;
|
|
204
|
-
const settingsAriaLabel = sprintf(
|
|
205
|
-
// translators: %s: The title of the block.
|
|
206
|
-
__('Options for %s'), blockTitle);
|
|
200
|
+
const blockPropertiesDescription = getBlockPropertiesDescription(isLocked);
|
|
207
201
|
const hasSiblings = siblingBlockCount > 0;
|
|
208
202
|
const hasRenderedMovers = showBlockMovers && hasSiblings;
|
|
209
203
|
const moverCellClassName = classnames('block-editor-list-view-block__mover-cell', {
|
|
@@ -285,12 +279,11 @@ function ListViewBlock({
|
|
|
285
279
|
onFocus: onFocus,
|
|
286
280
|
isExpanded: canEdit ? isExpanded : undefined,
|
|
287
281
|
selectedClientIds: selectedClientIds,
|
|
288
|
-
ariaLabel: blockAriaLabel,
|
|
289
282
|
ariaDescribedBy: descriptionId,
|
|
290
283
|
updateFocusAndSelection: updateFocusAndSelection
|
|
291
284
|
}), createElement(AriaReferencedText, {
|
|
292
285
|
id: descriptionId
|
|
293
|
-
}, blockPositionDescription))), hasRenderedMovers && createElement(Fragment, null, createElement(TreeGridCell, {
|
|
286
|
+
}, `${blockPositionDescription} ${blockPropertiesDescription}`))), hasRenderedMovers && createElement(Fragment, null, createElement(TreeGridCell, {
|
|
294
287
|
className: moverCellClassName,
|
|
295
288
|
withoutGridItem: true
|
|
296
289
|
}, createElement(TreeGridItem, null, ({
|
|
@@ -325,7 +318,7 @@ function ListViewBlock({
|
|
|
325
318
|
clientIds: dropdownClientIds,
|
|
326
319
|
block: block,
|
|
327
320
|
icon: moreVertical,
|
|
328
|
-
label:
|
|
321
|
+
label: __('Options'),
|
|
329
322
|
popoverProps: {
|
|
330
323
|
anchor: settingsPopoverAnchor // Used to position the settings at the cursor on right-click.
|
|
331
324
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useCallback","useMemo","useState","useRef","memo","useDispatch","useSelect","sprintf","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","displacement","isAfterDraggedBlocks","isDragged","isNesting","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","settingsRef","isHovered","setIsHovered","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockTitle","name","title","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","allowRightClickOverrides","getSettings","showBlockActions","instanceId","descriptionId","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","current","toggleExpanded","onContextMenu","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","rowItemRef","blockPositionDescription","blockAriaLabel","settingsAriaLabel","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","colSpan","classes","isSynced","dropdownClientIds","includes","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaLabel","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription, focusListItem } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tdisplacement,\n\tisAfterDraggedBlocks,\n\tisDragged,\n\tisNesting,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle =\n\t\tblockInformation?.name || blockInformation?.title || __( 'Untitled' );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst allowRightClickOverrides = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().allowRightClickOverrides,\n\t\t[]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef?.current );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// When switching between rendering modes (such as template preview and content only),\n\t// it is possible for a block to temporarily be unavailable. In this case, we should not\n\t// render the leaf, to avoid errors further down the tree.\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockAriaLabel = isLocked\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t__( '%s (locked)' ),\n\t\t\t\tblockTitle\n\t\t )\n\t\t: blockTitle;\n\n\tconst settingsAriaLabel = sprintf(\n\t\t// translators: %s: The title of the block.\n\t\t__( 'Options for %s' ),\n\t\tblockTitle\n\t);\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t\t'is-displacement-normal': displacement === 'normal',\n\t\t'is-displacement-up': displacement === 'up',\n\t\t'is-displacement-down': displacement === 'down',\n\t\t'is-after-dragged-blocks': isAfterDraggedBlocks,\n\t\t'is-nesting': isNesting,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tisDragged={ isDragged }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaLabel={ blockAriaLabel }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useCallback","useMemo","useState","useRef","memo","useDispatch","useSelect","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","getBlockPropertiesDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","displacement","isAfterDraggedBlocks","isDragged","isNesting","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","settingsRef","isHovered","setIsHovered","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","allowRightClickOverrides","getSettings","showBlockActions","instanceId","descriptionId","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","current","toggleExpanded","onContextMenu","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","rowItemRef","blockPositionDescription","blockPropertiesDescription","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","colSpan","classes","isSynced","dropdownClientIds","includes","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport {\n\tgetBlockPositionDescription,\n\tgetBlockPropertiesDescription,\n\tfocusListItem,\n} from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tdisplacement,\n\tisAfterDraggedBlocks,\n\tisDragged,\n\tisNesting,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst allowRightClickOverrides = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().allowRightClickOverrides,\n\t\t[]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__description-${ instanceId }`;\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef?.current );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// When switching between rendering modes (such as template preview and content only),\n\t// it is possible for a block to temporarily be unavailable. In this case, we should not\n\t// render the leaf, to avoid errors further down the tree.\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockPropertiesDescription =\n\t\tgetBlockPropertiesDescription( isLocked );\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t\t'is-displacement-normal': displacement === 'normal',\n\t\t'is-displacement-up': displacement === 'up',\n\t\t'is-displacement-down': displacement === 'down',\n\t\t'is-after-dragged-blocks': isAfterDraggedBlocks,\n\t\t'is-nesting': isNesting,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tisDragged={ isDragged }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ `${ blockPositionDescription } ${ blockPropertiesDescription }` }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ import ListViewDropIndicatorPreview from './drop-indicator';
|
|
|
23
23
|
import useBlockSelection from './use-block-selection';
|
|
24
24
|
import useListViewBlockIndexes from './use-list-view-block-indexes';
|
|
25
25
|
import useListViewClientIds from './use-list-view-client-ids';
|
|
26
|
+
import useListViewCollapseItems from './use-list-view-collapse-items';
|
|
26
27
|
import useListViewDropZone from './use-list-view-drop-zone';
|
|
27
28
|
import useListViewExpandSelectedItem from './use-list-view-expand-selected-item';
|
|
28
29
|
import { store as blockEditorStore } from '../../store';
|
|
@@ -30,6 +31,9 @@ import { BlockSettingsDropdown } from '../block-settings-menu/block-settings-dro
|
|
|
30
31
|
import { focusListItem } from './utils';
|
|
31
32
|
import useClipboardHandler from './use-clipboard-handler';
|
|
32
33
|
const expanded = (state, action) => {
|
|
34
|
+
if (action.type === 'clear') {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
33
37
|
if (Array.isArray(action.clientIds)) {
|
|
34
38
|
return {
|
|
35
39
|
...state,
|
|
@@ -163,9 +167,10 @@ function ListViewComponent({
|
|
|
163
167
|
if (!clientId) {
|
|
164
168
|
return;
|
|
165
169
|
}
|
|
170
|
+
const clientIds = Array.isArray(clientId) ? clientId : [clientId];
|
|
166
171
|
setExpandedState({
|
|
167
172
|
type: 'expand',
|
|
168
|
-
clientIds
|
|
173
|
+
clientIds
|
|
169
174
|
});
|
|
170
175
|
}, [setExpandedState]);
|
|
171
176
|
const collapse = useCallback(clientId => {
|
|
@@ -177,6 +182,11 @@ function ListViewComponent({
|
|
|
177
182
|
clientIds: [clientId]
|
|
178
183
|
});
|
|
179
184
|
}, [setExpandedState]);
|
|
185
|
+
const collapseAll = useCallback(() => {
|
|
186
|
+
setExpandedState({
|
|
187
|
+
type: 'clear'
|
|
188
|
+
});
|
|
189
|
+
}, [setExpandedState]);
|
|
180
190
|
const expandRow = useCallback(row => {
|
|
181
191
|
expand(row?.dataset?.block);
|
|
182
192
|
}, [expand]);
|
|
@@ -188,6 +198,10 @@ function ListViewComponent({
|
|
|
188
198
|
updateBlockSelection(event, startRow?.dataset?.block, endRow?.dataset?.block);
|
|
189
199
|
}
|
|
190
200
|
}, [updateBlockSelection]);
|
|
201
|
+
useListViewCollapseItems({
|
|
202
|
+
collapseAll,
|
|
203
|
+
expand
|
|
204
|
+
});
|
|
191
205
|
const firstDraggedBlockClientId = draggedClientIds?.[0];
|
|
192
206
|
|
|
193
207
|
// Convert a blockDropTarget into indexes relative to the blocks in the list view.
|
|
@@ -226,6 +240,7 @@ function ListViewComponent({
|
|
|
226
240
|
expand,
|
|
227
241
|
firstDraggedBlockIndex,
|
|
228
242
|
collapse,
|
|
243
|
+
collapseAll,
|
|
229
244
|
BlockSettingsMenu,
|
|
230
245
|
listViewInstanceId: instanceId,
|
|
231
246
|
AdditionalBlockContent,
|
|
@@ -233,7 +248,7 @@ function ListViewComponent({
|
|
|
233
248
|
setInsertedBlock,
|
|
234
249
|
treeGridElementRef: elementRef,
|
|
235
250
|
rootClientId
|
|
236
|
-
}), [blockDropPosition, blockDropTargetIndex, blockIndexes, draggedClientIds, expandedState, expand, firstDraggedBlockIndex, collapse, BlockSettingsMenu, instanceId, AdditionalBlockContent, insertedBlock, setInsertedBlock, rootClientId]);
|
|
251
|
+
}), [blockDropPosition, blockDropTargetIndex, blockIndexes, draggedClientIds, expandedState, expand, firstDraggedBlockIndex, collapse, collapseAll, BlockSettingsMenu, instanceId, AdditionalBlockContent, insertedBlock, setInsertedBlock, rootClientId]);
|
|
237
252
|
|
|
238
253
|
// List View renders a fixed number of items and relies on each having a fixed item height of 36px.
|
|
239
254
|
// If this value changes, we should also change the itemHeight value set in useFixedWindowList.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useInstanceId","useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","VisuallyHidden","AsyncModeProvider","useSelect","deprecated","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","useState","__","ListViewBranch","ListViewContext","ListViewDropIndicatorPreview","useBlockSelection","useListViewBlockIndexes","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","BlockSettingsDropdown","focusListItem","useClipboardHandler","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListViewComponent","blocks","dropZoneElement","showBlockMovers","isExpanded","showAppender","blockSettingsMenu","BlockSettingsMenu","rootClientId","description","onSelect","additionalBlockContent","AdditionalBlockContent","ref","since","alternative","instanceId","clientIdsTree","draggedClientIds","selectedClientIds","blockIndexes","getBlock","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","insertedBlock","setInsertedBlock","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","focusPosition","dropZoneRef","target","blockDropTarget","elementRef","clipBoardRef","selectBlock","treeGridRef","current","expand","clientId","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","firstDraggedBlockClientId","blockDropTargetIndex","blockDropPosition","firstDraggedBlockIndex","_blockDropTargetIndex","_firstDraggedBlockIndex","foundBlockIndex","undefined","dropPosition","contextValue","listViewInstanceId","treeGridElementRef","fixedListWindow","useWindowing","windowOverscan","describedById","createElement","value","draggedBlockClientId","listViewRef","className","onCollapseRow","onExpandRow","onFocusRow","applicationAriaLabel","style","Provider","parentId","PrivateListView","props"],"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseInstanceId,\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicatorPreview from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewBlockIndexes from './use-list-view-block-indexes';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockSettingsDropdown } from '../block-settings-menu/block-settings-dropdown';\nimport { focusListItem } from './utils';\nimport useClipboardHandler from './use-clipboard-handler';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/** @typedef {import('react').ComponentType} ComponentType */\n/** @typedef {import('react').Ref<HTMLElement>} Ref */\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {?HTMLElement} props.dropZoneElement Optional element to be used as the drop zone.\n * @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.\n * @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.\n * @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.\n * @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.\n * @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.\n * @param {?ComponentType} props.additionalBlockContent Component that renders additional block content UI.\n * @param {Ref} ref Forwarded ref\n */\nfunction ListViewComponent(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tdropZoneElement,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tshowAppender = false,\n\t\tblockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,\n\t\trootClientId,\n\t\tdescription,\n\t\tonSelect,\n\t\tadditionalBlockContent: AdditionalBlockContent,\n\t},\n\tref\n) {\n\t// This can be removed once we no longer need to support the blocks prop.\n\tif ( blocks ) {\n\t\tdeprecated(\n\t\t\t'`blocks` property in `wp.blockEditor.__experimentalListView`',\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\talternative: '`rootClientId` property',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst instanceId = useInstanceId( ListViewComponent );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( { blocks, rootClientId } );\n\tconst blockIndexes = useListViewBlockIndexes( clientIdsTree );\n\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst [ insertedBlock, setInsertedBlock ] = useState( null );\n\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t/**\n\t\t * @param {MouseEvent | KeyboardEvent | undefined} event\n\t\t * @param {string} blockClientId\n\t\t * @param {null | undefined | -1 | 1} focusPosition\n\t\t */\n\t\t( event, blockClientId, focusPosition ) => {\n\t\t\tupdateBlockSelection( event, blockClientId, null, focusPosition );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone( {\n\t\tdropZoneElement,\n\t\texpandedState,\n\t\tsetExpandedState,\n\t} );\n\tconst elementRef = useRef();\n\n\t// Allow handling of copy, cut, and paste events.\n\tconst clipBoardRef = useClipboardHandler( {\n\t\tselectBlock: selectEditorBlock,\n\t} );\n\n\tconst treeGridRef = useMergeRefs( [\n\t\tclipBoardRef,\n\t\telementRef,\n\t\tdropZoneRef,\n\t\tref,\n\t] );\n\n\tuseEffect( () => {\n\t\t// If a blocks are already selected when the list view is initially\n\t\t// mounted, shift focus to the first selected block.\n\t\tif ( selectedClientIds?.length ) {\n\t\t\tfocusListItem( selectedClientIds[ 0 ], elementRef?.current );\n\t\t}\n\t\t// Disable reason: Only focus on the selected item when the list view is mounted.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst firstDraggedBlockClientId = draggedClientIds?.[ 0 ];\n\n\t// Convert a blockDropTarget into indexes relative to the blocks in the list view.\n\t// These values are used to determine which blocks should be displaced to make room\n\t// for the drop indicator. See `ListViewBranch` and `getDragDisplacementValues`.\n\tconst { blockDropTargetIndex, blockDropPosition, firstDraggedBlockIndex } =\n\t\tuseMemo( () => {\n\t\t\tlet _blockDropTargetIndex, _firstDraggedBlockIndex;\n\n\t\t\tif ( blockDropTarget?.clientId ) {\n\t\t\t\tconst foundBlockIndex =\n\t\t\t\t\tblockIndexes[ blockDropTarget.clientId ];\n\t\t\t\t// If dragging below or inside the block, treat the drop target as the next block.\n\t\t\t\t_blockDropTargetIndex =\n\t\t\t\t\tfoundBlockIndex === undefined ||\n\t\t\t\t\tblockDropTarget?.dropPosition === 'top'\n\t\t\t\t\t\t? foundBlockIndex\n\t\t\t\t\t\t: foundBlockIndex + 1;\n\t\t\t} else if ( blockDropTarget === null ) {\n\t\t\t\t// A `null` value is used to indicate that the user is dragging outside of the list view.\n\t\t\t\t_blockDropTargetIndex = null;\n\t\t\t}\n\n\t\t\tif ( firstDraggedBlockClientId ) {\n\t\t\t\tconst foundBlockIndex =\n\t\t\t\t\tblockIndexes[ firstDraggedBlockClientId ];\n\t\t\t\t_firstDraggedBlockIndex =\n\t\t\t\t\tfoundBlockIndex === undefined ||\n\t\t\t\t\tblockDropTarget?.dropPosition === 'top'\n\t\t\t\t\t\t? foundBlockIndex\n\t\t\t\t\t\t: foundBlockIndex + 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tblockDropTargetIndex: _blockDropTargetIndex,\n\t\t\t\tblockDropPosition: blockDropTarget?.dropPosition,\n\t\t\t\tfirstDraggedBlockIndex: _firstDraggedBlockIndex,\n\t\t\t};\n\t\t}, [ blockDropTarget, blockIndexes, firstDraggedBlockClientId ] );\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tblockDropPosition,\n\t\t\tblockDropTargetIndex,\n\t\t\tblockIndexes,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tfirstDraggedBlockIndex,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tlistViewInstanceId: instanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\ttreeGridElementRef: elementRef,\n\t\t\trootClientId,\n\t\t} ),\n\t\t[\n\t\t\tblockDropPosition,\n\t\t\tblockDropTargetIndex,\n\t\t\tblockIndexes,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tfirstDraggedBlockIndex,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tinstanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\trootClientId,\n\t\t]\n\t);\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\t// Ensure that the windowing logic is recalculated when the expanded state changes.\n\t\t\t// This is necessary because expanding a collapsed block in a short list view can\n\t\t\t// switch the list view to a tall list view with a scrollbar, and vice versa.\n\t\t\t// When this happens, the windowing logic needs to be recalculated to ensure that\n\t\t\t// the correct number of blocks are rendered, by rechecking for a scroll container.\n\t\t\texpandedState,\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\t// If there are no blocks to show and we're not showing the appender, do not render the list view.\n\tif ( ! clientIdsTree.length && ! showAppender ) {\n\t\treturn null;\n\t}\n\n\tconst describedById =\n\t\tdescription && `block-editor-list-view-description-${ instanceId }`;\n\n\treturn (\n\t\t<AsyncModeProvider value>\n\t\t\t<ListViewDropIndicatorPreview\n\t\t\t\tdraggedBlockClientId={ firstDraggedBlockClientId }\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t{ description && (\n\t\t\t\t<VisuallyHidden id={ describedById }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName={ classnames( 'block-editor-list-view-tree', {\n\t\t\t\t\t'is-dragging':\n\t\t\t\t\t\tdraggedClientIds?.length > 0 &&\n\t\t\t\t\t\tblockDropTargetIndex !== undefined,\n\t\t\t\t} ) }\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t\taria-describedby={ describedById }\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--wp-admin--list-view-dragged-items-height':\n\t\t\t\t\t\tdraggedClientIds?.length\n\t\t\t\t\t\t\t? `${\n\t\t\t\t\t\t\t\t\tBLOCK_LIST_ITEM_HEIGHT *\n\t\t\t\t\t\t\t\t\t( draggedClientIds.length - 1 )\n\t\t\t\t\t\t\t }px`\n\t\t\t\t\t\t\t: null,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tparentId={ rootClientId }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\tshowAppender={ showAppender }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\n\n// This is the private API for the ListView component.\n// It allows access to all props, not just the public ones.\nexport const PrivateListView = forwardRef( ListViewComponent );\n\n// This is the public API for the ListView component.\n// We wrap the PrivateListView component to hide some props from the public API.\nexport default forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<PrivateListView\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\tshowAppender={ false }\n\t\t\trootClientId={ null }\n\t\t\tonSelect={ null }\n\t\t\tadditionalBlockContent={ null }\n\t\t\tblockSettingsMenu={ undefined }\n\t\t/>\n\t);\n} );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","useInstanceId","useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","VisuallyHidden","AsyncModeProvider","useSelect","deprecated","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","useState","__","ListViewBranch","ListViewContext","ListViewDropIndicatorPreview","useBlockSelection","useListViewBlockIndexes","useListViewClientIds","useListViewCollapseItems","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","BlockSettingsDropdown","focusListItem","useClipboardHandler","expanded","state","action","type","Array","isArray","clientIds","reduce","newState","id","BLOCK_LIST_ITEM_HEIGHT","ListViewComponent","blocks","dropZoneElement","showBlockMovers","isExpanded","showAppender","blockSettingsMenu","BlockSettingsMenu","rootClientId","description","onSelect","additionalBlockContent","AdditionalBlockContent","ref","since","alternative","instanceId","clientIdsTree","draggedClientIds","selectedClientIds","blockIndexes","getBlock","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","insertedBlock","setInsertedBlock","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","focusPosition","dropZoneRef","target","blockDropTarget","elementRef","clipBoardRef","selectBlock","treeGridRef","current","expand","clientId","collapse","collapseAll","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","firstDraggedBlockClientId","blockDropTargetIndex","blockDropPosition","firstDraggedBlockIndex","_blockDropTargetIndex","_firstDraggedBlockIndex","foundBlockIndex","undefined","dropPosition","contextValue","listViewInstanceId","treeGridElementRef","fixedListWindow","useWindowing","windowOverscan","describedById","createElement","value","draggedBlockClientId","listViewRef","className","onCollapseRow","onExpandRow","onFocusRow","applicationAriaLabel","style","Provider","parentId","PrivateListView","props"],"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseInstanceId,\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicatorPreview from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewBlockIndexes from './use-list-view-block-indexes';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewCollapseItems from './use-list-view-collapse-items';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockSettingsDropdown } from '../block-settings-menu/block-settings-dropdown';\nimport { focusListItem } from './utils';\nimport useClipboardHandler from './use-clipboard-handler';\n\nconst expanded = ( state, action ) => {\n\tif ( action.type === 'clear' ) {\n\t\treturn {};\n\t}\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/** @typedef {import('react').ComponentType} ComponentType */\n/** @typedef {import('react').Ref<HTMLElement>} Ref */\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {?HTMLElement} props.dropZoneElement Optional element to be used as the drop zone.\n * @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.\n * @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.\n * @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.\n * @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.\n * @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.\n * @param {?ComponentType} props.additionalBlockContent Component that renders additional block content UI.\n * @param {Ref} ref Forwarded ref\n */\nfunction ListViewComponent(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tdropZoneElement,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tshowAppender = false,\n\t\tblockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,\n\t\trootClientId,\n\t\tdescription,\n\t\tonSelect,\n\t\tadditionalBlockContent: AdditionalBlockContent,\n\t},\n\tref\n) {\n\t// This can be removed once we no longer need to support the blocks prop.\n\tif ( blocks ) {\n\t\tdeprecated(\n\t\t\t'`blocks` property in `wp.blockEditor.__experimentalListView`',\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\talternative: '`rootClientId` property',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst instanceId = useInstanceId( ListViewComponent );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( { blocks, rootClientId } );\n\tconst blockIndexes = useListViewBlockIndexes( clientIdsTree );\n\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst [ insertedBlock, setInsertedBlock ] = useState( null );\n\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t/**\n\t\t * @param {MouseEvent | KeyboardEvent | undefined} event\n\t\t * @param {string} blockClientId\n\t\t * @param {null | undefined | -1 | 1} focusPosition\n\t\t */\n\t\t( event, blockClientId, focusPosition ) => {\n\t\t\tupdateBlockSelection( event, blockClientId, null, focusPosition );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone( {\n\t\tdropZoneElement,\n\t\texpandedState,\n\t\tsetExpandedState,\n\t} );\n\tconst elementRef = useRef();\n\n\t// Allow handling of copy, cut, and paste events.\n\tconst clipBoardRef = useClipboardHandler( {\n\t\tselectBlock: selectEditorBlock,\n\t} );\n\n\tconst treeGridRef = useMergeRefs( [\n\t\tclipBoardRef,\n\t\telementRef,\n\t\tdropZoneRef,\n\t\tref,\n\t] );\n\n\tuseEffect( () => {\n\t\t// If a blocks are already selected when the list view is initially\n\t\t// mounted, shift focus to the first selected block.\n\t\tif ( selectedClientIds?.length ) {\n\t\t\tfocusListItem( selectedClientIds[ 0 ], elementRef?.current );\n\t\t}\n\t\t// Disable reason: Only focus on the selected item when the list view is mounted.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clientIds = Array.isArray( clientId )\n\t\t\t\t? clientId\n\t\t\t\t: [ clientId ];\n\t\t\tsetExpandedState( { type: 'expand', clientIds } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapseAll = useCallback( () => {\n\t\tsetExpandedState( { type: 'clear' } );\n\t}, [ setExpandedState ] );\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tuseListViewCollapseItems( {\n\t\tcollapseAll,\n\t\texpand,\n\t} );\n\n\tconst firstDraggedBlockClientId = draggedClientIds?.[ 0 ];\n\n\t// Convert a blockDropTarget into indexes relative to the blocks in the list view.\n\t// These values are used to determine which blocks should be displaced to make room\n\t// for the drop indicator. See `ListViewBranch` and `getDragDisplacementValues`.\n\tconst { blockDropTargetIndex, blockDropPosition, firstDraggedBlockIndex } =\n\t\tuseMemo( () => {\n\t\t\tlet _blockDropTargetIndex, _firstDraggedBlockIndex;\n\n\t\t\tif ( blockDropTarget?.clientId ) {\n\t\t\t\tconst foundBlockIndex =\n\t\t\t\t\tblockIndexes[ blockDropTarget.clientId ];\n\t\t\t\t// If dragging below or inside the block, treat the drop target as the next block.\n\t\t\t\t_blockDropTargetIndex =\n\t\t\t\t\tfoundBlockIndex === undefined ||\n\t\t\t\t\tblockDropTarget?.dropPosition === 'top'\n\t\t\t\t\t\t? foundBlockIndex\n\t\t\t\t\t\t: foundBlockIndex + 1;\n\t\t\t} else if ( blockDropTarget === null ) {\n\t\t\t\t// A `null` value is used to indicate that the user is dragging outside of the list view.\n\t\t\t\t_blockDropTargetIndex = null;\n\t\t\t}\n\n\t\t\tif ( firstDraggedBlockClientId ) {\n\t\t\t\tconst foundBlockIndex =\n\t\t\t\t\tblockIndexes[ firstDraggedBlockClientId ];\n\t\t\t\t_firstDraggedBlockIndex =\n\t\t\t\t\tfoundBlockIndex === undefined ||\n\t\t\t\t\tblockDropTarget?.dropPosition === 'top'\n\t\t\t\t\t\t? foundBlockIndex\n\t\t\t\t\t\t: foundBlockIndex + 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tblockDropTargetIndex: _blockDropTargetIndex,\n\t\t\t\tblockDropPosition: blockDropTarget?.dropPosition,\n\t\t\t\tfirstDraggedBlockIndex: _firstDraggedBlockIndex,\n\t\t\t};\n\t\t}, [ blockDropTarget, blockIndexes, firstDraggedBlockClientId ] );\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tblockDropPosition,\n\t\t\tblockDropTargetIndex,\n\t\t\tblockIndexes,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tfirstDraggedBlockIndex,\n\t\t\tcollapse,\n\t\t\tcollapseAll,\n\t\t\tBlockSettingsMenu,\n\t\t\tlistViewInstanceId: instanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\ttreeGridElementRef: elementRef,\n\t\t\trootClientId,\n\t\t} ),\n\t\t[\n\t\t\tblockDropPosition,\n\t\t\tblockDropTargetIndex,\n\t\t\tblockIndexes,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tfirstDraggedBlockIndex,\n\t\t\tcollapse,\n\t\t\tcollapseAll,\n\t\t\tBlockSettingsMenu,\n\t\t\tinstanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\trootClientId,\n\t\t]\n\t);\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\t// Ensure that the windowing logic is recalculated when the expanded state changes.\n\t\t\t// This is necessary because expanding a collapsed block in a short list view can\n\t\t\t// switch the list view to a tall list view with a scrollbar, and vice versa.\n\t\t\t// When this happens, the windowing logic needs to be recalculated to ensure that\n\t\t\t// the correct number of blocks are rendered, by rechecking for a scroll container.\n\t\t\texpandedState,\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\t// If there are no blocks to show and we're not showing the appender, do not render the list view.\n\tif ( ! clientIdsTree.length && ! showAppender ) {\n\t\treturn null;\n\t}\n\n\tconst describedById =\n\t\tdescription && `block-editor-list-view-description-${ instanceId }`;\n\n\treturn (\n\t\t<AsyncModeProvider value>\n\t\t\t<ListViewDropIndicatorPreview\n\t\t\t\tdraggedBlockClientId={ firstDraggedBlockClientId }\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t{ description && (\n\t\t\t\t<VisuallyHidden id={ describedById }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName={ classnames( 'block-editor-list-view-tree', {\n\t\t\t\t\t'is-dragging':\n\t\t\t\t\t\tdraggedClientIds?.length > 0 &&\n\t\t\t\t\t\tblockDropTargetIndex !== undefined,\n\t\t\t\t} ) }\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t\taria-describedby={ describedById }\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--wp-admin--list-view-dragged-items-height':\n\t\t\t\t\t\tdraggedClientIds?.length\n\t\t\t\t\t\t\t? `${\n\t\t\t\t\t\t\t\t\tBLOCK_LIST_ITEM_HEIGHT *\n\t\t\t\t\t\t\t\t\t( draggedClientIds.length - 1 )\n\t\t\t\t\t\t\t }px`\n\t\t\t\t\t\t\t: null,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tparentId={ rootClientId }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\tshowAppender={ showAppender }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\n\n// This is the private API for the ListView component.\n// It allows access to all props, not just the public ones.\nexport const PrivateListView = forwardRef( ListViewComponent );\n\n// This is the public API for the ListView component.\n// We wrap the PrivateListView component to hide some props from the public API.\nexport default forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<PrivateListView\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\tshowAppender={ false }\n\t\t\trootClientId={ null }\n\t\t\tonSelect={ null }\n\t\t\tadditionalBlockContent={ null }\n\t\t\tblockSettingsMenu={ undefined }\n\t\t/>\n\t);\n} );\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useEffect } from '@wordpress/element';
|
|
5
|
+
import { useSelect } from '@wordpress/data';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { store as blockEditorStore } from '../../store';
|
|
11
|
+
import { unlock } from '../../lock-unlock';
|
|
12
|
+
export default function useListViewCollapseItems({
|
|
13
|
+
collapseAll,
|
|
14
|
+
expand
|
|
15
|
+
}) {
|
|
16
|
+
const {
|
|
17
|
+
expandedBlock,
|
|
18
|
+
getBlockParents
|
|
19
|
+
} = useSelect(select => {
|
|
20
|
+
const {
|
|
21
|
+
getBlockParents: _getBlockParents,
|
|
22
|
+
getExpandedBlock
|
|
23
|
+
} = unlock(select(blockEditorStore));
|
|
24
|
+
return {
|
|
25
|
+
expandedBlock: getExpandedBlock(),
|
|
26
|
+
getBlockParents: _getBlockParents
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
|
|
30
|
+
// Collapse all but the specified block when the expanded block client Id changes.
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (expandedBlock) {
|
|
33
|
+
const blockParents = getBlockParents(expandedBlock, false);
|
|
34
|
+
// Collapse all blocks and expand the block's parents.
|
|
35
|
+
collapseAll();
|
|
36
|
+
expand(blockParents);
|
|
37
|
+
}
|
|
38
|
+
}, [collapseAll, expand, expandedBlock, getBlockParents]);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=use-list-view-collapse-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useSelect","store","blockEditorStore","unlock","useListViewCollapseItems","collapseAll","expand","expandedBlock","getBlockParents","select","_getBlockParents","getExpandedBlock","blockParents"],"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-collapse-items.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useListViewCollapseItems( { collapseAll, expand } ) {\n\tconst { expandedBlock, getBlockParents } = useSelect( ( select ) => {\n\t\tconst { getBlockParents: _getBlockParents, getExpandedBlock } = unlock(\n\t\t\tselect( blockEditorStore )\n\t\t);\n\t\treturn {\n\t\t\texpandedBlock: getExpandedBlock(),\n\t\t\tgetBlockParents: _getBlockParents,\n\t\t};\n\t}, [] );\n\n\t// Collapse all but the specified block when the expanded block client Id changes.\n\tuseEffect( () => {\n\t\tif ( expandedBlock ) {\n\t\t\tconst blockParents = getBlockParents( expandedBlock, false );\n\t\t\t// Collapse all blocks and expand the block's parents.\n\t\t\tcollapseAll();\n\t\t\texpand( blockParents );\n\t\t}\n\t}, [ collapseAll, expand, expandedBlock, getBlockParents ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,eAAe,SAASC,wBAAwBA,CAAE;EAAEC,WAAW;EAAEC;AAAO,CAAC,EAAG;EAC3E,MAAM;IAAEC,aAAa;IAAEC;EAAgB,CAAC,GAAGR,SAAS,CAAIS,MAAM,IAAM;IACnE,MAAM;MAAED,eAAe,EAAEE,gBAAgB;MAAEC;IAAiB,CAAC,GAAGR,MAAM,CACrEM,MAAM,CAAEP,gBAAiB,CAC1B,CAAC;IACD,OAAO;MACNK,aAAa,EAAEI,gBAAgB,CAAC,CAAC;MACjCH,eAAe,EAAEE;IAClB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;EACAX,SAAS,CAAE,MAAM;IAChB,IAAKQ,aAAa,EAAG;MACpB,MAAMK,YAAY,GAAGJ,eAAe,CAAED,aAAa,EAAE,KAAM,CAAC;MAC5D;MACAF,WAAW,CAAC,CAAC;MACbC,MAAM,CAAEM,YAAa,CAAC;IACvB;EACD,CAAC,EAAE,CAAEP,WAAW,EAAEC,MAAM,EAAEC,aAAa,EAAEC,eAAe,CAAG,CAAC;AAC7D"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
import { __, sprintf } from '@wordpress/i18n';
|
|
5
5
|
import { focus } from '@wordpress/dom';
|
|
6
6
|
export const getBlockPositionDescription = (position, siblingCount, level) => sprintf( /* translators: 1: The numerical position of the block. 2: The total number of blocks. 3. The level of nesting for the block. */
|
|
7
|
-
__('Block %1$d of %2$d, Level %3$d'), position, siblingCount, level);
|
|
7
|
+
__('Block %1$d of %2$d, Level %3$d.'), position, siblingCount, level);
|
|
8
|
+
export const getBlockPropertiesDescription = isLocked => isLocked ? __('This block is locked.') : '';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Returns true if the client ID occurs within the block selection or multi-selection,
|