react-pdf-builder
Version:
Build beautiful PDF documents in React.
42 lines (41 loc) • 1.89 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sanitizeChildren = void 0;
const react_1 = __importDefault(require("react"));
const ThemedText_1 = require("../basics/ThemedText");
/**
* Ensures that raw strings are wrapped in a ThemedText component so they can be rendered by [react-pdf](https://react-pdf.org/).
*
* Recurses on arrays and React fragments. Returns all other elements as-is.
*
* @param children Children to check/return.
* @param textStyle Styles used for themed text component when wrapping strings.
* @param allowStrings When `true`, strings will not be wrapped in a `ThemedText`.
* @returns Sanitized children. Strings will be wrapped in ThemedText (if strings are not allowed).
*/
const sanitizeChildren = (children, textStyle, allowStrings) => {
if (typeof children === 'string') {
if (!allowStrings) {
return (react_1.default.createElement(ThemedText_1.ThemedText, { key: `child-ThemedText`, style: textStyle }, children));
}
else {
return children;
}
}
else if (children && typeof children === 'object' && children !== null && (children === null || children === void 0 ? void 0 : children.hasOwnProperty('type'))) {
if (children.type === react_1.default.Fragment) {
return react_1.default.createElement(react_1.default.Fragment, null, (0, exports.sanitizeChildren)(children.props.children));
}
return children;
}
else if (Array.isArray(children) && children.map) {
return children.map((c) => {
return (0, exports.sanitizeChildren)(c, textStyle, allowStrings);
});
}
return children;
};
exports.sanitizeChildren = sanitizeChildren;
;