@eccenca/gui-elements
Version:
GUI elements based on other libraries, usable in React application, written in Typescript.
29 lines • 2.16 kB
JavaScript
import React from "react";
import { ContentBlobToggler, Markdown } from "./../index.js";
/** Version of the content toggler for text only content. */
export function StringPreviewContentBlobToggler(_a) {
var _b = _a.className, className = _b === void 0 ? "" : _b, previewMaxLength = _a.previewMaxLength, toggleExtendText = _a.toggleExtendText, toggleReduceText = _a.toggleReduceText, content = _a.content, fullviewContent = _a.fullviewContent, startExtended = _a.startExtended, firstNonEmptyLineOnly = _a.firstNonEmptyLineOnly, _c = _a.renderPreviewAsMarkdown, renderPreviewAsMarkdown = _c === void 0 ? false : _c, allowedHtmlElementsInPreview = _a.allowedHtmlElementsInPreview, noTogglerContentSuffix = _a.noTogglerContentSuffix;
var previewMaybeFirstLine = firstNonEmptyLineOnly ? firstNonEmptyLine(content) : content;
var previewString = previewMaxLength ? previewMaybeFirstLine.substr(0, previewMaxLength) : previewMaybeFirstLine;
var enableToggler = previewString !== content;
var previewContent = renderPreviewAsMarkdown ? (React.createElement(Markdown, { key: "markdown-content", allowedElements: allowedHtmlElementsInPreview }, previewString)) : (previewString);
if (!enableToggler && noTogglerContentSuffix) {
previewContent = (React.createElement(React.Fragment, null,
previewContent,
noTogglerContentSuffix));
}
return (React.createElement(ContentBlobToggler, { className: className, previewContent: previewContent, toggleExtendText: toggleExtendText, toggleReduceText: toggleReduceText, fullviewContent: fullviewContent, startExtended: startExtended, enableToggler: enableToggler }));
}
var newLineRegex = new RegExp("\r|\n"); // eslint-disable-line
/**
* Takes the first non-empty line from a preview string.
*/
function firstNonEmptyLine(preview) {
var previewString = preview.trim();
var result = newLineRegex.exec(previewString);
return result !== null ? previewString.substr(0, result.index) : previewString;
}
export var stringPreviewContentBlobTogglerUtils = {
firstNonEmptyLine: firstNonEmptyLine,
};
//# sourceMappingURL=StringPreviewContentBlobToggler.js.map