@wordpress/block-editor 7.0.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +47 -4
- package/build/components/autocomplete/index.js +1 -1
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +8 -4
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +61 -14
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-content-overlay/index.js +2 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-controls/fill.js +6 -6
- package/build/components/block-controls/fill.js.map +1 -1
- package/build/components/block-controls/groups.js +3 -1
- package/build/components/block-controls/groups.js.map +1 -1
- package/build/components/block-controls/hook.js +57 -0
- package/build/components/block-controls/hook.js.map +1 -0
- package/build/components/block-edit/context.js +6 -5
- package/build/components/block-edit/context.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-icon/index.js +5 -1
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-icon/index.native.js +13 -9
- package/build/components/block-icon/index.native.js.map +1 -1
- package/build/components/block-inspector/index.js +14 -7
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +5 -0
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js +31 -12
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js +4 -4
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.js +15 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +6 -7
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/grid-item.native.js +68 -0
- package/build/components/block-list/grid-item.native.js.map +1 -0
- package/build/components/block-list/index.js +19 -15
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/index.native.js +13 -9
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +6 -6
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js +4 -6
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-default-class-name.js +1 -1
- package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +21 -6
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +9 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +9 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-mover/index.js +4 -4
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +4 -4
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +0 -1
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-patterns-list/index.js +1 -8
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-preview/auto.js +42 -14
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings/container.native.js +5 -2
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +10 -3
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +5 -1
- package/build/components/block-styles/index.js.map +1 -1
- 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-switcher/block-styles-menu.js +1 -1
- package/build/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build/components/block-switcher/index.js +10 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +3 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +3 -0
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-popover.js +8 -7
- package/build/components/block-tools/block-popover.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -4
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +4 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +96 -7
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-types-list/index.native.js +3 -2
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +17 -8
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors/utils.js +11 -3
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +22 -57
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/contrast-checker/index.js +18 -12
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/copy-handler/index.js +9 -3
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-block-appender/index.js +2 -2
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/duotone-control/index.js +41 -39
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/editor-styles/index.js +9 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +44 -12
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-sizes/index.native.js +24 -0
- package/build/components/font-sizes/index.native.js.map +1 -1
- package/build/components/iframe/index.js +46 -63
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build/components/image-editor/constants.js +16 -0
- package/build/components/image-editor/constants.js.map +1 -0
- package/build/components/image-editor/context.js +59 -0
- package/build/components/image-editor/context.js.map +1 -0
- package/build/components/image-editor/cropper.js +83 -0
- package/build/components/image-editor/cropper.js.map +1 -0
- package/build/components/image-editor/form-controls.js +36 -0
- package/build/components/image-editor/form-controls.js.map +1 -0
- package/build/components/image-editor/index.js +60 -0
- package/build/components/image-editor/index.js.map +1 -0
- package/build/components/image-editor/rotation-button.js +37 -0
- package/build/components/image-editor/rotation-button.js.map +1 -0
- package/build/components/image-editor/use-save-image.js +84 -0
- package/build/components/image-editor/use-save-image.js.map +1 -0
- package/build/components/image-editor/use-transform-image.js +135 -0
- package/build/components/image-editor/use-transform-image.js.map +1 -0
- package/build/components/image-editor/zoom-dropdown.js +55 -0
- package/build/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build/components/image-size-control/use-dimension-handler.js +14 -3
- package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build/components/index.js +42 -37
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +12 -7
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +11 -1
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +28 -10
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +42 -4
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +74 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js +3 -6
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
- package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build/components/inserter/index.js +12 -4
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -7
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +2 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js +18 -17
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/pattern-panel.js +19 -10
- package/build/components/inserter/pattern-panel.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +9 -2
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inserter/tabs.native.js +1 -4
- package/build/components/inserter/tabs.native.js.map +1 -1
- package/build/components/inserter/utils.native.js +44 -0
- package/build/components/inserter/utils.native.js.map +1 -0
- package/build/components/inspector-controls/block-support-slot-container.js +28 -0
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build/components/inspector-controls/fill.js +64 -0
- package/build/components/inspector-controls/fill.js.map +1 -0
- package/build/components/inspector-controls/{index.native.js → fill.native.js} +20 -19
- package/build/components/inspector-controls/fill.native.js.map +1 -0
- package/build/components/inspector-controls/groups.js +25 -0
- package/build/components/inspector-controls/groups.js.map +1 -0
- package/build/components/inspector-controls/index.js +22 -20
- package/build/components/inspector-controls/index.js.map +1 -1
- package/build/components/inspector-controls/slot.js +67 -0
- package/build/components/inspector-controls/slot.js.map +1 -0
- package/build/components/inspector-controls/slot.native.js +38 -0
- package/build/components/inspector-controls/slot.native.js.map +1 -0
- package/build/components/letter-spacing-control/index.js +9 -6
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/line-height-control/index.native.js +39 -0
- package/build/components/line-height-control/index.native.js.map +1 -0
- package/build/components/link-control/index.js +93 -34
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +45 -15
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +25 -7
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-contents.js +1 -20
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block.js +54 -69
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +102 -76
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +53 -23
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -2
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/list-item.js +3 -2
- package/build/components/list-view/list-item.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +13 -54
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/media-placeholder/index.js +35 -21
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +2 -1
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +5 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +1 -4
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/observe-typing/index.js +1 -1
- package/build/components/observe-typing/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +30 -1
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/rich-text/embed-handler-picker.native.js +66 -0
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
- package/build/components/rich-text/format-edit.js +28 -2
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +32 -11
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/index.js +29 -7
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +43 -5
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/input-event.js +25 -24
- package/build/components/rich-text/input-event.js.map +1 -1
- package/build/components/rich-text/shortcut.js +23 -9
- package/build/components/rich-text/shortcut.js.map +1 -1
- package/build/components/rich-text/use-input-events.js +27 -0
- package/build/components/rich-text/use-input-events.js.map +1 -0
- package/build/components/rich-text/use-paste-handler.js +45 -10
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/rich-text/use-shortcuts.js +27 -0
- package/build/components/rich-text/use-shortcuts.js.map +1 -0
- package/build/components/rich-text/utils.js +22 -0
- package/build/components/rich-text/utils.js.map +1 -1
- package/build/components/typewriter/index.js +1 -1
- package/build/components/typewriter/index.js.map +1 -1
- package/build/components/url-input/index.js +25 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-display-block-controls/index.js +5 -7
- package/build/components/use-display-block-controls/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +13 -10
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +2 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +2 -13
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/use-setting/index.js +49 -14
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +6 -0
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +18 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +14 -14
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +4 -2
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border-color.js +9 -5
- package/build/hooks/border-color.js.map +1 -1
- package/build/hooks/border.js +5 -5
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +5 -2
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +6 -4
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/compat.js +23 -0
- package/build/hooks/compat.js.map +1 -0
- package/build/hooks/custom-class-name.js +3 -1
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/dimensions.js +63 -28
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +63 -18
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-appearance.js +49 -6
- package/build/hooks/font-appearance.js.map +1 -1
- package/build/hooks/font-family.js +123 -32
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +51 -9
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +163 -0
- package/build/hooks/gap.js.map +1 -0
- package/build/hooks/index.js +12 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +10 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/layout.js +47 -30
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/letter-spacing.js +45 -8
- package/build/hooks/letter-spacing.js.map +1 -1
- package/build/hooks/line-height.js +45 -8
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/lock.js +43 -0
- package/build/hooks/lock.js.map +1 -0
- package/build/hooks/margin.js +6 -3
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +6 -3
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +39 -11
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/text-decoration.js +42 -6
- package/build/hooks/text-decoration.js.map +1 -1
- package/build/hooks/text-transform.js +42 -6
- package/build/hooks/text-transform.js.map +1 -1
- package/build/hooks/typography.js +109 -9
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/typography.native.js +60 -0
- package/build/hooks/typography.native.js.map +1 -0
- package/build/hooks/use-cached-truthy.js +29 -0
- package/build/hooks/use-cached-truthy.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +215 -11
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +99 -6
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +331 -266
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +2 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/defaults.native.js +16 -1
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/index.js +1 -3
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +165 -114
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +203 -115
- package/build/store/selectors.js.map +1 -1
- package/build/utils/index.js +10 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +295 -0
- package/build/utils/parse-css-unit-to-px.js.map +1 -0
- package/build/utils/transform-styles/transforms/wrap.js +16 -0
- package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-module/components/autocomplete/index.js +2 -2
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +8 -4
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +64 -17
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +2 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-controls/fill.js +6 -5
- package/build-module/components/block-controls/fill.js.map +1 -1
- package/build-module/components/block-controls/groups.js +3 -1
- package/build-module/components/block-controls/groups.js.map +1 -1
- package/build-module/components/block-controls/hook.js +42 -0
- package/build-module/components/block-controls/hook.js.map +1 -0
- package/build-module/components/block-edit/context.js +4 -4
- package/build-module/components/block-edit/context.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-icon/index.js +5 -1
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-icon/index.native.js +14 -9
- package/build-module/components/block-icon/index.native.js.map +1 -1
- package/build-module/components/block-inspector/index.js +12 -6
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -0
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block-list-item.native.js +30 -12
- 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 +3 -4
- package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
- package/build-module/components/block-list/block.js +16 -10
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +6 -7
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/grid-item.native.js +57 -0
- package/build-module/components/block-list/grid-item.native.js.map +1 -0
- package/build-module/components/block-list/index.js +17 -14
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +13 -9
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +7 -7
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +2 -2
- package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -6
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +9 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +9 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -4
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +4 -4
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +0 -1
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +1 -6
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +40 -16
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +6 -3
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +10 -3
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +5 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- 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-switcher/block-styles-menu.js +1 -1
- package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build-module/components/block-switcher/index.js +10 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +3 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +3 -0
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-popover.js +9 -8
- package/build-module/components/block-tools/block-popover.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -4
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +4 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +96 -8
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +3 -2
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +16 -9
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors/utils.js +9 -3
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +26 -63
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +13 -10
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/copy-handler/index.js +9 -3
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js +2 -2
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/duotone-control/index.js +43 -39
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/editor-styles/index.js +7 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +40 -12
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-sizes/index.native.js +3 -1
- package/build-module/components/font-sizes/index.native.js.map +1 -1
- package/build-module/components/iframe/index.js +47 -65
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build-module/components/image-editor/constants.js +7 -0
- package/build-module/components/image-editor/constants.js.map +1 -0
- package/build-module/components/image-editor/context.js +44 -0
- package/build-module/components/image-editor/context.js.map +1 -0
- package/build-module/components/image-editor/cropper.js +69 -0
- package/build-module/components/image-editor/cropper.js.map +1 -0
- package/build-module/components/image-editor/form-controls.js +26 -0
- package/build-module/components/image-editor/form-controls.js.map +1 -0
- package/build-module/components/image-editor/index.js +37 -0
- package/build-module/components/image-editor/index.js.map +1 -0
- package/build-module/components/image-editor/rotation-button.js +26 -0
- package/build-module/components/image-editor/rotation-button.js.map +1 -0
- package/build-module/components/image-editor/use-save-image.js +70 -0
- package/build-module/components/image-editor/use-save-image.js.map +1 -0
- package/build-module/components/image-editor/use-transform-image.js +127 -0
- package/build-module/components/image-editor/use-transform-image.js.map +1 -0
- package/build-module/components/image-editor/zoom-dropdown.js +43 -0
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
- package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build-module/components/index.js +5 -6
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +2 -3
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +10 -1
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +29 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +41 -5
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +75 -36
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js +2 -5
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
- package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build-module/components/inserter/index.js +12 -4
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +1 -7
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +2 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js +17 -17
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/pattern-panel.js +21 -13
- package/build-module/components/inserter/pattern-panel.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +8 -2
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inserter/tabs.native.js +1 -4
- package/build-module/components/inserter/tabs.native.js.map +1 -1
- package/build-module/components/inserter/utils.native.js +35 -0
- package/build-module/components/inserter/utils.native.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build-module/components/inspector-controls/fill.js +50 -0
- package/build-module/components/inspector-controls/fill.js.map +1 -0
- package/build-module/components/inspector-controls/{index.native.js → fill.native.js} +16 -18
- package/build-module/components/inspector-controls/fill.native.js.map +1 -0
- package/build-module/components/inspector-controls/groups.js +16 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -0
- package/build-module/components/inspector-controls/index.js +16 -17
- package/build-module/components/inspector-controls/index.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +52 -0
- package/build-module/components/inspector-controls/slot.js.map +1 -0
- package/build-module/components/inspector-controls/slot.native.js +27 -0
- package/build-module/components/inspector-controls/slot.native.js.map +1 -0
- package/build-module/components/letter-spacing-control/index.js +9 -6
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.native.js +29 -0
- package/build-module/components/line-height-control/index.native.js.map +1 -0
- package/build-module/components/link-control/index.js +93 -35
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +46 -17
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +24 -7
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +1 -18
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block.js +56 -71
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +102 -78
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +55 -27
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -2
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/list-item.js +3 -2
- package/build-module/components/list-view/list-item.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +35 -21
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +2 -1
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +5 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +1 -4
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/observe-typing/index.js +1 -1
- package/build-module/components/observe-typing/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +29 -2
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
- package/build-module/components/rich-text/format-edit.js +28 -3
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +29 -11
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +22 -6
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +43 -6
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/input-event.js +24 -22
- package/build-module/components/rich-text/input-event.js.map +1 -1
- package/build-module/components/rich-text/shortcut.js +22 -9
- package/build-module/components/rich-text/shortcut.js.map +1 -1
- package/build-module/components/rich-text/use-input-events.js +19 -0
- package/build-module/components/rich-text/use-input-events.js.map +1 -0
- package/build-module/components/rich-text/use-paste-handler.js +44 -10
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/rich-text/use-shortcuts.js +19 -0
- package/build-module/components/rich-text/use-shortcuts.js.map +1 -0
- package/build-module/components/rich-text/utils.js +20 -0
- package/build-module/components/rich-text/utils.js.map +1 -1
- package/build-module/components/typewriter/index.js +1 -1
- package/build-module/components/typewriter/index.js.map +1 -1
- package/build-module/components/url-input/index.js +25 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-display-block-controls/index.js +5 -7
- package/build-module/components/use-display-block-controls/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +13 -10
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -2
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +2 -10
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/use-setting/index.js +48 -14
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +6 -0
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +18 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +15 -15
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +5 -3
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border-color.js +10 -5
- package/build-module/hooks/border-color.js.map +1 -1
- package/build-module/hooks/border.js +5 -5
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +6 -3
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +6 -4
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/compat.js +20 -0
- package/build-module/hooks/compat.js.map +1 -0
- package/build-module/hooks/custom-class-name.js +4 -2
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/dimensions.js +57 -26
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +62 -18
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-appearance.js +45 -6
- package/build-module/hooks/font-appearance.js.map +1 -1
- package/build-module/hooks/font-family.js +117 -33
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +47 -9
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +140 -0
- package/build-module/hooks/gap.js.map +1 -0
- package/build-module/hooks/index.js +3 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +2 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/layout.js +47 -30
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/letter-spacing.js +41 -8
- package/build-module/hooks/letter-spacing.js.map +1 -1
- package/build-module/hooks/line-height.js +41 -8
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/lock.js +33 -0
- package/build-module/hooks/lock.js.map +1 -0
- package/build-module/hooks/margin.js +7 -4
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +7 -4
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +39 -11
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/text-decoration.js +38 -6
- package/build-module/hooks/text-decoration.js.map +1 -1
- package/build-module/hooks/text-transform.js +38 -6
- package/build-module/hooks/text-transform.js.map +1 -1
- package/build-module/hooks/typography.js +118 -19
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/typography.native.js +41 -0
- package/build-module/hooks/typography.native.js.map +1 -0
- package/build-module/hooks/use-cached-truthy.js +21 -0
- package/build-module/hooks/use-cached-truthy.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +210 -12
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +99 -7
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +294 -242
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +2 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/defaults.native.js +15 -1
- package/build-module/store/defaults.native.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 +167 -115
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +189 -104
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/index.js +1 -0
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +285 -0
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -0
- package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
- package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-style/default-editor-styles-rtl.css +114 -0
- package/build-style/default-editor-styles.css +114 -0
- package/build-style/style-rtl.css +292 -181
- package/build-style/style.css +292 -181
- package/build-types/components/block-context/index.d.ts +1 -1
- package/build-types/components/block-context/index.d.ts.map +1 -1
- package/package.json +28 -27
- package/src/components/autocomplete/index.js +5 -2
- package/src/components/block-actions/index.js +9 -5
- package/src/components/block-alignment-control/style.scss +5 -0
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
- package/src/components/block-alignment-control/test/index.native.js +37 -0
- package/src/components/block-alignment-control/ui.js +98 -27
- package/src/components/block-alignment-control/use-available-alignments.js +31 -10
- package/src/components/block-content-overlay/index.js +3 -6
- package/src/components/block-content-overlay/style.scss +9 -21
- package/src/components/block-controls/fill.js +7 -4
- package/src/components/block-controls/groups.js +2 -0
- package/src/components/block-controls/hook.js +44 -0
- package/src/components/block-draggable/style.scss +19 -4
- package/src/components/block-edit/context.js +4 -3
- package/src/components/block-edit/edit.js +1 -4
- package/src/components/block-icon/index.js +4 -1
- package/src/components/block-icon/index.native.js +11 -12
- package/src/components/block-inspector/index.js +19 -9
- package/src/components/block-list/block-html.js +5 -0
- package/src/components/block-list/block-list-item.native.js +34 -11
- package/src/components/block-list/block-list-item.native.scss +4 -0
- package/src/components/block-list/block-selection-button.native.js +8 -5
- package/src/components/block-list/block.js +13 -9
- package/src/components/block-list/block.native.js +7 -5
- package/src/components/block-list/grid-item.native.js +58 -0
- package/src/components/block-list/index.js +33 -27
- package/src/components/block-list/index.native.js +10 -4
- package/src/components/block-list/style.native.scss +0 -1
- package/src/components/block-list/style.scss +15 -0
- package/src/components/block-list/use-block-props/index.js +4 -7
- package/src/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
- package/src/components/block-list/use-block-props/use-block-default-class-name.js +2 -8
- package/src/components/block-list/use-block-props/use-multi-selection.js +30 -4
- package/src/components/block-list/use-in-between-inserter.js +9 -0
- package/src/components/block-list-appender/index.js +8 -0
- package/src/components/block-mover/index.js +4 -4
- package/src/components/block-mover/index.native.js +4 -4
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
- package/src/components/block-mover/test/index.native.js +26 -28
- package/src/components/block-navigation/dropdown.js +0 -1
- package/src/components/block-patterns-list/index.js +1 -8
- package/src/components/block-patterns-list/style.scss +22 -12
- package/src/components/block-preview/README.md +1 -1
- package/src/components/block-preview/auto.js +36 -18
- package/src/components/block-preview/style.scss +0 -20
- package/src/components/block-settings/container.native.js +7 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
- package/src/components/block-settings-menu-controls/index.js +9 -6
- package/src/components/block-styles/index.js +6 -1
- package/src/components/block-styles/preview.native.js +2 -2
- package/src/components/block-switcher/block-styles-menu.js +1 -1
- package/src/components/block-switcher/index.js +7 -3
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-switcher/test/index.js +3 -0
- package/src/components/block-title/index.js +5 -2
- package/src/components/block-toolbar/index.js +4 -0
- package/src/components/block-tools/block-contextual-toolbar.js +7 -5
- package/src/components/block-tools/block-popover.js +8 -8
- package/src/components/block-tools/block-selection-button.js +2 -4
- package/src/components/block-tools/index.js +5 -2
- package/src/components/block-tools/insertion-point.js +97 -9
- package/src/components/block-tools/style.scss +4 -35
- package/src/components/block-types-list/index.native.js +8 -2
- package/src/components/block-types-list/style.scss +0 -3
- package/src/components/block-variation-picker/README.md +47 -14
- package/src/components/block-variation-picker/style.native.scss +4 -0
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/test/utils.js +216 -0
- package/src/components/border-radius-control/utils.js +18 -10
- package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
- package/src/components/colors/test/utils.js +41 -0
- package/src/components/colors/utils.js +9 -5
- package/src/components/colors-gradients/control.js +70 -110
- package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
- package/src/components/colors-gradients/style.scss +10 -18
- package/src/components/colors-gradients/test/control.js +41 -66
- package/src/components/contrast-checker/index.js +14 -10
- package/src/components/copy-handler/index.js +6 -1
- package/src/components/default-block-appender/index.js +2 -2
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
- package/src/components/duotone-control/index.js +49 -41
- package/src/components/duotone-control/style.scss +27 -12
- package/src/components/editor-styles/index.js +8 -4
- package/src/components/font-appearance-control/index.js +62 -24
- package/src/components/font-appearance-control/style.scss +1 -1
- package/src/components/font-sizes/index.native.js +7 -1
- package/src/components/iframe/index.js +64 -75
- package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
- package/src/components/image-editor/constants.js +6 -0
- package/src/components/image-editor/context.js +56 -0
- package/src/components/image-editor/cropper.js +74 -0
- package/src/components/image-editor/form-controls.js +22 -0
- package/src/components/image-editor/index.js +52 -0
- package/src/components/image-editor/rotation-button.js +24 -0
- package/src/components/image-editor/use-save-image.js +97 -0
- package/src/components/image-editor/use-transform-image.js +162 -0
- package/src/components/image-editor/zoom-dropdown.js +40 -0
- package/src/components/image-size-control/use-dimension-handler.js +18 -1
- package/src/components/index.js +10 -8
- package/src/components/index.native.js +5 -3
- package/src/components/inner-blocks/button-block-appender.js +9 -0
- package/src/components/inner-blocks/index.js +43 -14
- package/src/components/inner-blocks/index.native.js +48 -4
- package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
- package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
- package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
- package/src/components/inserter/block-patterns-tab.js +107 -73
- package/src/components/inserter/block-types-tab.native.js +3 -6
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
- package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
- package/src/components/inserter/index.js +15 -3
- package/src/components/inserter/index.native.js +2 -19
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +4 -1
- package/src/components/inserter/menu.native.js +18 -15
- package/src/components/inserter/pattern-panel.js +33 -16
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/quick-inserter.js +1 -1
- package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
- package/src/components/inserter/search-results.native.js +8 -1
- package/src/components/inserter/style.native.scss +8 -5
- package/src/components/inserter/style.scss +80 -16
- package/src/components/inserter/tabs.native.js +1 -7
- package/src/components/inserter/test/block-types-tab.native.js +3 -2
- package/src/components/inserter/test/fixtures/index.native.js +12 -0
- package/src/components/inserter/utils.native.js +35 -0
- package/src/components/inserter-list-item/style.scss +4 -2
- package/src/components/inspector-controls/README.md +43 -198
- package/src/components/inspector-controls/block-support-slot-container.js +10 -0
- package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
- package/src/components/inspector-controls/fill.js +53 -0
- package/src/components/inspector-controls/{index.native.js → fill.native.js} +14 -14
- package/src/components/inspector-controls/groups.js +22 -0
- package/src/components/inspector-controls/index.js +16 -18
- package/src/components/inspector-controls/slot.js +45 -0
- package/src/components/inspector-controls/slot.native.js +22 -0
- package/src/components/letter-spacing-control/index.js +12 -6
- package/src/components/line-height-control/index.native.js +25 -0
- package/src/components/link-control/README.md +47 -14
- package/src/components/link-control/index.js +102 -31
- package/src/components/link-control/link-preview.js +53 -20
- package/src/components/link-control/search-input.js +21 -7
- package/src/components/link-control/style.scss +66 -19
- package/src/components/link-control/test/index.js +311 -4
- package/src/components/list-view/block-contents.js +17 -38
- package/src/components/list-view/block.js +73 -84
- package/src/components/list-view/branch.js +123 -94
- package/src/components/list-view/index.js +95 -37
- package/src/components/list-view/leaf.js +2 -2
- package/src/components/list-view/list-item.js +5 -4
- package/src/components/list-view/style.scss +70 -33
- package/src/components/list-view/use-list-view-client-ids.js +9 -68
- package/src/components/media-placeholder/README.md +9 -0
- package/src/components/media-placeholder/index.js +31 -20
- package/src/components/media-placeholder/index.native.js +2 -1
- package/src/components/media-placeholder/style.scss +2 -0
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +4 -1
- package/src/components/media-replace-flow/style.scss +11 -12
- package/src/components/media-upload/README.md +1 -1
- package/src/components/navigable-toolbar/index.js +1 -4
- package/src/components/observe-typing/index.js +3 -2
- package/src/components/plain-text/index.native.js +26 -4
- package/src/components/rich-text/embed-handler-picker.native.js +68 -0
- package/src/components/rich-text/format-edit.js +36 -2
- package/src/components/rich-text/format-toolbar/index.js +25 -6
- package/src/components/rich-text/index.js +38 -12
- package/src/components/rich-text/index.native.js +37 -4
- package/src/components/rich-text/input-event.js +21 -20
- package/src/components/rich-text/shortcut.js +24 -9
- package/src/components/rich-text/style.scss +7 -5
- package/src/components/rich-text/use-input-events.js +19 -0
- package/src/components/rich-text/use-paste-handler.js +47 -12
- package/src/components/rich-text/use-shortcuts.js +19 -0
- package/src/components/rich-text/utils.js +16 -0
- package/src/components/skip-to-selected-block/README.md +39 -0
- package/src/components/tool-selector/style.scss +5 -5
- package/src/components/typewriter/index.js +3 -2
- package/src/components/url-input/index.js +26 -10
- package/src/components/use-display-block-controls/index.js +7 -10
- package/src/components/use-moving-animation/index.js +9 -8
- package/src/components/use-on-block-drop/index.js +5 -1
- package/src/components/use-resize-canvas/index.js +2 -17
- package/src/components/use-setting/index.js +48 -16
- package/src/components/writing-flow/use-multi-selection.js +6 -0
- package/src/components/writing-flow/use-tab-nav.js +21 -11
- package/src/default-editor-styles.scss +24 -0
- package/src/hooks/align.js +28 -20
- package/src/hooks/anchor.js +5 -5
- package/src/hooks/border-color.js +12 -1
- package/src/hooks/border.js +8 -11
- package/src/hooks/color-panel.js +4 -1
- package/src/hooks/color.js +11 -4
- package/src/hooks/compat.js +23 -0
- package/src/hooks/custom-class-name.js +3 -3
- package/src/hooks/dimensions.js +94 -50
- package/src/hooks/duotone.js +70 -21
- package/src/hooks/font-appearance.js +38 -7
- package/src/hooks/font-family.js +129 -33
- package/src/hooks/font-size.js +42 -6
- package/src/hooks/gap.js +146 -0
- package/src/hooks/index.js +3 -0
- package/src/hooks/index.native.js +2 -0
- package/src/hooks/layout.js +82 -56
- package/src/hooks/layout.scss +8 -0
- package/src/hooks/letter-spacing.js +37 -8
- package/src/hooks/line-height.js +37 -9
- package/src/hooks/lock.js +34 -0
- package/src/hooks/margin.js +13 -3
- package/src/hooks/padding.js +13 -3
- package/src/hooks/style.js +57 -18
- package/src/hooks/test/style.js +4 -0
- package/src/hooks/text-decoration.js +34 -6
- package/src/hooks/text-transform.js +34 -6
- package/src/hooks/typography.js +167 -21
- package/src/hooks/typography.native.js +64 -0
- package/src/hooks/typography.scss +16 -0
- package/src/hooks/use-cached-truthy.js +20 -0
- package/src/index.js +1 -0
- package/src/layouts/flex.js +237 -14
- package/src/layouts/flow.js +81 -14
- package/src/store/actions.js +248 -378
- package/src/store/defaults.js +2 -0
- package/src/store/defaults.native.js +15 -0
- package/src/store/index.js +1 -2
- package/src/store/reducer.js +248 -145
- package/src/store/selectors.js +212 -158
- package/src/store/test/actions.js +407 -705
- package/src/store/test/reducer.js +184 -146
- package/src/store/test/selectors.js +197 -177
- package/src/style.scss +2 -15
- package/src/utils/index.js +1 -0
- package/src/utils/parse-css-unit-to-px.js +272 -0
- package/src/utils/test/parse-css-unit-to-px.js +166 -0
- package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
- package/src/utils/transform-styles/transforms/wrap.js +16 -0
- package/tsconfig.tsbuildinfo +1 -466
- package/build/components/block-list/head.js +0 -27
- package/build/components/block-list/head.js.map +0 -1
- package/build/components/duotone-control/duotone-picker-popover.js +0 -44
- package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build/components/inspector-advanced-controls/index.js +0 -46
- package/build/components/inspector-advanced-controls/index.js.map +0 -1
- package/build/components/inspector-controls/index.native.js.map +0 -1
- package/build/components/list-view/block-slot.js +0 -121
- package/build/components/list-view/block-slot.js.map +0 -1
- package/build/components/list-view/editor.js +0 -35
- package/build/components/list-view/editor.js.map +0 -1
- package/build/components/text-decoration-and-transform/index.js +0 -39
- package/build/components/text-decoration-and-transform/index.js.map +0 -1
- package/build/components/use-simulated-media-query/index.js +0 -137
- package/build/components/use-simulated-media-query/index.js.map +0 -1
- package/build/store/controls.js +0 -44
- package/build/store/controls.js.map +0 -1
- package/build-module/components/block-list/head.js +0 -19
- package/build-module/components/block-list/head.js.map +0 -1
- package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
- package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build-module/components/inspector-advanced-controls/index.js +0 -36
- package/build-module/components/inspector-advanced-controls/index.js.map +0 -1
- package/build-module/components/inspector-controls/index.native.js.map +0 -1
- package/build-module/components/list-view/block-slot.js +0 -96
- package/build-module/components/list-view/block-slot.js.map +0 -1
- package/build-module/components/list-view/editor.js +0 -25
- package/build-module/components/list-view/editor.js.map +0 -1
- package/build-module/components/text-decoration-and-transform/index.js +0 -30
- package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
- package/build-module/components/use-simulated-media-query/index.js +0 -126
- package/build-module/components/use-simulated-media-query/index.js.map +0 -1
- package/build-module/store/controls.js +0 -32
- package/build-module/store/controls.js.map +0 -1
- package/src/components/block-list/head.js +0 -18
- package/src/components/duotone-control/duotone-picker-popover.js +0 -36
- package/src/components/inspector-advanced-controls/README.md +0 -72
- package/src/components/inspector-advanced-controls/index.js +0 -32
- package/src/components/list-view/block-slot.js +0 -120
- package/src/components/list-view/editor.js +0 -29
- package/src/components/text-decoration-and-transform/index.js +0 -36
- package/src/components/text-decoration-and-transform/style.scss +0 -3
- package/src/components/use-simulated-media-query/index.js +0 -144
- package/src/store/controls.js +0 -39
|
@@ -61,6 +61,8 @@ var _store = require("../../store");
|
|
|
61
61
|
|
|
62
62
|
var _utils = require("./utils");
|
|
63
63
|
|
|
64
|
+
var _embedHandlerPicker = _interopRequireDefault(require("./embed-handler-picker"));
|
|
65
|
+
|
|
64
66
|
var _shortcut = require("./shortcut");
|
|
65
67
|
|
|
66
68
|
var _toolbarButton = require("./toolbar-button");
|
|
@@ -137,6 +139,7 @@ function RichTextWrapper({
|
|
|
137
139
|
isSelected: blockIsSelected
|
|
138
140
|
} = (0, _blockEdit.useBlockEditContext)();
|
|
139
141
|
const nativeProps = (0, _useNativeProps.useNativeProps)();
|
|
142
|
+
const embedHandlerPickerRef = (0, _element.useRef)();
|
|
140
143
|
|
|
141
144
|
const selector = select => {
|
|
142
145
|
const {
|
|
@@ -145,7 +148,7 @@ function RichTextWrapper({
|
|
|
145
148
|
getSelectionEnd,
|
|
146
149
|
getSettings,
|
|
147
150
|
didAutomaticChange,
|
|
148
|
-
|
|
151
|
+
getBlock,
|
|
149
152
|
isMultiSelecting,
|
|
150
153
|
hasMultiSelection
|
|
151
154
|
} = select(_store.store);
|
|
@@ -168,8 +171,7 @@ function RichTextWrapper({
|
|
|
168
171
|
// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.
|
|
169
172
|
// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.
|
|
170
173
|
// This apparently assumes functionality the BlockHlder actually
|
|
171
|
-
const block = clientId &&
|
|
172
|
-
|
|
174
|
+
const block = clientId && getBlock(clientId);
|
|
173
175
|
const shouldBlurOnUnmount = block && isSelected && (0, _blocks.isUnmodifiedDefaultBlock)(block);
|
|
174
176
|
extraProps = {
|
|
175
177
|
shouldBlurOnUnmount
|
|
@@ -418,7 +420,18 @@ function RichTextWrapper({
|
|
|
418
420
|
mode = 'BLOCKS';
|
|
419
421
|
}
|
|
420
422
|
|
|
421
|
-
|
|
423
|
+
const isPastedURL = (0, _url.isURL)(plainText.trim());
|
|
424
|
+
|
|
425
|
+
const presentEmbedHandlerPicker = () => {
|
|
426
|
+
var _embedHandlerPickerRe;
|
|
427
|
+
|
|
428
|
+
return (_embedHandlerPickerRe = embedHandlerPickerRef.current) === null || _embedHandlerPickerRe === void 0 ? void 0 : _embedHandlerPickerRe.presentPicker({
|
|
429
|
+
createEmbed: () => onReplace(content, content.length - 1, -1),
|
|
430
|
+
createLink: () => (0, _utils.createLinkInParagraph)(plainText.trim(), onReplace)
|
|
431
|
+
});
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
if (__unstableEmbedURLOnPaste && (0, _richText.isEmpty)(value) && isPastedURL) {
|
|
422
435
|
mode = 'BLOCKS';
|
|
423
436
|
}
|
|
424
437
|
|
|
@@ -443,9 +456,32 @@ function RichTextWrapper({
|
|
|
443
456
|
|
|
444
457
|
onChange((0, _richText.insert)(value, valueToInsert));
|
|
445
458
|
} else if (content.length > 0) {
|
|
459
|
+
// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL
|
|
460
|
+
// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.
|
|
461
|
+
const canPasteEmbed = isPastedURL && content.length === 1 && content[0].name === 'core/embed';
|
|
462
|
+
|
|
446
463
|
if (onReplace && (0, _richText.isEmpty)(value)) {
|
|
464
|
+
if (canPasteEmbed) {
|
|
465
|
+
onChange((0, _richText.insert)(value, (0, _richText.create)({
|
|
466
|
+
text: plainText
|
|
467
|
+
})));
|
|
468
|
+
|
|
469
|
+
if (__unstableEmbedURLOnPaste) {
|
|
470
|
+
presentEmbedHandlerPicker();
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
|
|
447
476
|
onReplace(content, content.length - 1, -1);
|
|
448
477
|
} else {
|
|
478
|
+
if (canPasteEmbed) {
|
|
479
|
+
onChange((0, _richText.insert)(value, (0, _richText.create)({
|
|
480
|
+
text: plainText
|
|
481
|
+
})));
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
|
|
449
485
|
splitValue(value, content);
|
|
450
486
|
}
|
|
451
487
|
}
|
|
@@ -580,7 +616,9 @@ function RichTextWrapper({
|
|
|
580
616
|
onKeyDown(event);
|
|
581
617
|
editableProps.onKeyDown(event);
|
|
582
618
|
}
|
|
583
|
-
}))))
|
|
619
|
+
}))), (0, _element.createElement)(_embedHandlerPicker.default, {
|
|
620
|
+
ref: embedHandlerPickerRef
|
|
621
|
+
})));
|
|
584
622
|
|
|
585
623
|
if (!wrapperClassName) {
|
|
586
624
|
return content;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["wrapperClasses","classes","RichTextWrapper","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","selector","select","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","__unstableGetBlockWithoutInnerBlocks","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","onEnter","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","trim","valueToInsert","LINE_SEPARATOR","inputRule","valueToFormat","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","current","listBoxId","activeId","onKeyDown","className","event","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty","defaultProps","format"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n} from './utils';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst nativeProps = useNativeProps();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tisCaretWithinFormattedText,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually\n\t\t\tconst block =\n\t\t\t\tclientId && __unstableGetBlockWithoutInnerBlocks( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t/// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start, end } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd && start === end && end === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisURL( plainText.trim() )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat( slice( value, start, text.length ) );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\tconst content = (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\t{ ...nativeProps }\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\trootTagsToEliminate={ rootTagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["wrapperClasses","classes","RichTextWrapper","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","embedHandlerPickerRef","selector","select","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","onEnter","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","LINE_SEPARATOR","canPasteEmbed","name","inputRule","valueToFormat","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty","defaultProps","format"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst nativeProps = useNativeProps();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tisCaretWithinFormattedText,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t/// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start, end } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd && start === end && end === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat( slice( value, start, text.length ) );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\tconst content = (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\t{ ...nativeProps }\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\trootTagsToEliminate={ rootTagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
|
|
@@ -3,38 +3,39 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.__unstableRichTextInputEvent =
|
|
6
|
+
exports.__unstableRichTextInputEvent = __unstableRichTextInputEvent;
|
|
7
7
|
|
|
8
8
|
var _element = require("@wordpress/element");
|
|
9
9
|
|
|
10
|
+
var _ = require("./");
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* WordPress dependencies
|
|
12
14
|
*/
|
|
13
|
-
class __unstableRichTextInputEvent extends _element.Component {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.onInput = this.onInput.bind(this);
|
|
17
|
-
}
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Internal dependencies
|
|
18
|
+
*/
|
|
19
|
+
function __unstableRichTextInputEvent({
|
|
20
|
+
inputType,
|
|
21
|
+
onInput
|
|
22
|
+
}) {
|
|
23
|
+
const callbacks = (0, _element.useContext)(_.inputEventContext);
|
|
24
|
+
const onInputRef = (0, _element.useRef)();
|
|
25
|
+
onInputRef.current = onInput;
|
|
26
|
+
(0, _element.useEffect)(() => {
|
|
27
|
+
function callback(event) {
|
|
28
|
+
if (event.inputType === inputType) {
|
|
29
|
+
onInputRef.current();
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
}
|
|
22
32
|
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
componentDidMount() {
|
|
26
|
-
document.addEventListener('input', this.onInput, true);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
componentWillUnmount() {
|
|
30
|
-
document.removeEventListener('input', this.onInput, true);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
render() {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
33
|
|
|
34
|
+
callbacks.current.add(callback);
|
|
35
|
+
return () => {
|
|
36
|
+
callbacks.current.delete(callback);
|
|
37
|
+
};
|
|
38
|
+
}, [inputType]);
|
|
39
|
+
return null;
|
|
37
40
|
}
|
|
38
|
-
|
|
39
|
-
exports.__unstableRichTextInputEvent = __unstableRichTextInputEvent;
|
|
40
41
|
//# sourceMappingURL=input-event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/input-event.js"],"names":["__unstableRichTextInputEvent","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/input-event.js"],"names":["__unstableRichTextInputEvent","inputType","onInput","callbacks","inputEventContext","onInputRef","current","callback","event","preventDefault","add","delete"],"mappings":";;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;AAGO,SAASA,4BAAT,CAAuC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAvC,EAAgE;AACtE,QAAMC,SAAS,GAAG,yBAAYC,mBAAZ,CAAlB;AACA,QAAMC,UAAU,GAAG,sBAAnB;AACAA,EAAAA,UAAU,CAACC,OAAX,GAAqBJ,OAArB;AAEA,0BAAW,MAAM;AAChB,aAASK,QAAT,CAAmBC,KAAnB,EAA2B;AAC1B,UAAKA,KAAK,CAACP,SAAN,KAAoBA,SAAzB,EAAqC;AACpCI,QAAAA,UAAU,CAACC,OAAX;AACAE,QAAAA,KAAK,CAACC,cAAN;AACA;AACD;;AAEDN,IAAAA,SAAS,CAACG,OAAV,CAAkBI,GAAlB,CAAuBH,QAAvB;AACA,WAAO,MAAM;AACZJ,MAAAA,SAAS,CAACG,OAAV,CAAkBK,MAAlB,CAA0BJ,QAA1B;AACA,KAFD;AAGA,GAZD,EAYG,CAAEN,SAAF,CAZH;AAcA,SAAO,IAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useContext, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { inputEventContext } from './';\n\nexport function __unstableRichTextInputEvent( { inputType, onInput } ) {\n\tconst callbacks = useContext( inputEventContext );\n\tconst onInputRef = useRef();\n\tonInputRef.current = onInput;\n\n\tuseEffect( () => {\n\t\tfunction callback( event ) {\n\t\t\tif ( event.inputType === inputType ) {\n\t\t\t\tonInputRef.current();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tcallbacks.current.add( callback );\n\t\treturn () => {\n\t\t\tcallbacks.current.delete( callback );\n\t\t};\n\t}, [ inputType ] );\n\n\treturn null;\n}\n"]}
|
|
@@ -5,26 +5,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.RichTextShortcut = RichTextShortcut;
|
|
7
7
|
|
|
8
|
-
var _compose = require("@wordpress/compose");
|
|
9
|
-
|
|
10
8
|
var _keycodes = require("@wordpress/keycodes");
|
|
11
9
|
|
|
10
|
+
var _element = require("@wordpress/element");
|
|
11
|
+
|
|
12
|
+
var _ = require("./");
|
|
13
|
+
|
|
12
14
|
/**
|
|
13
15
|
* WordPress dependencies
|
|
14
16
|
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
15
21
|
function RichTextShortcut({
|
|
16
22
|
character,
|
|
17
23
|
type,
|
|
18
24
|
onUse
|
|
19
25
|
}) {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
const keyboardShortcuts = (0, _element.useContext)(_.keyboardShortcutContext);
|
|
27
|
+
const onUseRef = (0, _element.useRef)();
|
|
28
|
+
onUseRef.current = onUse;
|
|
29
|
+
(0, _element.useEffect)(() => {
|
|
30
|
+
function callback(event) {
|
|
31
|
+
if (_keycodes.isKeyboardEvent[type](event, character)) {
|
|
32
|
+
onUseRef.current();
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
24
36
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
keyboardShortcuts.current.add(callback);
|
|
38
|
+
return () => {
|
|
39
|
+
keyboardShortcuts.current.delete(callback);
|
|
40
|
+
};
|
|
41
|
+
}, [character, type]);
|
|
28
42
|
return null;
|
|
29
43
|
}
|
|
30
44
|
//# sourceMappingURL=shortcut.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/shortcut.js"],"names":["RichTextShortcut","character","type","onUse","callback","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/shortcut.js"],"names":["RichTextShortcut","character","type","onUse","keyboardShortcuts","keyboardShortcutContext","onUseRef","current","callback","event","isKeyboardEvent","preventDefault","add","delete"],"mappings":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGO,SAASA,gBAAT,CAA2B;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,IAAb;AAAmBC,EAAAA;AAAnB,CAA3B,EAAwD;AAC9D,QAAMC,iBAAiB,GAAG,yBAAYC,yBAAZ,CAA1B;AACA,QAAMC,QAAQ,GAAG,sBAAjB;AACAA,EAAAA,QAAQ,CAACC,OAAT,GAAmBJ,KAAnB;AAEA,0BAAW,MAAM;AAChB,aAASK,QAAT,CAAmBC,KAAnB,EAA2B;AAC1B,UAAKC,0BAAiBR,IAAjB,EAAyBO,KAAzB,EAAgCR,SAAhC,CAAL,EAAmD;AAClDK,QAAAA,QAAQ,CAACC,OAAT;AACAE,QAAAA,KAAK,CAACE,cAAN;AACA;AACD;;AAEDP,IAAAA,iBAAiB,CAACG,OAAlB,CAA0BK,GAA1B,CAA+BJ,QAA/B;AACA,WAAO,MAAM;AACZJ,MAAAA,iBAAiB,CAACG,OAAlB,CAA0BM,MAA1B,CAAkCL,QAAlC;AACA,KAFD;AAGA,GAZD,EAYG,CAAEP,SAAF,EAAaC,IAAb,CAZH;AAcA,SAAO,IAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isKeyboardEvent } from '@wordpress/keycodes';\nimport { useEffect, useContext, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { keyboardShortcutContext } from './';\n\nexport function RichTextShortcut( { character, type, onUse } ) {\n\tconst keyboardShortcuts = useContext( keyboardShortcutContext );\n\tconst onUseRef = useRef();\n\tonUseRef.current = onUse;\n\n\tuseEffect( () => {\n\t\tfunction callback( event ) {\n\t\t\tif ( isKeyboardEvent[ type ]( event, character ) ) {\n\t\t\t\tonUseRef.current();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tkeyboardShortcuts.current.add( callback );\n\t\treturn () => {\n\t\t\tkeyboardShortcuts.current.delete( callback );\n\t\t};\n\t}, [ character, type ] );\n\n\treturn null;\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useInputEvents = useInputEvents;
|
|
7
|
+
|
|
8
|
+
var _compose = require("@wordpress/compose");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* WordPress dependencies
|
|
12
|
+
*/
|
|
13
|
+
function useInputEvents(inputEvents) {
|
|
14
|
+
return (0, _compose.useRefEffect)(element => {
|
|
15
|
+
function onInput(event) {
|
|
16
|
+
for (const keyboardShortcut of inputEvents.current) {
|
|
17
|
+
keyboardShortcut(event);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
element.addEventListener('input', onInput);
|
|
22
|
+
return () => {
|
|
23
|
+
element.removeEventListener('input', onInput);
|
|
24
|
+
};
|
|
25
|
+
}, []);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=use-input-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-events.js"],"names":["useInputEvents","inputEvents","element","onInput","event","keyboardShortcut","current","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;AAGO,SAASA,cAAT,CAAyBC,WAAzB,EAAuC;AAC7C,SAAO,2BAAgBC,OAAF,IAAe;AACnC,aAASC,OAAT,CAAkBC,KAAlB,EAA0B;AACzB,WAAM,MAAMC,gBAAZ,IAAgCJ,WAAW,CAACK,OAA5C,EAAsD;AACrDD,QAAAA,gBAAgB,CAAED,KAAF,CAAhB;AACA;AACD;;AAEDF,IAAAA,OAAO,CAACK,gBAAR,CAA0B,OAA1B,EAAmCJ,OAAnC;AACA,WAAO,MAAM;AACZD,MAAAA,OAAO,CAACM,mBAAR,CAA6B,OAA7B,EAAsCL,OAAtC;AACA,KAFD;AAGA,GAXM,EAWJ,EAXI,CAAP;AAYA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nexport function useInputEvents( inputEvents ) {\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onInput( event ) {\n\t\t\tfor ( const keyboardShortcut of inputEvents.current ) {\n\t\t\t\tkeyboardShortcut( event );\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t};\n\t}, [] );\n}\n"]}
|
|
@@ -30,6 +30,26 @@ var _splitValue = require("./split-value");
|
|
|
30
30
|
/**
|
|
31
31
|
* Internal dependencies
|
|
32
32
|
*/
|
|
33
|
+
|
|
34
|
+
/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Replaces line separators with line breaks if not multiline.
|
|
38
|
+
* Replaces line breaks with line separators if multiline.
|
|
39
|
+
*
|
|
40
|
+
* @param {RichTextValue} value Value to adjust.
|
|
41
|
+
* @param {boolean} isMultiline Whether to adjust to multiline or not.
|
|
42
|
+
*
|
|
43
|
+
* @return {RichTextValue} Adjusted value.
|
|
44
|
+
*/
|
|
45
|
+
function adjustLines(value, isMultiline) {
|
|
46
|
+
if (isMultiline) {
|
|
47
|
+
return (0, _richText.replace)(value, /\n+/g, _richText.__UNSTABLE_LINE_SEPARATOR);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return (0, _richText.replace)(value, new RegExp(_richText.__UNSTABLE_LINE_SEPARATOR, 'g'), '\n');
|
|
51
|
+
}
|
|
52
|
+
|
|
33
53
|
function usePasteHandler(props) {
|
|
34
54
|
const propsRef = (0, _element.useRef)(props);
|
|
35
55
|
propsRef.current = props;
|
|
@@ -76,8 +96,10 @@ function usePasteHandler(props) {
|
|
|
76
96
|
// behaviour.
|
|
77
97
|
return;
|
|
78
98
|
}
|
|
79
|
-
}
|
|
99
|
+
} // Remove Windows-specific metadata appended within copied HTML text.
|
|
100
|
+
|
|
80
101
|
|
|
102
|
+
html = removeWindowsFragments(html);
|
|
81
103
|
event.preventDefault(); // Allows us to ask for this information when we get a report.
|
|
82
104
|
|
|
83
105
|
window.console.log('Received HTML:\n\n', html);
|
|
@@ -113,12 +135,14 @@ function usePasteHandler(props) {
|
|
|
113
135
|
// pasted content and remove inline styles.
|
|
114
136
|
|
|
115
137
|
if (isInternal) {
|
|
116
|
-
const
|
|
138
|
+
const pastedMultilineTag = clipboardData.getData('rich-text-multi-line-tag') || undefined;
|
|
139
|
+
let pastedValue = (0, _richText.create)({
|
|
117
140
|
html,
|
|
118
|
-
multilineTag,
|
|
119
|
-
multilineWrapperTags:
|
|
141
|
+
multilineTag: pastedMultilineTag,
|
|
142
|
+
multilineWrapperTags: pastedMultilineTag === 'li' ? ['ul', 'ol'] : undefined,
|
|
120
143
|
preserveWhiteSpace
|
|
121
144
|
});
|
|
145
|
+
pastedValue = adjustLines(pastedValue, !!multilineTag);
|
|
122
146
|
(0, _utils.addActiveFormats)(pastedValue, value.activeFormats);
|
|
123
147
|
onChange((0, _richText.insert)(value, pastedValue));
|
|
124
148
|
return;
|
|
@@ -184,14 +208,11 @@ function usePasteHandler(props) {
|
|
|
184
208
|
if (typeof content === 'string') {
|
|
185
209
|
let valueToInsert = (0, _richText.create)({
|
|
186
210
|
html: content
|
|
187
|
-
});
|
|
188
|
-
(0, _utils.addActiveFormats)(valueToInsert, value.activeFormats); // If the content should be multiline, we should process text
|
|
211
|
+
}); // If the content should be multiline, we should process text
|
|
189
212
|
// separated by a line break as separate lines.
|
|
190
213
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
214
|
+
valueToInsert = adjustLines(valueToInsert, !!multilineTag);
|
|
215
|
+
(0, _utils.addActiveFormats)(valueToInsert, value.activeFormats);
|
|
195
216
|
onChange((0, _richText.insert)(value, valueToInsert));
|
|
196
217
|
} else if (content.length > 0) {
|
|
197
218
|
if (onReplace && (0, _richText.isEmpty)(value)) {
|
|
@@ -215,4 +236,18 @@ function usePasteHandler(props) {
|
|
|
215
236
|
};
|
|
216
237
|
}, []);
|
|
217
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Normalizes a given string of HTML to remove the Windows specific "Fragment" comments
|
|
241
|
+
* and any preceeding and trailing whitespace.
|
|
242
|
+
*
|
|
243
|
+
* @param {string} html the html to be normalized
|
|
244
|
+
* @return {string} the normalized html
|
|
245
|
+
*/
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
function removeWindowsFragments(html) {
|
|
249
|
+
const startReg = /.*<!--StartFragment-->/s;
|
|
250
|
+
const endReg = /<!--EndFragment-->.*/s;
|
|
251
|
+
return html.replace(startReg, '').replace(endReg, '');
|
|
252
|
+
}
|
|
218
253
|
//# sourceMappingURL=use-paste-handler.js.map
|