allaw-ui 0.1.66 → 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
+ import React from "react";
1
2
  export declare function convertToHtml(text: string | React.ReactNode): string;
@@ -1,24 +1,48 @@
1
+ import React from "react";
2
+ import ReactDOMServer from "react-dom/server";
1
3
  export function convertToHtml(text) {
2
4
  // Vérifier si text est une chaîne de caractères
3
5
  var textString;
4
6
  if (typeof text === "string") {
5
7
  textString = text;
6
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
+ }
7
13
  else {
8
- // Si ce n'est pas une chaîne, convertir en chaîne
14
+ // Sinon, convertir en chaîne
9
15
  textString = String(text);
10
16
  }
11
- var lines = textString.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
12
- var htmlLines = lines.map(function (line) {
13
- // Traiter chaque ligne individuellement
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) {
14
27
  return line
15
- .replace(/</g, "&lt;") // Échappe les caractères <
16
- .replace(/>/g, "&gt;") // Échappe les caractères >
17
- .replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>") // Remplace **texte** par <strong>texte</strong>
18
- .replace(/\_(.+?)\_/g, "<em>$1</em>") // Remplace _texte_ par <em>texte</em>
19
- .replace(/\~\~(.+?)\~\~/g, "<del>$1</del>") // Remplace ~~texte~~ par <del>texte</del>
20
- .replace(/\`(.+?)\`/g, "<code>$1</code>") // Remplace `texte` par <code>texte</code>
21
- .trim(); // Supprimer les espaces de début et de fin
22
- });
23
- 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;
24
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "0.1.66",
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",