@wordpress/block-editor 8.3.1 → 8.5.1
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 +4 -0
- package/README.md +56 -18
- package/build/components/alignment-control/index.js +13 -6
- package/build/components/alignment-control/index.js.map +1 -1
- package/build/components/block-alignment-control/index.js +13 -6
- package/build/components/block-alignment-control/index.js.map +1 -1
- package/build/components/block-content-overlay/index.js +13 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -3
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-icon/index.js +4 -0
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +6 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +4 -1
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block.js +4 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +1 -6
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +22 -6
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-handler.js +7 -1
- package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build/components/block-list-appender/index.js +6 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-lock/index.js +40 -0
- package/build/components/block-lock/index.js.map +1 -0
- package/build/components/block-lock/menu-item.js +52 -0
- package/build/components/block-lock/menu-item.js.map +1 -0
- package/build/components/block-lock/modal.js +155 -0
- package/build/components/block-lock/modal.js.map +1 -0
- package/build/components/block-lock/toolbar.js +65 -0
- package/build/components/block-lock/toolbar.js.map +1 -0
- package/build/components/block-lock/use-block-lock.js +53 -0
- package/build/components/block-lock/use-block-lock.js.map +1 -0
- package/build/components/block-mover/index.js +4 -0
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +37 -22
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-preview/auto.js +6 -3
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +4 -2
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +75 -10
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +19 -9
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +8 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +2 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +8 -6
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-toolbar/block-name-context.js +17 -0
- package/build/components/block-toolbar/block-name-context.js.map +1 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build/components/block-toolbar/index.js +24 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/index.js +0 -16
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +92 -47
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/block-vertical-alignment-control/index.js +13 -6
- package/build/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build/components/border-radius-control/index.js +0 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +1 -1
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +3 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/contrast-checker/index.js +4 -0
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +8 -0
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +105 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build/components/copy-handler/index.js +4 -0
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +132 -0
- package/build/components/date-format-picker/index.js.map +1 -0
- package/build/components/font-sizes/font-size-picker.js +4 -0
- package/build/components/font-sizes/font-size-picker.js.map +1 -1
- package/build/components/iframe/index.js +6 -9
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +27 -0
- package/build/components/index.js.map +1 -1
- package/build/components/justify-content-control/index.js +13 -6
- package/build/components/justify-content-control/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/line-height-control/index.js +15 -6
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +18 -23
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +38 -13
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +16 -13
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +7 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +9 -2
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-replace-flow/index.js +4 -0
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +1 -1
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -5
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +13 -9
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/split-value.js +12 -2
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-firefox-compat.js +49 -0
- package/build/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +34 -2
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -0
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +11 -27
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/index.js +9 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +3 -44
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js +68 -0
- package/build/components/writing-flow/use-click-selection.js.map +1 -0
- package/build/components/writing-flow/use-drag-selection.js +134 -0
- package/build/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build/components/writing-flow/use-input.js +116 -0
- package/build/components/writing-flow/use-input.js.map +1 -0
- package/build/components/writing-flow/use-multi-selection.js +18 -38
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +161 -0
- package/build/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build/components/writing-flow/use-tab-nav.js +1 -8
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/anchor.js +7 -6
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border-color.js +3 -3
- package/build/hooks/border-color.js.map +1 -1
- package/build/hooks/border.js +0 -14
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +20 -17
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/font-family.js +5 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +4 -2
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +77 -5
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +7 -2
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +34 -3
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +29 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/flex.js +82 -15
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +22 -13
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +297 -51
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +5 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +25 -13
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +197 -23
- package/build/store/selectors.js.map +1 -1
- package/build/utils/dom.js +2 -1
- package/build/utils/dom.js.map +1 -1
- package/build-module/components/alignment-control/index.js +12 -4
- package/build-module/components/alignment-control/index.js.map +1 -1
- package/build-module/components/block-alignment-control/index.js +12 -4
- package/build-module/components/block-alignment-control/index.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +13 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +2 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-icon/index.js +4 -0
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +6 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -2
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -4
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +22 -6
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-handler.js +7 -1
- package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +6 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-lock/index.js +5 -0
- package/build-module/components/block-lock/index.js.map +1 -0
- package/build-module/components/block-lock/menu-item.js +39 -0
- package/build-module/components/block-lock/menu-item.js.map +1 -0
- package/build-module/components/block-lock/modal.js +138 -0
- package/build-module/components/block-lock/modal.js.map +1 -0
- package/build-module/components/block-lock/toolbar.js +51 -0
- package/build-module/components/block-lock/toolbar.js.map +1 -0
- package/build-module/components/block-lock/use-block-lock.js +44 -0
- package/build-module/components/block-lock/use-block-lock.js.map +1 -0
- package/build-module/components/block-mover/index.js +4 -0
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +39 -24
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-preview/auto.js +6 -3
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +4 -2
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +75 -12
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +18 -9
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +9 -4
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +2 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +8 -6
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-toolbar/block-name-context.js +9 -0
- package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +19 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/index.js +0 -16
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +95 -49
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/index.js +12 -4
- package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +0 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +1 -1
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +3 -1
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +4 -0
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +2 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build-module/components/copy-handler/index.js +4 -0
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +122 -0
- package/build-module/components/date-format-picker/index.js.map +1 -0
- package/build-module/components/font-sizes/font-size-picker.js +4 -0
- package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -9
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +3 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/justify-content-control/index.js +12 -4
- package/build-module/components/justify-content-control/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +14 -5
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +19 -23
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +36 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +16 -13
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +7 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +10 -3
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +4 -0
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +2 -2
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +26 -5
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +13 -9
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/split-value.js +12 -2
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-firefox-compat.js +39 -0
- package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +35 -4
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +4 -0
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +12 -28
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/index.js +5 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js +57 -0
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-drag-selection.js +124 -0
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-input.js +104 -0
- package/build-module/components/writing-flow/use-input.js.map +1 -0
- package/build-module/components/writing-flow/use-multi-selection.js +18 -37
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +150 -0
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build-module/components/writing-flow/use-tab-nav.js +1 -9
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/anchor.js +7 -6
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border-color.js +5 -5
- package/build-module/hooks/border-color.js.map +1 -1
- package/build-module/hooks/border.js +0 -12
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +19 -18
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/font-family.js +3 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +4 -3
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +75 -7
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +7 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +33 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +26 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/flex.js +81 -16
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +20 -13
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +286 -49
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +5 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +25 -13
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +186 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/dom.js +2 -1
- package/build-module/utils/dom.js.map +1 -1
- package/build-style/style-rtl.css +248 -49
- package/build-style/style.css +248 -49
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +28 -27
- package/src/components/alignment-control/index.js +9 -4
- package/src/components/block-alignment-control/index.js +9 -4
- package/src/components/block-content-overlay/index.js +19 -2
- package/src/components/block-draggable/index.js +2 -5
- package/src/components/block-icon/index.js +3 -0
- package/src/components/block-inspector/index.js +4 -0
- package/src/components/block-list/block-html.js +8 -4
- package/src/components/block-list/block.js +5 -1
- package/src/components/block-list/style.scss +4 -5
- package/src/components/block-list/use-block-props/index.js +0 -5
- package/src/components/block-list/use-block-props/use-focus-first-element.js +27 -6
- package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
- package/src/components/block-list-appender/index.js +5 -0
- package/src/components/block-lock/index.js +4 -0
- package/src/components/block-lock/menu-item.js +39 -0
- package/src/components/block-lock/modal.js +194 -0
- package/src/components/block-lock/style.scss +70 -0
- package/src/components/block-lock/toolbar.js +51 -0
- package/src/components/block-lock/use-block-lock.js +49 -0
- package/src/components/block-mover/index.js +3 -0
- package/src/components/block-mover/style.scss +4 -0
- package/src/components/block-pattern-setup/index.js +84 -59
- package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
- package/src/components/block-pattern-setup/style.scss +32 -26
- package/src/components/block-preview/auto.js +10 -1
- package/src/components/block-preview/index.js +2 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +109 -9
- package/src/components/block-settings-menu-controls/index.js +33 -12
- package/src/components/block-switcher/index.js +15 -3
- package/src/components/block-switcher/style.scss +15 -4
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-title/README.md +6 -1
- package/src/components/block-title/index.js +2 -2
- package/src/components/block-title/test/index.js +43 -1
- package/src/components/block-title/use-block-display-title.js +10 -7
- package/src/components/block-toolbar/block-name-context.js +8 -0
- package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
- package/src/components/block-toolbar/index.js +24 -2
- package/src/components/block-toolbar/style.scss +10 -0
- package/src/components/block-tools/index.js +0 -19
- package/src/components/block-tools/style.scss +27 -0
- package/src/components/block-variation-transforms/index.js +105 -36
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/block-vertical-alignment-control/index.js +9 -4
- package/src/components/border-radius-control/index.js +0 -1
- package/src/components/border-radius-control/test/utils.js +4 -0
- package/src/components/border-radius-control/utils.js +2 -1
- package/src/components/button-block-appender/style.scss +5 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +70 -4
- package/src/components/colors-gradients/control.js +1 -1
- package/src/components/colors-gradients/style.scss +6 -0
- package/src/components/contrast-checker/index.js +3 -0
- package/src/components/convert-to-group-buttons/index.js +6 -1
- package/src/components/convert-to-group-buttons/toolbar.js +87 -0
- package/src/components/copy-handler/index.js +3 -0
- package/src/components/date-format-picker/README.md +58 -0
- package/src/components/date-format-picker/index.js +161 -0
- package/src/components/date-format-picker/style.scss +31 -0
- package/src/components/font-sizes/font-size-picker.js +3 -0
- package/src/components/iframe/index.js +5 -7
- package/src/components/index.js +3 -0
- package/src/components/justify-content-control/index.js +9 -4
- package/src/components/keyboard-shortcuts/index.js +1 -1
- package/src/components/line-height-control/index.js +11 -6
- package/src/components/link-control/README.md +1 -1
- package/src/components/list-view/block-select-button.js +14 -31
- package/src/components/list-view/block.js +55 -13
- package/src/components/list-view/branch.js +37 -15
- package/src/components/list-view/index.js +6 -0
- package/src/components/list-view/style.scss +56 -14
- package/src/components/list-view/use-block-selection.js +15 -2
- package/src/components/media-placeholder/README.md +8 -0
- package/src/components/media-replace-flow/index.js +3 -0
- package/src/components/multi-selection-inspector/index.js +2 -2
- package/src/components/rich-text/index.js +25 -2
- package/src/components/rich-text/index.native.js +24 -8
- package/src/components/rich-text/split-value.js +5 -1
- package/src/components/rich-text/use-firefox-compat.js +39 -0
- package/src/components/rich-text/use-input-rules.js +40 -3
- package/src/components/skip-to-selected-block/index.js +3 -0
- package/src/components/url-input/style.scss +3 -2
- package/src/components/url-popover/image-url-input-ui.js +16 -29
- package/src/components/writing-flow/index.js +8 -0
- package/src/components/writing-flow/readme.md +28 -0
- package/src/components/writing-flow/use-arrow-nav.js +4 -53
- package/src/components/writing-flow/use-click-selection.js +65 -0
- package/src/components/writing-flow/use-drag-selection.js +126 -0
- package/src/components/writing-flow/use-input.js +112 -0
- package/src/components/writing-flow/use-multi-selection.js +13 -36
- package/src/components/writing-flow/use-selection-observer.js +153 -0
- package/src/components/writing-flow/use-tab-nav.js +1 -11
- package/src/hooks/anchor.js +8 -6
- package/src/hooks/border-color.js +5 -5
- package/src/hooks/border.js +0 -13
- package/src/hooks/color.js +51 -24
- package/src/hooks/font-family.js +5 -2
- package/src/hooks/font-size.js +10 -7
- package/src/hooks/gap.js +91 -12
- package/src/hooks/layout.js +11 -1
- package/src/hooks/style.js +40 -4
- package/src/hooks/test/gap.js +66 -0
- package/src/hooks/test/style.js +94 -0
- package/src/hooks/test/utils.js +1 -1
- package/src/hooks/utils.js +26 -0
- package/src/layouts/flex.js +93 -6
- package/src/layouts/flow.js +28 -12
- package/src/store/actions.js +349 -32
- package/src/store/defaults.js +7 -1
- package/src/store/reducer.js +25 -10
- package/src/store/selectors.js +229 -27
- package/src/store/test/selectors.js +305 -5
- package/src/style.scss +2 -0
- package/src/utils/dom.js +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
- package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
- package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["wrapperClasses","classes","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","props","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","embedHandlerPickerRef","selector","select","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","onEnter","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","LINE_SEPARATOR","canPasteEmbed","name","inputRule","valueToFormat","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty","defaultProps","format"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst nativeProps = useNativeProps();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tisCaretWithinFormattedText,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start, end } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd && start === end && end === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat( slice( value, start, text.length ) );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\tconst content = (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\t{ ...nativeProps }\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\trootTagsToEliminate={ rootTagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["wrapperClasses","classes","RichTextWrapper","forwardedRef","children","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","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","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","LINE_SEPARATOR","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty","defaultProps","format"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\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\tisCaretWithinFormattedText,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( 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__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\t{ ...nativeProps }\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\trootTagsToEliminate={ rootTagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
|
|
@@ -28,10 +28,20 @@ function splitValue(_ref) {
|
|
|
28
28
|
|
|
29
29
|
if (!onReplace || !onSplit) {
|
|
30
30
|
return;
|
|
31
|
-
}
|
|
31
|
+
} // Ensure the value has a selection. This might happen when trying to split
|
|
32
|
+
// an empty value before there was a `selectionchange` event.
|
|
33
|
+
|
|
32
34
|
|
|
35
|
+
const {
|
|
36
|
+
start = 0,
|
|
37
|
+
end = 0
|
|
38
|
+
} = value;
|
|
39
|
+
const valueWithEnsuredSelection = { ...value,
|
|
40
|
+
start,
|
|
41
|
+
end
|
|
42
|
+
};
|
|
33
43
|
const blocks = [];
|
|
34
|
-
const [before, after] = (0, _richText.split)(
|
|
44
|
+
const [before, after] = (0, _richText.split)(valueWithEnsuredSelection);
|
|
35
45
|
const hasPastedBlocks = pastedBlocks.length > 0;
|
|
36
46
|
let lastPastedBlockIndex = -1; // Consider the after value to be the original it is not empty and the
|
|
37
47
|
// before value *is* empty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/split-value.js"],"names":["splitValue","value","pastedBlocks","onReplace","onSplit","onSplitMiddle","multilineTag","blocks","before","after","hasPastedBlocks","length","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASA,UAAT,OAOH;AAAA,MAPwB;AAC3BC,IAAAA,KAD2B;AAE3BC,IAAAA,YAAY,GAAG,EAFY;AAG3BC,IAAAA,SAH2B;AAI3BC,IAAAA,OAJ2B;AAK3BC,IAAAA,aAL2B;AAM3BC,IAAAA;AAN2B,GAOxB;;AACH,MAAK,CAAEH,SAAF,IAAe,CAAEC,OAAtB,EAAgC;AAC/B;AACA
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/split-value.js"],"names":["splitValue","value","pastedBlocks","onReplace","onSplit","onSplitMiddle","multilineTag","start","end","valueWithEnsuredSelection","blocks","before","after","hasPastedBlocks","length","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASA,UAAT,OAOH;AAAA,MAPwB;AAC3BC,IAAAA,KAD2B;AAE3BC,IAAAA,YAAY,GAAG,EAFY;AAG3BC,IAAAA,SAH2B;AAI3BC,IAAAA,OAJ2B;AAK3BC,IAAAA,aAL2B;AAM3BC,IAAAA;AAN2B,GAOxB;;AACH,MAAK,CAAEH,SAAF,IAAe,CAAEC,OAAtB,EAAgC;AAC/B;AACA,GAHE,CAKH;AACA;;;AACA,QAAM;AAAEG,IAAAA,KAAK,GAAG,CAAV;AAAaC,IAAAA,GAAG,GAAG;AAAnB,MAAyBP,KAA/B;AACA,QAAMQ,yBAAyB,GAAG,EAAE,GAAGR,KAAL;AAAYM,IAAAA,KAAZ;AAAmBC,IAAAA;AAAnB,GAAlC;AACA,QAAME,MAAM,GAAG,EAAf;AACA,QAAM,CAAEC,MAAF,EAAUC,KAAV,IAAoB,qBAAOH,yBAAP,CAA1B;AACA,QAAMI,eAAe,GAAGX,YAAY,CAACY,MAAb,GAAsB,CAA9C;AACA,MAAIC,oBAAoB,GAAG,CAAC,CAA5B,CAZG,CAcH;AACA;;AACA,QAAMC,eAAe,GAAG,uBAASL,MAAT,KAAqB,CAAE,uBAASC,KAAT,CAA/C,CAhBG,CAkBH;AACA;AACA;AACA;;AACA,MAAK,CAAEC,eAAF,IAAqB,CAAE,uBAASF,MAAT,CAA5B,EAAgD;AAC/CD,IAAAA,MAAM,CAACO,IAAP,CACCb,OAAO,CACN,4BAAc;AACbH,MAAAA,KAAK,EAAEU,MADM;AAEbL,MAAAA;AAFa,KAAd,CADM,EAKN,CAAEU,eALI,CADR;AASAD,IAAAA,oBAAoB,IAAI,CAAxB;AACA;;AAED,MAAKF,eAAL,EAAuB;AACtBH,IAAAA,MAAM,CAACO,IAAP,CAAa,GAAGf,YAAhB;AACAa,IAAAA,oBAAoB,IAAIb,YAAY,CAACY,MAArC;AACA,GAHD,MAGO,IAAKT,aAAL,EAAqB;AAC3BK,IAAAA,MAAM,CAACO,IAAP,CAAaZ,aAAa,EAA1B;AACA,GAxCE,CA0CH;AACA;AACA;AACA;;;AACA,MACCQ,eAAe,GACZ,CAAE,uBAASD,KAAT,CADU,GAEZ,CAAEP,aAAF,IAAmB,CAAE,uBAASO,KAAT,CAHzB,EAIE;AACDF,IAAAA,MAAM,CAACO,IAAP,CACCb,OAAO,CACN,4BAAc;AACbH,MAAAA,KAAK,EAAEW,KADM;AAEbN,MAAAA;AAFa,KAAd,CADM,EAKNU,eALM,CADR;AASA,GA5DE,CA8DH;AACA;;;AACA,QAAME,aAAa,GAAGL,eAAe,GAAGE,oBAAH,GAA0B,CAA/D,CAhEG,CAkEH;AACA;;AACA,QAAMI,eAAe,GAAGN,eAAe,GAAG,CAAC,CAAJ,GAAQ,CAA/C;AAEAV,EAAAA,SAAS,CAAEO,MAAF,EAAUQ,aAAV,EAAyBC,eAAzB,CAAT;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEmpty, split, toHTMLString } from '@wordpress/rich-text';\n\n/*\n * Signals to the RichText owner that the block can be replaced with two blocks\n * as a result of splitting the block by pressing enter, or with blocks as a\n * result of splitting the block by pasting block content in the instance.\n */\nexport function splitValue( {\n\tvalue,\n\tpastedBlocks = [],\n\tonReplace,\n\tonSplit,\n\tonSplitMiddle,\n\tmultilineTag,\n} ) {\n\tif ( ! onReplace || ! onSplit ) {\n\t\treturn;\n\t}\n\n\t// Ensure the value has a selection. This might happen when trying to split\n\t// an empty value before there was a `selectionchange` event.\n\tconst { start = 0, end = 0 } = value;\n\tconst valueWithEnsuredSelection = { ...value, start, end };\n\tconst blocks = [];\n\tconst [ before, after ] = split( valueWithEnsuredSelection );\n\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\tlet lastPastedBlockIndex = -1;\n\n\t// Consider the after value to be the original it is not empty and the\n\t// before value *is* empty.\n\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t// Create a block with the content before the caret if there's no pasted\n\t// blocks, or if there are pasted blocks and the value is not empty. We do\n\t// not want a leading empty block on paste, but we do if split with e.g. the\n\t// enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\tblocks.push(\n\t\t\tonSplit(\n\t\t\t\ttoHTMLString( {\n\t\t\t\t\tvalue: before,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t} ),\n\t\t\t\t! isAfterOriginal\n\t\t\t)\n\t\t);\n\t\tlastPastedBlockIndex += 1;\n\t}\n\n\tif ( hasPastedBlocks ) {\n\t\tblocks.push( ...pastedBlocks );\n\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t} else if ( onSplitMiddle ) {\n\t\tblocks.push( onSplitMiddle() );\n\t}\n\n\t// If there's pasted blocks, append a block with non empty content / after\n\t// the caret. Otherwise, do append an empty block if there is no\n\t// `onSplitMiddle` prop, but if there is and the content is empty, the\n\t// middle block is enough to set focus in.\n\tif (\n\t\thasPastedBlocks\n\t\t\t? ! isEmpty( after )\n\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t) {\n\t\tblocks.push(\n\t\t\tonSplit(\n\t\t\t\ttoHTMLString( {\n\t\t\t\t\tvalue: after,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t} ),\n\t\t\t\tisAfterOriginal\n\t\t\t)\n\t\t);\n\t}\n\n\t// If there are pasted blocks, set the selection to the last one. Otherwise,\n\t// set the selection to the second block.\n\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t// If there are pasted blocks, move the caret to the end of the selected\n\t// block Otherwise, retain the default value.\n\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\tonReplace( blocks, indexToSelect, initialPosition );\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useFirefoxCompat = useFirefoxCompat;
|
|
7
|
+
|
|
8
|
+
var _compose = require("@wordpress/compose");
|
|
9
|
+
|
|
10
|
+
var _data = require("@wordpress/data");
|
|
11
|
+
|
|
12
|
+
var _store = require("../../store");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* WordPress dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
21
|
+
function useFirefoxCompat() {
|
|
22
|
+
const {
|
|
23
|
+
isMultiSelecting
|
|
24
|
+
} = (0, _data.useSelect)(_store.store);
|
|
25
|
+
return (0, _compose.useRefEffect)(element => {
|
|
26
|
+
function onFocus() {
|
|
27
|
+
if (!isMultiSelecting()) {
|
|
28
|
+
return;
|
|
29
|
+
} // This is a little hack to work around focus issues with nested
|
|
30
|
+
// editable elements in Firefox. For some reason the editable child
|
|
31
|
+
// element sometimes regains focus, while it should not be focusable
|
|
32
|
+
// and focus should remain on the editable parent element.
|
|
33
|
+
// To do: try to find the cause of the shifting focus.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
const parentEditable = element.parentElement.closest('[contenteditable="true"]');
|
|
37
|
+
|
|
38
|
+
if (parentEditable) {
|
|
39
|
+
parentEditable.focus();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
element.addEventListener('focus', onFocus);
|
|
44
|
+
return () => {
|
|
45
|
+
element.removeEventListener('focus', onFocus);
|
|
46
|
+
};
|
|
47
|
+
}, []);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=use-firefox-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-firefox-compat.js"],"names":["useFirefoxCompat","isMultiSelecting","blockEditorStore","element","onFocus","parentEditable","parentElement","closest","focus","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGO,SAASA,gBAAT,GAA4B;AAClC,QAAM;AAAEC,IAAAA;AAAF,MAAuB,qBAAWC,YAAX,CAA7B;AACA,SAAO,2BAAgBC,OAAF,IAAe;AACnC,aAASC,OAAT,GAAmB;AAClB,UAAK,CAAEH,gBAAgB,EAAvB,EAA4B;AAC3B;AACA,OAHiB,CAKlB;AACA;AACA;AACA;AACA;;;AACA,YAAMI,cAAc,GAAGF,OAAO,CAACG,aAAR,CAAsBC,OAAtB,CACtB,0BADsB,CAAvB;;AAIA,UAAKF,cAAL,EAAsB;AACrBA,QAAAA,cAAc,CAACG,KAAf;AACA;AACD;;AAEDL,IAAAA,OAAO,CAACM,gBAAR,CAA0B,OAA1B,EAAmCL,OAAnC;AACA,WAAO,MAAM;AACZD,MAAAA,OAAO,CAACO,mBAAR,CAA6B,OAA7B,EAAsCN,OAAtC;AACA,KAFD;AAGA,GAxBM,EAwBJ,EAxBI,CAAP;AAyBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useFirefoxCompat() {\n\tconst { isMultiSelecting } = useSelect( blockEditorStore );\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onFocus() {\n\t\t\tif ( ! isMultiSelecting() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a little hack to work around focus issues with nested\n\t\t\t// editable elements in Firefox. For some reason the editable child\n\t\t\t// element sometimes regains focus, while it should not be focusable\n\t\t\t// and focus should remain on the editable parent element.\n\t\t\t// To do: try to find the cause of the shifting focus.\n\t\t\tconst parentEditable = element.parentElement.closest(\n\t\t\t\t'[contenteditable=\"true\"]'\n\t\t\t);\n\n\t\t\tif ( parentEditable ) {\n\t\t\t\tparentEditable.focus();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'focus', onFocus );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'focus', onFocus );\n\t\t};\n\t}, [] );\n}\n"]}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useInputRules = useInputRules;
|
|
7
7
|
|
|
8
|
+
var _lodash = require("lodash");
|
|
9
|
+
|
|
8
10
|
var _element = require("@wordpress/element");
|
|
9
11
|
|
|
10
12
|
var _compose = require("@wordpress/compose");
|
|
@@ -19,6 +21,10 @@ var _store = require("../../store");
|
|
|
19
21
|
|
|
20
22
|
var _preventEventDiscovery = require("./prevent-event-discovery");
|
|
21
23
|
|
|
24
|
+
/**
|
|
25
|
+
* External dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
22
28
|
/**
|
|
23
29
|
* WordPress dependencies
|
|
24
30
|
*/
|
|
@@ -26,6 +32,30 @@ var _preventEventDiscovery = require("./prevent-event-discovery");
|
|
|
26
32
|
/**
|
|
27
33
|
* Internal dependencies
|
|
28
34
|
*/
|
|
35
|
+
// A robust way to retain selection position through various
|
|
36
|
+
// transforms is to insert a special character at the position and
|
|
37
|
+
// then recover it.
|
|
38
|
+
const START_OF_SELECTED_AREA = '\u0086';
|
|
39
|
+
|
|
40
|
+
function findSelection(blocks) {
|
|
41
|
+
let i = blocks.length;
|
|
42
|
+
|
|
43
|
+
while (i--) {
|
|
44
|
+
const attributeKey = (0, _lodash.findKey)(blocks[i].attributes, v => typeof v === 'string' && v.indexOf(START_OF_SELECTED_AREA) !== -1);
|
|
45
|
+
|
|
46
|
+
if (attributeKey) {
|
|
47
|
+
blocks[i].attributes[attributeKey] = blocks[i].attributes[attributeKey].replace(START_OF_SELECTED_AREA, '');
|
|
48
|
+
return blocks[i].clientId;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const nestedSelection = findSelection(blocks[i].innerBlocks);
|
|
52
|
+
|
|
53
|
+
if (nestedSelection) {
|
|
54
|
+
return nestedSelection;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
29
59
|
function useInputRules(props) {
|
|
30
60
|
const {
|
|
31
61
|
__unstableMarkLastChangeAsPersistent,
|
|
@@ -37,7 +67,8 @@ function useInputRules(props) {
|
|
|
37
67
|
function inputRule() {
|
|
38
68
|
const {
|
|
39
69
|
value,
|
|
40
|
-
onReplace
|
|
70
|
+
onReplace,
|
|
71
|
+
selectionChange
|
|
41
72
|
} = propsRef.current;
|
|
42
73
|
|
|
43
74
|
if (!onReplace) {
|
|
@@ -73,9 +104,10 @@ function useInputRules(props) {
|
|
|
73
104
|
}
|
|
74
105
|
|
|
75
106
|
const content = (0, _richText.toHTMLString)({
|
|
76
|
-
value: (0, _richText.
|
|
107
|
+
value: (0, _richText.insert)(value, START_OF_SELECTED_AREA, 0, start)
|
|
77
108
|
});
|
|
78
109
|
const block = transformation.transform(content);
|
|
110
|
+
selectionChange(findSelection([block]));
|
|
79
111
|
onReplace([block]);
|
|
80
112
|
|
|
81
113
|
__unstableMarkAutomaticChange();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","blockEditorStore","propsRef","current","element","inputRule","value","onReplace","start","text","characterBefore","slice","trimmedTextBefore","trim","prefixTransforms","filter","type","transformation","prefix","content","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["START_OF_SELECTED_AREA","findSelection","blocks","i","length","attributeKey","attributes","v","indexOf","replace","clientId","nestedSelection","innerBlocks","useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","blockEditorStore","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 * External dependencies\n */\nimport { findKey } from 'lodash';\n\n/**\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';\n\n// A robust way to retain selection position through various\n// transforms is to insert a special character at the position and\n// then recover it.\nconst START_OF_SELECTED_AREA = '\\u0086';\n\nfunction findSelection( blocks ) {\n\tlet i = blocks.length;\n\n\twhile ( i-- ) {\n\t\tconst attributeKey = findKey(\n\t\t\tblocks[ i ].attributes,\n\t\t\t( v ) =>\n\t\t\t\ttypeof v === 'string' &&\n\t\t\t\tv.indexOf( START_OF_SELECTED_AREA ) !== -1\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"]}
|
|
@@ -40,6 +40,10 @@ const SkipToSelectedBlock = _ref => {
|
|
|
40
40
|
onClick: onClick
|
|
41
41
|
}, (0, _i18n.__)('Skip to the selected block')) : null;
|
|
42
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/skip-to-selected-block/README.md
|
|
45
|
+
*/
|
|
46
|
+
|
|
43
47
|
|
|
44
48
|
var _default = (0, _data.withSelect)(select => {
|
|
45
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"names":["SkipToSelectedBlock","selectedBlockClientId","ref","onClick","current","focus","select","blockEditorStore","getBlockSelectionStart"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;AAIA,MAAMA,mBAAmB,GAAG,QAAiC;AAAA,MAA/B;AAAEC,IAAAA;AAAF,GAA+B;AAC5D,QAAMC,GAAG,GAAG,yCAAaD,qBAAb,CAAZ;;AACA,QAAME,OAAO,GAAG,MAAM;AACrBD,IAAAA,GAAG,CAACE,OAAJ,CAAYC,KAAZ;AACA,GAFD;;AAIA,SAAOJ,qBAAqB,GAC3B,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,SAAS,EAAC,qCAFX;AAGC,IAAA,OAAO,EAAGE;AAHX,KAKG,cAAI,4BAAJ,CALH,CAD2B,GAQxB,IARJ;AASA,CAfD
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/skip-to-selected-block/index.js"],"names":["SkipToSelectedBlock","selectedBlockClientId","ref","onClick","current","focus","select","blockEditorStore","getBlockSelectionStart"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;AAIA,MAAMA,mBAAmB,GAAG,QAAiC;AAAA,MAA/B;AAAEC,IAAAA;AAAF,GAA+B;AAC5D,QAAMC,GAAG,GAAG,yCAAaD,qBAAb,CAAZ;;AACA,QAAME,OAAO,GAAG,MAAM;AACrBD,IAAAA,GAAG,CAACE,OAAJ,CAAYC,KAAZ;AACA,GAFD;;AAIA,SAAOJ,qBAAqB,GAC3B,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,SAAS,EAAC,qCAFX;AAGC,IAAA,OAAO,EAAGE;AAHX,KAKG,cAAI,4BAAJ,CALH,CAD2B,GAQxB,IARJ;AASA,CAfD;AAiBA;AACA;AACA;;;eACe,sBAAcG,MAAF,IAAc;AACxC,SAAO;AACNL,IAAAA,qBAAqB,EAAEK,MAAM,CAC5BC,YAD4B,CAAN,CAErBC,sBAFqB;AADjB,GAAP;AAKA,CANc,EAMVR,mBANU,C","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: select(\n\t\t\tblockEditorStore\n\t\t).getBlockSelectionStart(),\n\t};\n} )( SkipToSelectedBlock );\n"]}
|
|
@@ -82,37 +82,21 @@ const ImageURLInputUI = _ref => {
|
|
|
82
82
|
setIsOpen(false);
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
const removeNewTabRel = currentRel => {
|
|
86
|
-
let newRel = currentRel;
|
|
87
|
-
|
|
88
|
-
if (currentRel !== undefined && !(0, _lodash.isEmpty)(newRel)) {
|
|
89
|
-
if (!(0, _lodash.isEmpty)(newRel)) {
|
|
90
|
-
(0, _lodash.each)(NEW_TAB_REL, relVal => {
|
|
91
|
-
const regExp = new RegExp('\\b' + relVal + '\\b', 'gi');
|
|
92
|
-
newRel = newRel.replace(regExp, '');
|
|
93
|
-
}); // Only trim if NEW_TAB_REL values was replaced.
|
|
94
|
-
|
|
95
|
-
if (newRel !== currentRel) {
|
|
96
|
-
newRel = newRel.trim();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if ((0, _lodash.isEmpty)(newRel)) {
|
|
100
|
-
newRel = undefined;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return newRel;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
85
|
const getUpdatedLinkTargetSettings = value => {
|
|
109
86
|
const newLinkTarget = value ? '_blank' : undefined;
|
|
110
87
|
let updatedRel;
|
|
111
88
|
|
|
112
|
-
if (
|
|
113
|
-
|
|
89
|
+
if (newLinkTarget) {
|
|
90
|
+
const rels = (rel !== null && rel !== void 0 ? rel : '').split(' ');
|
|
91
|
+
NEW_TAB_REL.forEach(relVal => {
|
|
92
|
+
if (!rels.includes(relVal)) {
|
|
93
|
+
rels.push(relVal);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
updatedRel = rels.join(' ');
|
|
114
97
|
} else {
|
|
115
|
-
|
|
98
|
+
const rels = (rel !== null && rel !== void 0 ? rel : '').split(' ').filter(relVal => NEW_TAB_REL.includes(relVal) === false);
|
|
99
|
+
updatedRel = rels.length ? rels.join(' ') : undefined;
|
|
116
100
|
}
|
|
117
101
|
|
|
118
102
|
return {
|
|
@@ -235,7 +219,7 @@ const ImageURLInputUI = _ref => {
|
|
|
235
219
|
checked: linkTarget === '_blank'
|
|
236
220
|
}), (0, _element.createElement)(_components.TextControl, {
|
|
237
221
|
label: (0, _i18n.__)('Link Rel'),
|
|
238
|
-
value:
|
|
222
|
+
value: rel !== null && rel !== void 0 ? rel : '',
|
|
239
223
|
onChange: onSetLinkRel
|
|
240
224
|
}), (0, _element.createElement)(_components.TextControl, {
|
|
241
225
|
label: (0, _i18n.__)('Link CSS Class'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"names":["LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","icon","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","isOpen","setIsOpen","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","startEditLink","stopEditLink","closeLinkUI","removeNewTabRel","currentRel","newRel","undefined","relVal","regExp","RegExp","replace","trim","getUpdatedLinkTargetSettings","value","newLinkTarget","updatedRel","onFocusOutside","event","autocompleteElement","current","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","find","destination","href","preventDefault","onLinkRemove","linkDestinations","title","push","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","linkEditorValue","urlLabel","linkIcon","link","close"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, isEmpty, each, map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useState, useCallback } from '@wordpress/element';\nimport {\n\tToolbarButton,\n\tButton,\n\tNavigableMenu,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\tSVG,\n\tPath,\n} from '@wordpress/components';\nimport { link as linkIcon, close } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst icon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M0,0h24v24H0V0z\" fill=\"none\" />\n\t\t<Path d=\"m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z\" />\n\t\t<Path d=\"m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z\" />\n\t</SVG>\n);\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\tconst openLinkUI = useCallback( () => {\n\t\tsetIsOpen( true );\n\t} );\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\n\tconst startEditLink = useCallback( () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t} );\n\n\tconst stopEditLink = useCallback( () => {\n\t\tsetIsEditingLink( false );\n\t} );\n\n\tconst closeLinkUI = useCallback( () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t} );\n\n\tconst removeNewTabRel = ( currentRel ) => {\n\t\tlet newRel = currentRel;\n\n\t\tif ( currentRel !== undefined && ! isEmpty( newRel ) ) {\n\t\t\tif ( ! isEmpty( newRel ) ) {\n\t\t\t\teach( NEW_TAB_REL, ( relVal ) => {\n\t\t\t\t\tconst regExp = new RegExp( '\\\\b' + relVal + '\\\\b', 'gi' );\n\t\t\t\t\tnewRel = newRel.replace( regExp, '' );\n\t\t\t\t} );\n\n\t\t\t\t// Only trim if NEW_TAB_REL values was replaced.\n\t\t\t\tif ( newRel !== currentRel ) {\n\t\t\t\t\tnewRel = newRel.trim();\n\t\t\t\t}\n\n\t\t\t\tif ( isEmpty( newRel ) ) {\n\t\t\t\t\tnewRel = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn newRel;\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( ! newLinkTarget && ! rel ) {\n\t\t\tupdatedRel = undefined;\n\t\t} else {\n\t\t\tupdatedRel = removeNewTabRel( rel );\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = useCallback( () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t} );\n\n\tconst onSubmitLinkChange = useCallback( () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t} );\n\n\tconst onLinkRemove = useCallback( () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t} );\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Media File' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Attachment Page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: (\n\t\t\t\t\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<Path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n\t\t\t\t\t\t<Path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z\" />\n\t\t\t\t\t</SVG>\n\t\t\t\t),\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tfind( linkDestinations, ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Link Rel' ) }\n\t\t\t\tvalue={ removeNewTabRel( rel ) || '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Link CSS Class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\n\tconst urlLabel = (\n\t\tfind( getLinkDestinations(), [ 'linkDestination', linkDestination ] ) ||\n\t\t{}\n\t).title;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ url ? __( 'Edit link' ) : __( 'Insert link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={ () => advancedOptions }\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\t! linkEditorValue && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ map( getLinkDestinations(), ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ ( ! url || isEditingLink ) && (\n\t\t\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ url && ! isEditingLink && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\t\tonClick={ onLinkRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"names":["LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","icon","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","isOpen","setIsOpen","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","current","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","find","destination","href","preventDefault","onLinkRemove","linkDestinations","title","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","linkEditorValue","urlLabel","linkIcon","link","close"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAEA;;AAUA;;AAKA;;AAzBA;AACA;AACA;;AAGA;AACA;AACA;;AAeA;AACA;AACA;AAGA,MAAMA,qBAAqB,GAAG,MAA9B;AACA,MAAMC,uBAAuB,GAAG,QAAhC;AACA,MAAMC,sBAAsB,GAAG,OAA/B;AACA,MAAMC,2BAA2B,GAAG,YAApC;AACA,MAAMC,WAAW,GAAG,CAAE,YAAF,EAAgB,UAAhB,CAApB;AAEA,MAAMC,IAAI,GACT,4BAAC,eAAD;AAAK,EAAA,OAAO,EAAC,WAAb;AAAyB,EAAA,KAAK,EAAC;AAA/B,GACC,4BAAC,gBAAD;AAAM,EAAA,CAAC,EAAC,iBAAR;AAA0B,EAAA,IAAI,EAAC;AAA/B,EADD,EAEC,4BAAC,gBAAD;AAAM,EAAA,CAAC,EAAC;AAAR,EAFD,EAGC,4BAAC,gBAAD;AAAM,EAAA,CAAC,EAAC;AAAR,EAHD,CADD;;AAQA,MAAMC,eAAe,GAAG,QAUjB;AAAA,MAVmB;AACzBC,IAAAA,eADyB;AAEzBC,IAAAA,WAFyB;AAGzBC,IAAAA,GAHyB;AAIzBC,IAAAA,SAAS,GAAG,OAJa;AAKzBC,IAAAA,QALyB;AAMzBC,IAAAA,SANyB;AAOzBC,IAAAA,UAPyB;AAQzBC,IAAAA,SARyB;AASzBC,IAAAA;AATyB,GAUnB;AACN,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwB,uBAAU,KAAV,CAA9B;AACA,QAAMC,UAAU,GAAG,0BAAa,MAAM;AACrCD,IAAAA,SAAS,CAAE,IAAF,CAAT;AACA,GAFkB,CAAnB;AAIA,QAAM,CAAEE,aAAF,EAAiBC,gBAAjB,IAAsC,uBAAU,KAAV,CAA5C;AACA,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,uBAAU,IAAV,CAAlC;AAEA,QAAMC,eAAe,GAAG,qBAAQ,IAAR,CAAxB;AAEA,QAAMC,aAAa,GAAG,0BAAa,MAAM;AACxC,QACCjB,eAAe,KAAKL,sBAApB,IACAK,eAAe,KAAKJ,2BAFrB,EAGE;AACDmB,MAAAA,WAAW,CAAE,EAAF,CAAX;AACA;;AACDF,IAAAA,gBAAgB,CAAE,IAAF,CAAhB;AACA,GARqB,CAAtB;AAUA,QAAMK,YAAY,GAAG,0BAAa,MAAM;AACvCL,IAAAA,gBAAgB,CAAE,KAAF,CAAhB;AACA,GAFoB,CAArB;AAIA,QAAMM,WAAW,GAAG,0BAAa,MAAM;AACtCJ,IAAAA,WAAW,CAAE,IAAF,CAAX;AACAG,IAAAA,YAAY;AACZR,IAAAA,SAAS,CAAE,KAAF,CAAT;AACA,GAJmB,CAApB;;AAMA,QAAMU,4BAA4B,GAAKC,KAAF,IAAa;AACjD,UAAMC,aAAa,GAAGD,KAAK,GAAG,QAAH,GAAcE,SAAzC;AAEA,QAAIC,UAAJ;;AACA,QAAKF,aAAL,EAAqB;AACpB,YAAMG,IAAI,GAAG,CAAEjB,GAAF,aAAEA,GAAF,cAAEA,GAAF,GAAS,EAAT,EAAckB,KAAd,CAAqB,GAArB,CAAb;AACA7B,MAAAA,WAAW,CAAC8B,OAAZ,CAAuBC,MAAF,IAAc;AAClC,YAAK,CAAEH,IAAI,CAACI,QAAL,CAAeD,MAAf,CAAP,EAAiC;AAChCH,UAAAA,IAAI,CAACK,IAAL,CAAWF,MAAX;AACA;AACD,OAJD;AAKAJ,MAAAA,UAAU,GAAGC,IAAI,CAACM,IAAL,CAAW,GAAX,CAAb;AACA,KARD,MAQO;AACN,YAAMN,IAAI,GAAG,CAAEjB,GAAF,aAAEA,GAAF,cAAEA,GAAF,GAAS,EAAT,EACXkB,KADW,CACJ,GADI,EAEXM,MAFW,CAGTJ,MAAF,IAAc/B,WAAW,CAACgC,QAAZ,CAAsBD,MAAtB,MAAmC,KAHtC,CAAb;AAKAJ,MAAAA,UAAU,GAAGC,IAAI,CAACQ,MAAL,GAAcR,IAAI,CAACM,IAAL,CAAW,GAAX,CAAd,GAAiCR,SAA9C;AACA;;AAED,WAAO;AACNjB,MAAAA,UAAU,EAAEgB,aADN;AAENd,MAAAA,GAAG,EAAEgB;AAFC,KAAP;AAIA,GAzBD;;AA2BA,QAAMU,cAAc,GAAG,0BAAa,MAAM;AACzC,WAASC,KAAF,IAAa;AACnB;AACA;AACA;AACA;AACA,YAAMC,mBAAmB,GAAGpB,eAAe,CAACqB,OAA5C;;AACA,UACCD,mBAAmB,IACnBA,mBAAmB,CAACE,QAApB,CAA8BH,KAAK,CAACI,MAApC,CAFD,EAGE;AACD;AACA;;AACD7B,MAAAA,SAAS,CAAE,KAAF,CAAT;AACAK,MAAAA,WAAW,CAAE,IAAF,CAAX;AACAG,MAAAA,YAAY;AACZ,KAfD;AAgBA,GAjBsB,CAAvB;AAmBA,QAAMsB,kBAAkB,GAAG,0BAAa,MAAM;AAC7C,WAASL,KAAF,IAAa;AACnB,UAAKrB,QAAL,EAAgB;AAAA;;AACf;AACA;AACA,cAAM2B,mBAAmB,GACxB,0BAAAC,mBAAmB,GAAGC,IAAtB,CACGC,WAAF,IAAmBA,WAAW,CAAC1C,GAAZ,KAAoBY,QADxC,iFAEGd,eAFH,KAEsBN,uBAHvB;AAKAO,QAAAA,WAAW,CAAE;AACZ4C,UAAAA,IAAI,EAAE/B,QADM;AAEZd,UAAAA,eAAe,EAAEyC;AAFL,SAAF,CAAX;AAIA;;AACDvB,MAAAA,YAAY;AACZH,MAAAA,WAAW,CAAE,IAAF,CAAX;AACAoB,MAAAA,KAAK,CAACW,cAAN;AACA,KAjBD;AAkBA,GAnB0B,CAA3B;AAqBA,QAAMC,YAAY,GAAG,0BAAa,MAAM;AACvC9C,IAAAA,WAAW,CAAE;AACZD,MAAAA,eAAe,EAAEP,qBADL;AAEZoD,MAAAA,IAAI,EAAE;AAFM,KAAF,CAAX;AAIA,GALoB,CAArB;;AAOA,QAAMH,mBAAmB,GAAG,MAAM;AACjC,UAAMM,gBAAgB,GAAG,CACxB;AACChD,MAAAA,eAAe,EAAEL,sBADlB;AAECsD,MAAAA,KAAK,EAAE,cAAI,YAAJ,CAFR;AAGC/C,MAAAA,GAAG,EAAEC,SAAS,KAAK,OAAd,GAAwBC,QAAxB,GAAmCmB,SAHzC;AAICzB,MAAAA;AAJD,KADwB,CAAzB;;AAQA,QAAKK,SAAS,KAAK,OAAd,IAAyBE,SAA9B,EAA0C;AACzC2C,MAAAA,gBAAgB,CAAClB,IAAjB,CAAuB;AACtB9B,QAAAA,eAAe,EAAEJ,2BADK;AAEtBqD,QAAAA,KAAK,EAAE,cAAI,iBAAJ,CAFe;AAGtB/C,QAAAA,GAAG,EAAEC,SAAS,KAAK,OAAd,GAAwBE,SAAxB,GAAoCkB,SAHnB;AAItBzB,QAAAA,IAAI,EACH,4BAAC,eAAD;AAAK,UAAA,OAAO,EAAC,WAAb;AAAyB,UAAA,KAAK,EAAC;AAA/B,WACC,4BAAC,gBAAD;AAAM,UAAA,CAAC,EAAC,iBAAR;AAA0B,UAAA,IAAI,EAAC;AAA/B,UADD,EAEC,4BAAC,gBAAD;AAAM,UAAA,CAAC,EAAC;AAAR,UAFD;AALqB,OAAvB;AAWA;;AACD,WAAOkD,gBAAP;AACA,GAvBD;;AAyBA,QAAME,SAAS,GAAK7B,KAAF,IAAa;AAC9B,UAAM2B,gBAAgB,GAAGN,mBAAmB,EAA5C;AACA,QAAIS,oBAAJ;;AACA,QAAK,CAAE9B,KAAP,EAAe;AACd8B,MAAAA,oBAAoB,GAAG1D,qBAAvB;AACA,KAFD,MAEO;AACN0D,MAAAA,oBAAoB,GAAG,CACtB,kBAAMH,gBAAN,EAA0BJ,WAAF,IAAmB;AAC1C,eAAOA,WAAW,CAAC1C,GAAZ,KAAoBmB,KAA3B;AACA,OAFD,KAEO;AAAErB,QAAAA,eAAe,EAAEN;AAAnB,OAHe,EAIrBM,eAJF;AAKA;;AACDC,IAAAA,WAAW,CAAE;AACZD,MAAAA,eAAe,EAAEmD,oBADL;AAEZN,MAAAA,IAAI,EAAExB;AAFM,KAAF,CAAX;AAIA,GAhBD;;AAkBA,QAAM+B,WAAW,GAAK/B,KAAF,IAAa;AAChC,UAAMgC,iBAAiB,GAAGjC,4BAA4B,CAAEC,KAAF,CAAtD;AACApB,IAAAA,WAAW,CAAEoD,iBAAF,CAAX;AACA,GAHD;;AAKA,QAAMC,YAAY,GAAKjC,KAAF,IAAa;AACjCpB,IAAAA,WAAW,CAAE;AAAEO,MAAAA,GAAG,EAAEa;AAAP,KAAF,CAAX;AACA,GAFD;;AAIA,QAAMkC,cAAc,GAAKlC,KAAF,IAAa;AACnCpB,IAAAA,WAAW,CAAE;AAAEM,MAAAA,SAAS,EAAEc;AAAb,KAAF,CAAX;AACA,GAFD;;AAIA,QAAMmC,eAAe,GACpB,qDACC,4BAAC,yBAAD;AACC,IAAA,KAAK,EAAG,cAAI,iBAAJ,CADT;AAEC,IAAA,QAAQ,EAAGJ,WAFZ;AAGC,IAAA,OAAO,EAAG9C,UAAU,KAAK;AAH1B,IADD,EAMC,4BAAC,uBAAD;AACC,IAAA,KAAK,EAAG,cAAI,UAAJ,CADT;AAEC,IAAA,KAAK,EAAGE,GAAH,aAAGA,GAAH,cAAGA,GAAH,GAAU,EAFhB;AAGC,IAAA,QAAQ,EAAG8C;AAHZ,IAND,EAWC,4BAAC,uBAAD;AACC,IAAA,KAAK,EAAG,cAAI,gBAAJ,CADT;AAEC,IAAA,KAAK,EAAG/C,SAAS,IAAI,EAFtB;AAGC,IAAA,QAAQ,EAAGgD;AAHZ,IAXD,CADD;AAoBA,QAAME,eAAe,GAAG3C,QAAQ,KAAK,IAAb,GAAoBA,QAApB,GAA+BZ,GAAvD;AAEA,QAAMwD,QAAQ,GAAG,CAChB,kBAAMhB,mBAAmB,EAAzB,EAA6B,CAAE,iBAAF,EAAqB1C,eAArB,CAA7B,KACA,EAFgB,EAGfiD,KAHF;AAKA,SACC,qDACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGU,WADR;AAEC,IAAA,SAAS,EAAC,6BAFX;AAGC,IAAA,KAAK,EAAGzD,GAAG,GAAG,cAAI,WAAJ,CAAH,GAAuB,cAAI,aAAJ,CAHnC;AAIC,qBAAgBO,MAJjB;AAKC,IAAA,OAAO,EAAGE;AALX,IADD,EAQGF,MAAM,IACP,4BAAC,cAAD;AACC,IAAA,cAAc,EAAGyB,cAAc,EADhC;AAEC,IAAA,OAAO,EAAGf,WAFX;AAGC,IAAA,cAAc,EAAG,MAAMqC,eAHxB;AAIC,IAAA,kBAAkB,EACjB,CAAEC,eAAF,IACC,4BAAC,yBAAD,QACG,iBAAKf,mBAAmB,EAAxB,EAA8BkB,IAAF,IAC7B,4BAAC,oBAAD;AACC,MAAA,GAAG,EAAGA,IAAI,CAAC5D,eADZ;AAEC,MAAA,IAAI,EAAG4D,IAAI,CAAC9D,IAFb;AAGC,MAAA,OAAO,EAAG,MAAM;AACfiB,QAAAA,WAAW,CAAE,IAAF,CAAX;AACAmC,QAAAA,SAAS,CAAEU,IAAI,CAAC1D,GAAP,CAAT;AACAgB,QAAAA,YAAY;AACZ;AAPF,OASG0C,IAAI,CAACX,KATR,CADC,CADH;AANH,KAwBG,CAAE,CAAE/C,GAAF,IAASU,aAAX,KACD,4BAAC,cAAD,CAAY,UAAZ;AACC,IAAA,SAAS,EAAC,qDADX;AAEC,IAAA,KAAK,EAAG6C,eAFT;AAGC,IAAA,kBAAkB,EAAG1C,WAHtB;AAIC,IAAA,QAAQ,EAAGyB,kBAAkB,EAJ9B;AAKC,IAAA,eAAe,EAAGxB;AALnB,IAzBF,EAiCGd,GAAG,IAAI,CAAEU,aAAT,IACD,qDACC,4BAAC,cAAD,CAAY,UAAZ;AACC,IAAA,SAAS,EAAC,qDADX;AAEC,IAAA,GAAG,EAAGV,GAFP;AAGC,IAAA,eAAe,EAAGe,aAHnB;AAIC,IAAA,QAAQ,EAAGyC;AAJZ,IADD,EAOC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGG,YADR;AAEC,IAAA,KAAK,EAAG,cAAI,aAAJ,CAFT;AAGC,IAAA,OAAO,EAAGd;AAHX,IAPD,CAlCF,CATF,CADD;AA8DA,CApQD","sourcesContent":["/**\n * External dependencies\n */\nimport { find, map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useState, useCallback } from '@wordpress/element';\nimport {\n\tToolbarButton,\n\tButton,\n\tNavigableMenu,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\tSVG,\n\tPath,\n} from '@wordpress/components';\nimport { link as linkIcon, close } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst icon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M0,0h24v24H0V0z\" fill=\"none\" />\n\t\t<Path d=\"m19 5v14h-14v-14h14m0-2h-14c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z\" />\n\t\t<Path d=\"m14.14 11.86l-3 3.87-2.14-2.59-3 3.86h12l-3.86-5.14z\" />\n\t</SVG>\n);\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\tconst openLinkUI = useCallback( () => {\n\t\tsetIsOpen( true );\n\t} );\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\n\tconst startEditLink = useCallback( () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t} );\n\n\tconst stopEditLink = useCallback( () => {\n\t\tsetIsEditingLink( false );\n\t} );\n\n\tconst closeLinkUI = useCallback( () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t} );\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = useCallback( () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t} );\n\n\tconst onSubmitLinkChange = useCallback( () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t} );\n\n\tconst onLinkRemove = useCallback( () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t} );\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Media File' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Attachment Page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: (\n\t\t\t\t\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<Path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n\t\t\t\t\t\t<Path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z\" />\n\t\t\t\t\t</SVG>\n\t\t\t\t),\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tfind( linkDestinations, ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Link Rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Link CSS Class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\n\tconst urlLabel = (\n\t\tfind( getLinkDestinations(), [ 'linkDestination', linkDestination ] ) ||\n\t\t{}\n\t).title;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ url ? __( 'Edit link' ) : __( 'Insert link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={ () => advancedOptions }\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\t! linkEditorValue && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ map( getLinkDestinations(), ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ ( ! url || isEditingLink ) && (\n\t\t\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ url && ! isEditingLink && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\t\tonClick={ onLinkRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"]}
|