@gechiui/block-editor
Version:
108 lines (86 loc) • 2.54 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 _reactNative = require("react-native");
var _lodash = require("lodash");
var _blocks = require("@gechiui/blocks");
var _data = require("@gechiui/data");
var _i18n = require("@gechiui/i18n");
var _utils = require("./utils");
var _preview = _interopRequireDefault(require("./preview"));
var _style = _interopRequireDefault(require("./style.scss"));
var _store = require("../../store");
/**
* External dependencies
*/
/**
* GeChiUI dependencies
*/
/**
* Internal dependencies
*/
function BlockStyles(_ref) {
let {
clientId,
url
} = _ref;
const selector = select => {
const {
getBlock
} = select(_store.store);
const {
getBlockStyles
} = select(_blocks.store);
const block = getBlock(clientId);
return {
styles: getBlockStyles(block.name),
className: block.attributes.className || ''
};
};
const {
styles,
className
} = (0, _data.useSelect)(selector, [clientId]);
const {
updateBlockAttributes
} = (0, _data.useDispatch)(_store.store);
const renderedStyles = (0, _lodash.find)(styles, 'isDefault') ? styles : [{
name: 'default',
label: (0, _i18n._x)('Default', 'block style'),
isDefault: true
}, ...styles];
const mappedRenderedStyles = (0, _element.useMemo)(() => {
const activeStyle = (0, _utils.getActiveStyle)(renderedStyles, className);
return renderedStyles.map(style => {
const styleClassName = (0, _utils.replaceActiveStyle)(className, activeStyle, style);
const isActive = activeStyle === style;
const onStylePress = () => {
updateBlockAttributes(clientId, {
className: styleClassName
});
};
return (0, _element.createElement)(_preview.default, {
onPress: onStylePress,
isActive: isActive,
key: style.name,
style: style,
url: url
});
});
}, [renderedStyles, className, clientId]);
if (!styles || styles.length === 0) {
return null;
}
return (0, _element.createElement)(_reactNative.ScrollView, {
horizontal: true,
showsHorizontalScrollIndicator: false,
contentContainerStyle: _style.default.content
}, mappedRenderedStyles);
}
var _default = BlockStyles;
exports.default = _default;
//# sourceMappingURL=index.native.js.map