@wordpress/block-editor 8.0.13 → 8.1.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 +2 -0
- package/LICENSE.md +1 -1
- package/README.md +12 -1
- package/build/components/block-caption/index.native.js +14 -3
- package/build/components/block-caption/index.native.js.map +1 -1
- package/build/components/block-edit/index.js +9 -0
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-inspector/index.js +8 -20
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list-appender/index.js +3 -11
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-media-update-progress/index.native.js +2 -1
- package/build/components/block-media-update-progress/index.native.js.map +1 -1
- package/build/components/block-preview/auto.js +30 -6
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings/container.native.js +2 -1
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-styles/index.js +110 -134
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-styles/menu-items.js +63 -0
- package/build/components/block-styles/menu-items.js.map +1 -0
- package/build/components/block-styles/preview-panel.js +45 -0
- package/build/components/block-styles/preview-panel.js.map +1 -0
- package/build/components/block-styles/preview.native.js +2 -2
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-styles/use-styles-for-block.js +119 -0
- package/build/components/block-styles/use-styles-for-block.js.map +1 -0
- package/build/components/block-styles/utils.js +39 -0
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-switcher/block-styles-menu.js +3 -23
- package/build/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -1
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +5 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +11 -1
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-types-list/index.native.js +2 -2
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/button-block-appender/index.js +2 -1
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +88 -0
- package/build/components/colors-gradients/dropdown.js.map +1 -0
- package/build/components/colors-gradients/panel-color-gradient-settings.js +6 -5
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.native.js +6 -3
- package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
- package/build/components/contrast-checker/index.js +34 -9
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/contrast-checker/index.native.js +108 -0
- package/build/components/contrast-checker/index.native.js.map +1 -0
- package/build/components/default-block-appender/index.js +16 -19
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/default-style-picker/index.js +18 -3
- package/build/components/default-style-picker/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +11 -11
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/iframe/index.js +6 -9
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +18 -9
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +9 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +2 -4
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +16 -14
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +61 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -1
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/library.js +5 -3
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +11 -3
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/tabs.native.js +7 -4
- package/build/components/inserter/tabs.native.js.map +1 -1
- package/build/components/inspector-controls/block-support-slot-container.js +2 -1
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js +11 -43
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/inspector-controls/fill.native.js +3 -5
- package/build/components/inspector-controls/fill.native.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +1 -3
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +6 -6
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-item.js +11 -1
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/link-control/search-results.js +2 -1
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/use-search-handler.js +18 -5
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/block-select-button.js +23 -3
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +8 -0
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -0
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +32 -6
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload-progress/index.native.js +2 -1
- package/build/components/media-upload-progress/index.native.js.map +1 -1
- package/build/components/panel-color-settings/index.js +7 -3
- package/build/components/panel-color-settings/index.js.map +1 -1
- package/build/components/provider/block-refs-provider.js +4 -1
- package/build/components/provider/block-refs-provider.js.map +1 -1
- package/build/components/rich-text/file-paste-handler.js +1 -1
- package/build/components/rich-text/file-paste-handler.js.map +1 -1
- package/build/components/rich-text/prevent-event-discovery.js +33 -0
- package/build/components/rich-text/prevent-event-discovery.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +3 -1
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/selection-scroll-into-view/index.js +2 -1
- package/build/components/selection-scroll-into-view/index.js.map +1 -1
- package/build/components/use-display-block-controls/index.native.js +45 -0
- package/build/components/use-display-block-controls/index.native.js.map +1 -0
- package/build/components/use-on-block-drop/index.js +7 -3
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +3 -1
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/hooks/border-color.js +74 -10
- package/build/hooks/border-color.js.map +1 -1
- package/build/hooks/border-radius.js +47 -0
- package/build/hooks/border-radius.js.map +1 -1
- package/build/hooks/border-style.js +41 -0
- package/build/hooks/border-style.js.map +1 -1
- package/build/hooks/border-width.js +70 -31
- package/build/hooks/border-width.js.map +1 -1
- package/build/hooks/border.js +81 -11
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +4 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color-panel.native.js +77 -0
- package/build/hooks/color-panel.native.js.map +1 -0
- package/build/hooks/color.js +6 -5
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/index.native.js +2 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/layout.native.js +20 -0
- package/build/hooks/layout.native.js.map +1 -0
- package/build/hooks/letter-spacing.js +1 -1
- package/build/hooks/letter-spacing.js.map +1 -1
- package/build/hooks/typography.js +1 -1
- package/build/hooks/typography.js.map +1 -1
- package/build/store/actions.js +1 -2
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +5 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/defaults.native.js +2 -6
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/selectors.js +10 -5
- package/build/store/selectors.js.map +1 -1
- package/build/utils/get-paste-event-data.js +1 -1
- package/build/utils/get-paste-event-data.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +1 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/block-caption/index.native.js +13 -3
- package/build-module/components/block-caption/index.native.js.map +1 -1
- package/build-module/components/block-edit/index.js +9 -0
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +8 -20
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +3 -10
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-media-update-progress/index.native.js +2 -1
- package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
- package/build-module/components/block-preview/auto.js +31 -6
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +2 -1
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-styles/index.js +112 -133
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-styles/menu-items.js +50 -0
- package/build-module/components/block-styles/menu-items.js.map +1 -0
- package/build-module/components/block-styles/preview-panel.js +35 -0
- package/build-module/components/block-styles/preview-panel.js.map +1 -0
- package/build-module/components/block-styles/preview.native.js +2 -2
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-styles/use-styles-for-block.js +107 -0
- package/build-module/components/block-styles/use-styles-for-block.js.map +1 -0
- package/build-module/components/block-styles/utils.js +34 -0
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-switcher/block-styles-menu.js +3 -21
- package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +2 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +5 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +11 -1
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +2 -2
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +2 -1
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +75 -0
- package/build-module/components/colors-gradients/dropdown.js.map +1 -0
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +8 -7
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +7 -4
- package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +34 -9
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/contrast-checker/index.native.js +90 -0
- package/build-module/components/contrast-checker/index.native.js.map +1 -0
- package/build-module/components/default-block-appender/index.js +15 -18
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/default-style-picker/index.js +17 -3
- package/build-module/components/default-style-picker/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +12 -12
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -9
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +2 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -0
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +2 -4
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +16 -14
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +61 -3
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +2 -2
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +5 -3
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +11 -4
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/tabs.native.js +7 -4
- package/build-module/components/inserter/tabs.native.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-slot-container.js +2 -1
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js +12 -43
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/inspector-controls/fill.native.js +3 -5
- package/build-module/components/inspector-controls/fill.native.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +1 -3
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +6 -6
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-item.js +11 -1
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/link-control/search-results.js +2 -1
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js +18 -5
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +22 -3
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +6 -0
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +2 -0
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +32 -6
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload-progress/index.native.js +2 -1
- package/build-module/components/media-upload-progress/index.native.js.map +1 -1
- package/build-module/components/panel-color-settings/index.js +7 -3
- package/build-module/components/panel-color-settings/index.js.map +1 -1
- package/build-module/components/provider/block-refs-provider.js +4 -1
- package/build-module/components/provider/block-refs-provider.js.map +1 -1
- package/build-module/components/rich-text/file-paste-handler.js +1 -1
- package/build-module/components/rich-text/file-paste-handler.js.map +1 -1
- package/build-module/components/rich-text/prevent-event-discovery.js +25 -0
- package/build-module/components/rich-text/prevent-event-discovery.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +2 -1
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/selection-scroll-into-view/index.js +2 -1
- package/build-module/components/selection-scroll-into-view/index.js.map +1 -1
- package/build-module/components/use-display-block-controls/index.native.js +34 -0
- package/build-module/components/use-display-block-controls/index.native.js.map +1 -0
- package/build-module/components/use-on-block-drop/index.js +7 -3
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +3 -4
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/hooks/border-color.js +72 -12
- package/build-module/hooks/border-color.js.map +1 -1
- package/build-module/hooks/border-radius.js +42 -0
- package/build-module/hooks/border-radius.js.map +1 -1
- package/build-module/hooks/border-style.js +36 -0
- package/build-module/hooks/border-style.js.map +1 -1
- package/build-module/hooks/border-width.js +66 -32
- package/build-module/hooks/border-width.js.map +1 -1
- package/build-module/hooks/border.js +80 -12
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +4 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color-panel.native.js +62 -0
- package/build-module/hooks/color-panel.native.js.map +1 -0
- package/build-module/hooks/color.js +6 -5
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/index.native.js +1 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/layout.native.js +16 -0
- package/build-module/hooks/layout.native.js.map +1 -0
- package/build-module/hooks/letter-spacing.js +1 -1
- package/build-module/hooks/letter-spacing.js.map +1 -1
- package/build-module/hooks/typography.js +1 -1
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/store/actions.js +1 -2
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +5 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/defaults.native.js +2 -5
- package/build-module/store/defaults.native.js.map +1 -1
- package/build-module/store/selectors.js +10 -5
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/get-paste-event-data.js +1 -1
- package/build-module/utils/get-paste-event-data.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +1 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +226 -181
- package/build-style/style.css +226 -181
- package/package.json +31 -27
- package/src/components/block-caption/index.native.js +22 -4
- package/src/components/block-card/README.md +1 -1
- package/src/components/block-edit/index.js +8 -0
- package/src/components/block-edit/test/edit.native.js +10 -9
- package/src/components/block-inspector/index.js +9 -16
- package/src/components/block-list-appender/index.js +5 -21
- package/src/components/block-media-update-progress/index.native.js +1 -1
- package/src/components/block-media-update-progress/test/index.native.js +136 -93
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +108 -47
- package/src/components/block-mover/test/index.native.js +5 -5
- package/src/components/block-preview/README.md +14 -26
- package/src/components/block-preview/auto.js +33 -3
- package/src/components/block-preview/test/index.js +2 -0
- package/src/components/block-settings/container.native.js +1 -0
- package/src/components/block-styles/index.js +125 -145
- package/src/components/block-styles/menu-items.js +49 -0
- package/src/components/block-styles/preview-panel.js +36 -0
- package/src/components/block-styles/preview.native.js +5 -2
- package/src/components/block-styles/style.scss +59 -51
- package/src/components/block-styles/test/{index.js → utils.js} +60 -1
- package/src/components/block-styles/use-styles-for-block.js +99 -0
- package/src/components/block-styles/utils.js +39 -0
- package/src/components/block-switcher/block-styles-menu.js +3 -38
- package/src/components/block-tools/back-compat.js +1 -0
- package/src/components/block-tools/block-selection-button.js +7 -1
- package/src/components/block-tools/insertion-point.js +10 -1
- package/src/components/block-types-list/index.native.js +5 -2
- package/src/components/border-radius-control/style.scss +1 -1
- package/src/components/border-style-control/style.scss +0 -1
- package/src/components/button-block-appender/index.js +1 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +9 -4
- package/src/components/colors-gradients/dropdown.js +96 -0
- package/src/components/colors-gradients/panel-color-gradient-settings.js +23 -19
- package/src/components/colors-gradients/panel-color-gradient-settings.native.js +13 -2
- package/src/components/colors-gradients/style.scss +59 -5
- package/src/components/contrast-checker/README.md +3 -1
- package/src/components/contrast-checker/index.js +48 -20
- package/src/components/contrast-checker/index.native.js +113 -0
- package/src/components/contrast-checker/style.native.scss +26 -0
- package/src/components/contrast-checker/test/index.js +65 -0
- package/src/components/default-block-appender/index.js +17 -24
- package/src/components/default-block-appender/style.scss +4 -0
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +12 -24
- package/src/components/default-block-appender/test/index.js +4 -14
- package/src/components/default-style-picker/index.js +18 -6
- package/src/components/font-appearance-control/index.js +12 -12
- package/src/components/iframe/index.js +10 -10
- package/src/components/index.js +2 -1
- package/src/components/index.native.js +1 -0
- package/src/components/inner-blocks/README.md +2 -0
- package/src/components/inner-blocks/default-block-appender.js +2 -7
- package/src/components/inner-blocks/use-nested-settings-update.js +16 -14
- package/src/components/inserter/index.js +77 -5
- package/src/components/inserter/index.native.js +2 -2
- package/src/components/inserter/library.js +17 -12
- package/src/components/inserter/menu.js +31 -13
- package/src/components/inserter/tabs.native.js +5 -4
- package/src/components/inserter/test/block-types-tab.native.js +9 -10
- package/src/components/inserter/test/index.native.js +3 -7
- package/src/components/inserter/test/reusable-blocks-tab.native.js +8 -10
- package/src/components/inspector-controls/block-support-slot-container.js +3 -1
- package/src/components/inspector-controls/block-support-tools-panel.js +39 -58
- package/src/components/inspector-controls/fill.native.js +4 -3
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls/slot.js +2 -7
- package/src/components/letter-spacing-control/index.js +6 -6
- package/src/components/link-control/README.md +1 -1
- package/src/components/link-control/link-preview.js +1 -1
- package/src/components/link-control/search-item.js +11 -2
- package/src/components/link-control/search-results.js +1 -0
- package/src/components/link-control/style.scss +2 -1
- package/src/components/link-control/test/index.js +4 -0
- package/src/components/link-control/use-search-handler.js +25 -4
- package/src/components/list-view/block-select-button.js +20 -1
- package/src/components/list-view/block.js +10 -0
- package/src/components/media-placeholder/index.js +2 -0
- package/src/components/media-replace-flow/index.js +35 -5
- package/src/components/media-upload/test/index.native.js +28 -47
- package/src/components/media-upload-progress/index.native.js +1 -0
- package/src/components/media-upload-progress/test/index.native.js +60 -47
- package/src/components/panel-color-settings/index.js +8 -4
- package/src/components/provider/block-refs-provider.js +4 -1
- package/src/components/rich-text/file-paste-handler.js +3 -1
- package/src/components/rich-text/prevent-event-discovery.js +23 -0
- package/src/components/rich-text/use-input-rules.js +2 -1
- package/src/components/selection-scroll-into-view/index.js +1 -0
- package/src/components/url-input/README.md +5 -0
- package/src/components/use-display-block-controls/index.native.js +38 -0
- package/src/components/use-on-block-drop/index.js +7 -3
- package/src/components/writing-flow/test/use-multi-selection.js +36 -0
- package/src/components/writing-flow/use-multi-selection.js +12 -9
- package/src/hooks/border-color.js +69 -9
- package/src/hooks/border-radius.js +32 -0
- package/src/hooks/border-style.js +26 -0
- package/src/hooks/border-width.js +56 -32
- package/src/hooks/border.js +115 -20
- package/src/hooks/border.scss +3 -17
- package/src/hooks/color-panel.js +3 -0
- package/src/hooks/color-panel.native.js +63 -0
- package/src/hooks/color.js +8 -7
- package/src/hooks/dimensions.scss +5 -0
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.native.js +23 -0
- package/src/hooks/letter-spacing.js +1 -1
- package/src/hooks/typography.js +1 -1
- package/src/store/actions.js +1 -2
- package/src/store/defaults.js +2 -0
- package/src/store/defaults.native.js +2 -6
- package/src/store/selectors.js +10 -5
- package/src/style.scss +4 -3
- package/src/utils/get-paste-event-data.js +1 -1
- package/src/utils/parse-css-unit-to-px.js +1 -1
- package/src/utils/test/parse-css-unit-to-px.js +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/use-canvas-click-redirect/index.js +0 -66
- package/build/components/use-canvas-click-redirect/index.js.map +0 -1
- package/build-module/components/use-canvas-click-redirect/index.js +0 -54
- package/build-module/components/use-canvas-click-redirect/index.js.map +0 -1
- package/src/components/use-canvas-click-redirect/index.js +0 -57
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { TouchableWithoutFeedback } from 'react-native';
|
|
4
|
+
import { render, fireEvent } from 'test/helpers';
|
|
5
|
+
import { Text, TouchableWithoutFeedback } from 'react-native';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
requestMediaPicker,
|
|
12
|
-
mediaSources,
|
|
13
|
-
} from '@wordpress/react-native-bridge';
|
|
10
|
+
import { requestMediaPicker } from '@wordpress/react-native-bridge';
|
|
14
11
|
|
|
15
12
|
/**
|
|
16
13
|
* Internal dependencies
|
|
@@ -30,48 +27,32 @@ const MEDIA_ID = 123;
|
|
|
30
27
|
|
|
31
28
|
describe( 'MediaUpload component', () => {
|
|
32
29
|
it( 'renders without crashing', () => {
|
|
33
|
-
const wrapper =
|
|
34
|
-
<MediaUpload allowedTypes={ [] } render={ () =>
|
|
30
|
+
const wrapper = render(
|
|
31
|
+
<MediaUpload allowedTypes={ [] } render={ () => null } />
|
|
35
32
|
);
|
|
36
33
|
expect( wrapper ).toBeTruthy();
|
|
37
34
|
} );
|
|
38
35
|
|
|
39
|
-
it( 'opens media options picker', () => {
|
|
40
|
-
const wrapper = shallow(
|
|
41
|
-
<MediaUpload
|
|
42
|
-
allowedTypes={ [] }
|
|
43
|
-
render={ ( { open, getMediaOptions } ) => {
|
|
44
|
-
return (
|
|
45
|
-
<TouchableWithoutFeedback onPress={ open }>
|
|
46
|
-
{ getMediaOptions() }
|
|
47
|
-
</TouchableWithoutFeedback>
|
|
48
|
-
);
|
|
49
|
-
} }
|
|
50
|
-
/>
|
|
51
|
-
);
|
|
52
|
-
expect( wrapper.find( 'Picker' ) ).toHaveLength( 1 );
|
|
53
|
-
} );
|
|
54
|
-
|
|
55
36
|
it( 'shows right media capture option for media type', () => {
|
|
56
37
|
const expectOptionForMediaType = ( mediaType, expectedOption ) => {
|
|
57
|
-
const wrapper =
|
|
38
|
+
const wrapper = render(
|
|
58
39
|
<MediaUpload
|
|
59
40
|
allowedTypes={ [ mediaType ] }
|
|
60
41
|
render={ ( { open, getMediaOptions } ) => {
|
|
61
42
|
return (
|
|
62
|
-
|
|
43
|
+
<>
|
|
44
|
+
<TouchableWithoutFeedback onPress={ open }>
|
|
45
|
+
<Text>Open Picker</Text>
|
|
46
|
+
</TouchableWithoutFeedback>
|
|
63
47
|
{ getMediaOptions() }
|
|
64
|
-
|
|
48
|
+
</>
|
|
65
49
|
);
|
|
66
50
|
} }
|
|
67
51
|
/>
|
|
68
52
|
);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.props()
|
|
73
|
-
.options.filter( ( item ) => item.label === expectedOption )
|
|
74
|
-
).toHaveLength( 1 );
|
|
53
|
+
fireEvent.press( wrapper.getByText( 'Open Picker' ) );
|
|
54
|
+
|
|
55
|
+
wrapper.getByText( expectedOption );
|
|
75
56
|
};
|
|
76
57
|
expectOptionForMediaType( MEDIA_TYPE_IMAGE, OPTION_TAKE_PHOTO );
|
|
77
58
|
expectOptionForMediaType( MEDIA_TYPE_VIDEO, OPTION_TAKE_VIDEO );
|
|
@@ -96,21 +77,25 @@ describe( 'MediaUpload component', () => {
|
|
|
96
77
|
|
|
97
78
|
const onSelect = jest.fn();
|
|
98
79
|
|
|
99
|
-
const wrapper =
|
|
80
|
+
const wrapper = render(
|
|
100
81
|
<MediaUpload
|
|
101
82
|
allowedTypes={ [ MEDIA_TYPE_VIDEO ] }
|
|
102
83
|
onSelect={ onSelect }
|
|
103
84
|
multiple={ allowMultiple }
|
|
104
85
|
render={ ( { open, getMediaOptions } ) => {
|
|
105
86
|
return (
|
|
106
|
-
|
|
87
|
+
<>
|
|
88
|
+
<TouchableWithoutFeedback onPress={ open }>
|
|
89
|
+
<Text>Open Picker</Text>
|
|
90
|
+
</TouchableWithoutFeedback>
|
|
107
91
|
{ getMediaOptions() }
|
|
108
|
-
|
|
92
|
+
</>
|
|
109
93
|
);
|
|
110
94
|
} }
|
|
111
95
|
/>
|
|
112
96
|
);
|
|
113
|
-
wrapper.
|
|
97
|
+
fireEvent.press( wrapper.getByText( 'Open Picker' ) );
|
|
98
|
+
fireEvent.press( wrapper.getByText( option ) );
|
|
114
99
|
const media = { id: MEDIA_ID, url: MEDIA_URL };
|
|
115
100
|
|
|
116
101
|
expect( requestFunction ).toHaveBeenCalledTimes( 1 );
|
|
@@ -123,7 +108,7 @@ describe( 'MediaUpload component', () => {
|
|
|
123
108
|
|
|
124
109
|
it( 'can select media from device library', () => {
|
|
125
110
|
expectMediaPickerForOption(
|
|
126
|
-
|
|
111
|
+
'Choose from device',
|
|
127
112
|
false,
|
|
128
113
|
requestMediaPicker
|
|
129
114
|
);
|
|
@@ -131,23 +116,19 @@ describe( 'MediaUpload component', () => {
|
|
|
131
116
|
|
|
132
117
|
it( 'can select media from WP media library', () => {
|
|
133
118
|
expectMediaPickerForOption(
|
|
134
|
-
|
|
119
|
+
'WordPress Media Library',
|
|
135
120
|
false,
|
|
136
121
|
requestMediaPicker
|
|
137
122
|
);
|
|
138
123
|
} );
|
|
139
124
|
|
|
140
|
-
it( 'can select media by
|
|
141
|
-
expectMediaPickerForOption(
|
|
142
|
-
mediaSources.deviceCamera,
|
|
143
|
-
false,
|
|
144
|
-
requestMediaPicker
|
|
145
|
-
);
|
|
125
|
+
it( 'can select media by capturing', () => {
|
|
126
|
+
expectMediaPickerForOption( 'Take a Video', false, requestMediaPicker );
|
|
146
127
|
} );
|
|
147
128
|
|
|
148
129
|
it( 'can select multiple media from device library', () => {
|
|
149
130
|
expectMediaPickerForOption(
|
|
150
|
-
|
|
131
|
+
'Choose from device',
|
|
151
132
|
true,
|
|
152
133
|
requestMediaPicker
|
|
153
134
|
);
|
|
@@ -155,7 +136,7 @@ describe( 'MediaUpload component', () => {
|
|
|
155
136
|
|
|
156
137
|
it( 'can select multiple media from WP media library', () => {
|
|
157
138
|
expectMediaPickerForOption(
|
|
158
|
-
|
|
139
|
+
'WordPress Media Library',
|
|
159
140
|
true,
|
|
160
141
|
requestMediaPicker
|
|
161
142
|
);
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { render } from 'test/helpers';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
subscribeMediaUpload,
|
|
11
|
+
sendMediaUpload,
|
|
12
|
+
} from '@wordpress/react-native-bridge';
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* Internal dependencies
|
|
@@ -19,37 +22,27 @@ import {
|
|
|
19
22
|
MEDIA_UPLOAD_STATE_RESET,
|
|
20
23
|
} from '../';
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
const mediaSources = {
|
|
30
|
-
deviceCamera: 'DEVICE_CAMERA',
|
|
31
|
-
deviceLibrary: 'DEVICE_MEDIA_LIBRARY',
|
|
32
|
-
siteMediaLibrary: 'SITE_MEDIA_LIBRARY',
|
|
33
|
-
};
|
|
34
|
-
return {
|
|
35
|
-
subscribeMediaUpload,
|
|
36
|
-
sendMediaUpload: callUploadCallback,
|
|
37
|
-
mediaSources,
|
|
38
|
-
};
|
|
25
|
+
let uploadCallBack;
|
|
26
|
+
subscribeMediaUpload.mockImplementation( ( callback ) => {
|
|
27
|
+
uploadCallBack = callback;
|
|
28
|
+
} );
|
|
29
|
+
sendMediaUpload.mockImplementation( ( payload ) => {
|
|
30
|
+
uploadCallBack( payload );
|
|
39
31
|
} );
|
|
40
32
|
|
|
41
33
|
const MEDIA_ID = 123;
|
|
42
34
|
|
|
43
35
|
describe( 'MediaUploadProgress component', () => {
|
|
44
36
|
it( 'renders without crashing', () => {
|
|
45
|
-
const wrapper =
|
|
37
|
+
const wrapper = render(
|
|
46
38
|
<MediaUploadProgress renderContent={ () => {} } />
|
|
47
39
|
);
|
|
48
40
|
expect( wrapper ).toBeTruthy();
|
|
49
41
|
} );
|
|
50
42
|
|
|
51
43
|
it( 'listens media upload progress', () => {
|
|
52
|
-
const
|
|
44
|
+
const renderContentMock = jest.fn();
|
|
45
|
+
const progress = 0.1;
|
|
53
46
|
const payload = {
|
|
54
47
|
state: MEDIA_UPLOAD_STATE_UPLOADING,
|
|
55
48
|
mediaId: MEDIA_ID,
|
|
@@ -58,46 +51,52 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
58
51
|
|
|
59
52
|
const onUpdateMediaProgress = jest.fn();
|
|
60
53
|
|
|
61
|
-
const wrapper =
|
|
54
|
+
const wrapper = render(
|
|
62
55
|
<MediaUploadProgress
|
|
63
56
|
onUpdateMediaProgress={ onUpdateMediaProgress }
|
|
64
57
|
mediaId={ MEDIA_ID }
|
|
65
|
-
renderContent={
|
|
58
|
+
renderContent={ renderContentMock }
|
|
66
59
|
/>
|
|
67
60
|
);
|
|
68
61
|
|
|
69
62
|
sendMediaUpload( payload );
|
|
70
63
|
|
|
71
|
-
expect( wrapper.
|
|
72
|
-
expect(
|
|
73
|
-
|
|
64
|
+
expect( wrapper.getByTestId( 'spinner' ) ).toBeTruthy();
|
|
65
|
+
expect( renderContentMock ).toHaveBeenCalledWith(
|
|
66
|
+
expect.objectContaining( {
|
|
67
|
+
isUploadInProgress: true,
|
|
68
|
+
isUploadFailed: false,
|
|
69
|
+
} )
|
|
70
|
+
);
|
|
74
71
|
expect( onUpdateMediaProgress ).toHaveBeenCalledTimes( 1 );
|
|
75
72
|
expect( onUpdateMediaProgress ).toHaveBeenCalledWith( payload );
|
|
76
73
|
} );
|
|
77
74
|
|
|
78
75
|
it( 'does not get affected by unrelated media uploads', () => {
|
|
76
|
+
const renderContentMock = jest.fn();
|
|
79
77
|
const payload = {
|
|
80
78
|
state: MEDIA_UPLOAD_STATE_UPLOADING,
|
|
81
79
|
mediaId: 1,
|
|
82
|
-
progress:
|
|
80
|
+
progress: 0.2,
|
|
83
81
|
};
|
|
84
82
|
const onUpdateMediaProgress = jest.fn();
|
|
85
|
-
const wrapper =
|
|
83
|
+
const wrapper = render(
|
|
86
84
|
<MediaUploadProgress
|
|
87
85
|
onUpdateMediaProgress={ onUpdateMediaProgress }
|
|
88
86
|
mediaId={ MEDIA_ID }
|
|
89
|
-
renderContent={
|
|
87
|
+
renderContent={ renderContentMock }
|
|
90
88
|
/>
|
|
91
89
|
);
|
|
92
90
|
|
|
93
91
|
sendMediaUpload( payload );
|
|
94
92
|
|
|
95
|
-
expect( wrapper.
|
|
93
|
+
expect( wrapper.queryByTestId( 'spinner' ) ).toBeNull();
|
|
96
94
|
expect( onUpdateMediaProgress ).toHaveBeenCalledTimes( 0 );
|
|
97
95
|
} );
|
|
98
96
|
|
|
99
97
|
it( 'listens media upload success', () => {
|
|
100
|
-
const
|
|
98
|
+
const renderContentMock = jest.fn();
|
|
99
|
+
const progress = 0.1;
|
|
101
100
|
const payloadSuccess = {
|
|
102
101
|
state: MEDIA_UPLOAD_STATE_SUCCEEDED,
|
|
103
102
|
mediaId: MEDIA_ID,
|
|
@@ -110,23 +109,27 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
110
109
|
|
|
111
110
|
const onFinishMediaUploadWithSuccess = jest.fn();
|
|
112
111
|
|
|
113
|
-
const wrapper =
|
|
112
|
+
const wrapper = render(
|
|
114
113
|
<MediaUploadProgress
|
|
115
114
|
onFinishMediaUploadWithSuccess={
|
|
116
115
|
onFinishMediaUploadWithSuccess
|
|
117
116
|
}
|
|
118
117
|
mediaId={ MEDIA_ID }
|
|
119
|
-
renderContent={
|
|
118
|
+
renderContent={ renderContentMock }
|
|
120
119
|
/>
|
|
121
120
|
);
|
|
122
121
|
|
|
123
122
|
sendMediaUpload( payloadUploading );
|
|
124
123
|
|
|
125
|
-
expect( wrapper.
|
|
124
|
+
expect( wrapper.getByTestId( 'spinner' ) ).toBeTruthy();
|
|
126
125
|
|
|
127
126
|
sendMediaUpload( payloadSuccess );
|
|
128
127
|
|
|
129
|
-
expect(
|
|
128
|
+
expect( renderContentMock ).toHaveBeenCalledWith(
|
|
129
|
+
expect.objectContaining( {
|
|
130
|
+
isUploadInProgress: false,
|
|
131
|
+
} )
|
|
132
|
+
);
|
|
130
133
|
expect( onFinishMediaUploadWithSuccess ).toHaveBeenCalledTimes( 1 );
|
|
131
134
|
expect( onFinishMediaUploadWithSuccess ).toHaveBeenCalledWith(
|
|
132
135
|
payloadSuccess
|
|
@@ -134,7 +137,8 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
134
137
|
} );
|
|
135
138
|
|
|
136
139
|
it( 'listens media upload fail', () => {
|
|
137
|
-
const
|
|
140
|
+
const renderContentMock = jest.fn();
|
|
141
|
+
const progress = 0.1;
|
|
138
142
|
const payloadFail = {
|
|
139
143
|
state: MEDIA_UPLOAD_STATE_FAILED,
|
|
140
144
|
mediaId: MEDIA_ID,
|
|
@@ -147,24 +151,28 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
147
151
|
|
|
148
152
|
const onFinishMediaUploadWithFailure = jest.fn();
|
|
149
153
|
|
|
150
|
-
const wrapper =
|
|
154
|
+
const wrapper = render(
|
|
151
155
|
<MediaUploadProgress
|
|
152
156
|
onFinishMediaUploadWithFailure={
|
|
153
157
|
onFinishMediaUploadWithFailure
|
|
154
158
|
}
|
|
155
159
|
mediaId={ MEDIA_ID }
|
|
156
|
-
renderContent={
|
|
160
|
+
renderContent={ renderContentMock }
|
|
157
161
|
/>
|
|
158
162
|
);
|
|
159
163
|
|
|
160
164
|
sendMediaUpload( payloadUploading );
|
|
161
165
|
|
|
162
|
-
expect( wrapper.
|
|
166
|
+
expect( wrapper.getByTestId( 'spinner' ) ).toBeTruthy();
|
|
163
167
|
|
|
164
168
|
sendMediaUpload( payloadFail );
|
|
165
169
|
|
|
166
|
-
expect(
|
|
167
|
-
|
|
170
|
+
expect( renderContentMock ).toHaveBeenCalledWith(
|
|
171
|
+
expect.objectContaining( {
|
|
172
|
+
isUploadInProgress: false,
|
|
173
|
+
isUploadFailed: true,
|
|
174
|
+
} )
|
|
175
|
+
);
|
|
168
176
|
expect( onFinishMediaUploadWithFailure ).toHaveBeenCalledTimes( 1 );
|
|
169
177
|
expect( onFinishMediaUploadWithFailure ).toHaveBeenCalledWith(
|
|
170
178
|
payloadFail
|
|
@@ -172,7 +180,8 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
172
180
|
} );
|
|
173
181
|
|
|
174
182
|
it( 'listens media upload reset', () => {
|
|
175
|
-
const
|
|
183
|
+
const renderContentMock = jest.fn();
|
|
184
|
+
const progress = 0.1;
|
|
176
185
|
const payloadReset = {
|
|
177
186
|
state: MEDIA_UPLOAD_STATE_RESET,
|
|
178
187
|
mediaId: MEDIA_ID,
|
|
@@ -185,22 +194,26 @@ describe( 'MediaUploadProgress component', () => {
|
|
|
185
194
|
|
|
186
195
|
const onMediaUploadStateReset = jest.fn();
|
|
187
196
|
|
|
188
|
-
const wrapper =
|
|
197
|
+
const wrapper = render(
|
|
189
198
|
<MediaUploadProgress
|
|
190
199
|
onMediaUploadStateReset={ onMediaUploadStateReset }
|
|
191
200
|
mediaId={ MEDIA_ID }
|
|
192
|
-
renderContent={
|
|
201
|
+
renderContent={ renderContentMock }
|
|
193
202
|
/>
|
|
194
203
|
);
|
|
195
204
|
|
|
196
205
|
sendMediaUpload( payloadUploading );
|
|
197
206
|
|
|
198
|
-
expect( wrapper.
|
|
207
|
+
expect( wrapper.getByTestId( 'spinner' ) ).toBeTruthy();
|
|
199
208
|
|
|
200
209
|
sendMediaUpload( payloadReset );
|
|
201
210
|
|
|
202
|
-
expect(
|
|
203
|
-
|
|
211
|
+
expect( renderContentMock ).toHaveBeenCalledWith(
|
|
212
|
+
expect.objectContaining( {
|
|
213
|
+
isUploadInProgress: false,
|
|
214
|
+
isUploadFailed: false,
|
|
215
|
+
} )
|
|
216
|
+
);
|
|
204
217
|
expect( onMediaUploadStateReset ).toHaveBeenCalledTimes( 1 );
|
|
205
218
|
expect( onMediaUploadStateReset ).toHaveBeenCalledWith( payloadReset );
|
|
206
219
|
} );
|
|
@@ -4,13 +4,17 @@
|
|
|
4
4
|
import PanelColorGradientSettings from '../colors-gradients/panel-color-gradient-settings';
|
|
5
5
|
|
|
6
6
|
const PanelColorSettings = ( { colorSettings, ...props } ) => {
|
|
7
|
-
const settings = colorSettings.map(
|
|
8
|
-
(
|
|
7
|
+
const settings = colorSettings.map( ( setting ) => {
|
|
8
|
+
if ( ! setting ) {
|
|
9
|
+
return setting;
|
|
10
|
+
}
|
|
11
|
+
const { value, onChange, ...otherSettings } = setting;
|
|
12
|
+
return {
|
|
9
13
|
...otherSettings,
|
|
10
14
|
colorValue: value,
|
|
11
15
|
onColorChange: onChange,
|
|
12
|
-
}
|
|
13
|
-
);
|
|
16
|
+
};
|
|
17
|
+
} );
|
|
14
18
|
return (
|
|
15
19
|
<PanelColorGradientSettings
|
|
16
20
|
settings={ settings }
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createContext, useMemo } from '@wordpress/element';
|
|
5
5
|
|
|
6
|
-
export const BlockRefs = createContext(
|
|
6
|
+
export const BlockRefs = createContext( {
|
|
7
|
+
refs: new Map(),
|
|
8
|
+
callbacks: new Map(),
|
|
9
|
+
} );
|
|
7
10
|
|
|
8
11
|
export function BlockRefsProvider( { children } ) {
|
|
9
12
|
const value = useMemo(
|
|
@@ -5,7 +5,9 @@ import { createBlobURL } from '@wordpress/blob';
|
|
|
5
5
|
|
|
6
6
|
export function filePasteHandler( files ) {
|
|
7
7
|
return files
|
|
8
|
-
.filter( ( { type } ) =>
|
|
8
|
+
.filter( ( { type } ) =>
|
|
9
|
+
/^image\/(?:jpe?g|png|gif|webp)$/.test( type )
|
|
10
|
+
)
|
|
9
11
|
.map( ( file ) => `<img src="${ createBlobURL( file ) }">` )
|
|
10
12
|
.join( '' );
|
|
11
13
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { insert } from '@wordpress/rich-text';
|
|
5
|
+
|
|
6
|
+
export function preventEventDiscovery( value ) {
|
|
7
|
+
const searchText = 'tales of gutenberg';
|
|
8
|
+
const addText =
|
|
9
|
+
' 🐡🐢🦀🐤🦋🐘🐧🐹🦁🦄🦍🐼🐿🎃🐴🐝🐆🦕🦔🌱🍇π🍌🐉💧🥨🌌🍂🍠🥦🥚🥝🎟🥥🥒🛵🥖🍒🍯🎾🎲🐺🐚🐮⌛️';
|
|
10
|
+
const { start, text } = value;
|
|
11
|
+
|
|
12
|
+
if ( start < searchText.length ) {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const charactersBefore = text.slice( start - searchText.length, start );
|
|
17
|
+
|
|
18
|
+
if ( charactersBefore.toLowerCase() !== searchText ) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return insert( value, addText );
|
|
23
|
+
}
|
|
@@ -11,6 +11,7 @@ import { useDispatch } from '@wordpress/data';
|
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
13
|
import { store as blockEditorStore } from '../../store';
|
|
14
|
+
import { preventEventDiscovery } from './prevent-event-discovery';
|
|
14
15
|
|
|
15
16
|
export function useInputRules( props ) {
|
|
16
17
|
const {
|
|
@@ -85,7 +86,7 @@ export function useInputRules( props ) {
|
|
|
85
86
|
|
|
86
87
|
return accumlator;
|
|
87
88
|
},
|
|
88
|
-
value
|
|
89
|
+
preventEventDiscovery( value )
|
|
89
90
|
);
|
|
90
91
|
|
|
91
92
|
if ( transformed !== value ) {
|
|
@@ -147,6 +147,11 @@ _Optional._ If this property is added, a label will be generated using label pro
|
|
|
147
147
|
|
|
148
148
|
_Optional._ Adds and optional class to the parent `div` that wraps the URLInput field and popover
|
|
149
149
|
|
|
150
|
+
### `placeholder: String`
|
|
151
|
+
|
|
152
|
+
_Optional._ Placeholder text to show when the field is empty, similar to the
|
|
153
|
+
[`input` and `textarea` attribute of the same name](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/HTML5_updates#The_placeholder_attribute).
|
|
154
|
+
|
|
150
155
|
### `disableSuggestions: Boolean`
|
|
151
156
|
|
|
152
157
|
_Optional._ Provides additional control over whether suggestions are disabled.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useSelect } from '@wordpress/data';
|
|
5
|
+
import { hasBlockSupport } from '@wordpress/blocks';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { useBlockEditContext } from '../block-edit/context';
|
|
11
|
+
import { store as blockEditorStore } from '../../store';
|
|
12
|
+
|
|
13
|
+
export default function useDisplayBlockControls() {
|
|
14
|
+
const { isSelected, clientId, name } = useBlockEditContext();
|
|
15
|
+
return useSelect(
|
|
16
|
+
( select ) => {
|
|
17
|
+
const { getBlockName, getBlockRootClientId } = select(
|
|
18
|
+
blockEditorStore
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const parentId = getBlockRootClientId( clientId );
|
|
22
|
+
const parentBlockName = getBlockName( parentId );
|
|
23
|
+
|
|
24
|
+
const hideControls = hasBlockSupport(
|
|
25
|
+
parentBlockName,
|
|
26
|
+
'__experimentalHideChildBlockControls',
|
|
27
|
+
false
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if ( ! hideControls && isSelected ) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return false;
|
|
35
|
+
},
|
|
36
|
+
[ clientId, isSelected, name ]
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -256,10 +256,14 @@ export default function useOnBlockDrop( targetRootClientId, targetBlockIndex ) {
|
|
|
256
256
|
const files = getFilesFromDataTransfer( event.dataTransfer );
|
|
257
257
|
const html = event.dataTransfer.getData( 'text/html' );
|
|
258
258
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
259
|
+
/**
|
|
260
|
+
* From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML.
|
|
261
|
+
* The order of the checks is important to recognise the HTML drop.
|
|
262
|
+
*/
|
|
263
|
+
if ( html ) {
|
|
262
264
|
_onHTMLDrop( html );
|
|
265
|
+
} else if ( files.length ) {
|
|
266
|
+
_onFilesDrop( files );
|
|
263
267
|
} else {
|
|
264
268
|
_onDrop( event );
|
|
265
269
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { toggleRichText } from '../use-multi-selection';
|
|
5
|
+
|
|
6
|
+
describe( 'toggleRichText', () => {
|
|
7
|
+
function getContainer( isContentEditible ) {
|
|
8
|
+
const container = document.createDocumentFragment();
|
|
9
|
+
[
|
|
10
|
+
'rich-text',
|
|
11
|
+
'rich-text editor-post-title__input',
|
|
12
|
+
'some-other-class',
|
|
13
|
+
].forEach( ( className ) => {
|
|
14
|
+
const element = document.createElement( 'div' );
|
|
15
|
+
element.setAttribute( 'class', className );
|
|
16
|
+
if ( isContentEditible ) {
|
|
17
|
+
element.setAttribute( 'contenteditable', true );
|
|
18
|
+
}
|
|
19
|
+
container.appendChild( element );
|
|
20
|
+
} );
|
|
21
|
+
return container;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
it( 'should set the `contenteditable` attribute on eligible rich text nodes', () => {
|
|
25
|
+
const container = getContainer();
|
|
26
|
+
toggleRichText( container, true );
|
|
27
|
+
let nodes = container.querySelectorAll( '[contenteditable=true]' );
|
|
28
|
+
|
|
29
|
+
expect( nodes ).toHaveLength( 1 );
|
|
30
|
+
expect( nodes[ 0 ].className ).toBe( 'rich-text' );
|
|
31
|
+
|
|
32
|
+
toggleRichText( container, false );
|
|
33
|
+
nodes = container.querySelectorAll( '[contenteditable=true]' );
|
|
34
|
+
expect( nodes ).toHaveLength( 0 );
|
|
35
|
+
} );
|
|
36
|
+
} );
|
|
@@ -15,16 +15,19 @@ import { useSelect } from '@wordpress/data';
|
|
|
15
15
|
import { store as blockEditorStore } from '../../store';
|
|
16
16
|
import { __unstableUseBlockRef as useBlockRef } from '../block-list/use-block-props/use-block-refs';
|
|
17
17
|
|
|
18
|
-
function toggleRichText( container, toggle ) {
|
|
19
|
-
Array.from(
|
|
20
|
-
(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
export function toggleRichText( container, toggle ) {
|
|
19
|
+
Array.from(
|
|
20
|
+
container.querySelectorAll(
|
|
21
|
+
// Exclude the Post Title from multi-select disable.
|
|
22
|
+
'.rich-text:not( .editor-post-title__input )'
|
|
23
|
+
)
|
|
24
|
+
).forEach( ( node ) => {
|
|
25
|
+
if ( toggle ) {
|
|
26
|
+
node.setAttribute( 'contenteditable', true );
|
|
27
|
+
} else {
|
|
28
|
+
node.removeAttribute( 'contenteditable' );
|
|
26
29
|
}
|
|
27
|
-
);
|
|
30
|
+
} );
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
/**
|