@gechiui/block-editor
Version:
112 lines (105 loc) • 3.69 kB
JavaScript
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