UNPKG

@gechiui/block-editor

Version:
63 lines (55 loc) 1.91 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement, Fragment } from "@gechiui/element"; /** * External dependencies */ import classNames from 'classnames'; /** * GeChiUI dependencies */ import { useSelect } from '@gechiui/data'; import { __ } from '@gechiui/i18n'; import { useMergeRefs, useRefEffect } from '@gechiui/compose'; import { forwardRef } from '@gechiui/element'; /** * Internal dependencies */ import useMultiSelection from './use-multi-selection'; import useTabNav from './use-tab-nav'; import useArrowNav from './use-arrow-nav'; import useSelectAll from './use-select-all'; import { store as blockEditorStore } from '../../store'; export function useWritingFlow() { const [before, ref, after] = useTabNav(); const hasMultiSelection = useSelect(select => select(blockEditorStore).hasMultiSelection(), []); return [before, useMergeRefs([ref, useMultiSelection(), useSelectAll(), useArrowNav(), useRefEffect(node => { node.tabIndex = -1; if (!hasMultiSelection) { return; } node.setAttribute('aria-label', __('多个选定的区块')); return () => { node.removeAttribute('aria-label'); }; }, [hasMultiSelection])]), after]; } function WritingFlow(_ref, forwardedRef) { let { children, ...props } = _ref; const [before, ref, after] = useWritingFlow(); return createElement(Fragment, null, before, createElement("div", _extends({}, props, { ref: useMergeRefs([ref, forwardedRef]), className: classNames(props.className, 'block-editor-writing-flow') }), children), after); } /** * Handles selection and navigation across blocks. This component should be * wrapped around BlockList. * * @param {Object} props Component properties. * @param {GCElement} props.children Children to be rendered. */ export default forwardRef(WritingFlow); //# sourceMappingURL=index.js.map