UNPKG

@gechiui/block-editor

Version:
112 lines (105 loc) 3.69 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@gechiui/element"; /** * GeChiUI dependencies */ import { __ } from '@gechiui/i18n'; import { useState } from '@gechiui/element'; import { useInstanceId } from '@gechiui/compose'; import { chevronRight } from '@gechiui/icons'; import { MenuGroup, MenuItem, Popover, VisuallyHidden, __unstableComposite as Composite, __unstableUseCompositeState as useCompositeState, __unstableCompositeItem as CompositeItem } from '@gechiui/components'; /** * Internal dependencies */ import BlockPreview from '../block-preview'; import useTransformedPatterns from './use-transformed-patterns'; function PatternTransformationsMenu(_ref) { let { blocks, patterns: statePatterns, onSelect } = _ref; const [showTransforms, setShowTransforms] = useState(false); const patterns = useTransformedPatterns(statePatterns, blocks); if (!patterns.length) return null; return createElement(MenuGroup, { className: "block-editor-block-switcher__pattern__transforms__menugroup" }, showTransforms && createElement(PreviewPatternsPopover, { patterns: patterns, onSelect: onSelect }), createElement(MenuItem, { onClick: event => { event.preventDefault(); setShowTransforms(!showTransforms); }, icon: chevronRight }, __('样板'))); } function PreviewPatternsPopover(_ref2) { let { patterns, onSelect } = _ref2; return createElement("div", { className: "block-editor-block-switcher__popover__preview__parent" }, createElement("div", { className: "block-editor-block-switcher__popover__preview__container" }, createElement(Popover, { className: "block-editor-block-switcher__preview__popover", position: "bottom right" }, createElement("div", { className: "block-editor-block-switcher__preview" }, createElement("div", { className: "block-editor-block-switcher__preview-title" }, __('预览')), createElement(BlockPatternsList, { patterns: patterns, onSelect: onSelect }))))); } function BlockPatternsList(_ref3) { let { patterns, onSelect } = _ref3; const composite = useCompositeState(); return createElement(Composite, _extends({}, composite, { role: "listbox", className: "block-editor-block-switcher__preview-patterns-container", "aria-label": __('区块样板列表') }), patterns.map(pattern => createElement(BlockPattern, { key: pattern.name, pattern: pattern, onSelect: onSelect, composite: composite }))); } function BlockPattern(_ref4) { let { pattern, onSelect, composite } = _ref4; // TODO check pattern/preview width... const baseClassName = 'block-editor-block-switcher__preview-patterns-container'; const descriptionId = useInstanceId(BlockPattern, `${baseClassName}-list__item-description`); return createElement("div", { className: `${baseClassName}-list__list-item`, "aria-label": pattern.title, "aria-describedby": pattern.description ? descriptionId : undefined }, createElement(CompositeItem, _extends({ role: "option", as: "div" }, composite, { className: `${baseClassName}-list__item`, onClick: () => onSelect(pattern.transformedBlocks) }), createElement(BlockPreview, { blocks: pattern.transformedBlocks, viewportWidth: pattern.viewportWidth || 500 }), createElement("div", { className: `${baseClassName}-list__item-title` }, pattern.title)), !!pattern.description && createElement(VisuallyHidden, { id: descriptionId }, pattern.description)); } export default PatternTransformationsMenu; //# sourceMappingURL=pattern-transformations-menu.js.map