UNPKG

@gechiui/block-editor

Version:
84 lines (62 loc) 2.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.useWritingFlow = useWritingFlow; var _element = require("@gechiui/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _data = require("@gechiui/data"); var _i18n = require("@gechiui/i18n"); var _compose = require("@gechiui/compose"); var _useMultiSelection = _interopRequireDefault(require("./use-multi-selection")); var _useTabNav = _interopRequireDefault(require("./use-tab-nav")); var _useArrowNav = _interopRequireDefault(require("./use-arrow-nav")); var _useSelectAll = _interopRequireDefault(require("./use-select-all")); var _store = require("../../store"); /** * External dependencies */ /** * GeChiUI dependencies */ /** * Internal dependencies */ function useWritingFlow() { const [before, ref, after] = (0, _useTabNav.default)(); const hasMultiSelection = (0, _data.useSelect)(select => select(_store.store).hasMultiSelection(), []); return [before, (0, _compose.useMergeRefs)([ref, (0, _useMultiSelection.default)(), (0, _useSelectAll.default)(), (0, _useArrowNav.default)(), (0, _compose.useRefEffect)(node => { node.tabIndex = -1; if (!hasMultiSelection) { return; } node.setAttribute('aria-label', (0, _i18n.__)('多个选定的区块')); return () => { node.removeAttribute('aria-label'); }; }, [hasMultiSelection])]), after]; } function WritingFlow(_ref, forwardedRef) { let { children, ...props } = _ref; const [before, ref, after] = useWritingFlow(); return (0, _element.createElement)(_element.Fragment, null, before, (0, _element.createElement)("div", (0, _extends2.default)({}, props, { ref: (0, _compose.useMergeRefs)([ref, forwardedRef]), className: (0, _classnames.default)(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. */ var _default = (0, _element.forwardRef)(WritingFlow); exports.default = _default; //# sourceMappingURL=index.js.map