@gechiui/block-editor
Version:
82 lines (71 loc) • 2.56 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ColorPanel;
var _element = require("@gechiui/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _lodash = require("lodash");
var _panelColorSettings = _interopRequireDefault(require("../panel-color-settings"));
var _contrastChecker = _interopRequireDefault(require("../contrast-checker"));
/**
* External dependencies
*/
/**
* Internal dependencies
*/
const resolveContrastCheckerColor = (color, colorSettings, detectedColor) => {
if (typeof color === 'function') {
return color(colorSettings);
} else if (color === true) {
return detectedColor;
}
return color;
};
function ColorPanel(_ref) {
let {
title,
colorSettings,
colorPanelProps,
contrastCheckers,
detectedBackgroundColor,
detectedColor,
panelChildren,
initialOpen
} = _ref;
return (0, _element.createElement)(_panelColorSettings.default, (0, _extends2.default)({
title: title,
initialOpen: initialOpen,
colorSettings: Object.values(colorSettings)
}, colorPanelProps), contrastCheckers && (Array.isArray(contrastCheckers) ? contrastCheckers.map(_ref2 => {
let {
backgroundColor,
textColor,
...rest
} = _ref2;
backgroundColor = resolveContrastCheckerColor(backgroundColor, colorSettings, detectedBackgroundColor);
textColor = resolveContrastCheckerColor(textColor, colorSettings, detectedColor);
return (0, _element.createElement)(_contrastChecker.default, (0, _extends2.default)({
key: `${backgroundColor}-${textColor}`,
backgroundColor: backgroundColor,
textColor: textColor
}, rest));
}) : (0, _lodash.map)(colorSettings, _ref3 => {
let {
value
} = _ref3;
let {
backgroundColor,
textColor
} = contrastCheckers;
backgroundColor = resolveContrastCheckerColor(backgroundColor || value, colorSettings, detectedBackgroundColor);
textColor = resolveContrastCheckerColor(textColor || value, colorSettings, detectedColor);
return (0, _element.createElement)(_contrastChecker.default, (0, _extends2.default)({}, contrastCheckers, {
key: `${backgroundColor}-${textColor}`,
backgroundColor: backgroundColor,
textColor: textColor
}));
})), typeof panelChildren === 'function' ? panelChildren(colorSettings) : panelChildren);
}
//# sourceMappingURL=color-panel.js.map