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("p", { className: "paragraph ".concat(variant, " ").concat(color ? "color-".concat(color) : "", " ").concat(size === "small" ? "paragraph-small" : ""), style: maxLines
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;
@@ -1 +1,2 @@
1
- export declare function convertToHtml(text: string): string;
1
+ import React from "react";
2
+ export declare function convertToHtml(text: string | React.ReactNode): string;
@@ -1,15 +1,48 @@
1
+ import React from "react";
2
+ import ReactDOMServer from "react-dom/server";
1
3
  export function convertToHtml(text) {
2
- var lines = text.replace(/\\n/g, "\n").split(/\r?\n/); // Remplacer les \n par des sauts de ligne réels, puis diviser la chaîne en un tableau de lignes
3
- var htmlLines = lines.map(function (line) {
4
- // Traiter chaque ligne individuellement
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, "&lt;") // Échappe les caractères <
7
- .replace(/>/g, "&gt;") // Échappe les caractères >
8
- .replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>") // Remplace **texte** par <strong>texte</strong>
9
- .replace(/\_(.+?)\_/g, "<em>$1</em>") // Remplace _texte_ par <em>texte</em>
10
- .replace(/\~\~(.+?)\~\~/g, "<del>$1</del>") // Remplace ~~texte~~ par <del>texte</del>
11
- .replace(/\`(.+?)\`/g, "<code>$1</code>") // Remplace `texte` par <code>texte</code>
12
- .trim(); // Supprimer les espaces de début et de fin
13
- });
14
- return htmlLines.join("<br>"); // Rejoindre les lignes avec <br>
28
+ .replace(/</g, "&lt;")
29
+ .replace(/>/g, "&gt;")
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(/&lt;(br\s*\/?\s*)&gt;/g, "<$1>")
35
+ .replace(/&lt;(\/?\s*p\s*\/?\s*)&gt;/g, "<$1>")
36
+ .replace(/&lt;(span[\s\S]*?)&gt;([\s\S]*?)&lt;\/span&gt;/g, "<$1>$2</span>")
37
+ .replace(/&lt;(a[\s\S]*?)&gt;([\s\S]*?)&lt;\/a&gt;/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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "0.1.65",
3
+ "version": "0.1.68",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",