@wordpress/block-editor 8.1.2-next.f435e9e01b.0 → 8.2.1-next.a55ed9455a.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 -1
- package/README.md +6 -26
- package/build/autocompleters/link.js +78 -0
- package/build/autocompleters/link.js.map +1 -0
- package/build/components/autocomplete/index.js +3 -1
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +1 -1
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +4 -2
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-compare/index.js +2 -2
- package/build/components/block-compare/index.js.map +1 -1
- package/build/components/block-controls/index.js +1 -1
- package/build/components/block-controls/index.js.map +1 -1
- package/build/components/block-draggable/index.js +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-list/block-html.js +1 -1
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block-invalid-warning.js +1 -1
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js +4 -4
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js +4 -3
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.js +17 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +6 -6
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +5 -5
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -0
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +25 -27
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build/components/block-media-update-progress/index.native.js +4 -4
- package/build/components/block-media-update-progress/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +1 -1
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-mover/mover-description.js +4 -4
- package/build/components/block-mover/mover-description.js.map +1 -1
- package/build/components/block-mover/mover-description.native.js +5 -5
- package/build/components/block-mover/mover-description.native.js.map +1 -1
- package/build/components/block-settings/container.native.js +1 -5
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +7 -12
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/preview.native.js +1 -1
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-switcher/index.js +2 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/use-transformed-patterns.js +0 -1
- package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build/components/block-title/index.js +7 -62
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +94 -0
- package/build/components/block-title/use-block-display-title.js.map +1 -0
- package/build/components/block-toolbar/utils.js +9 -1
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-popover.js +1 -1
- package/build/components/block-tools/block-popover.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-types-list/index.native.js +1 -1
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -2
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +10 -6
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/contrast-checker/index.js +3 -3
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/copy-handler/index.js +3 -3
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +3 -3
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +38 -1
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +4 -4
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +1 -1
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/index.js +3 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +7 -7
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js +3 -3
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +20 -8
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-items.js +1 -1
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +28 -11
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +3 -3
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/line-height-control/index.js +63 -45
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/line-height-control/index.native.js +3 -1
- package/build/components/line-height-control/index.native.js.map +1 -1
- package/build/components/link-control/index.js +2 -2
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-results.js +2 -2
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/use-rich-url-data.js +1 -1
- package/build/components/link-control/use-rich-url-data.js.map +1 -1
- package/build/components/link-control/use-search-handler.js +2 -2
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/block-contents.js +8 -4
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block-select-button.js +2 -2
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +20 -9
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +2 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +49 -41
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +139 -0
- package/build/components/list-view/use-block-selection.js.map +1 -0
- package/build/components/list-view/use-list-view-expand-selected-item.js +60 -0
- package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -0
- package/build/components/list-view/utils.js +29 -1
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +7 -5
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +20 -24
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -3
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/media-upload-progress/index.native.js +1 -1
- package/build/components/media-upload-progress/index.native.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -3
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +3 -3
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +2 -2
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.native.js +1 -1
- package/build/components/rich-text/format-toolbar-container.native.js.map +1 -1
- package/build/components/rich-text/index.js +7 -12
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +3 -3
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +7 -12
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/url-input/index.js +11 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +1 -1
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +2 -2
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/writing-flow/index.js +1 -0
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +22 -24
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +3 -2
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +4 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +1 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +1 -1
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border.js +2 -14
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +2 -2
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/custom-class-name.js +40 -0
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/generated-class-name.js +3 -3
- package/build/hooks/generated-class-name.js.map +1 -1
- package/build/hooks/line-height.js +2 -0
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/lock.js +1 -1
- package/build/hooks/lock.js.map +1 -1
- package/build/hooks/style.js +32 -13
- package/build/hooks/style.js.map +1 -1
- package/build/layouts/flow.js +7 -5
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +55 -48
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +2 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/index.js +1 -2
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +13 -13
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +6 -6
- package/build/store/selectors.js.map +1 -1
- package/build/utils/index.js +0 -14
- package/build/utils/index.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +3 -3
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build/utils/pasting.js +91 -0
- package/build/utils/pasting.js.map +1 -0
- package/build/utils/transform-styles/ast/parse.js +5 -5
- package/build/utils/transform-styles/ast/parse.js.map +1 -1
- package/build/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
- package/build-module/autocompleters/link.js +64 -0
- package/build-module/autocompleters/link.js.map +1 -0
- package/build-module/components/autocomplete/index.js +2 -1
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +1 -1
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +4 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-compare/index.js +2 -2
- package/build-module/components/block-compare/index.js.map +1 -1
- package/build-module/components/block-controls/index.js +1 -1
- package/build-module/components/block-controls/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-list/block-html.js +1 -1
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block-invalid-warning.js +1 -1
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-list/block-list-item.native.js +4 -4
- package/build-module/components/block-list/block-list-item.native.js.map +1 -1
- package/build-module/components/block-list/block-selection-button.native.js +4 -3
- package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
- package/build-module/components/block-list/block.js +18 -4
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +7 -7
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +5 -5
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +2 -0
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +23 -28
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build-module/components/block-media-update-progress/index.native.js +4 -4
- package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-mover/mover-description.js +4 -4
- package/build-module/components/block-mover/mover-description.js.map +1 -1
- package/build-module/components/block-mover/mover-description.native.js +5 -5
- package/build-module/components/block-mover/mover-description.native.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +2 -6
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -13
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js +1 -1
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-switcher/index.js +2 -1
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build-module/components/block-title/index.js +7 -58
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +80 -0
- package/build-module/components/block-title/use-block-display-title.js.map +1 -0
- package/build-module/components/block-toolbar/utils.js +9 -1
- package/build-module/components/block-toolbar/utils.js.map +1 -1
- package/build-module/components/block-tools/block-popover.js +1 -1
- package/build-module/components/block-tools/block-popover.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +1 -1
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +3 -3
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +11 -7
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +3 -3
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/copy-handler/index.js +2 -2
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +3 -3
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +5 -4
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +4 -4
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +1 -1
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -3
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +7 -7
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js +3 -3
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +20 -8
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +1 -1
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +28 -11
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +3 -3
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +61 -45
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.native.js +3 -1
- package/build-module/components/line-height-control/index.native.js.map +1 -1
- package/build-module/components/link-control/index.js +2 -2
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-results.js +2 -2
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/use-rich-url-data.js +1 -1
- package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js +2 -2
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +8 -4
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +2 -2
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +20 -9
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +2 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +46 -42
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +123 -0
- package/build-module/components/list-view/use-block-selection.js.map +1 -0
- package/build-module/components/list-view/use-list-view-expand-selected-item.js +50 -0
- package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -0
- package/build-module/components/list-view/utils.js +25 -0
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +7 -5
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +22 -27
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -3
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/media-upload-progress/index.native.js +1 -1
- package/build-module/components/media-upload-progress/index.native.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -3
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +3 -3
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +2 -2
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.native.js +1 -1
- package/build-module/components/rich-text/format-toolbar-container.native.js.map +1 -1
- package/build-module/components/rich-text/index.js +7 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +3 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +6 -12
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/url-input/index.js +11 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +1 -1
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +2 -2
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +1 -0
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +21 -21
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +3 -2
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +4 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +1 -1
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +1 -1
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border.js +2 -14
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +2 -2
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +38 -0
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/generated-class-name.js +3 -3
- package/build-module/hooks/generated-class-name.js.map +1 -1
- package/build-module/hooks/line-height.js +2 -0
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/lock.js +1 -1
- package/build-module/hooks/lock.js.map +1 -1
- package/build-module/hooks/style.js +31 -13
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/layouts/flow.js +7 -5
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +52 -45
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +2 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/index.js +1 -2
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +13 -13
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +6 -6
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/index.js +0 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +3 -3
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/utils/pasting.js +80 -0
- package/build-module/utils/pasting.js.map +1 -0
- package/build-module/utils/transform-styles/ast/parse.js +5 -5
- package/build-module/utils/transform-styles/ast/parse.js.map +1 -1
- package/build-module/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
- package/build-style/style-rtl.css +10 -12
- package/build-style/style.css +10 -12
- package/package.json +27 -26
- package/src/autocompleters/link.js +62 -0
- package/src/autocompleters/style.scss +8 -0
- package/src/components/alignment-control/test/index.js +2 -2
- package/src/components/autocomplete/index.js +2 -0
- package/src/components/block-actions/index.js +1 -1
- package/src/components/block-alignment-control/test/index.js +1 -1
- package/src/components/block-breadcrumb/index.js +5 -2
- package/src/components/block-compare/index.js +2 -2
- package/src/components/block-controls/index.js +1 -1
- package/src/components/block-draggable/index.js +1 -1
- package/src/components/block-draggable/stories/index.js +1 -1
- package/src/components/block-edit/edit.js +1 -1
- package/src/components/block-list/block-html.js +1 -1
- package/src/components/block-list/block-invalid-warning.js +1 -1
- package/src/components/block-list/block-list-item.native.js +4 -4
- package/src/components/block-list/block-selection-button.native.js +3 -3
- package/src/components/block-list/block.js +28 -4
- package/src/components/block-list/block.native.js +7 -6
- package/src/components/block-list/index.native.js +5 -5
- package/src/components/block-list/style.scss +3 -1
- package/src/components/block-list/use-block-props/use-block-class-names.js +1 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -0
- package/src/components/block-list/use-block-props/use-multi-selection.js +22 -30
- package/src/components/block-media-update-progress/index.native.js +4 -4
- package/src/components/block-media-update-progress/test/index.native.js +2 -2
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/src/components/block-mobile-toolbar/index.native.js +2 -2
- package/src/components/block-mover/mover-description.js +4 -4
- package/src/components/block-mover/mover-description.native.js +5 -5
- package/src/components/block-settings/container.native.js +5 -6
- package/src/components/block-settings-menu/block-settings-dropdown.js +7 -8
- package/src/components/block-styles/preview.native.js +1 -1
- package/src/components/block-switcher/index.js +4 -1
- package/src/components/block-switcher/use-transformed-patterns.js +0 -1
- package/src/components/block-title/README.md +17 -1
- package/src/components/block-title/index.js +7 -62
- package/src/components/block-title/test/index.js +21 -3
- package/src/components/block-title/use-block-display-title.js +83 -0
- package/src/components/block-toolbar/utils.js +12 -2
- package/src/components/block-tools/block-popover.js +1 -1
- package/src/components/block-tools/block-selection-button.js +4 -1
- package/src/components/block-types-list/index.native.js +1 -1
- package/src/components/border-radius-control/index.js +5 -3
- package/src/components/border-radius-control/test/utils.js +10 -10
- package/src/components/border-radius-control/utils.js +10 -8
- package/src/components/contrast-checker/index.js +3 -3
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -6
- package/src/components/copy-handler/index.js +2 -2
- package/src/components/font-sizes/with-font-sizes.js +3 -3
- package/src/components/image-size-control/test/index.js +1 -1
- package/src/components/index.js +1 -0
- package/src/components/index.native.js +11 -4
- package/src/components/inserter/block-patterns-tab.js +13 -17
- package/src/components/inserter/block-types-tab.js +1 -1
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
- package/src/components/inserter/index.js +3 -3
- package/src/components/inserter/index.native.js +7 -7
- package/src/components/inserter/menu.js +1 -1
- package/src/components/inserter/menu.native.js +3 -3
- package/src/components/inserter/quick-inserter.js +32 -10
- package/src/components/inserter/search-items.js +1 -1
- package/src/components/inserter/search-results.js +55 -43
- package/src/components/inserter/test/fixtures/index.native.js +1 -1
- package/src/components/inserter/test/reusable-blocks-tab.js +2 -2
- package/src/components/justify-content-control/README.md +1 -1
- package/src/components/keyboard-shortcuts/index.js +1 -1
- package/src/components/letter-spacing-control/index.js +1 -1
- package/src/components/line-height-control/README.md +13 -2
- package/src/components/line-height-control/index.js +66 -43
- package/src/components/line-height-control/index.native.js +2 -0
- package/src/components/line-height-control/stories/index.js +33 -0
- package/src/components/line-height-control/test/index.js +61 -0
- package/src/components/link-control/index.js +2 -2
- package/src/components/link-control/search-input.js +1 -1
- package/src/components/link-control/search-results.js +2 -2
- package/src/components/link-control/test/index.js +142 -144
- package/src/components/link-control/use-rich-url-data.js +1 -1
- package/src/components/link-control/use-search-handler.js +2 -2
- package/src/components/list-view/README.md +2 -2
- package/src/components/list-view/block-contents.js +10 -3
- package/src/components/list-view/block-select-button.js +1 -2
- package/src/components/list-view/block.js +30 -10
- package/src/components/list-view/branch.js +1 -0
- package/src/components/list-view/index.js +56 -30
- package/src/components/list-view/test/utils.js +50 -0
- package/src/components/list-view/use-block-selection.js +163 -0
- package/src/components/list-view/use-list-view-expand-selected-item.js +58 -0
- package/src/components/list-view/utils.js +31 -0
- package/src/components/media-placeholder/index.native.js +11 -9
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +20 -26
- package/src/components/media-replace-flow/test/index.js +100 -0
- package/src/components/media-upload/index.native.js +3 -2
- package/src/components/media-upload-progress/index.native.js +1 -1
- package/src/components/navigable-toolbar/index.js +3 -3
- package/src/components/plain-text/index.native.js +3 -3
- package/src/components/responsive-block-control/test/index.js +6 -6
- package/src/components/rich-text/format-toolbar-container.js +2 -2
- package/src/components/rich-text/format-toolbar-container.native.js +1 -1
- package/src/components/rich-text/index.js +7 -14
- package/src/components/rich-text/index.native.js +3 -3
- package/src/components/rich-text/use-paste-handler.js +7 -14
- package/src/components/url-input/index.js +11 -11
- package/src/components/use-block-drop-zone/test/index.js +1 -1
- package/src/components/use-moving-animation/index.js +1 -1
- package/src/components/use-on-block-drop/index.js +2 -2
- package/src/components/writing-flow/index.js +1 -0
- package/src/components/writing-flow/use-multi-selection.js +17 -20
- package/src/components/writing-flow/use-select-all.js +6 -2
- package/src/components/writing-flow/use-tab-nav.js +6 -3
- package/src/hooks/align.js +1 -1
- package/src/hooks/anchor.js +1 -1
- package/src/hooks/border.js +8 -19
- package/src/hooks/color.js +2 -2
- package/src/hooks/custom-class-name.js +45 -0
- package/src/hooks/generated-class-name.js +3 -3
- package/src/hooks/line-height.js +2 -0
- package/src/hooks/lock.js +1 -1
- package/src/hooks/style.js +31 -13
- package/src/hooks/test/align.js +1 -1
- package/src/hooks/typography.scss +0 -4
- package/src/layouts/flow.js +10 -5
- package/src/store/actions.js +24 -14
- package/src/store/defaults.js +2 -2
- package/src/store/index.js +0 -1
- package/src/store/reducer.js +13 -12
- package/src/store/selectors.js +6 -6
- package/src/store/test/actions.js +2 -2
- package/src/store/test/reducer.js +10 -1
- package/src/store/test/selectors.js +1 -1
- package/src/style.scss +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/parse-css-unit-to-px.js +3 -3
- package/src/utils/pasting.js +77 -0
- package/src/utils/test/parse-css-unit-to-px.js +5 -5
- package/src/utils/test/pasting.js +84 -0
- package/src/utils/transform-styles/ast/parse.js +5 -5
- package/src/utils/transform-styles/transforms/url-rewrite.js +2 -2
- package/build/utils/get-paste-event-data.js +0 -56
- package/build/utils/get-paste-event-data.js.map +0 -1
- package/build/utils/theme.js +0 -63
- package/build/utils/theme.js.map +0 -1
- package/build-module/utils/get-paste-event-data.js +0 -47
- package/build-module/utils/get-paste-event-data.js.map +0 -1
- package/build-module/utils/theme.js +0 -53
- package/build-module/utils/theme.js.map +0 -1
- package/src/components/line-height-control/style.scss +0 -8
- package/src/components/writing-flow/test/use-multi-selection.js +0 -36
- package/src/utils/get-paste-event-data.js +0 -42
- package/src/utils/theme.js +0 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","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","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","disabled","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"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\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\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...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\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\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\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 { selectionStart, selectionEnd, isSelected, disabled } = useSelect(\n\t\tselector\n\t);\n\tconst { selectionChange } = 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 {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\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\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ true }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t] ) }\n\t\t\t\t// Do not set the attribute if disabled.\n\t\t\t\tcontentEditable={ disabled ? undefined : true }\n\t\t\t\tsuppressContentEditableWarning={ ! disabled }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\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\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\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\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.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","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","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"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\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\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...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\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\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\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 { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = 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 {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\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\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\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\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\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\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"]}
|
|
@@ -171,7 +171,7 @@ function RichTextWrapper(_ref, forwardedRef) {
|
|
|
171
171
|
if (_element.Platform.OS === 'native') {
|
|
172
172
|
// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.
|
|
173
173
|
// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.
|
|
174
|
-
// This apparently assumes functionality the BlockHlder actually
|
|
174
|
+
// This apparently assumes functionality the BlockHlder actually.
|
|
175
175
|
const block = clientId && getBlock(clientId);
|
|
176
176
|
const shouldBlurOnUnmount = block && isSelected && (0, _blocks.isUnmodifiedDefaultBlock)(block);
|
|
177
177
|
extraProps = {
|
|
@@ -190,7 +190,7 @@ function RichTextWrapper(_ref, forwardedRef) {
|
|
|
190
190
|
...extraProps
|
|
191
191
|
};
|
|
192
192
|
}; // This selector must run on every render so the right selection state is
|
|
193
|
-
//
|
|
193
|
+
// retrieved from the store on merge.
|
|
194
194
|
// To do: fix this somehow.
|
|
195
195
|
|
|
196
196
|
|
|
@@ -290,7 +290,7 @@ function RichTextWrapper(_ref, forwardedRef) {
|
|
|
290
290
|
} else if (onSplitMiddle) {
|
|
291
291
|
blocks.push(onSplitMiddle());
|
|
292
292
|
} // If there's pasted blocks, append a block with non empty content
|
|
293
|
-
|
|
293
|
+
// after the caret. Otherwise, do append an empty block if there
|
|
294
294
|
// is no `onSplitMiddle` prop, but if there is and the content is
|
|
295
295
|
// empty, the middle block is enough to set focus in.
|
|
296
296
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["wrapperClasses","classes","RichTextWrapper","forwardedRef","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","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","version","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\tversion: '6.2',\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","forwardedRef","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","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","version","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// retrieved 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\tversion: '6.2',\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"]}
|
|
@@ -23,6 +23,8 @@ var _utils = require("./utils");
|
|
|
23
23
|
|
|
24
24
|
var _splitValue = require("./split-value");
|
|
25
25
|
|
|
26
|
+
var _pasting = require("../../utils/pasting");
|
|
27
|
+
|
|
26
28
|
/**
|
|
27
29
|
* WordPress dependencies
|
|
28
30
|
*/
|
|
@@ -55,8 +57,6 @@ function usePasteHandler(props) {
|
|
|
55
57
|
propsRef.current = props;
|
|
56
58
|
return (0, _compose.useRefEffect)(element => {
|
|
57
59
|
function _onPaste(event) {
|
|
58
|
-
var _html;
|
|
59
|
-
|
|
60
60
|
const {
|
|
61
61
|
isSelected,
|
|
62
62
|
disableFormats,
|
|
@@ -74,7 +74,6 @@ function usePasteHandler(props) {
|
|
|
74
74
|
} = propsRef.current;
|
|
75
75
|
|
|
76
76
|
if (!isSelected) {
|
|
77
|
-
event.preventDefault();
|
|
78
77
|
return;
|
|
79
78
|
}
|
|
80
79
|
|
|
@@ -159,18 +158,14 @@ function usePasteHandler(props) {
|
|
|
159
158
|
text: plainText
|
|
160
159
|
})));
|
|
161
160
|
return;
|
|
162
|
-
} // Process any attached files, unless we
|
|
163
|
-
// the
|
|
164
|
-
//
|
|
165
|
-
// When content is copied from Microsoft Office, an image of the
|
|
166
|
-
// content is rendered and attached to the clipboard along with the
|
|
167
|
-
// plain-text and HTML content. This artifact is a distraction from
|
|
168
|
-
// the relevant clipboard data, so we ignore it.
|
|
161
|
+
} // Process any attached files, unless we infer that the files in
|
|
162
|
+
// question are redundant "screenshots" of the actual HTML payload,
|
|
163
|
+
// as created by certain office-type programs.
|
|
169
164
|
//
|
|
170
|
-
//
|
|
165
|
+
// @see shouldDismissPastedFiles
|
|
171
166
|
|
|
172
167
|
|
|
173
|
-
if (files
|
|
168
|
+
if (files !== null && files !== void 0 && files.length && !(0, _pasting.shouldDismissPastedFiles)(files, html, plainText)) {
|
|
174
169
|
const content = (0, _blocks.pasteHandler)({
|
|
175
170
|
HTML: (0, _filePasteHandler.filePasteHandler)(files),
|
|
176
171
|
mode: 'BLOCKS',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["adjustLines","value","isMultiline","LINE_SEPARATOR","RegExp","usePasteHandler","props","propsRef","current","element","_onPaste","event","isSelected","disableFormats","onChange","formatTypes","tagName","onReplace","onSplit","onSplitMiddle","__unstableEmbedURLOnPaste","multilineTag","preserveWhiteSpace","pastePlainText","preventDefault","clipboardData","plainText","html","getData","error1","error2","removeWindowsFragments","removeCharsetMetaTag","window","console","log","transformed","reduce","accumlator","__unstablePasteRule","files","isInternal","pastedMultilineTag","undefined","pastedValue","multilineWrapperTags","activeFormats","text","length","includes","content","HTML","mode","pastedBlocks","trim","valueToInsert","addEventListener","removeEventListener","startReg","endReg","replace","metaTag","startsWith","slice"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\tisEmpty,\n\tinsert,\n\tcreate,\n\treplace,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { filePasteHandler } from './file-paste-handler';\nimport { addActiveFormats, isShortcode } from './utils';\nimport { splitValue } from './split-value';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\n/**\n * Replaces line separators with line breaks if not multiline.\n * Replaces line breaks with line separators if multiline.\n *\n * @param {RichTextValue} value Value to adjust.\n * @param {boolean} isMultiline Whether to adjust to multiline or not.\n *\n * @return {RichTextValue} Adjusted value.\n */\nfunction adjustLines( value, isMultiline ) {\n\tif ( isMultiline ) {\n\t\treturn replace( value, /\\n+/g, LINE_SEPARATOR );\n\t}\n\n\treturn replace( value, new RegExp( LINE_SEPARATOR, 'g' ), '\\n' );\n}\n\nexport function usePasteHandler( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction _onPaste( event ) {\n\t\t\tconst {\n\t\t\t\tisSelected,\n\t\t\t\tdisableFormats,\n\t\t\t\tonChange,\n\t\t\t\tvalue,\n\t\t\t\tformatTypes,\n\t\t\t\ttagName,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonSplitMiddle,\n\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\tmultilineTag,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t\tpastePlainText,\n\t\t\t} = propsRef.current;\n\n\t\t\tif ( ! isSelected ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { clipboardData } = event;\n\n\t\t\tlet plainText = '';\n\t\t\tlet html = '';\n\n\t\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t\t// arguments first, then fallback to `Text` if they fail.\n\t\t\ttry {\n\t\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t\t} catch ( error1 ) {\n\t\t\t\ttry {\n\t\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t\t} catch ( error2 ) {\n\t\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t\t// behaviour.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove Windows-specific metadata appended within copied HTML text.\n\t\t\thtml = removeWindowsFragments( html );\n\n\t\t\t// Strip meta tag.\n\t\t\thtml = removeCharsetMetaTag( html );\n\n\t\t\tevent.preventDefault();\n\n\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\t\tif ( disableFormats ) {\n\t\t\t\tonChange( insert( value, plainText ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumlator === value ) {\n\t\t\t\t\t\taccumlator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst files = [ ...getFilesFromDataTransfer( clipboardData ) ];\n\t\t\tconst isInternal = clipboardData.getData( 'rich-text' ) === 'true';\n\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 pastedMultilineTag =\n\t\t\t\t\tclipboardData.getData( 'rich-text-multi-line-tag' ) ||\n\t\t\t\t\tundefined;\n\t\t\t\tlet pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag: pastedMultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tpastedMultilineTag === 'li'\n\t\t\t\t\t\t\t? [ 'ul', 'ol' ]\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\tpastedValue = adjustLines( pastedValue, !! multilineTag );\n\t\t\t\taddActiveFormats( pastedValue, value.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// Process any attached files, unless we detect Microsoft Office as\n\t\t\t// the source.\n\t\t\t//\n\t\t\t// When content is copied from Microsoft Office, an image of the\n\t\t\t// content is rendered and attached to the clipboard along with the\n\t\t\t// plain-text and HTML content. This artifact is a distraction from\n\t\t\t// the relevant clipboard data, so we ignore it.\n\t\t\t//\n\t\t\t// Props https://github.com/pubpub/pubpub/commit/2f933277a15a263a1ab4bbd36b96d3a106544aec\n\t\t\tif (\n\t\t\t\tfiles &&\n\t\t\t\tfiles.length &&\n\t\t\t\t! html?.includes(\n\t\t\t\t\t'xmlns:o=\"urn:schemas-microsoft-com:office:office'\n\t\t\t\t)\n\t\t\t) {\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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\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\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\tvalueToInsert = adjustLines( valueToInsert, !! multilineTag );\n\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'paste', _onPaste );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'paste', _onPaste );\n\t\t};\n\t}, [] );\n}\n\n/**\n * Normalizes a given string of HTML to remove the Windows specific \"Fragment\" comments\n * and any preceeding and trailing whitespace.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startReg = /.*<!--StartFragment-->/s;\n\tconst endReg = /<!--EndFragment-->.*/s;\n\n\treturn html.replace( startReg, '' ).replace( endReg, '' );\n}\n\n/**\n * Removes the charset meta tag inserted by Chromium.\n * See:\n * - https://github.com/WordPress/gutenberg/issues/33585\n * - https://bugs.chromium.org/p/chromium/issues/detail?id=1264616#c4\n *\n * @param {string} html the html to be stripped of the meta tag.\n * @return {string} the cleaned html\n */\nfunction removeCharsetMetaTag( html ) {\n\tconst metaTag = `<meta charset='utf-8'>`;\n\n\tif ( html.startsWith( metaTag ) ) {\n\t\treturn html.slice( metaTag.length );\n\t}\n\n\treturn html;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["adjustLines","value","isMultiline","LINE_SEPARATOR","RegExp","usePasteHandler","props","propsRef","current","element","_onPaste","event","isSelected","disableFormats","onChange","formatTypes","tagName","onReplace","onSplit","onSplitMiddle","__unstableEmbedURLOnPaste","multilineTag","preserveWhiteSpace","pastePlainText","clipboardData","plainText","html","getData","error1","error2","removeWindowsFragments","removeCharsetMetaTag","preventDefault","window","console","log","transformed","reduce","accumlator","__unstablePasteRule","files","isInternal","pastedMultilineTag","undefined","pastedValue","multilineWrapperTags","activeFormats","text","length","content","HTML","mode","pastedBlocks","trim","valueToInsert","addEventListener","removeEventListener","startReg","endReg","replace","metaTag","startsWith","slice"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\tisEmpty,\n\tinsert,\n\tcreate,\n\treplace,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { filePasteHandler } from './file-paste-handler';\nimport { addActiveFormats, isShortcode } from './utils';\nimport { splitValue } from './split-value';\nimport { shouldDismissPastedFiles } from '../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\n/**\n * Replaces line separators with line breaks if not multiline.\n * Replaces line breaks with line separators if multiline.\n *\n * @param {RichTextValue} value Value to adjust.\n * @param {boolean} isMultiline Whether to adjust to multiline or not.\n *\n * @return {RichTextValue} Adjusted value.\n */\nfunction adjustLines( value, isMultiline ) {\n\tif ( isMultiline ) {\n\t\treturn replace( value, /\\n+/g, LINE_SEPARATOR );\n\t}\n\n\treturn replace( value, new RegExp( LINE_SEPARATOR, 'g' ), '\\n' );\n}\n\nexport function usePasteHandler( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction _onPaste( event ) {\n\t\t\tconst {\n\t\t\t\tisSelected,\n\t\t\t\tdisableFormats,\n\t\t\t\tonChange,\n\t\t\t\tvalue,\n\t\t\t\tformatTypes,\n\t\t\t\ttagName,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonSplitMiddle,\n\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\tmultilineTag,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t\tpastePlainText,\n\t\t\t} = propsRef.current;\n\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { clipboardData } = event;\n\n\t\t\tlet plainText = '';\n\t\t\tlet html = '';\n\n\t\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t\t// arguments first, then fallback to `Text` if they fail.\n\t\t\ttry {\n\t\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t\t} catch ( error1 ) {\n\t\t\t\ttry {\n\t\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t\t} catch ( error2 ) {\n\t\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t\t// behaviour.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove Windows-specific metadata appended within copied HTML text.\n\t\t\thtml = removeWindowsFragments( html );\n\n\t\t\t// Strip meta tag.\n\t\t\thtml = removeCharsetMetaTag( html );\n\n\t\t\tevent.preventDefault();\n\n\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\t\tif ( disableFormats ) {\n\t\t\t\tonChange( insert( value, plainText ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumlator === value ) {\n\t\t\t\t\t\taccumlator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst files = [ ...getFilesFromDataTransfer( clipboardData ) ];\n\t\t\tconst isInternal = clipboardData.getData( 'rich-text' ) === 'true';\n\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 pastedMultilineTag =\n\t\t\t\t\tclipboardData.getData( 'rich-text-multi-line-tag' ) ||\n\t\t\t\t\tundefined;\n\t\t\t\tlet pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag: pastedMultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tpastedMultilineTag === 'li'\n\t\t\t\t\t\t\t? [ 'ul', 'ol' ]\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\tpastedValue = adjustLines( pastedValue, !! multilineTag );\n\t\t\t\taddActiveFormats( pastedValue, value.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// Process any attached files, unless we infer that the files in\n\t\t\t// question are redundant \"screenshots\" of the actual HTML payload,\n\t\t\t// as created by certain office-type programs.\n\t\t\t//\n\t\t\t// @see shouldDismissPastedFiles\n\t\t\tif (\n\t\t\t\tfiles?.length &&\n\t\t\t\t! shouldDismissPastedFiles( files, html, plainText )\n\t\t\t) {\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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\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\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\tvalueToInsert = adjustLines( valueToInsert, !! multilineTag );\n\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'paste', _onPaste );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'paste', _onPaste );\n\t\t};\n\t}, [] );\n}\n\n/**\n * Normalizes a given string of HTML to remove the Windows specific \"Fragment\" comments\n * and any preceeding and trailing whitespace.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startReg = /.*<!--StartFragment-->/s;\n\tconst endReg = /<!--EndFragment-->.*/s;\n\n\treturn html.replace( startReg, '' ).replace( endReg, '' );\n}\n\n/**\n * Removes the charset meta tag inserted by Chromium.\n * See:\n * - https://github.com/WordPress/gutenberg/issues/33585\n * - https://bugs.chromium.org/p/chromium/issues/detail?id=1264616#c4\n *\n * @param {string} html the html to be stripped of the meta tag.\n * @return {string} the cleaned html\n */\nfunction removeCharsetMetaTag( html ) {\n\tconst metaTag = `<meta charset='utf-8'>`;\n\n\tif ( html.startsWith( metaTag ) ) {\n\t\treturn html.slice( metaTag.length );\n\t}\n\n\treturn html;\n}\n"]}
|
|
@@ -73,8 +73,8 @@ class URLInput extends _element.Component {
|
|
|
73
73
|
const {
|
|
74
74
|
value,
|
|
75
75
|
__experimentalShowInitialSuggestions = false
|
|
76
|
-
} = this.props; //
|
|
77
|
-
// when already expanded
|
|
76
|
+
} = this.props; // Only have to worry about scrolling selected suggestion into view
|
|
77
|
+
// when already expanded.
|
|
78
78
|
|
|
79
79
|
if (showSuggestions && selectedSuggestion !== null && this.suggestionNodes[selectedSuggestion] && !this.scrollingIntoView) {
|
|
80
80
|
this.scrollingIntoView = true;
|
|
@@ -84,15 +84,15 @@ class URLInput extends _element.Component {
|
|
|
84
84
|
this.props.setTimeout(() => {
|
|
85
85
|
this.scrollingIntoView = false;
|
|
86
86
|
}, 100);
|
|
87
|
-
} // Update suggestions when the value changes
|
|
87
|
+
} // Update suggestions when the value changes.
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
if (prevProps.value !== value && !this.props.disableSuggestions && !this.isUpdatingSuggestions) {
|
|
91
91
|
if (value !== null && value !== void 0 && value.length) {
|
|
92
|
-
// If the new value is not empty we need to update with suggestions for it
|
|
92
|
+
// If the new value is not empty we need to update with suggestions for it.
|
|
93
93
|
this.updateSuggestions(value);
|
|
94
94
|
} else if (__experimentalShowInitialSuggestions) {
|
|
95
|
-
// If the new value is empty and we can show initial suggestions, then show initial suggestions
|
|
95
|
+
// If the new value is empty and we can show initial suggestions, then show initial suggestions.
|
|
96
96
|
this.updateSuggestions();
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -224,7 +224,7 @@ class URLInput extends _element.Component {
|
|
|
224
224
|
// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)
|
|
225
225
|
|
|
226
226
|
if (value && !disableSuggestions && !this.isUpdatingSuggestions && !(suggestions && suggestions.length)) {
|
|
227
|
-
// Ensure the suggestions are updated with the current input value
|
|
227
|
+
// Ensure the suggestions are updated with the current input value.
|
|
228
228
|
this.updateSuggestions(value);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
@@ -236,7 +236,7 @@ class URLInput extends _element.Component {
|
|
|
236
236
|
suggestions,
|
|
237
237
|
loading
|
|
238
238
|
} = this.state; // If the suggestions are not shown or loading, we shouldn't handle the arrow keys
|
|
239
|
-
// We shouldn't preventDefault to allow block arrow keys navigation
|
|
239
|
+
// We shouldn't preventDefault to allow block arrow keys navigation.
|
|
240
240
|
|
|
241
241
|
if (!showSuggestions || !suggestions.length || loading) {
|
|
242
242
|
// In the Windows version of Firefox the up and down arrows don't move the caret
|
|
@@ -250,7 +250,7 @@ class URLInput extends _element.Component {
|
|
|
250
250
|
case _keycodes.UP:
|
|
251
251
|
{
|
|
252
252
|
if (0 !== event.target.selectionStart) {
|
|
253
|
-
event.preventDefault(); // Set the input caret to position 0
|
|
253
|
+
event.preventDefault(); // Set the input caret to position 0.
|
|
254
254
|
|
|
255
255
|
event.target.setSelectionRange(0, 0);
|
|
256
256
|
}
|
|
@@ -263,14 +263,14 @@ class URLInput extends _element.Component {
|
|
|
263
263
|
case _keycodes.DOWN:
|
|
264
264
|
{
|
|
265
265
|
if (this.props.value.length !== event.target.selectionStart) {
|
|
266
|
-
event.preventDefault(); // Set the input caret to the last position
|
|
266
|
+
event.preventDefault(); // Set the input caret to the last position.
|
|
267
267
|
|
|
268
268
|
event.target.setSelectionRange(this.props.value.length, this.props.value.length);
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
break;
|
|
272
272
|
}
|
|
273
|
-
// Submitting while loading should trigger onSubmit
|
|
273
|
+
// Submitting while loading should trigger onSubmit.
|
|
274
274
|
|
|
275
275
|
case _keycodes.ENTER:
|
|
276
276
|
{
|
|
@@ -501,7 +501,7 @@ class URLInput extends _element.Component {
|
|
|
501
501
|
|
|
502
502
|
var _default = (0, _compose.compose)(_compose.withSafeTimeout, _components.withSpokenMessages, _compose.withInstanceId, (0, _data.withSelect)((select, props) => {
|
|
503
503
|
// If a link suggestions handler is already provided then
|
|
504
|
-
// bail
|
|
504
|
+
// bail.
|
|
505
505
|
if ((0, _lodash.isFunction)(props.__experimentalFetchLinkSuggestions)) {
|
|
506
506
|
return;
|
|
507
507
|
}
|