allaw-ui 0.1.65 → 0.1.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,25 +1,33 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import React from "react";
|
|
2
13
|
import "./Paragraph.css";
|
|
3
14
|
import { convertToHtml } from "../../../utils/utils";
|
|
4
15
|
var Paragraph = function (_a) {
|
|
5
16
|
var variant = _a.variant, color = _a.color, text = _a.text, maxLines = _a.maxLines, maxChars = _a.maxChars, _b = _a.size, size = _b === void 0 ? "default" : _b;
|
|
6
|
-
// Fonction pour tronquer le texte en fonction du nombre maximum de caractères
|
|
7
17
|
var truncateText = function (text, maxChars) {
|
|
8
18
|
if (text.length <= maxChars)
|
|
9
19
|
return text;
|
|
10
20
|
return text.slice(0, maxChars) + "...";
|
|
11
21
|
};
|
|
12
|
-
// Convertir le texte en HTML avant de le tronquer
|
|
13
22
|
var htmlText = convertToHtml(text);
|
|
14
|
-
// Tronquer le texte si maxChars est défini
|
|
15
23
|
var truncatedText = maxChars ? truncateText(htmlText, maxChars) : htmlText;
|
|
16
|
-
return (React.createElement("
|
|
24
|
+
return (React.createElement("div", { className: "paragraph ".concat(variant, " ").concat(color ? "color-".concat(color) : "", " ").concat(size === "small" ? "paragraph-small" : ""), style: __assign({ whiteSpace: "pre-line" }, (maxLines
|
|
17
25
|
? {
|
|
18
26
|
WebkitLineClamp: maxLines,
|
|
19
27
|
display: "-webkit-box",
|
|
20
28
|
WebkitBoxOrient: "vertical",
|
|
21
29
|
overflow: "hidden",
|
|
22
30
|
}
|
|
23
|
-
: {}, dangerouslySetInnerHTML: { __html: truncatedText } }));
|
|
31
|
+
: {})), dangerouslySetInnerHTML: { __html: truncatedText } }));
|
|
24
32
|
};
|
|
25
33
|
export default Paragraph;
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare function convertToHtml(text: string | React.ReactNode): string;
|
package/dist/utils/utils.js
CHANGED
|
@@ -1,15 +1,48 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ReactDOMServer from "react-dom/server";
|
|
1
3
|
export function convertToHtml(text) {
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
4
|
+
// Vérifier si text est une chaîne de caractères
|
|
5
|
+
var textString;
|
|
6
|
+
if (typeof text === "string") {
|
|
7
|
+
textString = text;
|
|
8
|
+
}
|
|
9
|
+
else if (React.isValidElement(text)) {
|
|
10
|
+
// Si text est un élément React, convertir en chaîne
|
|
11
|
+
textString = ReactDOMServer.renderToStaticMarkup(text);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
// Sinon, convertir en chaîne
|
|
15
|
+
textString = String(text);
|
|
16
|
+
}
|
|
17
|
+
// Remplacer tous les types de retours à la ligne par \n
|
|
18
|
+
var normalizedText = textString
|
|
19
|
+
.replace(/\r\n/g, "\n")
|
|
20
|
+
.replace(/\r/g, "\n")
|
|
21
|
+
.replace(/\\n/g, "\n");
|
|
22
|
+
// Diviser le texte en lignes et les traiter séparément
|
|
23
|
+
var lines = normalizedText.split("\n");
|
|
24
|
+
// Traiter chaque ligne et les joindre avec des <br />
|
|
25
|
+
var processedText = lines
|
|
26
|
+
.map(function (line) {
|
|
5
27
|
return line
|
|
6
|
-
.replace(/</g, "<")
|
|
7
|
-
.replace(/>/g, ">")
|
|
8
|
-
.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>")
|
|
9
|
-
.replace(/\_(.+?)\_/g, "<em>$1</em>")
|
|
10
|
-
.replace(/\~\~(.+?)\~\~/g, "<del>$1</del>")
|
|
11
|
-
.replace(/\`(.+?)\`/g, "<code>$1</code>")
|
|
12
|
-
.
|
|
13
|
-
|
|
14
|
-
|
|
28
|
+
.replace(/</g, "<")
|
|
29
|
+
.replace(/>/g, ">")
|
|
30
|
+
.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>")
|
|
31
|
+
.replace(/\_(.+?)\_/g, "<em>$1</em>")
|
|
32
|
+
.replace(/\~\~(.+?)\~\~/g, "<del>$1</del>")
|
|
33
|
+
.replace(/\`(.+?)\`/g, "<code>$1</code>")
|
|
34
|
+
.replace(/<(br\s*\/?\s*)>/g, "<$1>")
|
|
35
|
+
.replace(/<(\/?\s*p\s*\/?\s*)>/g, "<$1>")
|
|
36
|
+
.replace(/<(span[\s\S]*?)>([\s\S]*?)<\/span>/g, "<$1>$2</span>")
|
|
37
|
+
.replace(/<(a[\s\S]*?)>([\s\S]*?)<\/a>/g, "<$1>$2</a>")
|
|
38
|
+
.trim();
|
|
39
|
+
})
|
|
40
|
+
.filter(function (line, index, array) {
|
|
41
|
+
// Garder la ligne si elle n'est pas vide
|
|
42
|
+
// ou si ce n'est pas une ligne vide consécutive
|
|
43
|
+
return (line.trim().length > 0 ||
|
|
44
|
+
(index > 0 && array[index - 1].trim().length > 0));
|
|
45
|
+
})
|
|
46
|
+
.join("<br />");
|
|
47
|
+
return processedText;
|
|
15
48
|
}
|