@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
|
@@ -23,7 +23,7 @@ import { Icon, plusCircleFilled } from '@wordpress/icons';
|
|
|
23
23
|
*/
|
|
24
24
|
import styles from './styles.scss';
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// Remove duplicates after gallery append.
|
|
27
27
|
const dedupMedia = ( media ) =>
|
|
28
28
|
uniqWith(
|
|
29
29
|
media,
|
|
@@ -53,11 +53,11 @@ function MediaPlaceholder( props ) {
|
|
|
53
53
|
onSelectURL,
|
|
54
54
|
} = props;
|
|
55
55
|
|
|
56
|
-
//
|
|
56
|
+
// Use ref to keep media array current for callbacks during rerenders.
|
|
57
57
|
const mediaRef = useRef( value );
|
|
58
58
|
mediaRef.current = value;
|
|
59
59
|
|
|
60
|
-
//
|
|
60
|
+
// Append and deduplicate media array for gallery use case.
|
|
61
61
|
const setMedia =
|
|
62
62
|
multiple && addToGallery
|
|
63
63
|
? ( selected ) =>
|
|
@@ -130,12 +130,14 @@ function MediaPlaceholder( props ) {
|
|
|
130
130
|
);
|
|
131
131
|
} else if ( isAppender && ! disableMediaButtons ) {
|
|
132
132
|
return (
|
|
133
|
-
<
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
<View testID="media-placeholder-appender-icon">
|
|
134
|
+
<Icon
|
|
135
|
+
icon={ plusCircleFilled }
|
|
136
|
+
style={ addMediaButtonStyle }
|
|
137
|
+
color={ addMediaButtonStyle.color }
|
|
138
|
+
size={ addMediaButtonStyle.size }
|
|
139
|
+
/>
|
|
140
|
+
</View>
|
|
139
141
|
);
|
|
140
142
|
}
|
|
141
143
|
};
|
|
@@ -56,6 +56,13 @@ Callback used when media is replaced with an URL. It is called with one argument
|
|
|
56
56
|
- Type: `func`
|
|
57
57
|
- Required: Yes
|
|
58
58
|
|
|
59
|
+
### onError
|
|
60
|
+
|
|
61
|
+
Callback called when an upload error happens and receives an error message as an argument.
|
|
62
|
+
|
|
63
|
+
- Type: `func`
|
|
64
|
+
- Required: No
|
|
65
|
+
|
|
59
66
|
### name
|
|
60
67
|
|
|
61
68
|
The label of the replace button.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { noop, uniqueId } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useState,
|
|
9
|
+
import { useState, useRef } from '@wordpress/element';
|
|
10
10
|
import { __ } from '@wordpress/i18n';
|
|
11
11
|
import { speak } from '@wordpress/a11y';
|
|
12
12
|
import {
|
|
@@ -17,10 +17,11 @@ import {
|
|
|
17
17
|
Dropdown,
|
|
18
18
|
withFilters,
|
|
19
19
|
} from '@wordpress/components';
|
|
20
|
-
import {
|
|
20
|
+
import { useSelect, withDispatch } from '@wordpress/data';
|
|
21
21
|
import { DOWN } from '@wordpress/keycodes';
|
|
22
|
-
import { compose } from '@wordpress/compose';
|
|
23
22
|
import { upload, media as mediaIcon } from '@wordpress/icons';
|
|
23
|
+
import { compose } from '@wordpress/compose';
|
|
24
|
+
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
24
25
|
import { store as noticesStore } from '@wordpress/notices';
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -37,6 +38,7 @@ const MediaReplaceFlow = ( {
|
|
|
37
38
|
mediaIds,
|
|
38
39
|
allowedTypes,
|
|
39
40
|
accept,
|
|
41
|
+
onError,
|
|
40
42
|
onSelect,
|
|
41
43
|
onSelectURL,
|
|
42
44
|
onFilesUpload = noop,
|
|
@@ -53,20 +55,17 @@ const MediaReplaceFlow = ( {
|
|
|
53
55
|
const mediaUpload = useSelect( ( select ) => {
|
|
54
56
|
return select( blockEditorStore ).getSettings().mediaUpload;
|
|
55
57
|
}, [] );
|
|
56
|
-
const editMediaButtonRef =
|
|
58
|
+
const editMediaButtonRef = useRef();
|
|
57
59
|
const errorNoticeID = uniqueId(
|
|
58
60
|
'block-editor/media-replace-flow/error-notice/'
|
|
59
61
|
);
|
|
60
62
|
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// we need to remove the html from the error.
|
|
68
|
-
const renderMsg =
|
|
69
|
-
errorElement.textContent || errorElement.innerText || '';
|
|
63
|
+
const onUploadError = ( message ) => {
|
|
64
|
+
const safeMessage = stripHTML( message );
|
|
65
|
+
if ( onError ) {
|
|
66
|
+
onError( safeMessage );
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
70
69
|
// We need to set a timeout for showing the notice
|
|
71
70
|
// so that VoiceOver and possibly other screen readers
|
|
72
71
|
// can announce the error afer the toolbar button
|
|
@@ -74,7 +73,7 @@ const MediaReplaceFlow = ( {
|
|
|
74
73
|
// Otherwise VO simply skips over the notice and announces
|
|
75
74
|
// the focused element and the open menu.
|
|
76
75
|
setTimeout( () => {
|
|
77
|
-
createNotice( 'error',
|
|
76
|
+
createNotice( 'error', safeMessage, {
|
|
78
77
|
speak: true,
|
|
79
78
|
id: errorNoticeID,
|
|
80
79
|
isDismissible: true,
|
|
@@ -84,17 +83,13 @@ const MediaReplaceFlow = ( {
|
|
|
84
83
|
|
|
85
84
|
const selectMedia = ( media, closeMenu ) => {
|
|
86
85
|
closeMenu();
|
|
87
|
-
setMediaURLValue( media
|
|
86
|
+
setMediaURLValue( media?.url );
|
|
88
87
|
// Calling `onSelect` after the state update since it might unmount the component.
|
|
89
88
|
onSelect( media );
|
|
90
89
|
speak( __( 'The media file has been replaced' ) );
|
|
91
90
|
removeNotice( errorNoticeID );
|
|
92
91
|
};
|
|
93
92
|
|
|
94
|
-
const selectURL = ( newURL ) => {
|
|
95
|
-
onSelectURL( newURL );
|
|
96
|
-
};
|
|
97
|
-
|
|
98
93
|
const uploadFiles = ( event, closeMenu ) => {
|
|
99
94
|
const files = event.target.files;
|
|
100
95
|
if ( ! handleUpload ) {
|
|
@@ -102,14 +97,13 @@ const MediaReplaceFlow = ( {
|
|
|
102
97
|
return onSelect( files );
|
|
103
98
|
}
|
|
104
99
|
onFilesUpload( files );
|
|
105
|
-
const setMedia = ( [ media ] ) => {
|
|
106
|
-
selectMedia( media, closeMenu );
|
|
107
|
-
};
|
|
108
100
|
mediaUpload( {
|
|
109
101
|
allowedTypes,
|
|
110
102
|
filesList: files,
|
|
111
|
-
onFileChange:
|
|
112
|
-
|
|
103
|
+
onFileChange: ( [ media ] ) => {
|
|
104
|
+
selectMedia( media, closeMenu );
|
|
105
|
+
},
|
|
106
|
+
onError: onUploadError,
|
|
113
107
|
} );
|
|
114
108
|
};
|
|
115
109
|
|
|
@@ -206,7 +200,7 @@ const MediaReplaceFlow = ( {
|
|
|
206
200
|
showSuggestions={ false }
|
|
207
201
|
onChange={ ( { url } ) => {
|
|
208
202
|
setMediaURLValue( url );
|
|
209
|
-
|
|
203
|
+
onSelectURL( url );
|
|
210
204
|
editMediaButtonRef.current.focus();
|
|
211
205
|
} }
|
|
212
206
|
/>
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render, fireEvent } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import MediaReplaceFlow from '../';
|
|
10
|
+
|
|
11
|
+
const noop = () => {};
|
|
12
|
+
|
|
13
|
+
function setUpMediaReplaceFlow() {
|
|
14
|
+
const { container } = render(
|
|
15
|
+
<MediaReplaceFlow
|
|
16
|
+
mediaId={ 1 }
|
|
17
|
+
mediaURL={ 'https://example.media' }
|
|
18
|
+
allowedTypes={ [ 'png' ] }
|
|
19
|
+
accept="image/*"
|
|
20
|
+
onSelect={ noop }
|
|
21
|
+
onSelectURL={ noop }
|
|
22
|
+
onError={ noop }
|
|
23
|
+
onCloseModal={ noop }
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
return container;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe( 'General media replace flow', () => {
|
|
30
|
+
it( 'renders successfully', () => {
|
|
31
|
+
const container = setUpMediaReplaceFlow();
|
|
32
|
+
|
|
33
|
+
const mediaReplaceButton = container.querySelector(
|
|
34
|
+
'button[aria-expanded="false"]'
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
expect( mediaReplaceButton ).not.toBeNull();
|
|
38
|
+
} );
|
|
39
|
+
|
|
40
|
+
it( 'renders replace menu', () => {
|
|
41
|
+
const container = setUpMediaReplaceFlow();
|
|
42
|
+
|
|
43
|
+
const mediaReplaceButton = container.querySelector(
|
|
44
|
+
'button[aria-expanded="false"]'
|
|
45
|
+
);
|
|
46
|
+
mediaReplaceButton.click();
|
|
47
|
+
|
|
48
|
+
const uploadMenu = container.querySelector(
|
|
49
|
+
'.block-editor-media-replace-flow__media-upload-menu'
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
expect( uploadMenu ).not.toBeNull();
|
|
53
|
+
} );
|
|
54
|
+
|
|
55
|
+
it( 'displays media URL', () => {
|
|
56
|
+
const container = setUpMediaReplaceFlow();
|
|
57
|
+
|
|
58
|
+
const mediaReplaceButton = container.querySelector(
|
|
59
|
+
'button[aria-expanded="false"]'
|
|
60
|
+
);
|
|
61
|
+
mediaReplaceButton.click();
|
|
62
|
+
|
|
63
|
+
const mediaURL = container.querySelector( '.components-external-link' );
|
|
64
|
+
|
|
65
|
+
expect( mediaURL.href ).toEqual( 'https://example.media/' );
|
|
66
|
+
} );
|
|
67
|
+
|
|
68
|
+
it( 'edits media URL', () => {
|
|
69
|
+
const container = setUpMediaReplaceFlow();
|
|
70
|
+
|
|
71
|
+
const mediaReplaceButton = container.querySelector(
|
|
72
|
+
'button[aria-expanded="false"]'
|
|
73
|
+
);
|
|
74
|
+
mediaReplaceButton.click();
|
|
75
|
+
|
|
76
|
+
const editMediaURL = container.querySelector(
|
|
77
|
+
'.block-editor-link-control__search-item-action'
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
editMediaURL.click();
|
|
81
|
+
|
|
82
|
+
const mediaURLInput = container.querySelector(
|
|
83
|
+
'.block-editor-url-input__input'
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
fireEvent.change( mediaURLInput, {
|
|
87
|
+
target: { value: 'https://new.example.media' },
|
|
88
|
+
} );
|
|
89
|
+
|
|
90
|
+
const saveMediaURLButton = container.querySelector(
|
|
91
|
+
'.block-editor-link-control__search-submit'
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
saveMediaURLButton.click();
|
|
95
|
+
|
|
96
|
+
const mediaURL = container.querySelector( '.components-external-link' );
|
|
97
|
+
|
|
98
|
+
expect( mediaURL.href ).toEqual( 'https://new.example.media/' );
|
|
99
|
+
} );
|
|
100
|
+
} );
|
|
@@ -79,7 +79,7 @@ export class MediaUpload extends Component {
|
|
|
79
79
|
|
|
80
80
|
getAllSources() {
|
|
81
81
|
const cameraImageSource = {
|
|
82
|
-
id: mediaSources.deviceCamera, // ID is the value sent to native
|
|
82
|
+
id: mediaSources.deviceCamera, // ID is the value sent to native.
|
|
83
83
|
value: mediaSources.deviceCamera + '-IMAGE', // This is needed to diferenciate image-camera from video-camera sources.
|
|
84
84
|
label: __( 'Take a Photo' ),
|
|
85
85
|
requiresModal: true,
|
|
@@ -216,7 +216,7 @@ export class MediaUpload extends Component {
|
|
|
216
216
|
text: __( 'Apply' ),
|
|
217
217
|
onPress: onSelectURL,
|
|
218
218
|
},
|
|
219
|
-
], //
|
|
219
|
+
], // Buttons.
|
|
220
220
|
'plain-text', // type
|
|
221
221
|
undefined, // defaultValue
|
|
222
222
|
'url' // keyboardType
|
|
@@ -294,6 +294,7 @@ export class MediaUpload extends Component {
|
|
|
294
294
|
ref={ ( instance ) => ( this.picker = instance ) }
|
|
295
295
|
options={ this.getMediaOptionsItems() }
|
|
296
296
|
onChange={ this.onPickerSelect }
|
|
297
|
+
testID="media-options-picker"
|
|
297
298
|
/>
|
|
298
299
|
);
|
|
299
300
|
|
|
@@ -98,7 +98,7 @@ export class MediaUploadProgress extends Component {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
addMediaUploadListener() {
|
|
101
|
-
//
|
|
101
|
+
// If we already have a subscription not worth doing it again.
|
|
102
102
|
if ( this.subscriptionParentMediaUpload ) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
@@ -122,7 +122,7 @@ export class MediaUploadProgress extends Component {
|
|
|
122
122
|
const progress = this.state.progress * 100;
|
|
123
123
|
// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
|
|
124
124
|
const retryMessage = __(
|
|
125
|
-
'Failed to insert media.\
|
|
125
|
+
'Failed to insert media.\nTap for more info.'
|
|
126
126
|
);
|
|
127
127
|
|
|
128
128
|
const progressBarStyle = [
|
|
@@ -73,7 +73,7 @@ function useIsAccessibleToolbar( ref ) {
|
|
|
73
73
|
|
|
74
74
|
useLayoutEffect( () => {
|
|
75
75
|
// Toolbar buttons may be rendered asynchronously, so we use
|
|
76
|
-
// MutationObserver to check if the toolbar subtree has been modified
|
|
76
|
+
// MutationObserver to check if the toolbar subtree has been modified.
|
|
77
77
|
const observer = new window.MutationObserver(
|
|
78
78
|
determineIsAccessibleToolbar
|
|
79
79
|
);
|
|
@@ -91,7 +91,7 @@ function useToolbarFocus(
|
|
|
91
91
|
defaultIndex,
|
|
92
92
|
onIndexChange
|
|
93
93
|
) {
|
|
94
|
-
// Make sure we don't use modified versions of this prop
|
|
94
|
+
// Make sure we don't use modified versions of this prop.
|
|
95
95
|
const [ initialFocusOnMount ] = useState( focusOnMount );
|
|
96
96
|
const [ initialIndex ] = useState( defaultIndex );
|
|
97
97
|
|
|
@@ -99,7 +99,7 @@ function useToolbarFocus(
|
|
|
99
99
|
focusFirstTabbableIn( ref.current );
|
|
100
100
|
}, [] );
|
|
101
101
|
|
|
102
|
-
// Focus on toolbar when pressing alt+F10 when the toolbar is visible
|
|
102
|
+
// Focus on toolbar when pressing alt+F10 when the toolbar is visible.
|
|
103
103
|
useShortcut( 'core/block-editor/focus-toolbar', focusToolbar );
|
|
104
104
|
|
|
105
105
|
useEffect( () => {
|
|
@@ -21,7 +21,7 @@ export default class PlainText extends Component {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
componentDidMount() {
|
|
24
|
-
//
|
|
24
|
+
// If isSelected is true, we should request the focus on this TextInput.
|
|
25
25
|
if (
|
|
26
26
|
this._input &&
|
|
27
27
|
this._input.isFocused() === false &&
|
|
@@ -93,8 +93,8 @@ export default class PlainText extends Component {
|
|
|
93
93
|
onChange={ ( event ) => {
|
|
94
94
|
this.props.onChange( event.nativeEvent.text );
|
|
95
95
|
} }
|
|
96
|
-
onFocus={ this.props.onFocus } //
|
|
97
|
-
onBlur={ this.props.onBlur } //
|
|
96
|
+
onFocus={ this.props.onFocus } // Always assign onFocus as a props.
|
|
97
|
+
onBlur={ this.props.onBlur } // Always assign onBlur as a props.
|
|
98
98
|
fontFamily={
|
|
99
99
|
( this.props.style && this.props.style.fontFamily ) ||
|
|
100
100
|
styles[ 'block-editor-plain-text' ].fontFamily
|
|
@@ -19,13 +19,13 @@ import ResponsiveBlockControl from '../index';
|
|
|
19
19
|
|
|
20
20
|
let container = null;
|
|
21
21
|
beforeEach( () => {
|
|
22
|
-
//
|
|
22
|
+
// Setup a DOM element as a render target.
|
|
23
23
|
container = document.createElement( 'div' );
|
|
24
24
|
document.body.appendChild( container );
|
|
25
25
|
} );
|
|
26
26
|
|
|
27
27
|
afterEach( () => {
|
|
28
|
-
//
|
|
28
|
+
// Cleanup on exiting.
|
|
29
29
|
unmountComponentAtNode( container );
|
|
30
30
|
container.remove();
|
|
31
31
|
container = null;
|
|
@@ -315,7 +315,7 @@ describe( 'Default and Responsive modes', () => {
|
|
|
315
315
|
'.block-editor-responsive-block-control__group.is-responsive'
|
|
316
316
|
);
|
|
317
317
|
|
|
318
|
-
// Select elements based on what the user can see
|
|
318
|
+
// Select elements based on what the user can see.
|
|
319
319
|
const toggleLabel = Array.from(
|
|
320
320
|
container.querySelectorAll( 'label' )
|
|
321
321
|
).find( ( label ) =>
|
|
@@ -331,7 +331,7 @@ describe( 'Default and Responsive modes', () => {
|
|
|
331
331
|
expect( defaultControlGroup ).not.toBeNull();
|
|
332
332
|
expect( responsiveControlGroup ).toBeNull();
|
|
333
333
|
|
|
334
|
-
// Toggle to "responsive" mode
|
|
334
|
+
// Toggle to "responsive" mode.
|
|
335
335
|
act( () => {
|
|
336
336
|
Simulate.change( toggleInput, { target: { checked: false } } );
|
|
337
337
|
} );
|
|
@@ -346,7 +346,7 @@ describe( 'Default and Responsive modes', () => {
|
|
|
346
346
|
expect( defaultControlGroup ).toBeNull();
|
|
347
347
|
expect( responsiveControlGroup ).not.toBeNull();
|
|
348
348
|
|
|
349
|
-
// Toggle back to "default" mode
|
|
349
|
+
// Toggle back to "default" mode.
|
|
350
350
|
act( () => {
|
|
351
351
|
Simulate.change( toggleInput, { target: { checked: true } } );
|
|
352
352
|
} );
|
|
@@ -395,7 +395,7 @@ describe( 'Default and Responsive modes', () => {
|
|
|
395
395
|
);
|
|
396
396
|
} );
|
|
397
397
|
|
|
398
|
-
// The user should see "range" controls so we can legitimately query for them here
|
|
398
|
+
// The user should see "range" controls so we can legitimately query for them here.
|
|
399
399
|
const customControls = Array.from(
|
|
400
400
|
container.querySelectorAll( 'input[type="range"]' )
|
|
401
401
|
);
|
|
@@ -11,7 +11,7 @@ import FormatToolbar from './format-toolbar';
|
|
|
11
11
|
|
|
12
12
|
const FormatToolbarContainer = ( { inline, anchorRef } ) => {
|
|
13
13
|
if ( inline ) {
|
|
14
|
-
// Render in popover
|
|
14
|
+
// Render in popover.
|
|
15
15
|
return (
|
|
16
16
|
<Popover
|
|
17
17
|
noArrow
|
|
@@ -29,7 +29,7 @@ const FormatToolbarContainer = ( { inline, anchorRef } ) => {
|
|
|
29
29
|
</Popover>
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
|
-
// Render regular toolbar
|
|
32
|
+
// Render regular toolbar.
|
|
33
33
|
return (
|
|
34
34
|
<BlockControls group="inline">
|
|
35
35
|
<FormatToolbar />
|
|
@@ -120,12 +120,9 @@ function RichTextWrapper(
|
|
|
120
120
|
const anchorRef = useRef();
|
|
121
121
|
const { clientId } = useBlockEditContext();
|
|
122
122
|
const selector = ( select ) => {
|
|
123
|
-
const {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
isMultiSelecting,
|
|
127
|
-
hasMultiSelection,
|
|
128
|
-
} = select( blockEditorStore );
|
|
123
|
+
const { getSelectionStart, getSelectionEnd } = select(
|
|
124
|
+
blockEditorStore
|
|
125
|
+
);
|
|
129
126
|
const selectionStart = getSelectionStart();
|
|
130
127
|
const selectionEnd = getSelectionEnd();
|
|
131
128
|
|
|
@@ -143,15 +140,12 @@ function RichTextWrapper(
|
|
|
143
140
|
selectionStart: isSelected ? selectionStart.offset : undefined,
|
|
144
141
|
selectionEnd: isSelected ? selectionEnd.offset : undefined,
|
|
145
142
|
isSelected,
|
|
146
|
-
disabled: isMultiSelecting() || hasMultiSelection(),
|
|
147
143
|
};
|
|
148
144
|
};
|
|
149
145
|
// This selector must run on every render so the right selection state is
|
|
150
146
|
// retreived from the store on merge.
|
|
151
147
|
// To do: fix this somehow.
|
|
152
|
-
const { selectionStart, selectionEnd, isSelected
|
|
153
|
-
selector
|
|
154
|
-
);
|
|
148
|
+
const { selectionStart, selectionEnd, isSelected } = useSelect( selector );
|
|
155
149
|
const { selectionChange } = useDispatch( blockEditorStore );
|
|
156
150
|
const multilineTag = getMultilineTag( multiline );
|
|
157
151
|
const adjustedAllowedFormats = getAllowedFormats( {
|
|
@@ -331,7 +325,7 @@ function RichTextWrapper(
|
|
|
331
325
|
<TagName
|
|
332
326
|
// Overridable props.
|
|
333
327
|
role="textbox"
|
|
334
|
-
aria-multiline={
|
|
328
|
+
aria-multiline={ ! disableLineBreaks }
|
|
335
329
|
aria-label={ placeholder }
|
|
336
330
|
{ ...props }
|
|
337
331
|
{ ...autocompleteProps }
|
|
@@ -379,9 +373,8 @@ function RichTextWrapper(
|
|
|
379
373
|
anchorRef,
|
|
380
374
|
forwardedRef,
|
|
381
375
|
] ) }
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
suppressContentEditableWarning={ ! disabled }
|
|
376
|
+
contentEditable={ true }
|
|
377
|
+
suppressContentEditableWarning={ true }
|
|
385
378
|
className={ classnames(
|
|
386
379
|
'block-editor-rich-text__editable',
|
|
387
380
|
props.className,
|
|
@@ -151,7 +151,7 @@ function RichTextWrapper(
|
|
|
151
151
|
if ( Platform.OS === 'native' ) {
|
|
152
152
|
// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.
|
|
153
153
|
// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.
|
|
154
|
-
// This apparently assumes functionality the BlockHlder actually
|
|
154
|
+
// This apparently assumes functionality the BlockHlder actually.
|
|
155
155
|
const block = clientId && getBlock( clientId );
|
|
156
156
|
const shouldBlurOnUnmount =
|
|
157
157
|
block && isSelected && isUnmodifiedDefaultBlock( block );
|
|
@@ -172,7 +172,7 @@ function RichTextWrapper(
|
|
|
172
172
|
};
|
|
173
173
|
};
|
|
174
174
|
// This selector must run on every render so the right selection state is
|
|
175
|
-
//
|
|
175
|
+
// retrieved from the store on merge.
|
|
176
176
|
// To do: fix this somehow.
|
|
177
177
|
const {
|
|
178
178
|
isCaretWithinFormattedText,
|
|
@@ -286,7 +286,7 @@ function RichTextWrapper(
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
// If there's pasted blocks, append a block with non empty content
|
|
289
|
-
|
|
289
|
+
// after the caret. Otherwise, do append an empty block if there
|
|
290
290
|
// is no `onSplitMiddle` prop, but if there is and the content is
|
|
291
291
|
// empty, the middle block is enough to set focus in.
|
|
292
292
|
if (
|
|
@@ -20,6 +20,7 @@ import { isURL } from '@wordpress/url';
|
|
|
20
20
|
import { filePasteHandler } from './file-paste-handler';
|
|
21
21
|
import { addActiveFormats, isShortcode } from './utils';
|
|
22
22
|
import { splitValue } from './split-value';
|
|
23
|
+
import { shouldDismissPastedFiles } from '../../utils/pasting';
|
|
23
24
|
|
|
24
25
|
/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
|
|
25
26
|
|
|
@@ -62,7 +63,6 @@ export function usePasteHandler( props ) {
|
|
|
62
63
|
} = propsRef.current;
|
|
63
64
|
|
|
64
65
|
if ( ! isSelected ) {
|
|
65
|
-
event.preventDefault();
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -155,21 +155,14 @@ export function usePasteHandler( props ) {
|
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
// Process any attached files, unless we
|
|
159
|
-
// the
|
|
158
|
+
// Process any attached files, unless we infer that the files in
|
|
159
|
+
// question are redundant "screenshots" of the actual HTML payload,
|
|
160
|
+
// as created by certain office-type programs.
|
|
160
161
|
//
|
|
161
|
-
//
|
|
162
|
-
// content is rendered and attached to the clipboard along with the
|
|
163
|
-
// plain-text and HTML content. This artifact is a distraction from
|
|
164
|
-
// the relevant clipboard data, so we ignore it.
|
|
165
|
-
//
|
|
166
|
-
// Props https://github.com/pubpub/pubpub/commit/2f933277a15a263a1ab4bbd36b96d3a106544aec
|
|
162
|
+
// @see shouldDismissPastedFiles
|
|
167
163
|
if (
|
|
168
|
-
files &&
|
|
169
|
-
files
|
|
170
|
-
! html?.includes(
|
|
171
|
-
'xmlns:o="urn:schemas-microsoft-com:office:office'
|
|
172
|
-
)
|
|
164
|
+
files?.length &&
|
|
165
|
+
! shouldDismissPastedFiles( files, html, plainText )
|
|
173
166
|
) {
|
|
174
167
|
const content = pasteHandler( {
|
|
175
168
|
HTML: filePasteHandler( files ),
|
|
@@ -65,8 +65,8 @@ class URLInput extends Component {
|
|
|
65
65
|
__experimentalShowInitialSuggestions = false,
|
|
66
66
|
} = this.props;
|
|
67
67
|
|
|
68
|
-
//
|
|
69
|
-
// when already expanded
|
|
68
|
+
// Only have to worry about scrolling selected suggestion into view
|
|
69
|
+
// when already expanded.
|
|
70
70
|
if (
|
|
71
71
|
showSuggestions &&
|
|
72
72
|
selectedSuggestion !== null &&
|
|
@@ -87,17 +87,17 @@ class URLInput extends Component {
|
|
|
87
87
|
}, 100 );
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
// Update suggestions when the value changes
|
|
90
|
+
// Update suggestions when the value changes.
|
|
91
91
|
if (
|
|
92
92
|
prevProps.value !== value &&
|
|
93
93
|
! this.props.disableSuggestions &&
|
|
94
94
|
! this.isUpdatingSuggestions
|
|
95
95
|
) {
|
|
96
96
|
if ( value?.length ) {
|
|
97
|
-
// If the new value is not empty we need to update with suggestions for it
|
|
97
|
+
// If the new value is not empty we need to update with suggestions for it.
|
|
98
98
|
this.updateSuggestions( value );
|
|
99
99
|
} else if ( __experimentalShowInitialSuggestions ) {
|
|
100
|
-
// If the new value is empty and we can show initial suggestions, then show initial suggestions
|
|
100
|
+
// If the new value is empty and we can show initial suggestions, then show initial suggestions.
|
|
101
101
|
this.updateSuggestions();
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -251,7 +251,7 @@ class URLInput extends Component {
|
|
|
251
251
|
! this.isUpdatingSuggestions &&
|
|
252
252
|
! ( suggestions && suggestions.length )
|
|
253
253
|
) {
|
|
254
|
-
// Ensure the suggestions are updated with the current input value
|
|
254
|
+
// Ensure the suggestions are updated with the current input value.
|
|
255
255
|
this.updateSuggestions( value );
|
|
256
256
|
}
|
|
257
257
|
}
|
|
@@ -265,7 +265,7 @@ class URLInput extends Component {
|
|
|
265
265
|
} = this.state;
|
|
266
266
|
|
|
267
267
|
// If the suggestions are not shown or loading, we shouldn't handle the arrow keys
|
|
268
|
-
// We shouldn't preventDefault to allow block arrow keys navigation
|
|
268
|
+
// We shouldn't preventDefault to allow block arrow keys navigation.
|
|
269
269
|
if ( ! showSuggestions || ! suggestions.length || loading ) {
|
|
270
270
|
// In the Windows version of Firefox the up and down arrows don't move the caret
|
|
271
271
|
// within an input field like they do for Mac Firefox/Chrome/Safari. This causes
|
|
@@ -279,7 +279,7 @@ class URLInput extends Component {
|
|
|
279
279
|
if ( 0 !== event.target.selectionStart ) {
|
|
280
280
|
event.preventDefault();
|
|
281
281
|
|
|
282
|
-
// Set the input caret to position 0
|
|
282
|
+
// Set the input caret to position 0.
|
|
283
283
|
event.target.setSelectionRange( 0, 0 );
|
|
284
284
|
}
|
|
285
285
|
break;
|
|
@@ -292,7 +292,7 @@ class URLInput extends Component {
|
|
|
292
292
|
) {
|
|
293
293
|
event.preventDefault();
|
|
294
294
|
|
|
295
|
-
// Set the input caret to the last position
|
|
295
|
+
// Set the input caret to the last position.
|
|
296
296
|
event.target.setSelectionRange(
|
|
297
297
|
this.props.value.length,
|
|
298
298
|
this.props.value.length
|
|
@@ -301,7 +301,7 @@ class URLInput extends Component {
|
|
|
301
301
|
break;
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
-
// Submitting while loading should trigger onSubmit
|
|
304
|
+
// Submitting while loading should trigger onSubmit.
|
|
305
305
|
case ENTER: {
|
|
306
306
|
if ( this.props.onSubmit ) {
|
|
307
307
|
this.props.onSubmit( null, event );
|
|
@@ -579,7 +579,7 @@ export default compose(
|
|
|
579
579
|
withInstanceId,
|
|
580
580
|
withSelect( ( select, props ) => {
|
|
581
581
|
// If a link suggestions handler is already provided then
|
|
582
|
-
// bail
|
|
582
|
+
// bail.
|
|
583
583
|
if ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {
|
|
584
584
|
return;
|
|
585
585
|
}
|