@wordpress/block-editor 9.1.0 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/build/autocompleters/block.js +3 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +3 -7
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-context/index.js.map +1 -1
- package/build/components/block-controls/hook.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.native.js +2 -1
- package/build/components/block-draggable/draggable-chip.native.js.map +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/index.native.js +7 -3
- package/build/components/block-draggable/index.native.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -1
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.js +34 -32
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +2 -1
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +3 -9
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-popover/inbetween.js +9 -6
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +2 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +21 -5
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-selection-clearer/index.js.map +1 -1
- package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
- package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build/components/block-settings-menu/block-mode-toggle.js +3 -7
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +6 -3
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu/index.js +6 -2
- package/build/components/block-settings-menu/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +6 -3
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-styles/menu-items.js +3 -7
- package/build/components/block-styles/menu-items.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +3 -10
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-toolbar/index.native.js.map +1 -1
- package/build/components/block-toolbar/utils.js +5 -8
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -0
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +16 -2
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/color-style-selector/index.js.map +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +72 -95
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +22 -5
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/copy-handler/index.js +17 -1
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/default-block-appender/index.native.js.map +1 -1
- package/build/components/default-style-picker/index.js.map +1 -1
- package/build/components/duotone/components.js +145 -0
- package/build/components/duotone/components.js.map +1 -0
- package/build/components/duotone/index.js +40 -0
- package/build/components/duotone/index.js.map +1 -0
- package/build/components/duotone/utils.js +38 -0
- package/build/components/duotone/utils.js.map +1 -0
- package/build/components/duotone-control/index.js +17 -5
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build/components/image-size-control/index.js +3 -1
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/index.js +41 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.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.map +1 -1
- package/build/components/inserter/library.js +3 -7
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/no-results.native.js.map +1 -1
- 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.native.js.map +1 -1
- package/build/components/inspector-popover-header/index.js +56 -0
- package/build/components/inspector-popover-header/index.js.map +1 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/index.js +4 -4
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-create-button.js +1 -3
- package/build/components/link-control/search-create-button.js.map +1 -1
- package/build/components/link-control/search-input.js +5 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +3 -7
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/list-view/utils.js +1 -7
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.js +5 -6
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +4 -4
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +23 -14
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +10 -4
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +62 -7
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +4 -0
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +5 -3
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +56 -0
- package/build/components/publish-date-time-picker/index.js.map +1 -0
- package/build/components/rich-text/embed-handler-picker.native.js +4 -8
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build/components/rich-text/index.js +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +5 -1
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/rich-text/use-input-rules.js +4 -13
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +20 -5
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/ungroup-button/index.native.js +3 -7
- package/build/components/ungroup-button/index.native.js.map +1 -1
- package/build/components/url-input/index.js +14 -3
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build/components/use-display-block-controls/index.native.js.map +1 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.native.js.map +1 -1
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +12 -12
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js.map +1 -1
- package/build/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build/components/writing-flow/use-input.js +15 -0
- package/build/components/writing-flow/use-input.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/elements/index.js +17 -0
- package/build/elements/index.js.map +1 -0
- package/build/hooks/aria-label.js +71 -0
- package/build/hooks/aria-label.js.map +1 -0
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color-panel.native.js.map +1 -1
- package/build/hooks/color.js +8 -88
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +14 -4
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +33 -160
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/index.js +3 -7
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +44 -5
- package/build/hooks/layout.js.map +1 -1
- package/build/index.js +14 -7
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +7 -4
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +24 -14
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +35 -11
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +30 -2
- package/build/store/selectors.js.map +1 -1
- package/build/utils/pasting.js.map +1 -1
- package/build/utils/selection.js +34 -0
- package/build/utils/selection.js.map +1 -0
- package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-module/autocompleters/block.js +4 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +2 -5
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-context/index.js.map +1 -1
- package/build-module/components/block-controls/hook.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.native.js +2 -1
- package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/index.native.js +7 -3
- package/build-module/components/block-draggable/index.native.js.map +1 -1
- 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.map +1 -1
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -1
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.js +35 -33
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- 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 +2 -1
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +3 -9
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +9 -6
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +2 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +20 -5
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-selection-clearer/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
- package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build-module/components/block-settings-menu/block-mode-toggle.js +3 -5
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu/index.js +6 -3
- package/build-module/components/block-settings-menu/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +5 -2
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +5 -2
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-styles/menu-items.js +3 -5
- package/build-module/components/block-styles/menu-items.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +3 -9
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-toolbar/utils.js +3 -5
- package/build-module/components/block-toolbar/utils.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -0
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +13 -2
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/color-style-selector/index.js.map +1 -1
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +74 -97
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/copy-handler/index.js +18 -2
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.native.js.map +1 -1
- package/build-module/components/default-style-picker/index.js.map +1 -1
- package/build-module/components/duotone/components.js +130 -0
- package/build-module/components/duotone/components.js.map +1 -0
- package/build-module/components/duotone/index.js +3 -0
- package/build-module/components/duotone/index.js.map +1 -0
- package/build-module/components/duotone/utils.js +30 -0
- package/build-module/components/duotone/utils.js.map +1 -0
- package/build-module/components/duotone-control/index.js +18 -6
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build-module/components/image-size-control/index.js +4 -1
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/index.js +4 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -2
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -5
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/no-results.native.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +2 -2
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inspector-popover-header/index.js +46 -0
- package/build-module/components/inspector-popover-header/index.js.map +1 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/index.js +2 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-create-button.js +1 -2
- package/build-module/components/link-control/search-create-button.js.map +1 -1
- package/build-module/components/link-control/search-input.js +3 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +2 -5
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/list-view/utils.js +1 -6
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +3 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +5 -3
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +24 -14
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +8 -3
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +63 -8
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +4 -0
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +4 -1
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +42 -0
- package/build-module/components/publish-date-time-picker/index.js.map +1 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js +3 -5
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +5 -1
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/rich-text/use-input-rules.js +3 -11
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +20 -5
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/ungroup-button/index.native.js +3 -5
- package/build-module/components/ungroup-button/index.native.js.map +1 -1
- package/build-module/components/url-input/index.js +11 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build-module/components/use-display-block-controls/index.native.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.native.js.map +1 -1
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +12 -11
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-input.js +15 -0
- package/build-module/components/writing-flow/use-input.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/elements/index.js +8 -0
- package/build-module/elements/index.js.map +1 -0
- package/build-module/hooks/aria-label.js +59 -0
- package/build-module/hooks/aria-label.js.map +1 -0
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color-panel.native.js.map +1 -1
- package/build-module/hooks/color.js +8 -88
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +14 -4
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +22 -140
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/index.js +1 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +45 -6
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/index.js +2 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +6 -4
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +18 -11
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +36 -12
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +25 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/pasting.js.map +1 -1
- package/build-module/utils/selection.js +24 -0
- package/build-module/utils/selection.js.map +1 -0
- package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-style/style-rtl.css +37 -37
- package/build-style/style.css +37 -37
- package/package.json +30 -30
- package/src/autocompleters/block.js +2 -1
- package/src/components/block-actions/index.js +2 -3
- package/src/components/block-alignment-control/ui.js +4 -6
- package/src/components/block-alignment-matrix-control/index.js +2 -4
- package/src/components/block-breadcrumb/index.js +2 -5
- package/src/components/block-compare/test/block-view.js +2 -1
- package/src/components/block-content-overlay/index.js +2 -5
- package/src/components/block-context/index.js +4 -4
- package/src/components/block-controls/hook.js +2 -3
- package/src/components/block-draggable/draggable-chip.native.js +1 -1
- package/src/components/block-draggable/index.js +6 -13
- package/src/components/block-draggable/index.native.js +10 -14
- package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
- package/src/components/block-draggable/test/helpers.native.js +183 -0
- package/src/components/block-draggable/test/index.native.js +493 -0
- package/src/components/block-edit/test/edit.js +2 -1
- package/src/components/block-list/block-list-item.native.js +4 -12
- package/src/components/block-list/block-selection-button.native.js +2 -3
- package/src/components/block-list/block.js +8 -10
- package/src/components/block-list/block.native.js +11 -15
- package/src/components/block-list/index.js +46 -47
- package/src/components/block-list/index.native.js +12 -21
- package/src/components/block-list/style.scss +1 -1
- package/src/components/block-list/test/block-list-context.native.js +8 -16
- package/src/components/block-list/use-block-props/index.js +6 -3
- package/src/components/block-list/use-block-props/use-block-custom-class-name.js +2 -3
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +2 -3
- package/src/components/block-list/use-in-between-inserter.js +2 -3
- package/src/components/block-list-appender/index.js +2 -5
- package/src/components/block-list-appender/index.native.js +2 -3
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
- package/src/components/block-mobile-toolbar/index.native.js +1 -0
- package/src/components/block-mover/button.js +2 -3
- package/src/components/block-mover/index.native.js +4 -6
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +4 -0
- package/src/components/block-parent-selector/index.js +2 -3
- package/src/components/block-pattern-setup/index.js +4 -14
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
- package/src/components/block-popover/inbetween.js +12 -7
- package/src/components/block-popover/index.js +1 -0
- package/src/components/block-preview/auto.js +21 -11
- package/src/components/block-selection-clearer/index.js +2 -3
- package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
- package/src/components/block-settings-menu/block-mode-toggle.js +4 -8
- package/src/components/block-settings-menu/block-settings-dropdown.js +9 -8
- package/src/components/block-settings-menu/index.js +15 -11
- package/src/components/block-settings-menu-controls/index.js +3 -2
- package/src/components/block-styles/index.js +3 -1
- package/src/components/block-styles/menu-items.js +2 -5
- package/src/components/block-switcher/block-transformations-menu.js +2 -4
- package/src/components/block-title/use-block-display-title.js +9 -7
- package/src/components/block-toolbar/index.native.js +2 -5
- package/src/components/block-toolbar/utils.js +3 -11
- package/src/components/block-tools/block-contextual-toolbar.js +2 -5
- package/src/components/block-tools/block-selection-button.js +1 -0
- package/src/components/block-tools/index.js +2 -3
- package/src/components/block-types-list/index.native.js +2 -4
- package/src/components/block-variation-transforms/index.js +10 -8
- package/src/components/color-palette/test/control.js +2 -1
- package/src/components/color-style-selector/index.js +27 -28
- package/src/components/colors/test/with-colors.js +14 -14
- package/src/components/colors/with-colors.js +8 -12
- package/src/components/colors-gradients/dropdown.js +49 -69
- package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
- package/src/components/colors-gradients/style.scss +11 -37
- package/src/components/colors-gradients/test/control.js +10 -10
- package/src/components/convert-to-group-buttons/toolbar.js +32 -19
- package/src/components/copy-handler/README.md +7 -2
- package/src/components/copy-handler/index.js +26 -6
- package/src/components/default-block-appender/index.js +4 -6
- package/src/components/default-block-appender/index.native.js +4 -9
- package/src/components/default-style-picker/index.js +20 -21
- package/src/components/duotone/components.js +133 -0
- package/src/components/duotone/index.js +7 -0
- package/src/components/duotone/utils.js +25 -0
- package/src/components/duotone-control/index.js +12 -7
- package/src/components/duotone-control/style.scss +5 -0
- package/src/components/font-sizes/with-font-sizes.js +2 -3
- package/src/components/image-editor/aspect-ratio-dropdown.js +2 -6
- package/src/components/image-size-control/index.js +4 -7
- package/src/components/index.js +4 -0
- package/src/components/inner-blocks/use-inner-block-template-sync.js +2 -3
- package/src/components/inner-blocks/use-nested-settings-update.js +6 -9
- package/src/components/inserter/block-types-tab.native.js +2 -3
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -3
- package/src/components/inserter/hooks/use-insertion-point.js +3 -2
- package/src/components/inserter/hooks/use-patterns-state.js +4 -5
- package/src/components/inserter/index.js +7 -11
- package/src/components/inserter/index.native.js +6 -11
- package/src/components/inserter/library.js +2 -5
- package/src/components/inserter/menu.js +14 -19
- package/src/components/inserter/menu.native.js +8 -6
- package/src/components/inserter/no-results.native.js +2 -1
- package/src/components/inserter/quick-inserter.js +2 -3
- package/src/components/inserter/search-items.js +6 -6
- package/src/components/inserter/search-results.native.js +4 -6
- package/src/components/inspector-popover-header/README.md +76 -0
- package/src/components/inspector-popover-header/index.js +56 -0
- package/src/components/inspector-popover-header/style.scss +16 -0
- package/src/components/line-height-control/index.js +1 -2
- package/src/components/link-control/index.js +4 -4
- package/src/components/link-control/search-create-button.js +4 -2
- package/src/components/link-control/search-input.js +3 -1
- package/src/components/link-control/settings-drawer.js +2 -5
- package/src/components/link-control/test/fixtures/index.js +5 -7
- package/src/components/link-control/test/index.js +79 -102
- package/src/components/link-control/use-search-handler.js +2 -2
- package/src/components/list-view/block-contents.js +2 -4
- package/src/components/list-view/branch.js +22 -23
- package/src/components/list-view/index.js +4 -8
- package/src/components/list-view/use-block-selection.js +5 -5
- package/src/components/list-view/use-list-view-drop-zone.js +2 -1
- package/src/components/list-view/utils.js +1 -6
- package/src/components/media-placeholder/index.js +3 -3
- package/src/components/media-placeholder/index.native.js +9 -5
- package/src/components/media-replace-flow/index.js +78 -55
- package/src/components/media-upload/README.md +8 -0
- package/src/components/media-upload/index.native.js +6 -2
- package/src/components/media-upload/test/index.native.js +31 -6
- package/src/components/navigable-toolbar/index.js +1 -2
- package/src/components/panel-color-settings/test/index.js +2 -1
- package/src/components/plain-text/index.native.js +60 -8
- package/src/components/preview-options/index.js +4 -0
- package/src/components/provider/use-block-sync.js +5 -2
- package/src/components/publish-date-time-picker/README.md +52 -0
- package/src/components/publish-date-time-picker/index.js +41 -0
- package/src/components/responsive-block-control/README.md +3 -1
- package/src/components/responsive-block-control/test/index.js +4 -4
- package/src/components/rich-text/embed-handler-picker.native.js +2 -5
- package/src/components/rich-text/index.js +9 -4
- package/src/components/rich-text/index.native.js +4 -0
- package/src/components/rich-text/use-format-types.js +16 -16
- package/src/components/rich-text/use-input-rules.js +6 -15
- package/src/components/rich-text/use-mark-persistent.js +2 -3
- package/src/components/rich-text/use-paste-handler.js +17 -5
- package/src/components/skip-to-selected-block/index.js +2 -3
- package/src/components/ungroup-button/index.native.js +4 -8
- package/src/components/url-input/index.js +21 -20
- package/src/components/use-block-display-information/index.js +4 -6
- package/src/components/use-block-drop-zone/index.js +2 -3
- package/src/components/use-block-drop-zone/index.native.js +2 -4
- package/src/components/use-block-drop-zone/test/index.js +22 -23
- package/src/components/use-display-block-controls/index.native.js +2 -3
- package/src/components/use-no-recursive-renders/test/use-no-recursive-renders.js +2 -3
- package/src/components/use-on-block-drop/index.js +2 -5
- package/src/components/use-on-block-drop/index.native.js +4 -8
- package/src/components/use-setting/index.js +8 -6
- package/src/components/writing-flow/test/index.js +22 -4
- package/src/components/writing-flow/use-arrow-nav.js +22 -10
- package/src/components/writing-flow/use-click-selection.js +2 -5
- package/src/components/writing-flow/use-drag-selection.js +6 -9
- package/src/components/writing-flow/use-input.js +12 -0
- package/src/components/writing-flow/use-multi-selection.js +2 -4
- package/src/components/writing-flow/use-select-all.js +2 -5
- package/src/components/writing-flow/use-selection-observer.js +4 -6
- package/src/components/writing-flow/use-tab-nav.js +2 -5
- package/src/elements/index.js +8 -0
- package/src/elements/test/index.js +18 -0
- package/src/hooks/aria-label.js +67 -0
- package/src/hooks/color-panel.js +4 -4
- package/src/hooks/color-panel.native.js +2 -2
- package/src/hooks/color.js +7 -76
- package/src/hooks/color.scss +9 -0
- package/src/hooks/dimensions.js +11 -3
- package/src/hooks/duotone.js +18 -139
- package/src/hooks/font-family.js +4 -2
- package/src/hooks/gap.js +2 -3
- package/src/hooks/index.js +1 -1
- package/src/hooks/layout.js +74 -13
- package/src/hooks/test/align.js +2 -1
- package/src/hooks/test/generated-class-name.js +2 -5
- package/src/hooks/test/utils.js +2 -5
- package/src/index.js +1 -1
- package/src/layouts/flex.js +13 -5
- package/src/store/actions.js +772 -729
- package/src/store/reducer.js +219 -183
- package/src/store/selectors.js +82 -54
- package/src/store/test/actions.js +2 -1
- package/src/store/test/reducer.js +145 -10
- package/src/store/test/selectors.js +20 -27
- package/src/style.scss +1 -0
- package/src/utils/pasting.js +3 -3
- package/src/utils/selection.js +26 -0
- package/src/utils/test/selection.js +39 -0
- package/src/utils/transform-styles/transforms/wrap.js +30 -28
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/colors/color-panel.js +0 -82
- package/build/components/colors/color-panel.js.map +0 -1
- package/build/components/colors/color-panel.native.js +0 -11
- package/build/components/colors/color-panel.native.js.map +0 -1
- package/build-module/components/colors/color-panel.js +0 -70
- package/build-module/components/colors/color-panel.js.map +0 -1
- package/build-module/components/colors/color-panel.native.js +0 -4
- package/build-module/components/colors/color-panel.native.js.map +0 -1
- package/src/components/colors/color-panel.js +0 -91
- package/src/components/colors/color-panel.native.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["classnames","omit","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","deprecated","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","useNativeProps","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","wrapperClasses","classes","RichTextWrapper","forwardedRef","tagName","start","reversed","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","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","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","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"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\tstart,\n\t\treversed,\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\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\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\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( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\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: splitStart, end: splitEnd } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd &&\n\t\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\t\tsplitEnd === 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: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\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, startPosition ).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(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\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\tstart={ start }\n\t\t\treversed={ reversed }\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__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":["classnames","omit","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","deprecated","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","useNativeProps","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","wrapperClasses","classes","RichTextWrapper","forwardedRef","tagName","start","reversed","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","disableSuggestions","disableAutocorrection","props","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","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","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"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\tstart,\n\t\treversed,\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\tdisableSuggestions,\n\t\tdisableAutocorrection,\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\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\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\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( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\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: splitStart, end: splitEnd } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd &&\n\t\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\t\tsplitEnd === 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: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\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, startPosition ).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(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\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\tstart={ start }\n\t\t\treversed={ reversed }\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__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\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-format-types.js"],"names":["useMemo","useSelect","useDispatch","store","richTextStore","formatTypesSelector","select","getFormatTypes","interactiveContentTags","Set","useFormatTypes","clientId","identifier","withoutInteractiveFormatting","allowedFormats","allFormatTypes","formatTypes","filter","name","tagName","includes","has","keyedSelected","reduce","accumulator","type","__experimentalGetPropsForEditableTreePreparation","richTextIdentifier","blockClientId","dispatch","prepareHandlers","valueHandlers","changeHandlers","dependencies","forEach","__experimentalCreatePrepareEditableTree","selected","handler","__experimentalCreateOnChangeEditableValue","push","key","dispatchers","__experimentalGetPropsForEditableTreeChangeHandler"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,sBAAvC;;AAEA,SAASC,mBAAT,CAA8BC,MAA9B,EAAuC;AACtC,SAAOA,MAAM,CAAEF,aAAF,CAAN,CAAwBG,cAAxB,EAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,MAAMC,sBAAsB,GAAG,IAAIC,GAAJ,CAAS,CACvC,GADuC,EAEvC,OAFuC,EAGvC,QAHuC,EAIvC,SAJuC,EAKvC,OALuC,EAMvC,QANuC,EAOvC,OAPuC,EAQvC,OARuC,EASvC,QATuC,EAUvC,UAVuC,EAWvC,OAXuC,CAAT,CAA/B;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,cAAT,OAKH;AAAA,MAL4B;AAC/BC,IAAAA,QAD+B;AAE/BC,IAAAA,UAF+B;AAG/BC,IAAAA,4BAH+B;AAI/BC,IAAAA;AAJ+B,GAK5B;AACH,QAAMC,cAAc,GAAGd,SAAS,CAAEI,mBAAF,EAAuB,EAAvB,CAAhC;AACA,QAAMW,WAAW,GAAGhB,OAAO,CAAE,MAAM;AAClC,WAAOe,cAAc,CAACE,MAAf,CAAuB,SAAyB;AAAA,UAAvB;AAAEC,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAuB;;AACtD,UAAKL,cAAc,IAAI,CAAEA,cAAc,CAACM,QAAf,CAAyBF,IAAzB,CAAzB,EAA2D;AAC1D,eAAO,KAAP;AACA;;AAED,UACCL,4BAA4B,IAC5BL,sBAAsB,CAACa,GAAvB,CAA4BF,OAA5B,CAFD,EAGE;AACD,eAAO,KAAP;AACA;;AAED,aAAO,IAAP;AACA,KAbM,CAAP;AAcA,GAf0B,EAexB,CAAEJ,cAAF,EAAkBD,cAAlB,EAAkCN,sBAAlC,CAfwB,CAA3B;AAgBA,QAAMc,aAAa,GAAGrB,SAAS,CAC5BK,MAAF,IACCU,WAAW,CAACO,MAAZ,CAAoB,CAAEC,WAAF,EAAeC,IAAf,KAAyB;AAC5C,QAAKA,IAAI,CAACC,gDAAV,EAA6D;AAC5DF,MAAAA,WAAW,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-format-types.js"],"names":["useMemo","useSelect","useDispatch","store","richTextStore","formatTypesSelector","select","getFormatTypes","interactiveContentTags","Set","useFormatTypes","clientId","identifier","withoutInteractiveFormatting","allowedFormats","allFormatTypes","formatTypes","filter","name","tagName","includes","has","keyedSelected","reduce","accumulator","type","__experimentalGetPropsForEditableTreePreparation","richTextIdentifier","blockClientId","dispatch","prepareHandlers","valueHandlers","changeHandlers","dependencies","forEach","__experimentalCreatePrepareEditableTree","selected","handler","__experimentalCreateOnChangeEditableValue","push","key","dispatchers","__experimentalGetPropsForEditableTreeChangeHandler"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as richTextStore } from '@wordpress/rich-text';\n\nfunction formatTypesSelector( select ) {\n\treturn select( richTextStore ).getFormatTypes();\n}\n\n/**\n * Set of all interactive content tags.\n *\n * @see https://html.spec.whatwg.org/multipage/dom.html#interactive-content\n */\nconst interactiveContentTags = new Set( [\n\t'a',\n\t'audio',\n\t'button',\n\t'details',\n\t'embed',\n\t'iframe',\n\t'input',\n\t'label',\n\t'select',\n\t'textarea',\n\t'video',\n] );\n\n/**\n * This hook provides RichText with the `formatTypes` and its derived props from\n * experimental format type settings.\n *\n * @param {Object} $0 Options\n * @param {string} $0.clientId Block client ID.\n * @param {string} $0.identifier Block attribute.\n * @param {boolean} $0.withoutInteractiveFormatting Whether to clean the interactive formattings or not.\n * @param {Array} $0.allowedFormats Allowed formats\n */\nexport function useFormatTypes( {\n\tclientId,\n\tidentifier,\n\twithoutInteractiveFormatting,\n\tallowedFormats,\n} ) {\n\tconst allFormatTypes = useSelect( formatTypesSelector, [] );\n\tconst formatTypes = useMemo( () => {\n\t\treturn allFormatTypes.filter( ( { name, tagName } ) => {\n\t\t\tif ( allowedFormats && ! allowedFormats.includes( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\twithoutInteractiveFormatting &&\n\t\t\t\tinteractiveContentTags.has( tagName )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} );\n\t}, [ allFormatTypes, allowedFormats, interactiveContentTags ] );\n\tconst keyedSelected = useSelect(\n\t\t( select ) =>\n\t\t\tformatTypes.reduce( ( accumulator, type ) => {\n\t\t\t\tif ( type.__experimentalGetPropsForEditableTreePreparation ) {\n\t\t\t\t\taccumulator[ type.name ] =\n\t\t\t\t\t\ttype.__experimentalGetPropsForEditableTreePreparation(\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ formatTypes, clientId, identifier ]\n\t);\n\tconst dispatch = useDispatch();\n\tconst prepareHandlers = [];\n\tconst valueHandlers = [];\n\tconst changeHandlers = [];\n\tconst dependencies = [];\n\n\tformatTypes.forEach( ( type ) => {\n\t\tif ( type.__experimentalCreatePrepareEditableTree ) {\n\t\t\tconst selected = keyedSelected[ type.name ];\n\t\t\tconst handler = type.__experimentalCreatePrepareEditableTree(\n\t\t\t\tselected,\n\t\t\t\t{\n\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( type.__experimentalCreateOnChangeEditableValue ) {\n\t\t\t\tvalueHandlers.push( handler );\n\t\t\t} else {\n\t\t\t\tprepareHandlers.push( handler );\n\t\t\t}\n\n\t\t\tfor ( const key in selected ) {\n\t\t\t\tdependencies.push( selected[ key ] );\n\t\t\t}\n\t\t}\n\n\t\tif ( type.__experimentalCreateOnChangeEditableValue ) {\n\t\t\tlet dispatchers = {};\n\n\t\t\tif ( type.__experimentalGetPropsForEditableTreeChangeHandler ) {\n\t\t\t\tdispatchers =\n\t\t\t\t\ttype.__experimentalGetPropsForEditableTreeChangeHandler(\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tchangeHandlers.push(\n\t\t\t\ttype.__experimentalCreateOnChangeEditableValue(\n\t\t\t\t\t{\n\t\t\t\t\t\t...( keyedSelected[ type.name ] || {} ),\n\t\t\t\t\t\t...dispatchers,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t};\n}\n"]}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { findKey } from 'lodash';
|
|
5
1
|
/**
|
|
6
2
|
* WordPress dependencies
|
|
7
3
|
*/
|
|
8
|
-
|
|
9
4
|
import { useRef } from '@wordpress/element';
|
|
10
5
|
import { useRefEffect } from '@wordpress/compose';
|
|
11
6
|
import { insert, toHTMLString } from '@wordpress/rich-text';
|
|
@@ -16,17 +11,14 @@ import { useDispatch } from '@wordpress/data';
|
|
|
16
11
|
*/
|
|
17
12
|
|
|
18
13
|
import { store as blockEditorStore } from '../../store';
|
|
19
|
-
import { preventEventDiscovery } from './prevent-event-discovery';
|
|
20
|
-
|
|
21
|
-
// then recover it.
|
|
22
|
-
|
|
23
|
-
const START_OF_SELECTED_AREA = '\u0086';
|
|
14
|
+
import { preventEventDiscovery } from './prevent-event-discovery';
|
|
15
|
+
import { retrieveSelectedAttribute, START_OF_SELECTED_AREA } from '../../utils/selection';
|
|
24
16
|
|
|
25
17
|
function findSelection(blocks) {
|
|
26
18
|
let i = blocks.length;
|
|
27
19
|
|
|
28
20
|
while (i--) {
|
|
29
|
-
const attributeKey =
|
|
21
|
+
const attributeKey = retrieveSelectedAttribute(blocks[i].attributes);
|
|
30
22
|
|
|
31
23
|
if (attributeKey) {
|
|
32
24
|
blocks[i].attributes[attributeKey] = blocks[i].attributes[attributeKey].replace(START_OF_SELECTED_AREA, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["useRef","useRefEffect","insert","toHTMLString","getBlockTransforms","findTransform","useDispatch","store","blockEditorStore","preventEventDiscovery","retrieveSelectedAttribute","START_OF_SELECTED_AREA","findSelection","blocks","i","length","attributeKey","attributes","replace","clientId","nestedSelection","innerBlocks","useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","propsRef","current","element","inputRule","value","onReplace","selectionChange","start","text","characterBefore","slice","trimmedTextBefore","trim","prefixTransforms","filter","type","transformation","prefix","content","block","transform","onInput","event","inputType","onChange","__unstableAllowPrefixTransformations","formatTypes","transformed","reduce","accumlator","__unstableInputRule","activeFormats","addEventListener","removeEventListener"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, toHTMLString } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { preventEventDiscovery } from './prevent-event-discovery';\nimport {\n\tretrieveSelectedAttribute,\n\tSTART_OF_SELECTED_AREA,\n} from '../../utils/selection';\n\nfunction findSelection( blocks ) {\n\tlet i = blocks.length;\n\n\twhile ( i-- ) {\n\t\tconst attributeKey = retrieveSelectedAttribute(\n\t\t\tblocks[ i ].attributes\n\t\t);\n\n\t\tif ( attributeKey ) {\n\t\t\tblocks[ i ].attributes[ attributeKey ] = blocks[ i ].attributes[\n\t\t\t\tattributeKey\n\t\t\t].replace( START_OF_SELECTED_AREA, '' );\n\t\t\treturn blocks[ i ].clientId;\n\t\t}\n\n\t\tconst nestedSelection = findSelection( blocks[ i ].innerBlocks );\n\n\t\tif ( nestedSelection ) {\n\t\t\treturn nestedSelection;\n\t\t}\n\t}\n}\n\nexport function useInputRules( props ) {\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction inputRule() {\n\t\t\tconst { value, onReplace, selectionChange } = propsRef.current;\n\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 = toHTMLString( {\n\t\t\t\tvalue: insert( value, START_OF_SELECTED_AREA, 0, start ),\n\t\t\t} );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tselectionChange( findSelection( [ block ] ) );\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t}\n\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, type } = event;\n\t\t\tconst {\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\tformatTypes,\n\t\t\t} = propsRef.current;\n\n\t\t\t// Only run input rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' && type !== 'compositionend' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( __unstableAllowPrefixTransformations && inputRule ) {\n\t\t\t\tinputRule();\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstableInputRule } ) => {\n\t\t\t\t\tif ( __unstableInputRule ) {\n\t\t\t\t\t\taccumlator = __unstableInputRule( accumlator );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tpreventEventDiscovery( value )\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t\tonChange( {\n\t\t\t\t\t...transformed,\n\t\t\t\t\tactiveFormats: value.activeFormats,\n\t\t\t\t} );\n\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\telement.addEventListener( 'compositionend', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t\telement.removeEventListener( 'compositionend', onInput );\n\t\t};\n\t}, [] );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-mark-persistent.js"],"names":["useLayoutEffect","useRef","useDispatch","store","blockEditorStore","useMarkPersistent","html","value","previousText","hasActiveFormats","activeFormats","length","__unstableMarkLastChangeAsPersistent","current","text","timeout","window","setTimeout","clearTimeout"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAT,EAA0BC,MAA1B,QAAwC,oBAAxC;AACA,SAASC,WAAT,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,OAAO,SAASC,iBAAT,OAA8C;AAAA,MAAlB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAkB;AACpD,QAAMC,YAAY,GAAGP,MAAM,EAA3B;AACA,QAAMQ,gBAAgB,GACrBF,KAAK,CAACG,aAAN,IAAuB,CAAC,CAAEH,KAAK,CAACG,aAAN,CAAoBC,MAD/C;AAEA,QAAM;AAAEC,IAAAA;AAAF,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-mark-persistent.js"],"names":["useLayoutEffect","useRef","useDispatch","store","blockEditorStore","useMarkPersistent","html","value","previousText","hasActiveFormats","activeFormats","length","__unstableMarkLastChangeAsPersistent","current","text","timeout","window","setTimeout","clearTimeout"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAT,EAA0BC,MAA1B,QAAwC,oBAAxC;AACA,SAASC,WAAT,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,OAAO,SAASC,iBAAT,OAA8C;AAAA,MAAlB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAkB;AACpD,QAAMC,YAAY,GAAGP,MAAM,EAA3B;AACA,QAAMQ,gBAAgB,GACrBF,KAAK,CAACG,aAAN,IAAuB,CAAC,CAAEH,KAAK,CAACG,aAAN,CAAoBC,MAD/C;AAEA,QAAM;AAAEC,IAAAA;AAAF,MACLV,WAAW,CAAEE,gBAAF,CADZ,CAJoD,CAOpD;;AACAJ,EAAAA,eAAe,CAAE,MAAM;AACtB;AACA,QAAK,CAAEQ,YAAY,CAACK,OAApB,EAA8B;AAC7BL,MAAAA,YAAY,CAACK,OAAb,GAAuBN,KAAK,CAACO,IAA7B;AACA;AACA,KALqB,CAOtB;AACA;;;AACA,QAAKN,YAAY,CAACK,OAAb,KAAyBN,KAAK,CAACO,IAApC,EAA2C;AAC1C,YAAMC,OAAO,GAAGC,MAAM,CAACC,UAAP,CAAmB,MAAM;AACxCL,QAAAA,oCAAoC;AACpC,OAFe,EAEb,IAFa,CAAhB;AAGAJ,MAAAA,YAAY,CAACK,OAAb,GAAuBN,KAAK,CAACO,IAA7B;AACA,aAAO,MAAM;AACZE,QAAAA,MAAM,CAACE,YAAP,CAAqBH,OAArB;AACA,OAFD;AAGA;;AAEDH,IAAAA,oCAAoC;AACpC,GApBc,EAoBZ,CAAEN,IAAF,EAAQG,gBAAR,CApBY,CAAf;AAqBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useMarkPersistent( { html, value } ) {\n\tconst previousText = useRef();\n\tconst hasActiveFormats =\n\t\tvalue.activeFormats && !! value.activeFormats.length;\n\tconst { __unstableMarkLastChangeAsPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Must be set synchronously to make sure it applies to the last change.\n\tuseLayoutEffect( () => {\n\t\t// Ignore mount.\n\t\tif ( ! previousText.current ) {\n\t\t\tpreviousText.current = value.text;\n\t\t\treturn;\n\t\t}\n\n\t\t// Text input, so don't create an undo level for every character.\n\t\t// Create an undo level after 1 second of no input.\n\t\tif ( previousText.current !== value.text ) {\n\t\t\tconst timeout = window.setTimeout( () => {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}, 1000 );\n\t\t\tpreviousText.current = value.text;\n\t\t\treturn () => {\n\t\t\t\twindow.clearTimeout( timeout );\n\t\t\t};\n\t\t}\n\n\t\t__unstableMarkLastChangeAsPersistent();\n\t}, [ html, hasActiveFormats ] );\n}\n"]}
|
|
@@ -228,17 +228,32 @@ export function usePasteHandler(props) {
|
|
|
228
228
|
}, []);
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
|
-
* Normalizes a given string of HTML to remove the Windows
|
|
232
|
-
* and any preceeding and trailing
|
|
231
|
+
* Normalizes a given string of HTML to remove the Windows-specific "Fragment"
|
|
232
|
+
* comments and any preceeding and trailing content.
|
|
233
233
|
*
|
|
234
234
|
* @param {string} html the html to be normalized
|
|
235
235
|
* @return {string} the normalized html
|
|
236
236
|
*/
|
|
237
237
|
|
|
238
238
|
function removeWindowsFragments(html) {
|
|
239
|
-
const
|
|
240
|
-
const
|
|
241
|
-
|
|
239
|
+
const startStr = '<!--StartFragment-->';
|
|
240
|
+
const startIdx = html.indexOf(startStr);
|
|
241
|
+
|
|
242
|
+
if (startIdx > -1) {
|
|
243
|
+
html = html.substring(startIdx + startStr.length);
|
|
244
|
+
} else {
|
|
245
|
+
// No point looking for EndFragment
|
|
246
|
+
return html;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const endStr = '<!--EndFragment-->';
|
|
250
|
+
const endIdx = html.indexOf(endStr);
|
|
251
|
+
|
|
252
|
+
if (endIdx > -1) {
|
|
253
|
+
html = html.substring(0, endIdx);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return html;
|
|
242
257
|
}
|
|
243
258
|
/**
|
|
244
259
|
* Removes the charset meta tag inserted by Chromium.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["useRef","useRefEffect","getFilesFromDataTransfer","pasteHandler","isEmpty","insert","create","replace","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","isURL","filePasteHandler","addActiveFormats","isShortcode","splitValue","shouldDismissPastedFiles","adjustLines","value","isMultiline","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","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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["useRef","useRefEffect","getFilesFromDataTransfer","pasteHandler","isEmpty","insert","create","replace","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","isURL","filePasteHandler","addActiveFormats","isShortcode","splitValue","shouldDismissPastedFiles","adjustLines","value","isMultiline","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","startStr","startIdx","indexOf","substring","endStr","endIdx","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\"\n * comments and any preceeding and trailing content.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startStr = '<!--StartFragment-->';\n\tconst startIdx = html.indexOf( startStr );\n\tif ( startIdx > -1 ) {\n\t\thtml = html.substring( startIdx + startStr.length );\n\t} else {\n\t\t// No point looking for EndFragment\n\t\treturn html;\n\t}\n\n\tconst endStr = '<!--EndFragment-->';\n\tconst endIdx = html.indexOf( endStr );\n\tif ( endIdx > -1 ) {\n\t\thtml = html.substring( 0, endIdx );\n\t}\n\n\treturn html;\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"names":["withSelect","__","Button","store","blockEditorStore","__unstableUseBlockRef","useBlockRef","SkipToSelectedBlock","selectedBlockClientId","ref","onClick","current","focus","select","getBlockSelectionStart"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,qBAAqB,IAAIC,WAAlC,QAAqD,8CAArD;;AAEA,MAAMC,mBAAmB,GAAG,QAAiC;AAAA,MAA/B;AAAEC,IAAAA;AAAF,GAA+B;AAC5D,QAAMC,GAAG,GAAGH,WAAW,CAAEE,qBAAF,CAAvB;;AACA,QAAME,OAAO,GAAG,MAAM;AACrBD,IAAAA,GAAG,CAACE,OAAJ,CAAYC,KAAZ;AACA,GAFD;;AAIA,SAAOJ,qBAAqB,GAC3B,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,SAAS,EAAC,qCAFX;AAGC,IAAA,OAAO,EAAGE;AAHX,KAKGT,EAAE,CAAE,4BAAF,CALL,CAD2B,GAQxB,IARJ;AASA,CAfD;AAiBA;AACA;AACA;;;AACA,eAAeD,UAAU,CAAIa,MAAF,IAAc;AACxC,SAAO;AACNL,IAAAA,qBAAqB,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"names":["withSelect","__","Button","store","blockEditorStore","__unstableUseBlockRef","useBlockRef","SkipToSelectedBlock","selectedBlockClientId","ref","onClick","current","focus","select","getBlockSelectionStart"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,qBAAqB,IAAIC,WAAlC,QAAqD,8CAArD;;AAEA,MAAMC,mBAAmB,GAAG,QAAiC;AAAA,MAA/B;AAAEC,IAAAA;AAAF,GAA+B;AAC5D,QAAMC,GAAG,GAAGH,WAAW,CAAEE,qBAAF,CAAvB;;AACA,QAAME,OAAO,GAAG,MAAM;AACrBD,IAAAA,GAAG,CAACE,OAAJ,CAAYC,KAAZ;AACA,GAFD;;AAIA,SAAOJ,qBAAqB,GAC3B,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,SAAS,EAAC,qCAFX;AAGC,IAAA,OAAO,EAAGE;AAHX,KAKGT,EAAE,CAAE,4BAAF,CALL,CAD2B,GAQxB,IARJ;AASA,CAfD;AAiBA;AACA;AACA;;;AACA,eAAeD,UAAU,CAAIa,MAAF,IAAc;AACxC,SAAO;AACNL,IAAAA,qBAAqB,EACpBK,MAAM,CAAET,gBAAF,CAAN,CAA2BU,sBAA3B;AAFK,GAAP;AAIA,CALwB,CAAV,CAKVP,mBALU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockRef as useBlockRef } from '../block-list/use-block-props/use-block-refs';\n\nconst SkipToSelectedBlock = ( { selectedBlockClientId } ) => {\n\tconst ref = useBlockRef( selectedBlockClientId );\n\tconst onClick = () => {\n\t\tref.current.focus();\n\t};\n\n\treturn selectedBlockClientId ? (\n\t\t<Button\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName=\"block-editor-skip-to-selected-block\"\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ __( 'Skip to the selected block' ) }\n\t\t</Button>\n\t) : null;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/skip-to-selected-block/README.md\n */\nexport default withSelect( ( select ) => {\n\treturn {\n\t\tselectedBlockClientId:\n\t\t\tselect( blockEditorStore ).getBlockSelectionStart(),\n\t};\n} )( SkipToSelectedBlock );\n"]}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { createElement } from "@wordpress/element";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* External dependencies
|
|
5
|
-
*/
|
|
6
|
-
import { noop } from 'lodash';
|
|
7
3
|
/**
|
|
8
4
|
* WordPress dependencies
|
|
9
5
|
*/
|
|
10
|
-
|
|
11
6
|
import { store as blocksStore } from '@wordpress/blocks';
|
|
12
7
|
import { ToolbarGroup, ToolbarButton } from '@wordpress/components';
|
|
13
8
|
import { __ } from '@wordpress/i18n';
|
|
@@ -19,6 +14,9 @@ import { compose } from '@wordpress/compose';
|
|
|
19
14
|
|
|
20
15
|
import UngroupIcon from './icon';
|
|
21
16
|
import { store as blockEditorStore } from '../../store';
|
|
17
|
+
|
|
18
|
+
const noop = () => {};
|
|
19
|
+
|
|
22
20
|
export function UngroupButton(_ref) {
|
|
23
21
|
let {
|
|
24
22
|
onConvertFromGroup,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/ungroup-button/index.native.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/ungroup-button/index.native.js"],"names":["store","blocksStore","ToolbarGroup","ToolbarButton","__","withSelect","withDispatch","compose","UngroupIcon","blockEditorStore","noop","UngroupButton","onConvertFromGroup","isUngroupable","select","getSelectedBlockClientId","getBlock","getGroupingBlockName","selectedId","selectedBlock","groupingBlockName","innerBlocks","length","name","clientId","dispatch","onToggle","replaceBlocks"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAlB,QAAqC,mBAArC;AACA,SAASC,YAAT,EAAuBC,aAAvB,QAA4C,uBAA5C;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,WAAP,MAAwB,QAAxB;AACA,SAASR,KAAK,IAAIS,gBAAlB,QAA0C,aAA1C;;AAEA,MAAMC,IAAI,GAAG,MAAM,CAAE,CAArB;;AAEA,OAAO,SAASC,aAAT,OAAwE;AAAA,MAAhD;AAAEC,IAAAA,kBAAF;AAAsBC,IAAAA,aAAa,GAAG;AAAtC,GAAgD;;AAC9E,MAAK,CAAEA,aAAP,EAAuB;AACtB,WAAO,IAAP;AACA;;AACD,SACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,IAAA,KAAK,EAAGT,EAAE,CAAE,SAAF,CADX;AAEC,IAAA,IAAI,EAAGI,WAFR;AAGC,IAAA,OAAO,EAAGI;AAHX,IADD,CADD;AASA;AAED,eAAeL,OAAO,CAAE,CACvBF,UAAU,CAAIS,MAAF,IAAc;AACzB,QAAM;AAAEC,IAAAA,wBAAF;AAA4BC,IAAAA;AAA5B,MACLF,MAAM,CAAEL,gBAAF,CADP;AAGA,QAAM;AAAEQ,IAAAA;AAAF,MAA2BH,MAAM,CAAEb,WAAF,CAAvC;AAEA,QAAMiB,UAAU,GAAGH,wBAAwB,EAA3C;AACA,QAAMI,aAAa,GAAGH,QAAQ,CAAEE,UAAF,CAA9B;AAEA,QAAME,iBAAiB,GAAGH,oBAAoB,EAA9C;AAEA,QAAMJ,aAAa,GAClBM,aAAa,IACbA,aAAa,CAACE,WADd,IAEA,CAAC,CAAEF,aAAa,CAACE,WAAd,CAA0BC,MAF7B,IAGAH,aAAa,CAACI,IAAd,KAAuBH,iBAJxB;AAKA,QAAMC,WAAW,GAAGR,aAAa,GAAGM,aAAa,CAACE,WAAjB,GAA+B,EAAhE;AAEA,SAAO;AACNR,IAAAA,aADM;AAENW,IAAAA,QAAQ,EAAEN,UAFJ;AAGNG,IAAAA;AAHM,GAAP;AAKA,CAvBS,CADa,EAyBvBf,YAAY,CAAE,CAAEmB,QAAF,YAA4D;AAAA,MAAhD;AAAED,IAAAA,QAAF;AAAYH,IAAAA,WAAZ;AAAyBK,IAAAA,QAAQ,GAAGhB;AAApC,GAAgD;AACzE,QAAM;AAAEiB,IAAAA;AAAF,MAAoBF,QAAQ,CAAEhB,gBAAF,CAAlC;AAEA,SAAO;AACNG,IAAAA,kBAAkB,GAAG;AACpB,UAAK,CAAES,WAAW,CAACC,MAAnB,EAA4B;AAC3B;AACA;;AAEDK,MAAAA,aAAa,CAAEH,QAAF,EAAYH,WAAZ,CAAb;AAEAK,MAAAA,QAAQ;AACR;;AATK,GAAP;AAWA,CAdW,CAzBW,CAAF,CAAP,CAwCVf,aAxCU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport UngroupIcon from './icon';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nexport function UngroupButton( { onConvertFromGroup, isUngroupable = false } ) {\n\tif ( ! isUngroupable ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Ungroup' ) }\n\t\t\t\ticon={ UngroupIcon }\n\t\t\t\tonClick={ onConvertFromGroup }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId, getBlock } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst { getGroupingBlockName } = select( blocksStore );\n\n\t\tconst selectedId = getSelectedBlockClientId();\n\t\tconst selectedBlock = getBlock( selectedId );\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\tconst isUngroupable =\n\t\t\tselectedBlock &&\n\t\t\tselectedBlock.innerBlocks &&\n\t\t\t!! selectedBlock.innerBlocks.length &&\n\t\t\tselectedBlock.name === groupingBlockName;\n\t\tconst innerBlocks = isUngroupable ? selectedBlock.innerBlocks : [];\n\n\t\treturn {\n\t\t\tisUngroupable,\n\t\t\tclientId: selectedId,\n\t\t\tinnerBlocks,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { clientId, innerBlocks, onToggle = noop } ) => {\n\t\tconst { replaceBlocks } = dispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonConvertFromGroup() {\n\t\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks( clientId, innerBlocks );\n\n\t\t\t\tonToggle();\n\t\t\t},\n\t\t};\n\t} ),\n] )( UngroupButton );\n"]}
|
|
@@ -4,7 +4,7 @@ import { createElement, Fragment } from "@wordpress/element";
|
|
|
4
4
|
/**
|
|
5
5
|
* External dependencies
|
|
6
6
|
*/
|
|
7
|
-
import { debounce
|
|
7
|
+
import { debounce } from 'lodash';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
9
|
import scrollIntoView from 'dom-scroll-into-view';
|
|
10
10
|
/**
|
|
@@ -23,6 +23,16 @@ import { isURL } from '@wordpress/url';
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import { store as blockEditorStore } from '../../store';
|
|
26
|
+
/**
|
|
27
|
+
* Whether the argument is a function.
|
|
28
|
+
*
|
|
29
|
+
* @param {*} maybeFunc The argument to check.
|
|
30
|
+
* @return {boolean} True if the argument is a function, false otherwise.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
function isFunction(maybeFunc) {
|
|
34
|
+
return typeof maybeFunc === 'function';
|
|
35
|
+
}
|
|
26
36
|
|
|
27
37
|
class URLInput extends Component {
|
|
28
38
|
constructor(props) {
|