@bianic-ui/system
Version:
Bianic UI system primitives
101 lines (79 loc) • 3.71 kB
JavaScript
;
exports.__esModule = true;
exports.omitThemingProps = omitThemingProps;
exports.pseudoProps = pseudoProps;
exports.truncateProp = truncateProp;
exports["default"] = isTag;
exports.getDisplayName = getDisplayName;
exports.extraProps = exports.cast = exports.domElements = void 0;
var _styledSystem = require("@bianic-ui/styled-system");
var _utils = require("@bianic-ui/utils");
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
/**
* Carefully selected html elements for bianic components.
* This is mostly for `bianic.<element>` syntax.
*/
var domElements = ["a", "article", "aside", "blockquote", "button", "caption", "cite", "circle", "code", "dd", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hr", "img", "input", "kbd", "label", "li", "mark", "nav", "ol", "p", "path", "pre", "q", "rect", "s", "svg", "section", "select", "small", "span", "sub", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "ul"];
exports.domElements = domElements;
var cast = function cast(arg) {
return arg;
};
exports.cast = cast;
function omitThemingProps(props) {
return (0, _utils.omit)(props, ["styleConfig", "size", "variant", "colorScheme"]);
}
function pseudoProps(_ref) {
var theme = _ref.theme,
props = _objectWithoutPropertiesLoose(_ref, ["theme"]);
var result = {};
for (var prop in props) {
if (prop in _styledSystem.pseudoSelectors) {
var _css;
var style = (0, _styledSystem.css)((_css = {}, _css[prop] = props[prop], _css))(theme);
result = _extends({}, result, style);
}
}
return result;
}
function truncateProp(_ref2) {
var isTruncated = _ref2.isTruncated,
noOfLines = _ref2.noOfLines;
if ((0, _utils.isNumber)(noOfLines)) {
return {
overflow: "hidden",
textOverflow: "ellipsis",
display: "-webkit-box",
WebkitBoxOrient: "vertical",
WebkitLineClamp: noOfLines
};
}
if (isTruncated) {
return {
overflow: "hidden",
textOverflow: "ellipsis",
whiteSpace: "nowrap"
};
}
}
var extraProps = function extraProps(props) {
var layerStyle = props.layerStyle,
textStyle = props.textStyle,
apply = props.apply,
theme = props.theme;
var styles = (0, _utils.merge)({}, (0, _utils.get)(theme, "layerStyles." + layerStyle, {}), (0, _utils.get)(theme, "textStyles." + textStyle, {}));
return (0, _styledSystem.css)(_extends({}, styles, {
apply: apply
}))(theme);
};
exports.extraProps = extraProps;
function isTag(target) {
return (0, _utils.isString)(target) && (_utils.__DEV__ ? target.charAt(0) === target.charAt(0).toLowerCase() : true);
}
function getDisplayName(primitive) {
return isTag(primitive) ? "bianic." + primitive : getComponentName(primitive);
}
function getComponentName(primitive) {
return (_utils.__DEV__ ? (0, _utils.isString)(primitive) && primitive : false) || !(0, _utils.isString)(primitive) && primitive.displayName || !(0, _utils.isString)(primitive) && primitive.name || "BianicComponent";
}
//# sourceMappingURL=system.utils.js.map