UNPKG

react-pdf-builder

Version:
42 lines (41 loc) 1.89 kB
"use strict"; 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;