@gechiui/block-editor
Version:
127 lines (111 loc) • 4.24 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@gechiui/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _i18n = require("@gechiui/i18n");
var _compose = require("@gechiui/compose");
var _icons = require("@gechiui/icons");
var _components = require("@gechiui/components");
var _blockPreview = _interopRequireDefault(require("../block-preview"));
var _useTransformedPatterns = _interopRequireDefault(require("./use-transformed-patterns"));
/**
* GeChiUI dependencies
*/
/**
* Internal dependencies
*/
function PatternTransformationsMenu(_ref) {
let {
blocks,
patterns: statePatterns,
onSelect
} = _ref;
const [showTransforms, setShowTransforms] = (0, _element.useState)(false);
const patterns = (0, _useTransformedPatterns.default)(statePatterns, blocks);
if (!patterns.length) return null;
return (0, _element.createElement)(_components.MenuGroup, {
className: "block-editor-block-switcher__pattern__transforms__menugroup"
}, showTransforms && (0, _element.createElement)(PreviewPatternsPopover, {
patterns: patterns,
onSelect: onSelect
}), (0, _element.createElement)(_components.MenuItem, {
onClick: event => {
event.preventDefault();
setShowTransforms(!showTransforms);
},
icon: _icons.chevronRight
}, (0, _i18n.__)('样板')));
}
function PreviewPatternsPopover(_ref2) {
let {
patterns,
onSelect
} = _ref2;
return (0, _element.createElement)("div", {
className: "block-editor-block-switcher__popover__preview__parent"
}, (0, _element.createElement)("div", {
className: "block-editor-block-switcher__popover__preview__container"
}, (0, _element.createElement)(_components.Popover, {
className: "block-editor-block-switcher__preview__popover",
position: "bottom right"
}, (0, _element.createElement)("div", {
className: "block-editor-block-switcher__preview"
}, (0, _element.createElement)("div", {
className: "block-editor-block-switcher__preview-title"
}, (0, _i18n.__)('预览')), (0, _element.createElement)(BlockPatternsList, {
patterns: patterns,
onSelect: onSelect
})))));
}
function BlockPatternsList(_ref3) {
let {
patterns,
onSelect
} = _ref3;
const composite = (0, _components.__unstableUseCompositeState)();
return (0, _element.createElement)(_components.__unstableComposite, (0, _extends2.default)({}, composite, {
role: "listbox",
className: "block-editor-block-switcher__preview-patterns-container",
"aria-label": (0, _i18n.__)('区块样板列表')
}), patterns.map(pattern => (0, _element.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 = (0, _compose.useInstanceId)(BlockPattern, `${baseClassName}-list__item-description`);
return (0, _element.createElement)("div", {
className: `${baseClassName}-list__list-item`,
"aria-label": pattern.title,
"aria-describedby": pattern.description ? descriptionId : undefined
}, (0, _element.createElement)(_components.__unstableCompositeItem, (0, _extends2.default)({
role: "option",
as: "div"
}, composite, {
className: `${baseClassName}-list__item`,
onClick: () => onSelect(pattern.transformedBlocks)
}), (0, _element.createElement)(_blockPreview.default, {
blocks: pattern.transformedBlocks,
viewportWidth: pattern.viewportWidth || 500
}), (0, _element.createElement)("div", {
className: `${baseClassName}-list__item-title`
}, pattern.title)), !!pattern.description && (0, _element.createElement)(_components.VisuallyHidden, {
id: descriptionId
}, pattern.description));
}
var _default = PatternTransformationsMenu;
exports.default = _default;
//# sourceMappingURL=pattern-transformations-menu.js.map