UNPKG

@eccenca/gui-elements

Version:

GUI elements based on other libraries, usable in React application, written in Typescript.

58 lines 3.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.stringPreviewContentBlobTogglerUtils = void 0; exports.StringPreviewContentBlobToggler = StringPreviewContentBlobToggler; const react_1 = __importDefault(require("react")); const index_1 = require("./../../index"); /** Version of the content toggler for text centric content. */ function StringPreviewContentBlobToggler({ className = "", previewMaxLength, toggleExtendText, toggleReduceText, content, fullviewContent, startExtended, useOnly, renderPreviewAsMarkdown = false, allowedHtmlElementsInPreview, noTogglerContentSuffix, firstNonEmptyLineOnly, }) { // need to test `firstNonEmptyLineOnly` until property is removed const useOnlyTest = firstNonEmptyLineOnly ? "firstNonEmptyLine" : useOnly; let previewString = content; switch (useOnlyTest) { case "firstNonEmptyLine": previewString = useOnlyPart(content, regexFirstNonEmptyLine); break; case "firstMarkdownSection": previewString = useOnlyPart(content, regexFirstMarkdownSection); } let enableToggler = previewString !== content; let previewContent = renderPreviewAsMarkdown ? (react_1.default.createElement(index_1.Markdown, { key: "markdown-content", allowedElements: allowedHtmlElementsInPreview }, previewString)) : (previewString); if (previewMaxLength && index_1.utils.reduceToText(previewContent, { decodeHtmlEntities: true }).length > previewMaxLength) { previewContent = index_1.utils.reduceToText(previewContent, { decodeHtmlEntities: true }).slice(0, previewMaxLength); enableToggler = true; } if (!enableToggler && noTogglerContentSuffix) { previewContent = (react_1.default.createElement(react_1.default.Fragment, null, previewContent, noTogglerContentSuffix)); } return (react_1.default.createElement(index_1.ContentBlobToggler, { className: className, previewContent: react_1.default.createElement(index_1.InlineText, null, previewContent), toggleExtendText: toggleExtendText, toggleReduceText: toggleReduceText, fullviewContent: fullviewContent, startExtended: startExtended, enableToggler: enableToggler })); } const regexFirstNonEmptyLine = new RegExp("\r|\n"); // eslint-disable-line const regexFirstMarkdownSection = new RegExp("\r\n\r\n|\n\n"); // eslint-disable-line /** * Takes the first non-empty line from a preview string. */ function firstNonEmptyLine(preview) { return useOnlyPart(preview, regexFirstNonEmptyLine); } /** * Returns only the first part from a preview string. * Or the full string as fallback. */ function useOnlyPart(preview, regexTest) { const previewString = preview.trim(); const result = regexTest.exec(previewString); return result !== null ? result.input.slice(0, result.index) : previewString; } exports.stringPreviewContentBlobTogglerUtils = { firstNonEmptyLine, }; //# sourceMappingURL=StringPreviewContentBlobToggler.js.map