UNPKG

@wordpress/block-editor

Version:
77 lines (61 loc) 2.29 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _components = require("@wordpress/components"); var _data = require("@wordpress/data"); var _i18n = require("@wordpress/i18n"); var _groups = _interopRequireDefault(require("../inspector-controls/groups")); var _inspectorControls = _interopRequireDefault(require("../inspector-controls")); var _store = require("../../store"); /** * WordPress dependencies */ /** * Internal dependencies */ const PositionControlsPanel = () => { const [initialOpen, setInitialOpen] = (0, _element.useState)(); // Determine whether the panel should be expanded. const { multiSelectedBlocks } = (0, _data.useSelect)(select => { const { getBlocksByClientId, getSelectedBlockClientIds } = select(_store.store); const clientIds = getSelectedBlockClientIds(); return { multiSelectedBlocks: getBlocksByClientId(clientIds) }; }, []); (0, _element.useLayoutEffect)(() => { // If any selected block has a position set, open the panel by default. // The first block's value will still be used within the control though. if (initialOpen === undefined) { setInitialOpen(multiSelectedBlocks.some(({ attributes }) => !!attributes?.style?.position?.type)); } }, [initialOpen, multiSelectedBlocks, setInitialOpen]); return (0, _element.createElement)(_components.PanelBody, { className: "block-editor-block-inspector__position", title: (0, _i18n.__)('Position'), initialOpen: initialOpen !== null && initialOpen !== void 0 ? initialOpen : false }, (0, _element.createElement)(_inspectorControls.default.Slot, { group: "position" })); }; const PositionControls = () => { const fills = (0, _components.__experimentalUseSlotFills)(_groups.default.position.Slot.__unstableName); const hasFills = Boolean(fills && fills.length); if (!hasFills) { return null; } return (0, _element.createElement)(PositionControlsPanel, null); }; var _default = PositionControls; exports.default = _default; //# sourceMappingURL=position-controls-panel.js.map