@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.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 +6 -0
- package/README.md +33 -3
- package/build/components/block-canvas/index.js +107 -0
- package/build/components/block-canvas/index.js.map +1 -0
- package/build/components/block-inspector/index.js +4 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +28 -8
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +68 -0
- package/build/components/block-patterns-paging/index.js.map +1 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -7
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +1 -0
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +5 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +1 -1
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/border-radius-control/linked-button.js +2 -4
- package/build/components/border-radius-control/linked-button.js.map +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/default-block-appender/index.native.js +20 -1
- package/build/components/default-block-appender/index.native.js.map +1 -1
- package/build/components/duotone/utils.js +68 -0
- package/build/components/duotone/utils.js.map +1 -1
- package/build/components/editor-styles/index.js +28 -9
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -101
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +61 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -0
- package/build/components/global-styles/index.js +11 -17
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +19 -15
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +67 -33
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +2 -5
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-editor/use-transform-image.js +9 -9
- package/build/components/image-editor/use-transform-image.js.map +1 -1
- package/build/components/index.js +8 -12
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +6 -5
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +45 -22
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js +9 -9
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-filter.js +137 -0
- package/build/components/inserter/block-patterns-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +128 -42
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +61 -0
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build/components/inserter/hooks/use-patterns-state.js +21 -10
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/menu.js +13 -11
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-results.js +4 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -12
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls/block-support-slot-container.js +12 -1
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build/components/inspector-controls/fill.js +24 -13
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/groups.js +5 -3
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +13 -0
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/link-control/index.js +12 -2
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +1 -3
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +13 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +29 -24
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +11 -11
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +2 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/constants.js +30 -0
- package/build/components/media-upload/constants.js.map +1 -0
- package/build/components/media-upload/index.native.js +63 -53
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +1 -1
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/index.js +34 -35
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +14 -32
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/multiline.js +95 -0
- package/build/components/rich-text/multiline.js.map +1 -0
- package/build/components/rich-text/split-value.js +10 -16
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-enter.js +31 -40
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +18 -33
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/use-block-commands/index.js +30 -18
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +5 -2
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/hooks/background.js +263 -0
- package/build/hooks/background.js.map +1 -0
- package/build/hooks/block-hooks.js +188 -0
- package/build/hooks/block-hooks.js.map +1 -0
- package/build/hooks/block-rename-ui.js +161 -0
- package/build/hooks/block-rename-ui.js.map +1 -0
- package/build/hooks/duotone.js +29 -42
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +2 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +31 -14
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +4 -2
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +10 -3
- package/build/hooks/style.js.map +1 -1
- package/build/private-apis.js +2 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +33 -10
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +42 -8
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +25 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +43 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +84 -23
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +0 -4
- package/build/store/utils.js.map +1 -1
- package/build-module/components/block-canvas/index.js +97 -0
- package/build-module/components/block-canvas/index.js.map +1 -0
- package/build-module/components/block-inspector/index.js +4 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +30 -10
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +61 -0
- package/build-module/components/block-patterns-paging/index.js.map +1 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +4 -7
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +1 -0
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +5 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +1 -1
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/border-radius-control/linked-button.js +2 -4
- package/build-module/components/border-radius-control/linked-button.js.map +1 -1
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/default-block-appender/index.native.js +20 -1
- package/build-module/components/default-block-appender/index.native.js.map +1 -1
- package/build-module/components/duotone/utils.js +65 -0
- package/build-module/components/duotone/utils.js.map +1 -1
- package/build-module/components/editor-styles/index.js +28 -9
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -100
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +53 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
- package/build-module/components/global-styles/index.js +2 -2
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +18 -16
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +66 -33
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +2 -5
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-editor/use-transform-image.js +9 -9
- package/build-module/components/image-editor/use-transform-image.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +47 -24
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +9 -9
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-filter.js +128 -0
- package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +125 -44
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +54 -0
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/menu.js +13 -11
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-results.js +4 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -12
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +25 -14
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +5 -3
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +15 -1
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/link-control/index.js +12 -2
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +1 -3
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +13 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +30 -25
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +2 -2
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +7 -7
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +2 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/constants.js +14 -0
- package/build-module/components/media-upload/constants.js.map +1 -0
- package/build-module/components/media-upload/index.native.js +53 -34
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +1 -1
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +35 -37
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +15 -33
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/multiline.js +87 -0
- package/build-module/components/rich-text/multiline.js.map +1 -0
- package/build-module/components/rich-text/split-value.js +10 -16
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +33 -42
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +19 -34
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +2 -2
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +28 -16
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -2
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/hooks/background.js +249 -0
- package/build-module/hooks/background.js.map +1 -0
- package/build-module/hooks/block-hooks.js +181 -0
- package/build-module/hooks/block-hooks.js.map +1 -0
- package/build-module/hooks/block-rename-ui.js +154 -0
- package/build-module/hooks/block-rename-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +26 -39
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -2
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +33 -16
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +4 -2
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +10 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/private-apis.js +2 -0
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +33 -10
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +39 -8
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +23 -3
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +41 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +78 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +0 -4
- package/build-module/store/utils.js.map +1 -1
- package/build-style/content-rtl.css +0 -1
- package/build-style/content.css +0 -1
- package/build-style/style-rtl.css +201 -131
- package/build-style/style.css +201 -131
- package/package.json +32 -32
- package/src/components/block-canvas/index.js +108 -0
- package/src/components/block-inspector/index.js +5 -1
- package/src/components/block-list/content.scss +0 -1
- package/src/components/block-patterns-list/index.js +53 -19
- package/src/components/block-patterns-list/style.scss +26 -9
- package/src/components/block-patterns-paging/index.js +92 -0
- package/src/components/block-patterns-paging/style.scss +45 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
- package/src/components/block-settings-menu-controls/index.js +4 -9
- package/src/components/block-styles/index.js +1 -0
- package/src/components/block-styles/style.scss +3 -3
- package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
- package/src/components/block-tools/block-contextual-toolbar.js +16 -5
- package/src/components/block-tools/block-selection-button.js +9 -1
- package/src/components/block-tools/style.scss +0 -98
- package/src/components/border-radius-control/input-controls.js +1 -1
- package/src/components/border-radius-control/linked-button.js +8 -11
- package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
- package/src/components/colors/with-colors.js +3 -2
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
- package/src/components/default-block-appender/index.native.js +26 -3
- package/src/components/duotone/utils.js +65 -0
- package/src/components/editor-styles/index.js +32 -23
- package/src/components/global-styles/hooks.js +4 -112
- package/src/components/global-styles/image-settings-panel.js +71 -0
- package/src/components/global-styles/index.js +4 -3
- package/src/components/global-styles/use-global-styles-output.js +25 -16
- package/src/components/global-styles/utils.js +1 -2
- package/src/components/iframe/index.js +72 -33
- package/src/components/image-editor/use-save-image.js +2 -9
- package/src/components/image-editor/use-transform-image.js +9 -9
- package/src/components/index.js +1 -1
- package/src/components/index.native.js +2 -2
- package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
- package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +68 -43
- package/src/components/inserter/block-patterns-explorer/sidebar.js +8 -8
- package/src/components/inserter/block-patterns-filter.js +183 -0
- package/src/components/inserter/block-patterns-tab.js +217 -58
- package/src/components/inserter/hooks/use-patterns-paging.js +76 -0
- package/src/components/inserter/hooks/use-patterns-state.js +27 -16
- package/src/components/inserter/menu.js +15 -17
- package/src/components/inserter/search-results.js +6 -4
- package/src/components/inserter/style.scss +36 -7
- package/src/components/inserter/tabs.js +2 -12
- package/src/components/inserter/test/index.native.js +8 -12
- package/src/components/inspector-controls/block-support-slot-container.js +19 -3
- package/src/components/inspector-controls/fill.js +28 -14
- package/src/components/inspector-controls/groups.js +6 -2
- package/src/components/inspector-controls/slot.js +28 -3
- package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
- package/src/components/link-control/index.js +13 -0
- package/src/components/link-control/style.scss +23 -2
- package/src/components/link-control/test/index.js +88 -6
- package/src/components/list-view/block-select-button.js +1 -3
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/style.scss +1 -2
- package/src/components/list-view/use-block-selection.js +38 -32
- package/src/components/media-placeholder/README.md +2 -2
- package/src/components/media-placeholder/index.js +2 -2
- package/src/components/media-placeholder/index.native.js +11 -12
- package/src/components/media-replace-flow/index.js +2 -2
- package/src/components/media-replace-flow/test/index.js +5 -23
- package/src/components/media-upload/README.md +3 -2
- package/src/components/media-upload/constants.js +15 -0
- package/src/components/media-upload/index.native.js +66 -40
- package/src/components/media-upload/style.native.scss +4 -0
- package/src/components/media-upload/test/index.native.js +2 -2
- package/src/components/preview-options/README.md +7 -0
- package/src/components/preview-options/index.js +1 -1
- package/src/components/rich-text/index.js +48 -44
- package/src/components/rich-text/index.native.js +14 -42
- package/src/components/rich-text/multiline.js +121 -0
- package/src/components/rich-text/split-value.js +10 -35
- package/src/components/rich-text/use-enter.js +32 -42
- package/src/components/rich-text/use-paste-handler.js +16 -40
- package/src/components/spacing-sizes-control/style.scss +5 -7
- package/src/components/spacing-sizes-control/utils.js +1 -2
- package/src/components/use-block-commands/index.js +28 -20
- package/src/components/use-block-display-information/index.js +3 -0
- package/src/hooks/background.js +299 -0
- package/src/hooks/background.scss +75 -0
- package/src/hooks/block-hooks.js +257 -0
- package/src/hooks/block-hooks.scss +16 -0
- package/src/hooks/block-rename-ui.js +231 -0
- package/src/hooks/block-rename-ui.scss +3 -0
- package/src/hooks/duotone.js +42 -43
- package/src/hooks/index.js +2 -2
- package/src/hooks/layout.js +31 -33
- package/src/hooks/position.js +4 -3
- package/src/hooks/style.js +11 -2
- package/src/hooks/test/align.native.js +4 -3
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +52 -10
- package/src/store/private-actions.js +37 -6
- package/src/store/private-selectors.js +28 -3
- package/src/store/reducer.js +38 -0
- package/src/store/selectors.js +107 -26
- package/src/store/test/actions.js +19 -8
- package/src/store/test/private-actions.js +17 -0
- package/src/store/test/reducer.js +25 -0
- package/src/store/test/selectors.js +130 -123
- package/src/store/utils.js +3 -10
- package/src/style.scss +4 -0
- package/build/components/duotone/components.js +0 -135
- package/build/components/duotone/components.js.map +0 -1
- package/build/components/duotone/index.js +0 -38
- package/build/components/duotone/index.js.map +0 -1
- package/build/components/global-styles/behaviors-panel.js +0 -64
- package/build/components/global-styles/behaviors-panel.js.map +0 -1
- package/build/components/inserter/reusable-blocks-tab.js +0 -85
- package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build/hooks/auto-inserting-blocks.js +0 -174
- package/build/hooks/auto-inserting-blocks.js.map +0 -1
- package/build/hooks/behaviors.js +0 -173
- package/build/hooks/behaviors.js.map +0 -1
- package/build-module/components/duotone/components.js +0 -126
- package/build-module/components/duotone/components.js.map +0 -1
- package/build-module/components/duotone/index.js +0 -3
- package/build-module/components/duotone/index.js.map +0 -1
- package/build-module/components/global-styles/behaviors-panel.js +0 -57
- package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
- package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build-module/hooks/auto-inserting-blocks.js +0 -167
- package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
- package/build-module/hooks/behaviors.js +0 -166
- package/build-module/hooks/behaviors.js.map +0 -1
- package/src/components/duotone/components.js +0 -133
- package/src/components/duotone/index.js +0 -7
- package/src/components/global-styles/behaviors-panel.js +0 -71
- package/src/components/inserter/reusable-blocks-tab.js +0 -84
- package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
- package/src/hooks/auto-inserting-blocks.js +0 -232
- package/src/hooks/behaviors.js +0 -206
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","Content","classes","RichTextWrapper","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","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","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","createElement","ref","__unstableIsSelected","__unstableInputRule","__unstableMultilineTag","__unstableOnEnterFormattedText","__unstableOnExitFormattedText","__unstableOnCreateUndoLevel","__unstableDidAutomaticChange","__unstableUndo","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","Fragment","inline","anchorRef","completers","contentRef","listBoxId","activeId","onKeyDown","className","event","ForwardedRichTextContainer","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Platform, useRef, useCallback, forwardRef } 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 { 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 { 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';\nimport { Content } from './content';\n\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\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\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\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 embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\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// eslint-disable-next-line react-hooks/exhaustive-deps\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 ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\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// eslint-disable-next-line react-hooks/exhaustive-deps\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\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\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\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\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\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","insert","create","split","toHTMLString","slice","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","Content","classes","RichTextWrapper","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","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","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","createElement","ref","__unstableIsSelected","__unstableInputRule","__unstableMultilineTag","__unstableOnEnterFormattedText","__unstableOnExitFormattedText","__unstableOnCreateUndoLevel","__unstableDidAutomaticChange","__unstableUndo","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","Fragment","inline","anchorRef","completers","contentRef","listBoxId","activeId","onKeyDown","className","event","ForwardedRichTextContainer","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Platform, useRef, useCallback, forwardRef } 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\tinsert,\n\tcreate,\n\tsplit,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\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 { 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';\nimport { Content } from './content';\n\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\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\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\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 embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\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// eslint-disable-next-line react-hooks/exhaustive-deps\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 ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\n\t\t\t}\n\n\t\t\tconst { text, start: splitStart, end: splitEnd } = value;\n\t\t\tconst canSplitAtEnd =\n\t\t\t\tonSplitAtEnd &&\n\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\tsplitEnd === text.length;\n\n\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t}\n\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( value );\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\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\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\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\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\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\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\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\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\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"],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { forwardRef } from '@wordpress/element';
|
|
6
|
+
import deprecated from '@wordpress/deprecated';
|
|
7
|
+
import { useDispatch } from '@wordpress/data';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import { RichTextWrapper } from './';
|
|
13
|
+
import { store as blockEditorStore } from '../../store';
|
|
14
|
+
import { useBlockEditContext } from '../block-edit';
|
|
15
|
+
import { getMultilineTag } from './utils';
|
|
16
|
+
function RichTextMultiline({
|
|
17
|
+
children,
|
|
18
|
+
identifier,
|
|
19
|
+
tagName: TagName = 'div',
|
|
20
|
+
value = '',
|
|
21
|
+
onChange,
|
|
22
|
+
multiline,
|
|
23
|
+
...props
|
|
24
|
+
}, forwardedRef) {
|
|
25
|
+
deprecated('wp.blockEditor.RichText multiline prop', {
|
|
26
|
+
since: '6.1',
|
|
27
|
+
version: '6.3',
|
|
28
|
+
alternative: 'nested blocks (InnerBlocks)',
|
|
29
|
+
link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/'
|
|
30
|
+
});
|
|
31
|
+
const {
|
|
32
|
+
clientId
|
|
33
|
+
} = useBlockEditContext();
|
|
34
|
+
const {
|
|
35
|
+
selectionChange
|
|
36
|
+
} = useDispatch(blockEditorStore);
|
|
37
|
+
const multilineTagName = getMultilineTag(multiline);
|
|
38
|
+
value = value || `<${multilineTagName}></${multilineTagName}>`;
|
|
39
|
+
const padded = `</${multilineTagName}>${value}<${multilineTagName}>`;
|
|
40
|
+
const values = padded.split(`</${multilineTagName}><${multilineTagName}>`);
|
|
41
|
+
values.shift();
|
|
42
|
+
values.pop();
|
|
43
|
+
function _onChange(newValues) {
|
|
44
|
+
onChange(`<${multilineTagName}>${newValues.join(`</${multilineTagName}><${multilineTagName}>`)}</${multilineTagName}>`);
|
|
45
|
+
}
|
|
46
|
+
return createElement(TagName, {
|
|
47
|
+
ref: forwardedRef
|
|
48
|
+
}, values.map((_value, index) => {
|
|
49
|
+
return createElement(RichTextWrapper, {
|
|
50
|
+
key: index,
|
|
51
|
+
identifier: `${identifier}-${index}`,
|
|
52
|
+
tagName: multilineTagName,
|
|
53
|
+
value: _value,
|
|
54
|
+
onChange: newValue => {
|
|
55
|
+
const newValues = values.slice();
|
|
56
|
+
newValues[index] = newValue;
|
|
57
|
+
_onChange(newValues);
|
|
58
|
+
},
|
|
59
|
+
isSelected: undefined,
|
|
60
|
+
onSplit: v => v,
|
|
61
|
+
onReplace: array => {
|
|
62
|
+
const newValues = values.slice();
|
|
63
|
+
newValues.splice(index, 1, ...array);
|
|
64
|
+
_onChange(newValues);
|
|
65
|
+
selectionChange(clientId, `${identifier}-${index + 1}`, 0, 0);
|
|
66
|
+
},
|
|
67
|
+
onMerge: forward => {
|
|
68
|
+
const newValues = values.slice();
|
|
69
|
+
let offset = 0;
|
|
70
|
+
if (forward) {
|
|
71
|
+
if (!newValues[index + 1]) return;
|
|
72
|
+
newValues.splice(index, 2, newValues[index] + newValues[index + 1]);
|
|
73
|
+
offset = newValues[index].length - 1;
|
|
74
|
+
} else {
|
|
75
|
+
if (!newValues[index - 1]) return;
|
|
76
|
+
newValues.splice(index - 1, 2, newValues[index - 1] + newValues[index]);
|
|
77
|
+
offset = newValues[index - 1].length - 1;
|
|
78
|
+
}
|
|
79
|
+
_onChange(newValues);
|
|
80
|
+
selectionChange(clientId, `${identifier}-${index - (forward ? 0 : 1)}`, offset, offset);
|
|
81
|
+
},
|
|
82
|
+
...props
|
|
83
|
+
});
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
export default forwardRef(RichTextMultiline);
|
|
87
|
+
//# sourceMappingURL=multiline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","deprecated","useDispatch","RichTextWrapper","store","blockEditorStore","useBlockEditContext","getMultilineTag","RichTextMultiline","children","identifier","tagName","TagName","value","onChange","multiline","props","forwardedRef","since","version","alternative","link","clientId","selectionChange","multilineTagName","padded","values","split","shift","pop","_onChange","newValues","join","createElement","ref","map","_value","index","key","newValue","slice","isSelected","undefined","onSplit","v","onReplace","array","splice","onMerge","forward","offset","length"],"sources":["@wordpress/block-editor/src/components/rich-text/multiline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { RichTextWrapper } from './';\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockEditContext } from '../block-edit';\nimport { getMultilineTag } from './utils';\n\nfunction RichTextMultiline(\n\t{\n\t\tchildren,\n\t\tidentifier,\n\t\ttagName: TagName = 'div',\n\t\tvalue = '',\n\t\tonChange,\n\t\tmultiline,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\tsince: '6.1',\n\t\tversion: '6.3',\n\t\talternative: 'nested blocks (InnerBlocks)',\n\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t} );\n\n\tconst { clientId } = useBlockEditContext();\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\n\tconst multilineTagName = getMultilineTag( multiline );\n\tvalue = value || `<${ multilineTagName }></${ multilineTagName }>`;\n\tconst padded = `</${ multilineTagName }>${ value }<${ multilineTagName }>`;\n\tconst values = padded.split(\n\t\t`</${ multilineTagName }><${ multilineTagName }>`\n\t);\n\n\tvalues.shift();\n\tvalues.pop();\n\n\tfunction _onChange( newValues ) {\n\t\tonChange(\n\t\t\t`<${ multilineTagName }>${ newValues.join(\n\t\t\t\t`</${ multilineTagName }><${ multilineTagName }>`\n\t\t\t) }</${ multilineTagName }>`\n\t\t);\n\t}\n\n\treturn (\n\t\t<TagName ref={ forwardedRef }>\n\t\t\t{ values.map( ( _value, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<RichTextWrapper\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tidentifier={ `${ identifier }-${ index }` }\n\t\t\t\t\t\ttagName={ multilineTagName }\n\t\t\t\t\t\tvalue={ _value }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tnewValues[ index ] = newValue;\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisSelected={ undefined }\n\t\t\t\t\t\tonSplit={ ( v ) => v }\n\t\t\t\t\t\tonReplace={ ( array ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tnewValues.splice( index, 1, ...array );\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t\tselectionChange(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t`${ identifier }-${ index + 1 }`,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMerge={ ( forward ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\tif ( forward ) {\n\t\t\t\t\t\t\t\tif ( ! newValues[ index + 1 ] ) return;\n\t\t\t\t\t\t\t\tnewValues.splice(\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\tnewValues[ index ] + newValues[ index + 1 ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\toffset = newValues[ index ].length - 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif ( ! newValues[ index - 1 ] ) return;\n\t\t\t\t\t\t\t\tnewValues.splice(\n\t\t\t\t\t\t\t\t\tindex - 1,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\tnewValues[ index - 1 ] + newValues[ index ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\toffset = newValues[ index - 1 ].length - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t\tselectionChange(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t`${ identifier }-${\n\t\t\t\t\t\t\t\t\tindex - ( forward ? 0 : 1 )\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\toffset\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</TagName>\n\t);\n}\n\nexport default forwardRef( RichTextMultiline );\n"],"mappings":"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"}
|
|
@@ -12,9 +12,7 @@ export function splitValue({
|
|
|
12
12
|
value,
|
|
13
13
|
pastedBlocks = [],
|
|
14
14
|
onReplace,
|
|
15
|
-
onSplit
|
|
16
|
-
onSplitMiddle,
|
|
17
|
-
multilineTag
|
|
15
|
+
onSplit
|
|
18
16
|
}) {
|
|
19
17
|
if (!onReplace || !onSplit) {
|
|
20
18
|
return;
|
|
@@ -42,30 +40,26 @@ export function splitValue({
|
|
|
42
40
|
|
|
43
41
|
// Create a block with the content before the caret if there's no pasted
|
|
44
42
|
// blocks, or if there are pasted blocks and the value is not empty. We do
|
|
45
|
-
// not want a leading empty block on paste, but we do if split with e.g.
|
|
46
|
-
// enter key.
|
|
43
|
+
// not want a leading empty block on paste, but we do if we split with e.g.
|
|
44
|
+
// the enter key.
|
|
47
45
|
if (!hasPastedBlocks || !isEmpty(before)) {
|
|
48
46
|
blocks.push(onSplit(toHTMLString({
|
|
49
|
-
value: before
|
|
50
|
-
multilineTag
|
|
47
|
+
value: before
|
|
51
48
|
}), !isAfterOriginal));
|
|
52
49
|
lastPastedBlockIndex += 1;
|
|
53
50
|
}
|
|
54
51
|
if (hasPastedBlocks) {
|
|
55
52
|
blocks.push(...pastedBlocks);
|
|
56
53
|
lastPastedBlockIndex += pastedBlocks.length;
|
|
57
|
-
} else if (onSplitMiddle) {
|
|
58
|
-
blocks.push(onSplitMiddle());
|
|
59
54
|
}
|
|
60
55
|
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
if (hasPastedBlocks
|
|
56
|
+
// Create a block with the content after the caret if there's no pasted
|
|
57
|
+
// blocks, or if there are pasted blocks and the value is not empty. We do
|
|
58
|
+
// not want a trailing empty block on paste, but we do if we split with e.g.
|
|
59
|
+
// the enter key.
|
|
60
|
+
if (!hasPastedBlocks || !isEmpty(after)) {
|
|
66
61
|
blocks.push(onSplit(toHTMLString({
|
|
67
|
-
value: after
|
|
68
|
-
multilineTag
|
|
62
|
+
value: after
|
|
69
63
|
}), isAfterOriginal));
|
|
70
64
|
}
|
|
71
65
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isEmpty","split","toHTMLString","splitValue","value","pastedBlocks","onReplace","onSplit","
|
|
1
|
+
{"version":3,"names":["isEmpty","split","toHTMLString","splitValue","value","pastedBlocks","onReplace","onSplit","start","end","valueWithEnsuredSelection","blocks","before","after","hasPastedBlocks","length","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition"],"sources":["@wordpress/block-editor/src/components/rich-text/split-value.js"],"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( { value, pastedBlocks = [], onReplace, onSplit } ) {\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 we split with e.g.\n\t// the enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\tblocks.push(\n\t\t\tonSplit( toHTMLString( { value: before } ), ! isAfterOriginal )\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}\n\n\t// Create a block with the content after 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 trailing empty block on paste, but we do if we split with e.g.\n\t// the enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( after ) ) {\n\t\tblocks.push(\n\t\t\tonSplit( toHTMLString( { value: after } ), isAfterOriginal )\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"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,EAAEC,KAAK,EAAEC,YAAY,QAAQ,sBAAsB;;AAEnE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAE;EAAEC,KAAK;EAAEC,YAAY,GAAG,EAAE;EAAEC,SAAS;EAAEC;AAAQ,CAAC,EAAG;EAC9E,IAAK,CAAED,SAAS,IAAI,CAAEC,OAAO,EAAG;IAC/B;EACD;;EAEA;EACA;EACA,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,GAAG,GAAG;EAAE,CAAC,GAAGL,KAAK;EACpC,MAAMM,yBAAyB,GAAG;IAAE,GAAGN,KAAK;IAAEI,KAAK;IAAEC;EAAI,CAAC;EAC1D,MAAME,MAAM,GAAG,EAAE;EACjB,MAAM,CAAEC,MAAM,EAAEC,KAAK,CAAE,GAAGZ,KAAK,CAAES,yBAA0B,CAAC;EAC5D,MAAMI,eAAe,GAAGT,YAAY,CAACU,MAAM,GAAG,CAAC;EAC/C,IAAIC,oBAAoB,GAAG,CAAC,CAAC;;EAE7B;EACA;EACA,MAAMC,eAAe,GAAGjB,OAAO,CAAEY,MAAO,CAAC,IAAI,CAAEZ,OAAO,CAAEa,KAAM,CAAC;;EAE/D;EACA;EACA;EACA;EACA,IAAK,CAAEC,eAAe,IAAI,CAAEd,OAAO,CAAEY,MAAO,CAAC,EAAG;IAC/CD,MAAM,CAACO,IAAI,CACVX,OAAO,CAAEL,YAAY,CAAE;MAAEE,KAAK,EAAEQ;IAAO,CAAE,CAAC,EAAE,CAAEK,eAAgB,CAC/D,CAAC;IACDD,oBAAoB,IAAI,CAAC;EAC1B;EAEA,IAAKF,eAAe,EAAG;IACtBH,MAAM,CAACO,IAAI,CAAE,GAAGb,YAAa,CAAC;IAC9BW,oBAAoB,IAAIX,YAAY,CAACU,MAAM;EAC5C;;EAEA;EACA;EACA;EACA;EACA,IAAK,CAAED,eAAe,IAAI,CAAEd,OAAO,CAAEa,KAAM,CAAC,EAAG;IAC9CF,MAAM,CAACO,IAAI,CACVX,OAAO,CAAEL,YAAY,CAAE;MAAEE,KAAK,EAAES;IAAM,CAAE,CAAC,EAAEI,eAAgB,CAC5D,CAAC;EACF;;EAEA;EACA;EACA,MAAME,aAAa,GAAGL,eAAe,GAAGE,oBAAoB,GAAG,CAAC;;EAEhE;EACA;EACA,MAAMI,eAAe,GAAGN,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC;EAEhDR,SAAS,CAAEK,MAAM,EAAEQ,aAAa,EAAEC,eAAgB,CAAC;AACpD"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import { useRef } from '@wordpress/element';
|
|
5
5
|
import { useRefEffect } from '@wordpress/compose';
|
|
6
6
|
import { ENTER } from '@wordpress/keycodes';
|
|
7
|
-
import { insert,
|
|
7
|
+
import { insert, remove } from '@wordpress/rich-text';
|
|
8
8
|
import { getBlockTransforms, findTransform } from '@wordpress/blocks';
|
|
9
|
-
import { useDispatch } from '@wordpress/data';
|
|
9
|
+
import { useDispatch, useRegistry } from '@wordpress/data';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies
|
|
@@ -14,6 +14,7 @@ import { useDispatch } from '@wordpress/data';
|
|
|
14
14
|
import { store as blockEditorStore } from '../../store';
|
|
15
15
|
import { splitValue } from './split-value';
|
|
16
16
|
export function useEnter(props) {
|
|
17
|
+
const registry = useRegistry();
|
|
17
18
|
const {
|
|
18
19
|
__unstableMarkAutomaticChange
|
|
19
20
|
} = useDispatch(blockEditorStore);
|
|
@@ -32,11 +33,10 @@ export function useEnter(props) {
|
|
|
32
33
|
value,
|
|
33
34
|
onReplace,
|
|
34
35
|
onSplit,
|
|
35
|
-
onSplitMiddle,
|
|
36
|
-
multilineTag,
|
|
37
36
|
onChange,
|
|
38
37
|
disableLineBreaks,
|
|
39
|
-
onSplitAtEnd
|
|
38
|
+
onSplitAtEnd,
|
|
39
|
+
onSplitAtDoubleLineEnd
|
|
40
40
|
} = propsRef.current;
|
|
41
41
|
event.preventDefault();
|
|
42
42
|
const _value = {
|
|
@@ -58,44 +58,35 @@ export function useEnter(props) {
|
|
|
58
58
|
__unstableMarkAutomaticChange();
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
onReplace,
|
|
70
|
-
onSplit,
|
|
71
|
-
onSplitMiddle,
|
|
72
|
-
multilineTag
|
|
73
|
-
});
|
|
74
|
-
} else {
|
|
75
|
-
onChange(insertLineSeparator(_value));
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
const {
|
|
79
|
-
text,
|
|
80
|
-
start,
|
|
81
|
-
end
|
|
82
|
-
} = _value;
|
|
83
|
-
const canSplitAtEnd = onSplitAtEnd && start === end && end === text.length;
|
|
84
|
-
if (event.shiftKey || !canSplit && !canSplitAtEnd) {
|
|
85
|
-
if (!disableLineBreaks) {
|
|
86
|
-
onChange(insert(_value, '\n'));
|
|
87
|
-
}
|
|
88
|
-
} else if (!canSplit && canSplitAtEnd) {
|
|
89
|
-
onSplitAtEnd();
|
|
90
|
-
} else if (canSplit) {
|
|
91
|
-
splitValue({
|
|
92
|
-
value: _value,
|
|
93
|
-
onReplace,
|
|
94
|
-
onSplit,
|
|
95
|
-
onSplitMiddle,
|
|
96
|
-
multilineTag
|
|
97
|
-
});
|
|
61
|
+
const {
|
|
62
|
+
text,
|
|
63
|
+
start,
|
|
64
|
+
end
|
|
65
|
+
} = _value;
|
|
66
|
+
if (event.shiftKey) {
|
|
67
|
+
if (!disableLineBreaks) {
|
|
68
|
+
onChange(insert(_value, '\n'));
|
|
98
69
|
}
|
|
70
|
+
} else if (canSplit) {
|
|
71
|
+
splitValue({
|
|
72
|
+
value: _value,
|
|
73
|
+
onReplace,
|
|
74
|
+
onSplit
|
|
75
|
+
});
|
|
76
|
+
} else if (onSplitAtEnd && start === end && end === text.length) {
|
|
77
|
+
onSplitAtEnd();
|
|
78
|
+
} else if (
|
|
79
|
+
// For some blocks it's desirable to split at the end of the
|
|
80
|
+
// block when there are two line breaks at the end of the
|
|
81
|
+
// block, so triple Enter exits the block.
|
|
82
|
+
onSplitAtDoubleLineEnd && start === end && end === text.length && text.slice(-2) === '\n\n') {
|
|
83
|
+
registry.batch(() => {
|
|
84
|
+
_value.start = _value.end - 2;
|
|
85
|
+
onChange(remove(_value));
|
|
86
|
+
onSplitAtDoubleLineEnd();
|
|
87
|
+
});
|
|
88
|
+
} else if (!disableLineBreaks) {
|
|
89
|
+
onChange(insert(_value, '\n'));
|
|
99
90
|
}
|
|
100
91
|
}
|
|
101
92
|
element.addEventListener('keydown', onKeyDown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useRefEffect","ENTER","insert","
|
|
1
|
+
{"version":3,"names":["useRef","useRefEffect","ENTER","insert","remove","getBlockTransforms","findTransform","useDispatch","useRegistry","store","blockEditorStore","splitValue","useEnter","props","registry","__unstableMarkAutomaticChange","propsRef","current","element","onKeyDown","event","defaultPrevented","keyCode","removeEditorOnlyFormats","value","onReplace","onSplit","onChange","disableLineBreaks","onSplitAtEnd","onSplitAtDoubleLineEnd","preventDefault","_value","formats","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","start","end","shiftKey","length","slice","batch","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { insert, remove } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { splitValue } from './split-value';\n\nexport function useEnter( props ) {\n\tconst registry = useRegistry();\n\tconst { __unstableMarkAutomaticChange } = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\tvalue,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonChange,\n\t\t\t\tdisableLineBreaks,\n\t\t\t\tonSplitAtEnd,\n\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t} = propsRef.current;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst _value = { ...value };\n\t\t\t_value.formats = removeEditorOnlyFormats( value );\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( {\n\t\t\t\t\t\t\tcontent: _value.text,\n\t\t\t\t\t\t} ),\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\tconst { text, start, end } = _value;\n\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t}\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( {\n\t\t\t\t\tvalue: _value,\n\t\t\t\t\tonReplace,\n\t\t\t\t\tonSplit,\n\t\t\t\t} );\n\t\t\t} else if ( onSplitAtEnd && start === end && end === text.length ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if (\n\t\t\t\t// For some blocks it's desirable to split at the end of the\n\t\t\t\t// block when there are two line breaks at the end of the\n\t\t\t\t// block, so triple Enter exits the block.\n\t\t\t\tonSplitAtDoubleLineEnd &&\n\t\t\t\tstart === end &&\n\t\t\t\tend === text.length &&\n\t\t\t\ttext.slice( -2 ) === '\\n\\n'\n\t\t\t) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t_value.start = _value.end - 2;\n\t\t\t\t\tonChange( remove( _value ) );\n\t\t\t\t\tonSplitAtDoubleLineEnd();\n\t\t\t\t} );\n\t\t\t} else if ( ! disableLineBreaks ) {\n\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
|