@wordpress/block-editor 8.1.2 → 8.3.0-next.e230fbab09.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 +10 -0
- package/README.md +6 -26
- package/build/autocompleters/link.js +78 -0
- package/build/autocompleters/link.js.map +1 -0
- package/build/components/autocomplete/index.js +3 -1
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +1 -1
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +4 -2
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-compare/index.js +2 -2
- package/build/components/block-compare/index.js.map +1 -1
- package/build/components/block-controls/index.js +1 -1
- package/build/components/block-controls/index.js.map +1 -1
- package/build/components/block-draggable/index.js +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-list/block-html.js +1 -1
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block-invalid-warning.js +1 -1
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js +4 -4
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js +4 -3
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.js +17 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +6 -6
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +5 -5
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -0
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +25 -27
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build/components/block-media-update-progress/index.native.js +4 -4
- package/build/components/block-media-update-progress/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +1 -1
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-mover/mover-description.js +4 -4
- package/build/components/block-mover/mover-description.js.map +1 -1
- package/build/components/block-mover/mover-description.native.js +5 -5
- package/build/components/block-mover/mover-description.native.js.map +1 -1
- package/build/components/block-settings/container.native.js +1 -5
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +7 -12
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/preview.native.js +1 -1
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-switcher/index.js +2 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/use-transformed-patterns.js +0 -1
- package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build/components/block-title/index.js +7 -62
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +94 -0
- package/build/components/block-title/use-block-display-title.js.map +1 -0
- package/build/components/block-toolbar/utils.js +9 -1
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-popover.js +1 -1
- package/build/components/block-tools/block-popover.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-types-list/index.native.js +1 -1
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -2
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +10 -6
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/contrast-checker/index.js +3 -3
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/copy-handler/index.js +3 -3
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +3 -3
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +38 -1
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +4 -4
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +1 -1
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/index.js +3 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +7 -7
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js +3 -3
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +20 -8
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-items.js +1 -1
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +28 -11
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +3 -3
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/line-height-control/index.js +63 -45
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/line-height-control/index.native.js +3 -1
- package/build/components/line-height-control/index.native.js.map +1 -1
- package/build/components/link-control/index.js +2 -2
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-results.js +2 -2
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/use-rich-url-data.js +1 -1
- package/build/components/link-control/use-rich-url-data.js.map +1 -1
- package/build/components/link-control/use-search-handler.js +2 -2
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/block-contents.js +8 -4
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block-select-button.js +2 -2
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +20 -9
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +2 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +49 -41
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +139 -0
- package/build/components/list-view/use-block-selection.js.map +1 -0
- package/build/components/list-view/use-list-view-expand-selected-item.js +60 -0
- package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -0
- package/build/components/list-view/utils.js +29 -1
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +7 -5
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +20 -24
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -3
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/media-upload-progress/index.native.js +2 -2
- package/build/components/media-upload-progress/index.native.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -3
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +3 -3
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +2 -2
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.native.js +1 -1
- package/build/components/rich-text/format-toolbar-container.native.js.map +1 -1
- package/build/components/rich-text/index.js +7 -12
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +3 -3
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +7 -12
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/url-input/index.js +11 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +1 -1
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +2 -2
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/writing-flow/index.js +1 -0
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +22 -24
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +3 -2
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +4 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +1 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +1 -1
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border.js +2 -14
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +2 -2
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/custom-class-name.js +40 -0
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/duotone.js +22 -4
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/generated-class-name.js +3 -3
- package/build/hooks/generated-class-name.js.map +1 -1
- package/build/hooks/line-height.js +2 -0
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/lock.js +1 -1
- package/build/hooks/lock.js.map +1 -1
- package/build/hooks/style.js +32 -13
- package/build/hooks/style.js.map +1 -1
- package/build/layouts/flow.js +7 -5
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +55 -48
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +2 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/index.js +1 -2
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +13 -13
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +6 -6
- package/build/store/selectors.js.map +1 -1
- package/build/utils/index.js +0 -14
- package/build/utils/index.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +3 -3
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build/utils/pasting.js +91 -0
- package/build/utils/pasting.js.map +1 -0
- package/build/utils/transform-styles/ast/parse.js +5 -5
- package/build/utils/transform-styles/ast/parse.js.map +1 -1
- package/build/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
- package/build-module/autocompleters/link.js +64 -0
- package/build-module/autocompleters/link.js.map +1 -0
- package/build-module/components/autocomplete/index.js +2 -1
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +1 -1
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +4 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-compare/index.js +2 -2
- package/build-module/components/block-compare/index.js.map +1 -1
- package/build-module/components/block-controls/index.js +1 -1
- package/build-module/components/block-controls/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-list/block-html.js +1 -1
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block-invalid-warning.js +1 -1
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-list/block-list-item.native.js +4 -4
- package/build-module/components/block-list/block-list-item.native.js.map +1 -1
- package/build-module/components/block-list/block-selection-button.native.js +4 -3
- package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
- package/build-module/components/block-list/block.js +18 -4
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +7 -7
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +5 -5
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +2 -0
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +23 -28
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build-module/components/block-media-update-progress/index.native.js +4 -4
- package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-mover/mover-description.js +4 -4
- package/build-module/components/block-mover/mover-description.js.map +1 -1
- package/build-module/components/block-mover/mover-description.native.js +5 -5
- package/build-module/components/block-mover/mover-description.native.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +2 -6
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -13
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js +1 -1
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-switcher/index.js +2 -1
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build-module/components/block-title/index.js +7 -58
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +80 -0
- package/build-module/components/block-title/use-block-display-title.js.map +1 -0
- package/build-module/components/block-toolbar/utils.js +9 -1
- package/build-module/components/block-toolbar/utils.js.map +1 -1
- package/build-module/components/block-tools/block-popover.js +1 -1
- package/build-module/components/block-tools/block-popover.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +1 -1
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +3 -3
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +11 -7
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +3 -3
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/copy-handler/index.js +2 -2
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +3 -3
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +5 -4
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +4 -4
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +1 -1
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -3
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +7 -7
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js +3 -3
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +20 -8
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +1 -1
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +28 -11
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +3 -3
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +61 -45
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.native.js +3 -1
- package/build-module/components/line-height-control/index.native.js.map +1 -1
- package/build-module/components/link-control/index.js +2 -2
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-results.js +2 -2
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/use-rich-url-data.js +1 -1
- package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js +2 -2
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +8 -4
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +2 -2
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +20 -9
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +2 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +46 -42
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +123 -0
- package/build-module/components/list-view/use-block-selection.js.map +1 -0
- package/build-module/components/list-view/use-list-view-expand-selected-item.js +50 -0
- package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -0
- package/build-module/components/list-view/utils.js +25 -0
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +7 -5
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +22 -27
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -3
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/media-upload-progress/index.native.js +2 -2
- package/build-module/components/media-upload-progress/index.native.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -3
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +3 -3
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +2 -2
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.native.js +1 -1
- package/build-module/components/rich-text/format-toolbar-container.native.js.map +1 -1
- package/build-module/components/rich-text/index.js +7 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +3 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +6 -12
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/url-input/index.js +11 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +1 -1
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +2 -2
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +1 -0
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +21 -21
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +3 -2
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +4 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +1 -1
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +1 -1
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border.js +2 -14
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +2 -2
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +38 -0
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/duotone.js +23 -5
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/generated-class-name.js +3 -3
- package/build-module/hooks/generated-class-name.js.map +1 -1
- package/build-module/hooks/line-height.js +2 -0
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/lock.js +1 -1
- package/build-module/hooks/lock.js.map +1 -1
- package/build-module/hooks/style.js +31 -13
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/layouts/flow.js +7 -5
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +52 -45
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +2 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/index.js +1 -2
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +13 -13
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +6 -6
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/index.js +0 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +3 -3
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/utils/pasting.js +80 -0
- package/build-module/utils/pasting.js.map +1 -0
- package/build-module/utils/transform-styles/ast/parse.js +5 -5
- package/build-module/utils/transform-styles/ast/parse.js.map +1 -1
- package/build-module/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
- package/build-style/style-rtl.css +10 -12
- package/build-style/style.css +10 -12
- package/package.json +27 -26
- package/src/autocompleters/link.js +62 -0
- package/src/autocompleters/style.scss +8 -0
- package/src/components/alignment-control/test/index.js +2 -2
- package/src/components/autocomplete/index.js +2 -0
- package/src/components/block-actions/index.js +1 -1
- package/src/components/block-alignment-control/test/index.js +1 -1
- package/src/components/block-breadcrumb/index.js +5 -2
- package/src/components/block-compare/index.js +2 -2
- package/src/components/block-controls/index.js +1 -1
- package/src/components/block-draggable/index.js +1 -1
- package/src/components/block-draggable/stories/index.js +1 -1
- package/src/components/block-edit/edit.js +1 -1
- package/src/components/block-list/block-html.js +1 -1
- package/src/components/block-list/block-invalid-warning.js +1 -1
- package/src/components/block-list/block-list-item.native.js +4 -4
- package/src/components/block-list/block-selection-button.native.js +3 -3
- package/src/components/block-list/block.js +28 -4
- package/src/components/block-list/block.native.js +7 -6
- package/src/components/block-list/index.native.js +5 -5
- package/src/components/block-list/style.scss +3 -1
- package/src/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -0
- package/src/components/block-list/use-block-props/use-multi-selection.js +22 -30
- package/src/components/block-media-update-progress/index.native.js +4 -4
- package/src/components/block-media-update-progress/test/index.native.js +2 -2
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/src/components/block-mobile-toolbar/index.native.js +2 -2
- package/src/components/block-mover/mover-description.js +4 -4
- package/src/components/block-mover/mover-description.native.js +5 -5
- package/src/components/block-settings/container.native.js +5 -6
- package/src/components/block-settings-menu/block-settings-dropdown.js +7 -8
- package/src/components/block-styles/preview.native.js +1 -1
- package/src/components/block-switcher/index.js +4 -1
- package/src/components/block-switcher/use-transformed-patterns.js +0 -1
- package/src/components/block-title/README.md +17 -1
- package/src/components/block-title/index.js +7 -62
- package/src/components/block-title/test/index.js +21 -3
- package/src/components/block-title/use-block-display-title.js +83 -0
- package/src/components/block-toolbar/utils.js +12 -2
- package/src/components/block-tools/block-popover.js +1 -1
- package/src/components/block-tools/block-selection-button.js +4 -1
- package/src/components/block-types-list/index.native.js +1 -1
- package/src/components/border-radius-control/index.js +5 -3
- package/src/components/border-radius-control/test/utils.js +10 -10
- package/src/components/border-radius-control/utils.js +10 -8
- package/src/components/contrast-checker/index.js +3 -3
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -6
- package/src/components/copy-handler/index.js +2 -2
- package/src/components/font-sizes/with-font-sizes.js +3 -3
- package/src/components/image-size-control/test/index.js +1 -1
- package/src/components/index.js +1 -0
- package/src/components/index.native.js +11 -4
- package/src/components/inserter/block-patterns-tab.js +13 -17
- package/src/components/inserter/block-types-tab.js +1 -1
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/src/components/inserter/index.js +3 -3
- package/src/components/inserter/index.native.js +7 -7
- package/src/components/inserter/menu.js +1 -1
- package/src/components/inserter/menu.native.js +3 -3
- package/src/components/inserter/quick-inserter.js +32 -10
- package/src/components/inserter/search-items.js +1 -1
- package/src/components/inserter/search-results.js +55 -43
- package/src/components/inserter/test/fixtures/index.native.js +1 -1
- package/src/components/inserter/test/reusable-blocks-tab.js +2 -2
- package/src/components/justify-content-control/README.md +1 -1
- package/src/components/keyboard-shortcuts/index.js +1 -1
- package/src/components/letter-spacing-control/index.js +1 -1
- package/src/components/line-height-control/README.md +13 -2
- package/src/components/line-height-control/index.js +66 -43
- package/src/components/line-height-control/index.native.js +2 -0
- package/src/components/line-height-control/stories/index.js +33 -0
- package/src/components/line-height-control/test/index.js +61 -0
- package/src/components/link-control/index.js +2 -2
- package/src/components/link-control/search-input.js +1 -1
- package/src/components/link-control/search-results.js +2 -2
- package/src/components/link-control/test/index.js +142 -144
- package/src/components/link-control/use-rich-url-data.js +1 -1
- package/src/components/link-control/use-search-handler.js +2 -2
- package/src/components/list-view/README.md +2 -2
- package/src/components/list-view/block-contents.js +10 -3
- package/src/components/list-view/block-select-button.js +1 -2
- package/src/components/list-view/block.js +30 -10
- package/src/components/list-view/branch.js +1 -0
- package/src/components/list-view/index.js +56 -30
- package/src/components/list-view/test/utils.js +50 -0
- package/src/components/list-view/use-block-selection.js +163 -0
- package/src/components/list-view/use-list-view-expand-selected-item.js +58 -0
- package/src/components/list-view/utils.js +31 -0
- package/src/components/media-placeholder/index.native.js +11 -9
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +20 -26
- package/src/components/media-replace-flow/test/index.js +100 -0
- package/src/components/media-upload/index.native.js +3 -2
- package/src/components/media-upload-progress/index.native.js +2 -2
- package/src/components/navigable-toolbar/index.js +3 -3
- package/src/components/plain-text/index.native.js +3 -3
- package/src/components/responsive-block-control/test/index.js +6 -6
- package/src/components/rich-text/format-toolbar-container.js +2 -2
- package/src/components/rich-text/format-toolbar-container.native.js +1 -1
- package/src/components/rich-text/index.js +7 -14
- package/src/components/rich-text/index.native.js +3 -3
- package/src/components/rich-text/use-paste-handler.js +7 -14
- package/src/components/url-input/index.js +11 -11
- package/src/components/use-block-drop-zone/test/index.js +1 -1
- package/src/components/use-moving-animation/index.js +1 -1
- package/src/components/use-on-block-drop/index.js +2 -2
- package/src/components/writing-flow/index.js +1 -0
- package/src/components/writing-flow/use-multi-selection.js +17 -20
- package/src/components/writing-flow/use-select-all.js +6 -2
- package/src/components/writing-flow/use-tab-nav.js +6 -3
- package/src/hooks/align.js +1 -1
- package/src/hooks/anchor.js +1 -1
- package/src/hooks/border.js +8 -19
- package/src/hooks/color.js +2 -2
- package/src/hooks/custom-class-name.js +45 -0
- package/src/hooks/duotone.js +27 -3
- package/src/hooks/generated-class-name.js +3 -3
- package/src/hooks/line-height.js +2 -0
- package/src/hooks/lock.js +1 -1
- package/src/hooks/style.js +31 -13
- package/src/hooks/test/align.js +1 -1
- package/src/hooks/typography.scss +0 -4
- package/src/layouts/flow.js +10 -5
- package/src/store/actions.js +24 -14
- package/src/store/defaults.js +2 -2
- package/src/store/index.js +0 -1
- package/src/store/reducer.js +13 -12
- package/src/store/selectors.js +6 -6
- package/src/store/test/actions.js +2 -2
- package/src/store/test/reducer.js +10 -1
- package/src/store/test/selectors.js +1 -1
- package/src/style.scss +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/parse-css-unit-to-px.js +3 -3
- package/src/utils/pasting.js +77 -0
- package/src/utils/test/parse-css-unit-to-px.js +5 -5
- package/src/utils/test/pasting.js +84 -0
- package/src/utils/transform-styles/ast/parse.js +5 -5
- package/src/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build/utils/get-paste-event-data.js +0 -56
- package/build/utils/get-paste-event-data.js.map +0 -1
- package/build/utils/theme.js +0 -63
- package/build/utils/theme.js.map +0 -1
- package/build-module/utils/get-paste-event-data.js +0 -47
- package/build-module/utils/get-paste-event-data.js.map +0 -1
- package/build-module/utils/theme.js +0 -53
- package/build-module/utils/theme.js.map +0 -1
- package/src/components/line-height-control/style.scss +0 -8
- package/src/components/writing-flow/test/use-multi-selection.js +0 -36
- package/src/utils/get-paste-event-data.js +0 -42
- package/src/utils/theme.js +0 -48
|
@@ -9,15 +9,16 @@ import { useRefEffect } from '@wordpress/compose';
|
|
|
9
9
|
|
|
10
10
|
import { store as blockEditorStore } from '../../../store';
|
|
11
11
|
import { getBlockClientId } from '../../../utils/dom';
|
|
12
|
+
/**
|
|
13
|
+
* Sets the `contenteditable` wrapper element to `value`.
|
|
14
|
+
*
|
|
15
|
+
* @param {HTMLElement} node Block element.
|
|
16
|
+
* @param {boolean} value `contentEditable` value (true or false)
|
|
17
|
+
*/
|
|
12
18
|
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
node.setAttribute('contenteditable', true);
|
|
17
|
-
} else {
|
|
18
|
-
node.removeAttribute('contenteditable');
|
|
19
|
-
}
|
|
20
|
-
});
|
|
19
|
+
export function setContentEditableWrapper(node, value) {
|
|
20
|
+
// Since `closest` considers `node` as a candidate, use `parentElement`.
|
|
21
|
+
node.parentElement.closest('[contenteditable]').contentEditable = value;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Sets a multi-selection based on the native selection across blocks.
|
|
@@ -25,7 +26,6 @@ function toggleRichText(container, toggle) {
|
|
|
25
26
|
* @param {string} clientId Block client ID.
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
|
-
|
|
29
29
|
export function useMultiSelection(clientId) {
|
|
30
30
|
const {
|
|
31
31
|
startMultiSelect,
|
|
@@ -54,11 +54,11 @@ export function useMultiSelection(clientId) {
|
|
|
54
54
|
let {
|
|
55
55
|
isSelectionEnd
|
|
56
56
|
} = _ref;
|
|
57
|
-
const selection = defaultView.getSelection(); // If no selection is found, end multi selection and
|
|
58
|
-
//
|
|
57
|
+
const selection = defaultView.getSelection(); // If no selection is found, end multi selection and disable the
|
|
58
|
+
// contentEditable wrapper.
|
|
59
59
|
|
|
60
60
|
if (!selection.rangeCount || selection.isCollapsed) {
|
|
61
|
-
|
|
61
|
+
setContentEditableWrapper(node, false);
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -69,11 +69,11 @@ export function useMultiSelection(clientId) {
|
|
|
69
69
|
selectBlock(clientId); // If the selection is complete (on mouse up), and no
|
|
70
70
|
// multiple blocks have been selected, set focus back to the
|
|
71
71
|
// anchor element. if the anchor element contains the
|
|
72
|
-
// selection. Additionally,
|
|
73
|
-
//
|
|
72
|
+
// selection. Additionally, the contentEditable wrapper can
|
|
73
|
+
// now be disabled again.
|
|
74
74
|
|
|
75
75
|
if (isSelectionEnd) {
|
|
76
|
-
|
|
76
|
+
setContentEditableWrapper(node, false);
|
|
77
77
|
|
|
78
78
|
if (selection.rangeCount) {
|
|
79
79
|
const {
|
|
@@ -129,17 +129,12 @@ export function useMultiSelection(clientId) {
|
|
|
129
129
|
// `mouseup` happens anywhere in the window.
|
|
130
130
|
|
|
131
131
|
ownerDocument.addEventListener('selectionchange', onSelectionChange);
|
|
132
|
-
defaultView.addEventListener('mouseup', onSelectionEnd); //
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// for the blocks that are asynchonously rendered. To ensure the
|
|
139
|
-
// browser instantly removes the selection boundaries, we remove
|
|
140
|
-
// the contenteditable attributes manually.
|
|
141
|
-
|
|
142
|
-
toggleRichText(node, false);
|
|
132
|
+
defaultView.addEventListener('mouseup', onSelectionEnd); // Allow cross contentEditable selection by temporarily making
|
|
133
|
+
// all content editable. We can't rely on using the store and
|
|
134
|
+
// React because re-rending happens too slowly. We need to be
|
|
135
|
+
// able to select across instances immediately.
|
|
136
|
+
|
|
137
|
+
setContentEditableWrapper(node, true);
|
|
143
138
|
}
|
|
144
139
|
|
|
145
140
|
function onMouseDown(event) {
|
|
@@ -164,10 +159,10 @@ export function useMultiSelection(clientId) {
|
|
|
164
159
|
const depth = Math.min(startPath.length, endPath.length) - 1;
|
|
165
160
|
const start = startPath[depth];
|
|
166
161
|
const end = endPath[depth]; // Handle the case of having selected a parent block and
|
|
167
|
-
// then
|
|
162
|
+
// then shift+click on a child.
|
|
168
163
|
|
|
169
164
|
if (start !== end) {
|
|
170
|
-
|
|
165
|
+
setContentEditableWrapper(node, true);
|
|
171
166
|
multiSelect(start, end);
|
|
172
167
|
event.preventDefault();
|
|
173
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-multi-selection.js"],"names":["useSelect","useDispatch","useRefEffect","store","blockEditorStore","getBlockClientId","toggleRichText","container","toggle","Array","from","closest","querySelectorAll","forEach","node","setAttribute","removeAttribute","useMultiSelection","clientId","startMultiSelect","stopMultiSelect","multiSelect","selectBlock","isSelectionEnabled","isBlockSelected","getBlockParents","getBlockSelectionStart","hasMultiSelection","ownerDocument","defaultView","anchorElement","rafId","onSelectionChange","isSelectionEnd","selection","getSelection","rangeCount","isCollapsed","endClientId","focusNode","isSingularSelection","commonAncestorContainer","getRangeAt","contains","focus","startPath","endPath","depth","Math","min","length","onSelectionEnd","removeEventListener","requestAnimationFrame","onMouseLeave","buttons","activeElement","addEventListener","onMouseDown","event","button","shiftKey","blockSelectionStart","startParents","includes","start","end","preventDefault","cancelAnimationFrame"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { getBlockClientId } from '../../../utils/dom';\n\nfunction toggleRichText( container, toggle ) {\n\tArray.from(\n\t\tcontainer\n\t\t\t.closest( '.is-root-container' )\n\t\t\t.querySelectorAll( '.rich-text' )\n\t).forEach( ( node ) => {\n\t\tif ( toggle ) {\n\t\t\tnode.setAttribute( 'contenteditable', true );\n\t\t} else {\n\t\t\tnode.removeAttribute( 'contenteditable' );\n\t\t}\n\t} );\n}\n\n/**\n * Sets a multi-selection based on the native selection across blocks.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useMultiSelection( clientId ) {\n\tconst {\n\t\tstartMultiSelect,\n\t\tstopMultiSelect,\n\t\tmultiSelect,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tisSelectionEnabled,\n\t\tisBlockSelected,\n\t\tgetBlockParents,\n\t\tgetBlockSelectionStart,\n\t\thasMultiSelection,\n\t} = useSelect( blockEditorStore );\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\tlet anchorElement;\n\t\t\tlet rafId;\n\n\t\t\tfunction onSelectionChange( { isSelectionEnd } ) {\n\t\t\t\tconst selection = defaultView.getSelection();\n\n\t\t\t\t// If no selection is found, end multi selection and enable all rich\n\t\t\t\t// text areas.\n\t\t\t\tif ( ! selection.rangeCount || selection.isCollapsed ) {\n\t\t\t\t\ttoggleRichText( node, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst endClientId = getBlockClientId( selection.focusNode );\n\t\t\t\tconst isSingularSelection = clientId === endClientId;\n\n\t\t\t\tif ( isSingularSelection ) {\n\t\t\t\t\tselectBlock( clientId );\n\n\t\t\t\t\t// If the selection is complete (on mouse up), and no\n\t\t\t\t\t// multiple blocks have been selected, set focus back to the\n\t\t\t\t\t// anchor element. if the anchor element contains the\n\t\t\t\t\t// selection. Additionally, rich text elements that were\n\t\t\t\t\t// previously disabled can now be enabled again.\n\t\t\t\t\tif ( isSelectionEnd ) {\n\t\t\t\t\t\ttoggleRichText( node, true );\n\n\t\t\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tcommonAncestorContainer,\n\t\t\t\t\t\t\t} = selection.getRangeAt( 0 );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tanchorElement.contains(\n\t\t\t\t\t\t\t\t\tcommonAncestorContainer\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tanchorElement.focus();\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} else {\n\t\t\t\t\tconst startPath = [\n\t\t\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t];\n\t\t\t\t\tconst endPath = [\n\t\t\t\t\t\t...getBlockParents( endClientId ),\n\t\t\t\t\t\tendClientId,\n\t\t\t\t\t];\n\t\t\t\t\tconst depth =\n\t\t\t\t\t\tMath.min( startPath.length, endPath.length ) - 1;\n\n\t\t\t\t\tmultiSelect( startPath[ depth ], endPath[ depth ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onSelectionEnd() {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\t// Equivalent to attaching the listener once.\n\t\t\t\tdefaultView.removeEventListener( 'mouseup', onSelectionEnd );\n\t\t\t\t// The browser selection won't have updated yet at this point,\n\t\t\t\t// so wait until the next animation frame to get the browser\n\t\t\t\t// selection.\n\t\t\t\trafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\t\tonSelectionChange( { isSelectionEnd: true } );\n\t\t\t\t\tstopMultiSelect();\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfunction onMouseLeave( { buttons } ) {\n\t\t\t\t// The primary button must be pressed to initiate selection.\n\t\t\t\t// See https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n\t\t\t\tif ( buttons !== 1 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( ! isSelectionEnabled() || ! isBlockSelected( clientId ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tanchorElement = ownerDocument.activeElement;\n\t\t\t\tstartMultiSelect();\n\n\t\t\t\t// `onSelectionStart` is called after `mousedown` and\n\t\t\t\t// `mouseleave` (from a block). The selection ends when\n\t\t\t\t// `mouseup` happens anywhere in the window.\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\tdefaultView.addEventListener( 'mouseup', onSelectionEnd );\n\n\t\t\t\t// Removing the contenteditable attributes within the block\n\t\t\t\t// editor is essential for selection to work across editable\n\t\t\t\t// areas. The edible hosts are removed, allowing selection to be\n\t\t\t\t// extended outside the DOM element. `startMultiSelect` sets a\n\t\t\t\t// flag in the store so the rich text components are updated,\n\t\t\t\t// but the rerender may happen very slowly, especially in Safari\n\t\t\t\t// for the blocks that are asynchonously rendered. To ensure the\n\t\t\t\t// browser instantly removes the selection boundaries, we remove\n\t\t\t\t// the contenteditable attributes manually.\n\t\t\t\ttoggleRichText( node, false );\n\t\t\t}\n\n\t\t\tfunction onMouseDown( event ) {\n\t\t\t\t// The main button.\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n\t\t\t\tif ( ! isSelectionEnabled() || event.button !== 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( event.shiftKey ) {\n\t\t\t\t\tconst blockSelectionStart = getBlockSelectionStart();\n\t\t\t\t\t// By checking `blockSelectionStart` to be set, we handle the\n\t\t\t\t\t// case where we select a single block. We also have to check\n\t\t\t\t\t// the selectionEnd (clientId) not to be included in the\n\t\t\t\t\t// `blockSelectionStart`'s parents because the click event is\n\t\t\t\t\t// propagated.\n\t\t\t\t\tconst startParents = getBlockParents( blockSelectionStart );\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockSelectionStart &&\n\t\t\t\t\t\tblockSelectionStart !== clientId &&\n\t\t\t\t\t\t! startParents?.includes( clientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst startPath = [\n\t\t\t\t\t\t\t...startParents,\n\t\t\t\t\t\t\tblockSelectionStart,\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst endPath = [\n\t\t\t\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst depth =\n\t\t\t\t\t\t\tMath.min( startPath.length, endPath.length ) - 1;\n\t\t\t\t\t\tconst start = startPath[ depth ];\n\t\t\t\t\t\tconst end = endPath[ depth ];\n\t\t\t\t\t\t// Handle the case of having selected a parent block and\n\t\t\t\t\t\t// then sfift+click on a child.\n\t\t\t\t\t\tif ( start !== end ) {\n\t\t\t\t\t\t\ttoggleRichText( node, false );\n\t\t\t\t\t\t\tmultiSelect( start, end );\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( hasMultiSelection() ) {\n\t\t\t\t\t// Allow user to escape out of a multi-selection to a\n\t\t\t\t\t// singular selection of a block via click. This is handled\n\t\t\t\t\t// here since focus handling excludes blocks when there is\n\t\t\t\t\t// multiselection, as focus can be incurred by starting a\n\t\t\t\t\t// multiselection (focus moved to first block's multi-\n\t\t\t\t\t// controls).\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'mousedown', onMouseDown );\n\t\t\tnode.addEventListener( 'mouseleave', onMouseLeave );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'mousedown', onMouseDown );\n\t\t\t\tnode.removeEventListener( 'mouseleave', onMouseLeave );\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\tdefaultView.removeEventListener( 'mouseup', onSelectionEnd );\n\t\t\t\tdefaultView.cancelAnimationFrame( rafId );\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tstartMultiSelect,\n\t\t\tstopMultiSelect,\n\t\t\tmultiSelect,\n\t\t\tselectBlock,\n\t\t\tisSelectionEnabled,\n\t\t\tisBlockSelected,\n\t\t\tgetBlockParents,\n\t\t]\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-multi-selection.js"],"names":["useSelect","useDispatch","useRefEffect","store","blockEditorStore","getBlockClientId","setContentEditableWrapper","node","value","parentElement","closest","contentEditable","useMultiSelection","clientId","startMultiSelect","stopMultiSelect","multiSelect","selectBlock","isSelectionEnabled","isBlockSelected","getBlockParents","getBlockSelectionStart","hasMultiSelection","ownerDocument","defaultView","anchorElement","rafId","onSelectionChange","isSelectionEnd","selection","getSelection","rangeCount","isCollapsed","endClientId","focusNode","isSingularSelection","commonAncestorContainer","getRangeAt","contains","focus","startPath","endPath","depth","Math","min","length","onSelectionEnd","removeEventListener","requestAnimationFrame","onMouseLeave","buttons","activeElement","addEventListener","onMouseDown","event","button","shiftKey","blockSelectionStart","startParents","includes","start","end","preventDefault","cancelAnimationFrame"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { getBlockClientId } from '../../../utils/dom';\n\n/**\n * Sets the `contenteditable` wrapper element to `value`.\n *\n * @param {HTMLElement} node Block element.\n * @param {boolean} value `contentEditable` value (true or false)\n */\nexport function setContentEditableWrapper( node, value ) {\n\t// Since `closest` considers `node` as a candidate, use `parentElement`.\n\tnode.parentElement.closest( '[contenteditable]' ).contentEditable = value;\n}\n\n/**\n * Sets a multi-selection based on the native selection across blocks.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useMultiSelection( clientId ) {\n\tconst {\n\t\tstartMultiSelect,\n\t\tstopMultiSelect,\n\t\tmultiSelect,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tisSelectionEnabled,\n\t\tisBlockSelected,\n\t\tgetBlockParents,\n\t\tgetBlockSelectionStart,\n\t\thasMultiSelection,\n\t} = useSelect( blockEditorStore );\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\tlet anchorElement;\n\t\t\tlet rafId;\n\n\t\t\tfunction onSelectionChange( { isSelectionEnd } ) {\n\t\t\t\tconst selection = defaultView.getSelection();\n\n\t\t\t\t// If no selection is found, end multi selection and disable the\n\t\t\t\t// contentEditable wrapper.\n\t\t\t\tif ( ! selection.rangeCount || selection.isCollapsed ) {\n\t\t\t\t\tsetContentEditableWrapper( node, false );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst endClientId = getBlockClientId( selection.focusNode );\n\t\t\t\tconst isSingularSelection = clientId === endClientId;\n\n\t\t\t\tif ( isSingularSelection ) {\n\t\t\t\t\tselectBlock( clientId );\n\n\t\t\t\t\t// If the selection is complete (on mouse up), and no\n\t\t\t\t\t// multiple blocks have been selected, set focus back to the\n\t\t\t\t\t// anchor element. if the anchor element contains the\n\t\t\t\t\t// selection. Additionally, the contentEditable wrapper can\n\t\t\t\t\t// now be disabled again.\n\t\t\t\t\tif ( isSelectionEnd ) {\n\t\t\t\t\t\tsetContentEditableWrapper( node, false );\n\n\t\t\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tcommonAncestorContainer,\n\t\t\t\t\t\t\t} = selection.getRangeAt( 0 );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tanchorElement.contains(\n\t\t\t\t\t\t\t\t\tcommonAncestorContainer\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tanchorElement.focus();\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} else {\n\t\t\t\t\tconst startPath = [\n\t\t\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t];\n\t\t\t\t\tconst endPath = [\n\t\t\t\t\t\t...getBlockParents( endClientId ),\n\t\t\t\t\t\tendClientId,\n\t\t\t\t\t];\n\t\t\t\t\tconst depth =\n\t\t\t\t\t\tMath.min( startPath.length, endPath.length ) - 1;\n\n\t\t\t\t\tmultiSelect( startPath[ depth ], endPath[ depth ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onSelectionEnd() {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\t// Equivalent to attaching the listener once.\n\t\t\t\tdefaultView.removeEventListener( 'mouseup', onSelectionEnd );\n\t\t\t\t// The browser selection won't have updated yet at this point,\n\t\t\t\t// so wait until the next animation frame to get the browser\n\t\t\t\t// selection.\n\t\t\t\trafId = defaultView.requestAnimationFrame( () => {\n\t\t\t\t\tonSelectionChange( { isSelectionEnd: true } );\n\t\t\t\t\tstopMultiSelect();\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfunction onMouseLeave( { buttons } ) {\n\t\t\t\t// The primary button must be pressed to initiate selection.\n\t\t\t\t// See https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n\t\t\t\tif ( buttons !== 1 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( ! isSelectionEnabled() || ! isBlockSelected( clientId ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tanchorElement = ownerDocument.activeElement;\n\t\t\t\tstartMultiSelect();\n\n\t\t\t\t// `onSelectionStart` is called after `mousedown` and\n\t\t\t\t// `mouseleave` (from a block). The selection ends when\n\t\t\t\t// `mouseup` happens anywhere in the window.\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\tdefaultView.addEventListener( 'mouseup', onSelectionEnd );\n\n\t\t\t\t// Allow cross contentEditable selection by temporarily making\n\t\t\t\t// all content editable. We can't rely on using the store and\n\t\t\t\t// React because re-rending happens too slowly. We need to be\n\t\t\t\t// able to select across instances immediately.\n\t\t\t\tsetContentEditableWrapper( node, true );\n\t\t\t}\n\n\t\t\tfunction onMouseDown( event ) {\n\t\t\t\t// The main button.\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n\t\t\t\tif ( ! isSelectionEnabled() || event.button !== 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( event.shiftKey ) {\n\t\t\t\t\tconst blockSelectionStart = getBlockSelectionStart();\n\t\t\t\t\t// By checking `blockSelectionStart` to be set, we handle the\n\t\t\t\t\t// case where we select a single block. We also have to check\n\t\t\t\t\t// the selectionEnd (clientId) not to be included in the\n\t\t\t\t\t// `blockSelectionStart`'s parents because the click event is\n\t\t\t\t\t// propagated.\n\t\t\t\t\tconst startParents = getBlockParents( blockSelectionStart );\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockSelectionStart &&\n\t\t\t\t\t\tblockSelectionStart !== clientId &&\n\t\t\t\t\t\t! startParents?.includes( clientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst startPath = [\n\t\t\t\t\t\t\t...startParents,\n\t\t\t\t\t\t\tblockSelectionStart,\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst endPath = [\n\t\t\t\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst depth =\n\t\t\t\t\t\t\tMath.min( startPath.length, endPath.length ) - 1;\n\t\t\t\t\t\tconst start = startPath[ depth ];\n\t\t\t\t\t\tconst end = endPath[ depth ];\n\t\t\t\t\t\t// Handle the case of having selected a parent block and\n\t\t\t\t\t\t// then shift+click on a child.\n\t\t\t\t\t\tif ( start !== end ) {\n\t\t\t\t\t\t\tsetContentEditableWrapper( node, true );\n\t\t\t\t\t\t\tmultiSelect( start, end );\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( hasMultiSelection() ) {\n\t\t\t\t\t// Allow user to escape out of a multi-selection to a\n\t\t\t\t\t// singular selection of a block via click. This is handled\n\t\t\t\t\t// here since focus handling excludes blocks when there is\n\t\t\t\t\t// multiselection, as focus can be incurred by starting a\n\t\t\t\t\t// multiselection (focus moved to first block's multi-\n\t\t\t\t\t// controls).\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'mousedown', onMouseDown );\n\t\t\tnode.addEventListener( 'mouseleave', onMouseLeave );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'mousedown', onMouseDown );\n\t\t\t\tnode.removeEventListener( 'mouseleave', onMouseLeave );\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tonSelectionChange\n\t\t\t\t);\n\t\t\t\tdefaultView.removeEventListener( 'mouseup', onSelectionEnd );\n\t\t\t\tdefaultView.cancelAnimationFrame( rafId );\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tstartMultiSelect,\n\t\t\tstopMultiSelect,\n\t\t\tmultiSelect,\n\t\t\tselectBlock,\n\t\t\tisSelectionEnabled,\n\t\t\tisBlockSelected,\n\t\t\tgetBlockParents,\n\t\t]\n\t);\n}\n"]}
|
|
@@ -121,7 +121,7 @@ export class BlockMediaUpdateProgress extends Component {
|
|
|
121
121
|
this.mediaIdChanged(payload);
|
|
122
122
|
break;
|
|
123
123
|
}
|
|
124
|
-
} // ---- Block media save actions
|
|
124
|
+
} // ---- Block media save actions.
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
updateMediaSaveProgress(payload) {
|
|
@@ -195,7 +195,7 @@ export class BlockMediaUpdateProgress extends Component {
|
|
|
195
195
|
if (this.props.onMediaIdChanged) {
|
|
196
196
|
this.props.onMediaIdChanged(payload);
|
|
197
197
|
}
|
|
198
|
-
} // ---- Block media upload actions
|
|
198
|
+
} // ---- Block media upload actions.
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
updateMediaUploadProgress(payload) {
|
|
@@ -246,7 +246,7 @@ export class BlockMediaUpdateProgress extends Component {
|
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
addMediaUploadListener() {
|
|
249
|
-
//
|
|
249
|
+
// If we already have a subscription not worth doing it again.
|
|
250
250
|
if (this.subscriptionParentMediaUpload) {
|
|
251
251
|
return;
|
|
252
252
|
}
|
|
@@ -263,7 +263,7 @@ export class BlockMediaUpdateProgress extends Component {
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
addMediaSaveListener() {
|
|
266
|
-
//
|
|
266
|
+
// If we already have a subscription not worth doing it again.
|
|
267
267
|
if (this.subscriptionParentMediaSave) {
|
|
268
268
|
return;
|
|
269
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-media-update-progress/index.native.js"],"names":["View","Component","Spinner","__","subscribeMediaUpload","subscribeMediaSave","styles","MEDIA_UPLOAD_STATE_UPLOADING","MEDIA_UPLOAD_STATE_SUCCEEDED","MEDIA_UPLOAD_STATE_FAILED","MEDIA_UPLOAD_STATE_RESET","MEDIA_SAVE_STATE_SAVING","MEDIA_SAVE_STATE_SUCCEEDED","MEDIA_SAVE_STATE_FAILED","MEDIA_SAVE_STATE_RESET","MEDIA_SAVE_FINAL_STATE_RESULT","MEDIA_SAVE_MEDIAID_CHANGED","BlockMediaUpdateProgress","constructor","props","state","progress","isSaveInProgress","isSaveFailed","isUploadInProgress","isUploadFailed","mediaUpload","bind","mediaSave","componentDidMount","addMediaUploadListener","addMediaSaveListener","componentWillUnmount","removeMediaUploadListener","removeMediaSaveListener","mediaIdContainedInMediaFiles","mediaId","mediaFiles","undefined","some","element","id","toString","payload","updateMediaUploadProgress","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","mediaUploadStateReset","updateMediaSaveProgress","finishMediaSaveWithSuccess","finishMediaSaveWithFailure","mediaSaveStateReset","finalSaveResult","mediaIdChanged","setState","onUpdateMediaSaveProgress","onFinishMediaSaveWithSuccess","onFinishMediaSaveWithFailure","onMediaSaveStateReset","success","onFinalSaveResult","onMediaIdChanged","onUpdateMediaUploadProgress","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onMediaUploadStateReset","subscriptionParentMediaUpload","remove","subscriptionParentMediaSave","render","renderContent","showSpinner","retryMessageSave","retryMessageUpload","retryMessage","mediaUploadProgress","progressBar"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsubscribeMediaUpload,\n\tsubscribeMediaSave,\n} from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nexport const MEDIA_UPLOAD_STATE_UPLOADING = 1;\nexport const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;\nexport const MEDIA_UPLOAD_STATE_FAILED = 3;\nexport const MEDIA_UPLOAD_STATE_RESET = 4;\n\nexport const MEDIA_SAVE_STATE_SAVING = 5;\nexport const MEDIA_SAVE_STATE_SUCCEEDED = 6;\nexport const MEDIA_SAVE_STATE_FAILED = 7;\nexport const MEDIA_SAVE_STATE_RESET = 8;\nexport const MEDIA_SAVE_FINAL_STATE_RESULT = 9;\nexport const MEDIA_SAVE_MEDIAID_CHANGED = 10;\n\nexport class BlockMediaUpdateProgress extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tprogress: 0,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t};\n\n\t\tthis.mediaUpload = this.mediaUpload.bind( this );\n\t\tthis.mediaSave = this.mediaSave.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.addMediaUploadListener();\n\t\tthis.addMediaSaveListener();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.removeMediaUploadListener();\n\t\tthis.removeMediaSaveListener();\n\t}\n\n\tmediaIdContainedInMediaFiles( mediaId, mediaFiles ) {\n\t\tif ( mediaId !== undefined && mediaFiles !== undefined ) {\n\t\t\treturn mediaFiles.some(\n\t\t\t\t( element ) => element.id === mediaId.toString()\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\n\tmediaUpload( payload ) {\n\t\tconst { mediaFiles } = this.props;\n\n\t\tif (\n\t\t\tthis.mediaIdContainedInMediaFiles( payload.mediaId, mediaFiles ) ===\n\t\t\tfalse\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_UPLOAD_STATE_UPLOADING:\n\t\t\t\tthis.updateMediaUploadProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaUploadWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_FAILED:\n\t\t\t\tthis.finishMediaUploadWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_RESET:\n\t\t\t\tthis.mediaUploadStateReset( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tmediaSave( payload ) {\n\t\tconst { mediaFiles } = this.props;\n\n\t\tif (\n\t\t\tthis.mediaIdContainedInMediaFiles( payload.mediaId, mediaFiles ) ===\n\t\t\tfalse\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_SAVE_STATE_SAVING:\n\t\t\t\tthis.updateMediaSaveProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaSaveWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_FAILED:\n\t\t\t\tthis.finishMediaSaveWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_RESET:\n\t\t\t\tthis.mediaSaveStateReset( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_FINAL_STATE_RESULT:\n\t\t\t\tthis.finalSaveResult( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_MEDIAID_CHANGED:\n\t\t\t\tthis.mediaIdChanged( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// ---- Block media save actions\n\tupdateMediaSaveProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: true,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaSaveProgress ) {\n\t\t\tthis.props.onUpdateMediaSaveProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaSaveWithSuccess( payload ) {\n\t\tthis.setState( { isSaveInProgress: false } );\n\t\tif ( this.props.onFinishMediaSaveWithSuccess ) {\n\t\t\tthis.props.onFinishMediaSaveWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaSaveWithFailure( payload ) {\n\t\tthis.setState( { isSaveInProgress: false, isSaveFailed: true } );\n\t\tif ( this.props.onFinishMediaSaveWithFailure ) {\n\t\t\tthis.props.onFinishMediaSaveWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaSaveStateReset( payload ) {\n\t\tthis.setState( { isSaveInProgress: false, isSaveFailed: false } );\n\t\tif ( this.props.onMediaSaveStateReset ) {\n\t\t\tthis.props.onMediaSaveStateReset( payload );\n\t\t}\n\t}\n\n\tfinalSaveResult( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: ! payload.success,\n\t\t} );\n\t\tif ( this.props.onFinalSaveResult ) {\n\t\t\tthis.props.onFinalSaveResult( payload );\n\t\t}\n\t}\n\n\tmediaIdChanged( payload ) {\n\t\tthis.setState( {\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onMediaIdChanged ) {\n\t\t\tthis.props.onMediaIdChanged( payload );\n\t\t}\n\t}\n\n\t// ---- Block media upload actions\n\tupdateMediaUploadProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: true,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaUploadProgress ) {\n\t\t\tthis.props.onUpdateMediaUploadProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isSaveInProgress: false } );\n\t\tif ( this.props.onFinishMediaUploadWithSuccess ) {\n\t\t\tthis.props.onFinishMediaUploadWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: true } );\n\t\tif ( this.props.onFinishMediaUploadWithFailure ) {\n\t\t\tthis.props.onFinishMediaUploadWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaUploadStateReset( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: false } );\n\t\tif ( this.props.onMediaUploadStateReset ) {\n\t\t\tthis.props.onMediaUploadStateReset( payload );\n\t\t}\n\t}\n\n\taddMediaUploadListener() {\n\t\t//if we already have a subscription not worth doing it again\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaUpload = subscribeMediaUpload(\n\t\t\t( payload ) => {\n\t\t\t\tthis.mediaUpload( payload );\n\t\t\t}\n\t\t);\n\t}\n\n\tremoveMediaUploadListener() {\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\tthis.subscriptionParentMediaUpload.remove();\n\t\t}\n\t}\n\n\taddMediaSaveListener() {\n\t\t//if we already have a subscription not worth doing it again\n\t\tif ( this.subscriptionParentMediaSave ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaSave = subscribeMediaSave( ( payload ) => {\n\t\t\tthis.mediaSave( payload );\n\t\t} );\n\t}\n\n\tremoveMediaSaveListener() {\n\t\tif ( this.subscriptionParentMediaSave ) {\n\t\t\tthis.subscriptionParentMediaSave.remove();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { renderContent = () => null } = this.props;\n\t\tconst {\n\t\t\tisUploadInProgress,\n\t\t\tisUploadFailed,\n\t\t\tisSaveInProgress,\n\t\t\tisSaveFailed,\n\t\t} = this.state;\n\t\tconst showSpinner =\n\t\t\tthis.state.isUploadInProgress || this.state.isSaveInProgress;\n\t\tconst progress = this.state.progress * 100;\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\tconst retryMessageSave = __(\n\t\t\t'Failed to save files.\\nPlease tap for options.'\n\t\t);\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\tconst retryMessageUpload = __(\n\t\t\t'Failed to upload files.\\nPlease tap for options.'\n\t\t);\n\t\tlet retryMessage = retryMessageSave;\n\t\tif ( isUploadFailed ) {\n\t\t\tretryMessage = retryMessageUpload;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={ styles.mediaUploadProgress } pointerEvents=\"box-none\">\n\t\t\t\t{ showSpinner && (\n\t\t\t\t\t<View style={ styles.progressBar }>\n\t\t\t\t\t\t<Spinner progress={ progress } testID=\"spinner\" />\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t\t{ renderContent( {\n\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\tisUploadFailed,\n\t\t\t\t\tisSaveInProgress,\n\t\t\t\t\tisSaveFailed,\n\t\t\t\t\tretryMessage,\n\t\t\t\t} ) }\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default BlockMediaUpdateProgress;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-media-update-progress/index.native.js"],"names":["View","Component","Spinner","__","subscribeMediaUpload","subscribeMediaSave","styles","MEDIA_UPLOAD_STATE_UPLOADING","MEDIA_UPLOAD_STATE_SUCCEEDED","MEDIA_UPLOAD_STATE_FAILED","MEDIA_UPLOAD_STATE_RESET","MEDIA_SAVE_STATE_SAVING","MEDIA_SAVE_STATE_SUCCEEDED","MEDIA_SAVE_STATE_FAILED","MEDIA_SAVE_STATE_RESET","MEDIA_SAVE_FINAL_STATE_RESULT","MEDIA_SAVE_MEDIAID_CHANGED","BlockMediaUpdateProgress","constructor","props","state","progress","isSaveInProgress","isSaveFailed","isUploadInProgress","isUploadFailed","mediaUpload","bind","mediaSave","componentDidMount","addMediaUploadListener","addMediaSaveListener","componentWillUnmount","removeMediaUploadListener","removeMediaSaveListener","mediaIdContainedInMediaFiles","mediaId","mediaFiles","undefined","some","element","id","toString","payload","updateMediaUploadProgress","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","mediaUploadStateReset","updateMediaSaveProgress","finishMediaSaveWithSuccess","finishMediaSaveWithFailure","mediaSaveStateReset","finalSaveResult","mediaIdChanged","setState","onUpdateMediaSaveProgress","onFinishMediaSaveWithSuccess","onFinishMediaSaveWithFailure","onMediaSaveStateReset","success","onFinalSaveResult","onMediaIdChanged","onUpdateMediaUploadProgress","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onMediaUploadStateReset","subscriptionParentMediaUpload","remove","subscriptionParentMediaSave","render","renderContent","showSpinner","retryMessageSave","retryMessageUpload","retryMessage","mediaUploadProgress","progressBar"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsubscribeMediaUpload,\n\tsubscribeMediaSave,\n} from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nexport const MEDIA_UPLOAD_STATE_UPLOADING = 1;\nexport const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;\nexport const MEDIA_UPLOAD_STATE_FAILED = 3;\nexport const MEDIA_UPLOAD_STATE_RESET = 4;\n\nexport const MEDIA_SAVE_STATE_SAVING = 5;\nexport const MEDIA_SAVE_STATE_SUCCEEDED = 6;\nexport const MEDIA_SAVE_STATE_FAILED = 7;\nexport const MEDIA_SAVE_STATE_RESET = 8;\nexport const MEDIA_SAVE_FINAL_STATE_RESULT = 9;\nexport const MEDIA_SAVE_MEDIAID_CHANGED = 10;\n\nexport class BlockMediaUpdateProgress extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tprogress: 0,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t};\n\n\t\tthis.mediaUpload = this.mediaUpload.bind( this );\n\t\tthis.mediaSave = this.mediaSave.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.addMediaUploadListener();\n\t\tthis.addMediaSaveListener();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.removeMediaUploadListener();\n\t\tthis.removeMediaSaveListener();\n\t}\n\n\tmediaIdContainedInMediaFiles( mediaId, mediaFiles ) {\n\t\tif ( mediaId !== undefined && mediaFiles !== undefined ) {\n\t\t\treturn mediaFiles.some(\n\t\t\t\t( element ) => element.id === mediaId.toString()\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\n\tmediaUpload( payload ) {\n\t\tconst { mediaFiles } = this.props;\n\n\t\tif (\n\t\t\tthis.mediaIdContainedInMediaFiles( payload.mediaId, mediaFiles ) ===\n\t\t\tfalse\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_UPLOAD_STATE_UPLOADING:\n\t\t\t\tthis.updateMediaUploadProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaUploadWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_FAILED:\n\t\t\t\tthis.finishMediaUploadWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_RESET:\n\t\t\t\tthis.mediaUploadStateReset( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tmediaSave( payload ) {\n\t\tconst { mediaFiles } = this.props;\n\n\t\tif (\n\t\t\tthis.mediaIdContainedInMediaFiles( payload.mediaId, mediaFiles ) ===\n\t\t\tfalse\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_SAVE_STATE_SAVING:\n\t\t\t\tthis.updateMediaSaveProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaSaveWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_FAILED:\n\t\t\t\tthis.finishMediaSaveWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_STATE_RESET:\n\t\t\t\tthis.mediaSaveStateReset( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_FINAL_STATE_RESULT:\n\t\t\t\tthis.finalSaveResult( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_SAVE_MEDIAID_CHANGED:\n\t\t\t\tthis.mediaIdChanged( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// ---- Block media save actions.\n\tupdateMediaSaveProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: true,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaSaveProgress ) {\n\t\t\tthis.props.onUpdateMediaSaveProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaSaveWithSuccess( payload ) {\n\t\tthis.setState( { isSaveInProgress: false } );\n\t\tif ( this.props.onFinishMediaSaveWithSuccess ) {\n\t\t\tthis.props.onFinishMediaSaveWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaSaveWithFailure( payload ) {\n\t\tthis.setState( { isSaveInProgress: false, isSaveFailed: true } );\n\t\tif ( this.props.onFinishMediaSaveWithFailure ) {\n\t\t\tthis.props.onFinishMediaSaveWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaSaveStateReset( payload ) {\n\t\tthis.setState( { isSaveInProgress: false, isSaveFailed: false } );\n\t\tif ( this.props.onMediaSaveStateReset ) {\n\t\t\tthis.props.onMediaSaveStateReset( payload );\n\t\t}\n\t}\n\n\tfinalSaveResult( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: ! payload.success,\n\t\t} );\n\t\tif ( this.props.onFinalSaveResult ) {\n\t\t\tthis.props.onFinalSaveResult( payload );\n\t\t}\n\t}\n\n\tmediaIdChanged( payload ) {\n\t\tthis.setState( {\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onMediaIdChanged ) {\n\t\t\tthis.props.onMediaIdChanged( payload );\n\t\t}\n\t}\n\n\t// ---- Block media upload actions.\n\tupdateMediaUploadProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: true,\n\t\t\tisUploadFailed: false,\n\t\t\tisSaveInProgress: false,\n\t\t\tisSaveFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaUploadProgress ) {\n\t\t\tthis.props.onUpdateMediaUploadProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isSaveInProgress: false } );\n\t\tif ( this.props.onFinishMediaUploadWithSuccess ) {\n\t\t\tthis.props.onFinishMediaUploadWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: true } );\n\t\tif ( this.props.onFinishMediaUploadWithFailure ) {\n\t\t\tthis.props.onFinishMediaUploadWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaUploadStateReset( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: false } );\n\t\tif ( this.props.onMediaUploadStateReset ) {\n\t\t\tthis.props.onMediaUploadStateReset( payload );\n\t\t}\n\t}\n\n\taddMediaUploadListener() {\n\t\t// If we already have a subscription not worth doing it again.\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaUpload = subscribeMediaUpload(\n\t\t\t( payload ) => {\n\t\t\t\tthis.mediaUpload( payload );\n\t\t\t}\n\t\t);\n\t}\n\n\tremoveMediaUploadListener() {\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\tthis.subscriptionParentMediaUpload.remove();\n\t\t}\n\t}\n\n\taddMediaSaveListener() {\n\t\t// If we already have a subscription not worth doing it again.\n\t\tif ( this.subscriptionParentMediaSave ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaSave = subscribeMediaSave( ( payload ) => {\n\t\t\tthis.mediaSave( payload );\n\t\t} );\n\t}\n\n\tremoveMediaSaveListener() {\n\t\tif ( this.subscriptionParentMediaSave ) {\n\t\t\tthis.subscriptionParentMediaSave.remove();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { renderContent = () => null } = this.props;\n\t\tconst {\n\t\t\tisUploadInProgress,\n\t\t\tisUploadFailed,\n\t\t\tisSaveInProgress,\n\t\t\tisSaveFailed,\n\t\t} = this.state;\n\t\tconst showSpinner =\n\t\t\tthis.state.isUploadInProgress || this.state.isSaveInProgress;\n\t\tconst progress = this.state.progress * 100;\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\tconst retryMessageSave = __(\n\t\t\t'Failed to save files.\\nPlease tap for options.'\n\t\t);\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\tconst retryMessageUpload = __(\n\t\t\t'Failed to upload files.\\nPlease tap for options.'\n\t\t);\n\t\tlet retryMessage = retryMessageSave;\n\t\tif ( isUploadFailed ) {\n\t\t\tretryMessage = retryMessageUpload;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={ styles.mediaUploadProgress } pointerEvents=\"box-none\">\n\t\t\t\t{ showSpinner && (\n\t\t\t\t\t<View style={ styles.progressBar }>\n\t\t\t\t\t\t<Spinner progress={ progress } testID=\"spinner\" />\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t\t{ renderContent( {\n\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\tisUploadFailed,\n\t\t\t\t\tisSaveInProgress,\n\t\t\t\t\tisSaveFailed,\n\t\t\t\t\tretryMessage,\n\t\t\t\t} ) }\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default BlockMediaUpdateProgress;\n"]}
|
|
@@ -29,7 +29,7 @@ import BlockTransformationsMenu from '../block-switcher/block-transformations-me
|
|
|
29
29
|
|
|
30
30
|
const BlockActionsMenu = _ref => {
|
|
31
31
|
let {
|
|
32
|
-
// Select
|
|
32
|
+
// Select.
|
|
33
33
|
blockTitle,
|
|
34
34
|
canInsertBlockType,
|
|
35
35
|
getBlocksByClientId,
|
|
@@ -43,7 +43,7 @@ const BlockActionsMenu = _ref => {
|
|
|
43
43
|
rootClientId,
|
|
44
44
|
selectedBlockClientId,
|
|
45
45
|
selectedBlockPossibleTransformations,
|
|
46
|
-
// Dispatch
|
|
46
|
+
// Dispatch.
|
|
47
47
|
createSuccessNotice,
|
|
48
48
|
convertToRegularBlocks,
|
|
49
49
|
duplicateBlock,
|
|
@@ -52,7 +52,7 @@ const BlockActionsMenu = _ref => {
|
|
|
52
52
|
openGeneralSidebar,
|
|
53
53
|
pasteBlock,
|
|
54
54
|
removeBlocks,
|
|
55
|
-
// Passed in
|
|
55
|
+
// Passed in.
|
|
56
56
|
anchorNodeRef,
|
|
57
57
|
isStackedHorizontally,
|
|
58
58
|
onDelete,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["Platform","findNodeHandle","partial","first","castArray","last","compact","every","getClipboard","setClipboard","ToolbarButton","Picker","getBlockType","getDefaultBlockName","hasBlockSupport","serialize","rawHandler","createBlock","isUnmodifiedDefaultBlock","isReusableBlock","__","sprintf","withDispatch","withSelect","withInstanceId","compose","moreHorizontalMobile","useRef","useState","store","noticesStore","reusableBlocksStore","coreStore","getMoversSetup","blockEditorStore","BlockTransformationsMenu","BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","title","raw","options","length","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","filter","Boolean","accessibilityHint","OS","getAnchor","undefined","hint","select","clientIds","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","normalizedClientIds","block","blockName","blockType","firstClientId","blockOrder","firstIndex","lastIndex","innerBlocks","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlocks","clearSelectedBlock","getBlockSelectionEnd","__experimentalConvertBlockToStatic","convertBlockToStatic","setImmediate","canReplaceBlock","insertedBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\nimport { partial, first, castArray, last, compact, every } from 'lodash';\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\n\nconst BlockActionsMenu = ( {\n\t// Select\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\t// Dispatch\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy block' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel: __( 'Convert to regular blocks' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: name of the reusable block */\n\t\t\t\t\t\t__( '%s converted to regular blocks' ),\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = compact( [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tisReusableBlockType && allOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t] );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default compose(\n\twithSelect( ( select, { clientIds } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t} = select( blockEditorStore );\n\t\tconst normalizedClientIds = castArray( clientIds );\n\t\tconst block = getBlock( normalizedClientIds );\n\t\tconst blockName = getBlockName( normalizedClientIds );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst firstClientId = first( normalizedClientIds );\n\t\tconst rootClientId = getBlockRootClientId( firstClientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst firstIndex = getBlockIndex( firstClientId );\n\t\tconst lastIndex = getBlockIndex( last( normalizedClientIds ) );\n\n\t\tconst innerBlocks = getBlocksByClientId( clientIds );\n\n\t\tconst canDuplicate = every( innerBlocks, ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = first( getSelectedBlockClientIds() );\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? first( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( [ selectedBlock ], rootClientId )\n\t\t\t: [];\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: firstIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst: firstIndex === 0,\n\t\t\tisLast: lastIndex === blockOrder.length - 1,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientIds, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlocks,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst {\n\t\t\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t\t\t} = dispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( clientIds );\n\t\t\t\t},\n\t\t\t\tonMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),\n\t\t\t\tonMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlocks( clientIds, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["Platform","findNodeHandle","partial","first","castArray","last","compact","every","getClipboard","setClipboard","ToolbarButton","Picker","getBlockType","getDefaultBlockName","hasBlockSupport","serialize","rawHandler","createBlock","isUnmodifiedDefaultBlock","isReusableBlock","__","sprintf","withDispatch","withSelect","withInstanceId","compose","moreHorizontalMobile","useRef","useState","store","noticesStore","reusableBlocksStore","coreStore","getMoversSetup","blockEditorStore","BlockTransformationsMenu","BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","title","raw","options","length","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","filter","Boolean","accessibilityHint","OS","getAnchor","undefined","hint","select","clientIds","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","normalizedClientIds","block","blockName","blockType","firstClientId","blockOrder","firstIndex","lastIndex","innerBlocks","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlocks","clearSelectedBlock","getBlockSelectionEnd","__experimentalConvertBlockToStatic","convertBlockToStatic","setImmediate","canReplaceBlock","insertedBlock"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AACA,SAASC,OAAT,EAAkBC,KAAlB,EAAyBC,SAAzB,EAAoCC,IAApC,EAA0CC,OAA1C,EAAmDC,KAAnD,QAAgE,QAAhE;AACA;AACA;AACA;;AACA,SACCC,YADD,EAECC,YAFD,EAGCC,aAHD,EAICC,MAJD,QAKO,uBALP;AAMA,SACCC,YADD,EAECC,mBAFD,EAGCC,eAHD,EAICC,SAJD,EAKCC,UALD,EAMCC,WAND,EAOCC,wBAPD,EAQCC,eARD,QASO,mBATP;AAUA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,YAAT,EAAuBC,UAAvB,QAAyC,iBAAzC;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,oBAAxC;AACA,SAASC,oBAAT,QAAqC,kBAArC;AACA,SAASC,MAAT,EAAiBC,QAAjB,QAAiC,oBAAjC;AACA,SAASC,KAAK,IAAIC,YAAlB,QAAsC,oBAAtC;AACA,SAASD,KAAK,IAAIE,mBAAlB,QAA6C,4BAA7C;AACA,SAASF,KAAK,IAAIG,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASC,cAAT,QAA+B,kCAA/B;AACA,SAASJ,KAAK,IAAIK,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,wBAAP,MAAqC,8CAArC;;AAEA,MAAMC,gBAAgB,GAAG,QA8BlB;AAAA,MA9BoB;AAC1B;AACAC,IAAAA,UAF0B;AAG1BC,IAAAA,kBAH0B;AAI1BC,IAAAA,mBAJ0B;AAK1BC,IAAAA,mBAL0B;AAM1BC,IAAAA,QAN0B;AAO1BC,IAAAA,YAP0B;AAQ1BC,IAAAA,OAR0B;AAS1BC,IAAAA,MAT0B;AAU1BC,IAAAA,mBAV0B;AAW1BC,IAAAA,aAX0B;AAY1BC,IAAAA,YAZ0B;AAa1BC,IAAAA,qBAb0B;AAc1BC,IAAAA,oCAd0B;AAe1B;AACAC,IAAAA,mBAhB0B;AAiB1BC,IAAAA,sBAjB0B;AAkB1BC,IAAAA,cAlB0B;AAmB1BC,IAAAA,UAnB0B;AAoB1BC,IAAAA,QApB0B;AAqB1BC,IAAAA,kBArB0B;AAsB1BC,IAAAA,UAtB0B;AAuB1BC,IAAAA,YAvB0B;AAwB1B;AACAC,IAAAA,aAzB0B;AA0B1BC,IAAAA,qBA1B0B;AA2B1BC,IAAAA,QA3B0B;AA4B1BC,IAAAA,cA5B0B;AA6B1BC,IAAAA;AA7B0B,GA8BpB;AACN,QAAM,CAAEC,SAAF,EAAaC,mBAAb,IAAqCpC,QAAQ,CAAEpB,YAAY,EAAd,CAAnD;AACA,QAAMyD,yBAAyB,GAAGtC,MAAM,EAAxC;AACA,QAAMuC,gCAAgC,GAAGvC,MAAM,EAA/C;AACA,QAAMwC,aAAa,GAAG;AAAEC,IAAAA,IAAI,EAAE,CAAE,MAAF,EAAU,aAAV;AAAR,GAAtB;AACA,QAAMC,cAAc,GAAGN,SAAS,IAAI/C,UAAU,CAAE;AAAEsD,IAAAA,IAAI,EAAEP;AAAR,GAAF,CAAV,CAAmC,CAAnC,CAApC;AACA,QAAMQ,cAAc,GACnBF,cAAc,IACd/B,kBAAkB,CAAE+B,cAAc,CAACG,IAAjB,EAAuBzB,YAAvB,CAFnB;AAIA,QAAM;AACL0B,IAAAA,WAAW,EAAE;AACZC,MAAAA,QAAQ,EAAEC,mBADE;AAEZC,MAAAA,OAAO,EAAEC;AAFG;AADR,MAKF5C,cAAc,CAAE0B,qBAAF,EAAyBQ,aAAzB,CALlB;AAOA,QAAMW,UAAU,GAAG;AAClBC,IAAAA,QAAQ,EAAE;AACTC,MAAAA,EAAE,EAAE,gBADK;AAETC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,gBAAF,CAFA;AAGT8D,MAAAA,KAAK,EAAE,gBAHE;AAITC,MAAAA,QAAQ,EAAE5B;AAJD,KADQ;AAOlB6B,IAAAA,cAAc,EAAE;AACfJ,MAAAA,EAAE,EAAE,sBADW;AAEfC,MAAAA,KAAK,EAAEN,mBAFQ;AAGfO,MAAAA,KAAK,EAAE,sBAHQ;AAIfG,MAAAA,QAAQ,EAAE1C,OAJK;AAKfwC,MAAAA,QAAQ,EAAE7B;AALK,KAPE;AAclBgC,IAAAA,aAAa,EAAE;AACdN,MAAAA,EAAE,EAAE,qBADU;AAEdC,MAAAA,KAAK,EAAEJ,kBAFO;AAGdK,MAAAA,KAAK,EAAE,qBAHO;AAIdG,MAAAA,QAAQ,EAAEzC,MAJI;AAKduC,MAAAA,QAAQ,EAAE9B;AALI,KAdG;AAqBlBkC,IAAAA,MAAM,EAAE;AACPP,MAAAA,EAAE,EAAE,cADG;AAEPC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,cAAF,CAFF;AAGP8D,MAAAA,KAAK,EAAE,cAHA;AAIPM,MAAAA,SAAS,EAAE,IAJJ;AAKPH,MAAAA,QAAQ,EAAE7C,mBALH;AAMP2C,MAAAA,QAAQ,EAAE,MAAM;AACfvB,QAAAA,QAAQ;AACRV,QAAAA,mBAAmB,EAClB;AACA9B,QAAAA,EAAE,CAAE,eAAF,CAFgB,CAAnB;AAIA;AAZM,KArBU;AAmClBqE,IAAAA,eAAe,EAAE;AAChBT,MAAAA,EAAE,EAAE,uBADY;AAEhBC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,kBAAF,CAFO;AAGhB8D,MAAAA,KAAK,EAAE,uBAHS;AAIhBC,MAAAA,QAAQ,EAAE,MAAM;AACf,YAAKjB,gCAAgC,CAACwB,OAAtC,EAAgD;AAC/CxB,UAAAA,gCAAgC,CAACwB,OAAjC,CAAyCC,aAAzC;AACA;AACD;AARe,KAnCC;AA6ClBC,IAAAA,UAAU,EAAE;AACXZ,MAAAA,EAAE,EAAE,kBADO;AAEXC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,YAAF,CAFE;AAGX8D,MAAAA,KAAK,EAAE,kBAHI;AAIXC,MAAAA,QAAQ,EAAE,MAAM;AACf,cAAMU,eAAe,GAAG9E,SAAS,CAChCwB,mBAAmB,CAAES,qBAAF,CADa,CAAjC;AAGAgB,QAAAA,mBAAmB,CAAE6B,eAAF,CAAnB;AACApF,QAAAA,YAAY,CAAEoF,eAAF,CAAZ;AACA3C,QAAAA,mBAAmB,EAClB;AACA9B,QAAAA,EAAE,CAAE,cAAF,CAFgB,CAAnB;AAIA;AAdU,KA7CM;AA6DlB0E,IAAAA,SAAS,EAAE;AACVd,MAAAA,EAAE,EAAE,iBADM;AAEVC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,WAAF,CAFC;AAGV8D,MAAAA,KAAK,EAAE,iBAHG;AAIVC,MAAAA,QAAQ,EAAE,MAAM;AACf1E,QAAAA,YAAY,CACXM,SAAS,CAAEwB,mBAAmB,CAAES,qBAAF,CAArB,CADE,CAAZ;AAGAS,QAAAA,YAAY,CAAET,qBAAF,CAAZ;AACAE,QAAAA,mBAAmB,EAClB;AACA9B,QAAAA,EAAE,CAAE,WAAF,CAFgB,CAAnB;AAIA;AAbS,KA7DO;AA4ElB2E,IAAAA,WAAW,EAAE;AACZf,MAAAA,EAAE,EAAE,mBADQ;AAEZC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,mBAAF,CAFG;AAGZ8D,MAAAA,KAAK,EAAE,mBAHK;AAIZC,MAAAA,QAAQ,EAAE,MAAM;AACfa,QAAAA,YAAY;AACZ9C,QAAAA,mBAAmB,EAClB;AACA9B,QAAAA,EAAE,CAAE,cAAF,CAFgB,CAAnB;AAIA;AAVW,KA5EK;AAwFlB6E,IAAAA,eAAe,EAAE;AAChBjB,MAAAA,EAAE,EAAE,uBADY;AAEhBC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,iBAAF,CAFO;AAGhB8D,MAAAA,KAAK,EAAE,uBAHS;AAIhBC,MAAAA,QAAQ,EAAE,MAAM;AACf/B,QAAAA,cAAc;AACdF,QAAAA,mBAAmB,EAClB;AACA9B,QAAAA,EAAE,CAAE,kBAAF,CAFgB,CAAnB;AAIA;AAVe,KAxFC;AAoGlB+B,IAAAA,sBAAsB,EAAE;AACvB6B,MAAAA,EAAE,EAAE,8BADmB;AAEvBC,MAAAA,KAAK,EAAE7D,EAAE,CAAE,2BAAF,CAFc;AAGvB8D,MAAAA,KAAK,EAAE,8BAHgB;AAIvBC,MAAAA,QAAQ,EAAE,MAAM;AAAA;;AACfjC,QAAAA,mBAAmB,CAClB7B,OAAO;AACN;AACAD,QAAAA,EAAE,CAAE,gCAAF,CAFI,EAGN,CAAA0B,aAAa,SAAb,IAAAA,aAAa,WAAb,oCAAAA,aAAa,CAAEoD,KAAf,8EAAsBC,GAAtB,KAA6B9D,UAHvB,CADW,CAAnB;AAOAc,QAAAA,sBAAsB;AACtB;AAbsB;AApGN,GAAnB;AAqHA,QAAMiD,OAAO,GAAG9F,OAAO,CAAE,CACxBuD,cAAc,IAAIiB,UAAU,CAACM,cADL,EAExBvB,cAAc,IAAIiB,UAAU,CAACQ,aAFL,EAGxBxB,iBAAiB,IAAIgB,UAAU,CAACC,QAHR,EAIxB,CAAEtC,QAAF,IACCQ,oCAAoC,CAACoD,MADtC,IAECvB,UAAU,CAACW,eANY,EAOxB/C,YAAY,IAAIoC,UAAU,CAACc,UAPH,EAQxBlD,YAAY,IAAIoC,UAAU,CAACgB,SARH,EASxBpD,YAAY,IAAI6B,cAAhB,IAAkCO,UAAU,CAACiB,WATrB,EAUxBrD,YAAY,IAAIoC,UAAU,CAACmB,eAVH,EAWxBpD,mBAAmB,IAAIiC,UAAU,CAAC3B,sBAXV,EAYxB,CAAEV,QAAF,IAAcqC,UAAU,CAACS,MAZD,CAAF,CAAvB,CAtIM,CAqJN;;AACA,MAAK,CAAEa,OAAO,CAACC,MAAf,EAAwB;AACvB,WACC,cAAC,aAAD;AACC,MAAA,KAAK,EAAGjF,EAAE,CAAE,yBAAF,CADX;AAEC,MAAA,IAAI,EAAGM,oBAFR;AAGC,MAAA,QAAQ,EAAG;AAHZ,MADD;AAOA;;AAED,WAASsE,YAAT,GAAwB;AACvB,QAAK,CAAEjC,SAAP,EAAmB;AAClB;AACA;;AAEDP,IAAAA,UAAU,CAAExC,UAAU,CAAE;AAAEsD,MAAAA,IAAI,EAAEP;AAAR,KAAF,CAAV,CAAmC,CAAnC,CAAF,CAAV;AACA;;AAED,WAASuC,cAAT,CAAyBpB,KAAzB,EAAiC;AAChC,UAAMqB,YAAY,GAAGH,OAAO,CAACI,IAAR,CAAgBC,IAAF,IAAYA,IAAI,CAACvB,KAAL,KAAeA,KAAzC,CAArB;AACAqB,IAAAA,YAAY,CAACpB,QAAb;AACA;;AAED,WAASuB,eAAT,GAA2B;AAC1B,QAAKzC,yBAAyB,CAACyB,OAA/B,EAAyC;AACxCzB,MAAAA,yBAAyB,CAACyB,OAA1B,CAAkCC,aAAlC;AACA;AACD;;AAED,QAAMgB,qBAAqB,GAAGP,OAAO,CACnCQ,GAD4B,CACvB,CAAEC,MAAF,EAAUC,KAAV,KAAqBD,MAAM,CAACxB,QAAP,IAAmByB,KAAK,GAAG,CADzB,EAE5BC,MAF4B,CAEpBC,OAFoB,CAA9B;AAIA,QAAMC,iBAAiB,GACtBjH,QAAQ,CAACkH,EAAT,KAAgB,KAAhB,GACG9F,EAAE,CAAE,wDAAF,CADL,GAEGA,EAAE,CAAE,wDAAF,CAHN;;AAKA,QAAM+F,SAAS,GAAG,MACjBzD,aAAa,GAAGzD,cAAc,CAAEyD,aAAF,CAAjB,GAAqC0D,SADnD;;AAGA,SACC,8BACC,cAAC,aAAD;AACC,IAAA,KAAK,EAAGhG,EAAE,CAAE,yBAAF,CADX;AAEC,IAAA,OAAO,EAAGsF,eAFX;AAGC,IAAA,IAAI,EAAGhF,oBAHR;AAIC,IAAA,UAAU,EAAG;AACZ2F,MAAAA,IAAI,EAAEJ;AADM;AAJd,IADD,EASC,cAAC,MAAD;AACC,IAAA,GAAG,EAAGhD,yBADP;AAEC,IAAA,OAAO,EAAGmC,OAFX;AAGC,IAAA,QAAQ,EAAGE,cAHZ;AAIC,IAAA,sBAAsB,EAAGF,OAAO,CAACC,MAJlC;AAKC,IAAA,qBAAqB,EAAGM,qBALzB;AAMC,IAAA,gBAAgB,EAAG3G,QAAQ,CAACkH,EAAT,KAAgB,KANpC;AAOC,IAAA,SAAS,EAAG,IAPb;AAQC,IAAA,SAAS,EAAGC,SARb,CASC;AATD;AAUC,IAAA,KAAK,EAAG9F,OAAO,CAAED,EAAE,CAAE,kBAAF,CAAJ,EAA4BiB,UAA5B;AAVhB,IATD,EAqBC,cAAC,wBAAD;AACC,IAAA,aAAa,EAAGqB,aADjB;AAEC,IAAA,UAAU,EAAGrB,UAFd;AAGC,IAAA,SAAS,EAAG6B,gCAHb;AAIC,IAAA,uBAAuB,EAAGjB,oCAJ3B;AAKC,IAAA,aAAa,EAAGV,mBAAmB,CAAES,qBAAF,CALpC;AAMC,IAAA,qBAAqB,EAAGA;AANzB,IArBD,CADD;AAgCA,CA7PD;;AA+PA,eAAevB,OAAO,CACrBF,UAAU,CAAE,CAAE+F,MAAF,YAA6B;AAAA,MAAnB;AAAEC,IAAAA;AAAF,GAAmB;AACxC,QAAM;AACLC,IAAAA,aADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA,aAHK;AAILC,IAAAA,YAJK;AAKLC,IAAAA,sBALK;AAMLC,IAAAA,QANK;AAOLtF,IAAAA,mBAPK;AAQLuF,IAAAA,yBARK;AASLxF,IAAAA,kBATK;AAULyF,IAAAA;AAVK,MAWFT,MAAM,CAAEpF,gBAAF,CAXV;AAYA,QAAM8F,mBAAmB,GAAG5H,SAAS,CAAEmH,SAAF,CAArC;AACA,QAAMU,KAAK,GAAGJ,QAAQ,CAAEG,mBAAF,CAAtB;AACA,QAAME,SAAS,GAAGP,YAAY,CAAEK,mBAAF,CAA9B;AACA,QAAMG,SAAS,GAAGvH,YAAY,CAAEsH,SAAF,CAA9B;AACA,QAAM7F,UAAU,GAAG8F,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEjC,KAA9B;AACA,QAAMkC,aAAa,GAAGjI,KAAK,CAAE6H,mBAAF,CAA3B;AACA,QAAMjF,YAAY,GAAG0E,oBAAoB,CAAEW,aAAF,CAAzC;AACA,QAAMC,UAAU,GAAGX,aAAa,CAAE3E,YAAF,CAAhC;AAEA,QAAMuF,UAAU,GAAGd,aAAa,CAAEY,aAAF,CAAhC;AACA,QAAMG,SAAS,GAAGf,aAAa,CAAEnH,IAAI,CAAE2H,mBAAF,CAAN,CAA/B;AAEA,QAAMQ,WAAW,GAAGjG,mBAAmB,CAAEgF,SAAF,CAAvC;AAEA,QAAM7E,YAAY,GAAGnC,KAAK,CAAEiI,WAAF,EAAiBC,UAAF,IAAkB;AAC1D,WACC,CAAC,CAAEA,UAAH,IACA3H,eAAe,CAAE2H,UAAU,CAACjE,IAAb,EAAmB,UAAnB,EAA+B,IAA/B,CADf,IAEAlC,kBAAkB,CAAEmG,UAAU,CAACjE,IAAb,EAAmBzB,YAAnB,CAHnB;AAKA,GANyB,CAA1B;AAQA,QAAM2F,cAAc,GAAGR,SAAS,KAAKrH,mBAAmB,EAAxD;AACA,QAAM8H,cAAc,GAAG,CAAAV,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEW,UAAP,CAAkBC,OAAlB,MAA8B,EAArD;AACA,QAAMC,iBAAiB,GAAGT,UAAU,CAAChC,MAAX,KAAsB,CAAhD;AACA,QAAM7D,mBAAmB,GACxBsG,iBAAiB,IAAIJ,cAArB,IAAuCC,cADxC;AAEA,QAAMlG,QAAQ,GAAG,CAAC,CAAEsF,eAAe,CAAEhF,YAAF,CAAnC;AAEA,QAAMC,qBAAqB,GAAG7C,KAAK,CAAE2H,yBAAyB,EAA3B,CAAnC;AACA,QAAMiB,aAAa,GAAG/F,qBAAqB,GACxC7C,KAAK,CAAEoC,mBAAmB,CAAES,qBAAF,CAArB,CADmC,GAExCoE,SAFH;AAGA,QAAMnE,oCAAoC,GAAG8F,aAAa,GACvDnB,sBAAsB,CAAE,CAAEmB,aAAF,CAAF,EAAqBhG,YAArB,CADiC,GAEvD,EAFH;AAIA,QAAMF,mBAAmB,GAAGoF,KAAK,GAAG9G,eAAe,CAAE8G,KAAF,CAAlB,GAA8B,KAA/D;AACA,QAAMnF,aAAa,GAAGD,mBAAmB,GACtCyE,MAAM,CAAEtF,SAAF,CAAN,CAAoBgH,eAApB,CACA,UADA,EAEA,UAFA,EAGAf,KAHA,aAGAA,KAHA,uBAGAA,KAAK,CAAEW,UAAP,CAAkBK,GAHlB,CADsC,GAMtC7B,SANH;AAQA,SAAO;AACN/E,IAAAA,UADM;AAENC,IAAAA,kBAFM;AAGN4G,IAAAA,YAAY,EAAEZ,UAHR;AAIN/F,IAAAA,mBAJM;AAKNC,IAAAA,mBALM;AAMNC,IAAAA,QANM;AAONC,IAAAA,YAPM;AAQNC,IAAAA,OAAO,EAAE2F,UAAU,KAAK,CARlB;AASN1F,IAAAA,MAAM,EAAE2F,SAAS,KAAKF,UAAU,CAAChC,MAAX,GAAoB,CATpC;AAUNxD,IAAAA,mBAVM;AAWNC,IAAAA,aAXM;AAYNC,IAAAA,YAZM;AAaNC,IAAAA,qBAbM;AAcNC,IAAAA;AAdM,GAAP;AAgBA,CA3ES,CADW,EA6ErB3B,YAAY,CACX,CACC6H,QADD,mBAIK;AAAA,MAFJ;AAAE5B,IAAAA,SAAF;AAAaxE,IAAAA,YAAb;AAA2BmG,IAAAA,YAA3B;AAAyClG,IAAAA;AAAzC,GAEI;AAAA,MADJ;AAAEsE,IAAAA;AAAF,GACI;AACJ,QAAM;AACL8B,IAAAA,cADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,eAHK;AAIL7F,IAAAA,YAJK;AAKL8F,IAAAA,WALK;AAMLC,IAAAA,aANK;AAOLC,IAAAA;AAPK,MAQFN,QAAQ,CAAEjH,gBAAF,CARZ;AASA,QAAM;AAAEqB,IAAAA;AAAF,MAAyB4F,QAAQ,CAAE,gBAAF,CAAvC;AACA,QAAM;AAAEO,IAAAA,oBAAF;AAAwB7B,IAAAA;AAAxB,MAAqCP,MAAM,CAChDpF,gBADgD,CAAjD;AAGA,QAAM;AAAEgB,IAAAA;AAAF,MAA0BiG,QAAQ,CAAErH,YAAF,CAAxC;AAEA,QAAM;AACL6H,IAAAA,kCAAkC,EAAEC;AAD/B,MAEFT,QAAQ,CAAEpH,mBAAF,CAFZ;AAIA,SAAO;AACNmB,IAAAA,mBADM;;AAENC,IAAAA,sBAAsB,GAAG;AACxBsG,MAAAA,kBAAkB,GADM,CAExB;AACA;;AACAI,MAAAA,YAAY,CAAE,MACbD,oBAAoB,CAAE5G,qBAAF,CADT,CAAZ;AAGA,KATK;;AAUNI,IAAAA,cAAc,GAAG;AAChB,aAAOkG,eAAe,CAAE/B,SAAF,CAAtB;AACA,KAZK;;AAaNlE,IAAAA,UAAU,EAAEnD,OAAO,CAAEkJ,cAAF,EAAkB7B,SAAlB,EAA6BxE,YAA7B,CAbb;AAcNO,IAAAA,QAAQ,EAAEpD,OAAO,CAAEmJ,YAAF,EAAgB9B,SAAhB,EAA2BxE,YAA3B,CAdX;AAeNQ,IAAAA,kBAAkB,EAAE,MACnBA,kBAAkB,CAAE,iBAAF,CAhBb;AAiBNC,IAAAA,UAAU,EAAIa,cAAF,IAAsB;AACjC,YAAMyF,eAAe,GAAG5I,wBAAwB,CAC/C2G,QAAQ,CAAE6B,oBAAoB,EAAtB,CADuC,CAAhD;;AAIA,UAAK,CAAEI,eAAP,EAAyB;AACxB,cAAMC,aAAa,GAAG9I,WAAW,CAChCoD,cAAc,CAACG,IADiB,EAEhCH,cAAc,CAACuE,UAFiB,EAGhCvE,cAAc,CAACmE,WAHiB,CAAjC;AAMAe,QAAAA,WAAW,CACVQ,aADU,EAEVb,YAAY,GAAG,CAFL,EAGVnG,YAHU,CAAX;AAKA,OAZD,MAYO;AACNyG,QAAAA,aAAa,CAAEjC,SAAF,EAAalD,cAAb,CAAb;AACA;AACD,KArCK;AAsCNZ,IAAAA;AAtCM,GAAP;AAwCA,CAjEU,CA7ES,EAgJrBjC,cAhJqB,CAAP,CAiJZY,gBAjJY,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\nimport { partial, first, castArray, last, compact, every } from 'lodash';\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy block' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel: __( 'Convert to regular blocks' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: name of the reusable block */\n\t\t\t\t\t\t__( '%s converted to regular blocks' ),\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = compact( [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tisReusableBlockType && allOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t] );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default compose(\n\twithSelect( ( select, { clientIds } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t} = select( blockEditorStore );\n\t\tconst normalizedClientIds = castArray( clientIds );\n\t\tconst block = getBlock( normalizedClientIds );\n\t\tconst blockName = getBlockName( normalizedClientIds );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst firstClientId = first( normalizedClientIds );\n\t\tconst rootClientId = getBlockRootClientId( firstClientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst firstIndex = getBlockIndex( firstClientId );\n\t\tconst lastIndex = getBlockIndex( last( normalizedClientIds ) );\n\n\t\tconst innerBlocks = getBlocksByClientId( clientIds );\n\n\t\tconst canDuplicate = every( innerBlocks, ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = first( getSelectedBlockClientIds() );\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? first( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( [ selectedBlock ], rootClientId )\n\t\t\t: [];\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: firstIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst: firstIndex === 0,\n\t\t\tisLast: lastIndex === blockOrder.length - 1,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientIds, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlocks,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst {\n\t\t\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t\t\t} = dispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( clientIds );\n\t\t\t\t},\n\t\t\t\tonMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),\n\t\t\t\tonMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlocks( clientIds, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
|
|
@@ -76,7 +76,7 @@ const BlockMobileToolbar = _ref => {
|
|
|
76
76
|
}), createElement(BlockSettingsButton.Slot, null, function () {
|
|
77
77
|
let fills = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [null];
|
|
78
78
|
return (// The purpose of BlockSettingsButtonFill component is only to provide a way
|
|
79
|
-
// to pass data upstream from the slot rendering
|
|
79
|
+
// to pass data upstream from the slot rendering.
|
|
80
80
|
createElement(BlockSettingsButtonFill, {
|
|
81
81
|
fillsLength: fills.length,
|
|
82
82
|
onChangeFillsLength: setFillsLength
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/index.native.js"],"names":["View","withDispatch","withSelect","compose","useState","useEffect","styles","BlockMover","BlockActionsMenu","BlockSettingsButton","store","blockEditorStore","BREAKPOINTS","wrapSettings","wrapMover","BlockMobileToolbar","clientId","onDelete","isStackedHorizontally","blockWidth","anchorNodeRef","isFullWidth","fillsLength","setFillsLength","appenderWidth","setAppenderWidth","spacingValue","toolbar","marginLeft","onLayout","nativeEvent","layout","layoutWidth","Math","floor","width","wrapBlockSettings","wrapBlockMover","BlockSettingsButtonFill","fillProps","onChangeFillsLength","children","toolbarFullWidth","spacer","fills","length","select","getBlockIndex","order","dispatch","rootClientId","removeBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockMover from '../block-mover';\nimport BlockActionsMenu from './block-actions-menu';\nimport { BlockSettingsButton } from '../block-settings';\nimport { store as blockEditorStore } from '../../store';\n\n// Defined breakpoints are used to get a point when\n// `settings` and `mover` controls should be wrapped into `BlockActionsMenu`\n// and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).\nconst BREAKPOINTS = {\n\twrapSettings: 65,\n\twrapMover: 150,\n};\nconst BlockMobileToolbar = ( {\n\tclientId,\n\tonDelete,\n\tisStackedHorizontally,\n\tblockWidth,\n\tanchorNodeRef,\n\tisFullWidth,\n} ) => {\n\tconst [ fillsLength, setFillsLength ] = useState( null );\n\tconst [ appenderWidth, setAppenderWidth ] = useState( 0 );\n\tconst spacingValue = styles.toolbar.marginLeft * 2;\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( layoutWidth !== appenderWidth ) {\n\t\t\tsetAppenderWidth( nativeEvent.layout.width );\n\t\t}\n\t}\n\n\tconst wrapBlockSettings =\n\t\tblockWidth < BREAKPOINTS.wrapSettings ||\n\t\tappenderWidth - spacingValue < BREAKPOINTS.wrapSettings;\n\tconst wrapBlockMover =\n\t\tblockWidth <= BREAKPOINTS.wrapMover ||\n\t\tappenderWidth - spacingValue <= BREAKPOINTS.wrapMover;\n\n\tconst BlockSettingsButtonFill = ( fillProps ) => {\n\t\tuseEffect(\n\t\t\t() => fillProps.onChangeFillsLength( fillProps.fillsLength ),\n\t\t\t[ fillProps.fillsLength ]\n\t\t);\n\t\treturn fillProps.children ?? null;\n\t};\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [ styles.toolbar, isFullWidth && styles.toolbarFullWidth ] }\n\t\t\tonLayout={ onLayout }\n\t\t>\n\t\t\t{ ! wrapBlockMover && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<View style={ styles.spacer } />\n\n\t\t\t<BlockSettingsButton.Slot>\n\t\t\t\t{ /* Render only one settings icon even if we have more than one fill - need for hooks with controls */ }\n\t\t\t\t{ ( fills = [ null ] ) => (\n\t\t\t\t\t// The purpose of BlockSettingsButtonFill component is only to provide a way\n\t\t\t\t\t// to pass data upstream from the slot rendering
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/index.native.js"],"names":["View","withDispatch","withSelect","compose","useState","useEffect","styles","BlockMover","BlockActionsMenu","BlockSettingsButton","store","blockEditorStore","BREAKPOINTS","wrapSettings","wrapMover","BlockMobileToolbar","clientId","onDelete","isStackedHorizontally","blockWidth","anchorNodeRef","isFullWidth","fillsLength","setFillsLength","appenderWidth","setAppenderWidth","spacingValue","toolbar","marginLeft","onLayout","nativeEvent","layout","layoutWidth","Math","floor","width","wrapBlockSettings","wrapBlockMover","BlockSettingsButtonFill","fillProps","onChangeFillsLength","children","toolbarFullWidth","spacer","fills","length","select","getBlockIndex","order","dispatch","rootClientId","removeBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockMover from '../block-mover';\nimport BlockActionsMenu from './block-actions-menu';\nimport { BlockSettingsButton } from '../block-settings';\nimport { store as blockEditorStore } from '../../store';\n\n// Defined breakpoints are used to get a point when\n// `settings` and `mover` controls should be wrapped into `BlockActionsMenu`\n// and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).\nconst BREAKPOINTS = {\n\twrapSettings: 65,\n\twrapMover: 150,\n};\nconst BlockMobileToolbar = ( {\n\tclientId,\n\tonDelete,\n\tisStackedHorizontally,\n\tblockWidth,\n\tanchorNodeRef,\n\tisFullWidth,\n} ) => {\n\tconst [ fillsLength, setFillsLength ] = useState( null );\n\tconst [ appenderWidth, setAppenderWidth ] = useState( 0 );\n\tconst spacingValue = styles.toolbar.marginLeft * 2;\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( layoutWidth !== appenderWidth ) {\n\t\t\tsetAppenderWidth( nativeEvent.layout.width );\n\t\t}\n\t}\n\n\tconst wrapBlockSettings =\n\t\tblockWidth < BREAKPOINTS.wrapSettings ||\n\t\tappenderWidth - spacingValue < BREAKPOINTS.wrapSettings;\n\tconst wrapBlockMover =\n\t\tblockWidth <= BREAKPOINTS.wrapMover ||\n\t\tappenderWidth - spacingValue <= BREAKPOINTS.wrapMover;\n\n\tconst BlockSettingsButtonFill = ( fillProps ) => {\n\t\tuseEffect(\n\t\t\t() => fillProps.onChangeFillsLength( fillProps.fillsLength ),\n\t\t\t[ fillProps.fillsLength ]\n\t\t);\n\t\treturn fillProps.children ?? null;\n\t};\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [ styles.toolbar, isFullWidth && styles.toolbarFullWidth ] }\n\t\t\tonLayout={ onLayout }\n\t\t>\n\t\t\t{ ! wrapBlockMover && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<View style={ styles.spacer } />\n\n\t\t\t<BlockSettingsButton.Slot>\n\t\t\t\t{ /* Render only one settings icon even if we have more than one fill - need for hooks with controls. */ }\n\t\t\t\t{ ( fills = [ null ] ) => (\n\t\t\t\t\t// The purpose of BlockSettingsButtonFill component is only to provide a way\n\t\t\t\t\t// to pass data upstream from the slot rendering.\n\t\t\t\t\t<BlockSettingsButtonFill\n\t\t\t\t\t\tfillsLength={ fills.length }\n\t\t\t\t\t\tonChangeFillsLength={ setFillsLength }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ wrapBlockSettings ? null : fills[ 0 ] }\n\t\t\t\t\t</BlockSettingsButtonFill>\n\t\t\t\t) }\n\t\t\t</BlockSettingsButton.Slot>\n\n\t\t\t<BlockActionsMenu\n\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\twrapBlockMover={ wrapBlockMover }\n\t\t\t\twrapBlockSettings={ wrapBlockSettings && fillsLength }\n\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\tonDelete={ onDelete }\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst { getBlockIndex } = select( blockEditorStore );\n\n\t\treturn {\n\t\t\torder: getBlockIndex( clientId ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { clientId, rootClientId, onDelete } ) => {\n\t\tconst { removeBlock } = dispatch( blockEditorStore );\n\t\treturn {\n\t\t\tonDelete:\n\t\t\t\tonDelete || ( () => removeBlock( clientId, rootClientId ) ),\n\t\t};\n\t} )\n)( BlockMobileToolbar );\n"]}
|
|
@@ -50,7 +50,7 @@ export function getBlockMoverDescription(selectedCount, type, firstIndex, isFirs
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
if (dir > 0 && !isLast) {
|
|
53
|
-
//
|
|
53
|
+
// Moving down.
|
|
54
54
|
const movementDirection = getMovementDirection('down');
|
|
55
55
|
|
|
56
56
|
if (movementDirection === 'down') {
|
|
@@ -70,7 +70,7 @@ export function getBlockMoverDescription(selectedCount, type, firstIndex, isFirs
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
if (dir > 0 && isLast) {
|
|
73
|
-
//
|
|
73
|
+
// Moving down, and is the last item.
|
|
74
74
|
const movementDirection = getMovementDirection('down');
|
|
75
75
|
|
|
76
76
|
if (movementDirection === 'down') {
|
|
@@ -90,7 +90,7 @@ export function getBlockMoverDescription(selectedCount, type, firstIndex, isFirs
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
if (dir < 0 && !isFirst) {
|
|
93
|
-
//
|
|
93
|
+
// Moving up.
|
|
94
94
|
const movementDirection = getMovementDirection('up');
|
|
95
95
|
|
|
96
96
|
if (movementDirection === 'up') {
|
|
@@ -110,7 +110,7 @@ export function getBlockMoverDescription(selectedCount, type, firstIndex, isFirs
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
if (dir < 0 && isFirst) {
|
|
113
|
-
//
|
|
113
|
+
// Moving up, and is the first item.
|
|
114
114
|
const movementDirection = getMovementDirection('up');
|
|
115
115
|
|
|
116
116
|
if (movementDirection === 'up') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mover/mover-description.js"],"names":["__","_n","sprintf","isRTL","getBlockMoverDescription","selectedCount","type","firstIndex","isFirst","isLast","dir","orientation","position","getMovementDirection","moveDirection","getMultiBlockMoverDescription","movementDirection"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, isRTL } from '@wordpress/i18n';\n\n/**\n * Return a label for the block movement controls depending on block position.\n *\n * @param {number} selectedCount Number of blocks selected.\n * @param {string} type Block type - in the case of a single block, should\n * define its 'type'. I.e. 'Text', 'Heading', 'Image' etc.\n * @param {number} firstIndex The index (position - 1) of the first block selected.\n * @param {boolean} isFirst This is the first block.\n * @param {boolean} isLast This is the last block.\n * @param {number} dir Direction of movement (> 0 is considered to be going\n * down, < 0 is up).\n * @param {string} orientation The orientation of the block movers, vertical or\n * horizontal.\n *\n * @return {string} Label for the block movement controls.\n */\nexport function getBlockMoverDescription(\n\tselectedCount,\n\ttype,\n\tfirstIndex,\n\tisFirst,\n\tisLast,\n\tdir,\n\torientation\n) {\n\tconst position = firstIndex + 1;\n\n\tconst getMovementDirection = ( moveDirection ) => {\n\t\tif ( moveDirection === 'up' ) {\n\t\t\tif ( orientation === 'horizontal' ) {\n\t\t\t\treturn isRTL() ? 'right' : 'left';\n\t\t\t}\n\t\t\treturn 'up';\n\t\t} else if ( moveDirection === 'down' ) {\n\t\t\tif ( orientation === 'horizontal' ) {\n\t\t\t\treturn isRTL() ? 'left' : 'right';\n\t\t\t}\n\t\t\treturn 'down';\n\t\t}\n\t\treturn null;\n\t};\n\n\tif ( selectedCount > 1 ) {\n\t\treturn getMultiBlockMoverDescription(\n\t\t\tselectedCount,\n\t\t\tfirstIndex,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tdir\n\t\t);\n\t}\n\n\tif ( isFirst && isLast ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Type of block (i.e. Text, Image etc)\n\t\t\t__( 'Block %s is the only block, and cannot be moved' ),\n\t\t\ttype\n\t\t);\n\t}\n\n\tif ( dir > 0 && ! isLast ) {\n\t\t// moving down\n\t\tconst movementDirection = getMovementDirection( 'down' );\n\n\t\tif ( movementDirection === 'down' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d down to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d left to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d right to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir > 0 && isLast ) {\n\t\t// moving down, and is the last item\n\t\tconst movementDirection = getMovementDirection( 'down' );\n\n\t\tif ( movementDirection === 'down' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved down'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved left'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved right'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir < 0 && ! isFirst ) {\n\t\t// moving up\n\t\tconst movementDirection = getMovementDirection( 'up' );\n\n\t\tif ( movementDirection === 'up' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__( 'Move %1$s block from position %2$d up to position %3$d' ),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d left to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d right to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir < 0 && isFirst ) {\n\t\t// moving up, and is the first item\n\t\tconst movementDirection = getMovementDirection( 'up' );\n\n\t\tif ( movementDirection === 'up' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved up'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved left'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved right'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Return a label for the block movement controls depending on block position.\n *\n * @param {number} selectedCount Number of blocks selected.\n * @param {number} firstIndex The index (position - 1) of the first block selected.\n * @param {boolean} isFirst This is the first block.\n * @param {boolean} isLast This is the last block.\n * @param {number} dir Direction of movement (> 0 is considered to be going\n * down, < 0 is up).\n *\n * @return {string} Label for the block movement controls.\n */\nexport function getMultiBlockMoverDescription(\n\tselectedCount,\n\tfirstIndex,\n\tisFirst,\n\tisLast,\n\tdir\n) {\n\tconst position = firstIndex + 1;\n\n\tif ( dir < 0 && isFirst ) {\n\t\treturn __( 'Blocks cannot be moved up as they are already at the top' );\n\t}\n\n\tif ( dir > 0 && isLast ) {\n\t\treturn __(\n\t\t\t'Blocks cannot be moved down as they are already at the bottom'\n\t\t);\n\t}\n\n\tif ( dir < 0 && ! isFirst ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: Number of selected blocks, 2: Position of selected blocks\n\t\t\t_n(\n\t\t\t\t'Move %1$d block from position %2$d up by one place',\n\t\t\t\t'Move %1$d blocks from position %2$d up by one place',\n\t\t\t\tselectedCount\n\t\t\t),\n\t\t\tselectedCount,\n\t\t\tposition\n\t\t);\n\t}\n\n\tif ( dir > 0 && ! isLast ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: Number of selected blocks, 2: Position of selected blocks\n\t\t\t_n(\n\t\t\t\t'Move %1$d block from position %2$d down by one place',\n\t\t\t\t'Move %1$d blocks from position %2$d down by one place',\n\t\t\t\tselectedCount\n\t\t\t),\n\t\t\tselectedCount,\n\t\t\tposition\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-mover/mover-description.js"],"names":["__","_n","sprintf","isRTL","getBlockMoverDescription","selectedCount","type","firstIndex","isFirst","isLast","dir","orientation","position","getMovementDirection","moveDirection","getMultiBlockMoverDescription","movementDirection"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, isRTL } from '@wordpress/i18n';\n\n/**\n * Return a label for the block movement controls depending on block position.\n *\n * @param {number} selectedCount Number of blocks selected.\n * @param {string} type Block type - in the case of a single block, should\n * define its 'type'. I.e. 'Text', 'Heading', 'Image' etc.\n * @param {number} firstIndex The index (position - 1) of the first block selected.\n * @param {boolean} isFirst This is the first block.\n * @param {boolean} isLast This is the last block.\n * @param {number} dir Direction of movement (> 0 is considered to be going\n * down, < 0 is up).\n * @param {string} orientation The orientation of the block movers, vertical or\n * horizontal.\n *\n * @return {string} Label for the block movement controls.\n */\nexport function getBlockMoverDescription(\n\tselectedCount,\n\ttype,\n\tfirstIndex,\n\tisFirst,\n\tisLast,\n\tdir,\n\torientation\n) {\n\tconst position = firstIndex + 1;\n\n\tconst getMovementDirection = ( moveDirection ) => {\n\t\tif ( moveDirection === 'up' ) {\n\t\t\tif ( orientation === 'horizontal' ) {\n\t\t\t\treturn isRTL() ? 'right' : 'left';\n\t\t\t}\n\t\t\treturn 'up';\n\t\t} else if ( moveDirection === 'down' ) {\n\t\t\tif ( orientation === 'horizontal' ) {\n\t\t\t\treturn isRTL() ? 'left' : 'right';\n\t\t\t}\n\t\t\treturn 'down';\n\t\t}\n\t\treturn null;\n\t};\n\n\tif ( selectedCount > 1 ) {\n\t\treturn getMultiBlockMoverDescription(\n\t\t\tselectedCount,\n\t\t\tfirstIndex,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tdir\n\t\t);\n\t}\n\n\tif ( isFirst && isLast ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Type of block (i.e. Text, Image etc)\n\t\t\t__( 'Block %s is the only block, and cannot be moved' ),\n\t\t\ttype\n\t\t);\n\t}\n\n\tif ( dir > 0 && ! isLast ) {\n\t\t// Moving down.\n\t\tconst movementDirection = getMovementDirection( 'down' );\n\n\t\tif ( movementDirection === 'down' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d down to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d left to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d right to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition + 1\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir > 0 && isLast ) {\n\t\t// Moving down, and is the last item.\n\t\tconst movementDirection = getMovementDirection( 'down' );\n\n\t\tif ( movementDirection === 'down' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved down'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved left'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the end of the content and can’t be moved right'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir < 0 && ! isFirst ) {\n\t\t// Moving up.\n\t\tconst movementDirection = getMovementDirection( 'up' );\n\n\t\tif ( movementDirection === 'up' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__( 'Move %1$s block from position %2$d up to position %3$d' ),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d left to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position\n\t\t\t\t__(\n\t\t\t\t\t'Move %1$s block from position %2$d right to position %3$d'\n\t\t\t\t),\n\t\t\t\ttype,\n\t\t\t\tposition,\n\t\t\t\tposition - 1\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( dir < 0 && isFirst ) {\n\t\t// Moving up, and is the first item.\n\t\tconst movementDirection = getMovementDirection( 'up' );\n\n\t\tif ( movementDirection === 'up' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved up'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'left' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved left'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\n\t\tif ( movementDirection === 'right' ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: 1: Type of block (i.e. Text, Image etc)\n\t\t\t\t__(\n\t\t\t\t\t'Block %1$s is at the beginning of the content and can’t be moved right'\n\t\t\t\t),\n\t\t\t\ttype\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Return a label for the block movement controls depending on block position.\n *\n * @param {number} selectedCount Number of blocks selected.\n * @param {number} firstIndex The index (position - 1) of the first block selected.\n * @param {boolean} isFirst This is the first block.\n * @param {boolean} isLast This is the last block.\n * @param {number} dir Direction of movement (> 0 is considered to be going\n * down, < 0 is up).\n *\n * @return {string} Label for the block movement controls.\n */\nexport function getMultiBlockMoverDescription(\n\tselectedCount,\n\tfirstIndex,\n\tisFirst,\n\tisLast,\n\tdir\n) {\n\tconst position = firstIndex + 1;\n\n\tif ( dir < 0 && isFirst ) {\n\t\treturn __( 'Blocks cannot be moved up as they are already at the top' );\n\t}\n\n\tif ( dir > 0 && isLast ) {\n\t\treturn __(\n\t\t\t'Blocks cannot be moved down as they are already at the bottom'\n\t\t);\n\t}\n\n\tif ( dir < 0 && ! isFirst ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: Number of selected blocks, 2: Position of selected blocks\n\t\t\t_n(\n\t\t\t\t'Move %1$d block from position %2$d up by one place',\n\t\t\t\t'Move %1$d blocks from position %2$d up by one place',\n\t\t\t\tselectedCount\n\t\t\t),\n\t\t\tselectedCount,\n\t\t\tposition\n\t\t);\n\t}\n\n\tif ( dir > 0 && ! isLast ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: Number of selected blocks, 2: Position of selected blocks\n\t\t\t_n(\n\t\t\t\t'Move %1$d block from position %2$d down by one place',\n\t\t\t\t'Move %1$d blocks from position %2$d down by one place',\n\t\t\t\tselectedCount\n\t\t\t),\n\t\t\tselectedCount,\n\t\t\tposition\n\t\t);\n\t}\n}\n"]}
|