UNPKG

@wordpress/block-editor

Version:
78 lines (73 loc) 3.11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.useWritingFlow = useWritingFlow; var _clsx = _interopRequireDefault(require("clsx")); var _data = require("@wordpress/data"); var _i18n = require("@wordpress/i18n"); var _compose = require("@wordpress/compose"); var _element = require("@wordpress/element"); 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 _useDragSelection = _interopRequireDefault(require("./use-drag-selection")); var _useSelectionObserver = _interopRequireDefault(require("./use-selection-observer")); var _useClickSelection = _interopRequireDefault(require("./use-click-selection")); var _useInput = _interopRequireDefault(require("./use-input")); var _useClipboardHandler = _interopRequireDefault(require("./use-clipboard-handler")); var _store = require("../../store"); var _jsxRuntime = require("react/jsx-runtime"); /** * External dependencies */ /** * WordPress 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, _useClipboardHandler.default)(), (0, _useInput.default)(), (0, _useDragSelection.default)(), (0, _useSelectionObserver.default)(), (0, _useClickSelection.default)(), (0, _useMultiSelection.default)(), (0, _useSelectAll.default)(), (0, _useArrowNav.default)(), (0, _compose.useRefEffect)(node => { node.tabIndex = 0; node.dataset.hasMultiSelection = hasMultiSelection; if (!hasMultiSelection) { return () => { delete node.dataset.hasMultiSelection; }; } node.setAttribute('aria-label', (0, _i18n.__)('Multiple selected blocks')); return () => { delete node.dataset.hasMultiSelection; node.removeAttribute('aria-label'); }; }, [hasMultiSelection])]), after]; } function WritingFlow({ children, ...props }, forwardedRef) { const [before, ref, after] = useWritingFlow(); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [before, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { ...props, ref: (0, _compose.useMergeRefs)([ref, forwardedRef]), className: (0, _clsx.default)(props.className, 'block-editor-writing-flow'), children: children }), after] }); } /** * Handles selection and navigation across blocks. This component should be * wrapped around BlockList. * * @param {Object} props Component properties. * @param {Element} props.children Children to be rendered. */ var _default = exports.default = (0, _element.forwardRef)(WritingFlow); //# sourceMappingURL=index.js.map