@retriever-ui/system
Version:
42 lines (41 loc) • 1.84 kB
JavaScript
;
/**
* Copied from isValidProps '@emotion/is-prop-valid'
* Thank you very much for this lines.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var memoize_1 = __importDefault(require("@emotion/memoize"));
var props_1 = require("./props");
var tags_1 = require("./tags");
var htmlPropsRegex = new RegExp("^((" + Object.keys(props_1.htmlValidProps).join('|') + ")|data-.*|on.*|aria-.*)$");
var svgPropsRegex = new RegExp("^((" + Object.keys(props_1.svgValidProps).join('|') + ")|data-.*|on.*|aria-.*)$");
var svgTagsRegex = new RegExp("^((" + tags_1.svgTags.join('|') + "))$");
var isSvgTag = (0, memoize_1.default)(function (prop) { return svgTagsRegex.test(prop); });
var isSvgPropsValid = (0, memoize_1.default)(function (prop) { return svgPropsRegex.test(prop); });
var isHtmlPropValid = (0, memoize_1.default)(function (prop) { return htmlPropsRegex.test(prop); });
var getDomProps = function (element, props) {
var stylesProps = {};
var domProps = {};
var keyProps = Object.keys(props);
var getValidProps = function (isValid, prop) {
if (!isValid)
return (stylesProps[prop] = props[prop]);
return (domProps[prop] = props[prop]);
};
if (isSvgTag(element)) {
keyProps.forEach(function (prop) {
var isValid = isSvgPropsValid(prop);
return getValidProps(isValid, prop);
});
return { stylesProps: stylesProps, domProps: domProps };
}
keyProps.forEach(function (prop) {
var isValid = isHtmlPropValid(prop);
return getValidProps(isValid, prop);
});
return { stylesProps: stylesProps, domProps: domProps };
};
exports.default = getDomProps;