@gechiui/block-editor
Version:
63 lines (55 loc) • 1.91 kB
JavaScript
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