analytica-frontend-lib 1.2.22 → 1.2.24

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.
Files changed (45) hide show
  1. package/dist/AlertManager/index.css +26 -0
  2. package/dist/AlertManager/index.css.map +1 -1
  3. package/dist/AlertManagerView/index.js +149 -114
  4. package/dist/AlertManagerView/index.js.map +1 -1
  5. package/dist/AlertManagerView/index.mjs +149 -114
  6. package/dist/AlertManagerView/index.mjs.map +1 -1
  7. package/dist/EmptyState/index.d.mts +65 -0
  8. package/dist/EmptyState/index.d.ts +65 -0
  9. package/dist/EmptyState/index.js +185 -0
  10. package/dist/EmptyState/index.js.map +1 -0
  11. package/dist/EmptyState/index.mjs +162 -0
  12. package/dist/EmptyState/index.mjs.map +1 -0
  13. package/dist/LatexRenderer/index.d.mts +50 -0
  14. package/dist/LatexRenderer/index.d.ts +50 -0
  15. package/dist/LatexRenderer/index.js +198 -0
  16. package/dist/LatexRenderer/index.js.map +1 -0
  17. package/dist/LatexRenderer/index.mjs +169 -0
  18. package/dist/LatexRenderer/index.mjs.map +1 -0
  19. package/dist/Table/index.d.mts +1 -1
  20. package/dist/Table/index.d.ts +1 -1
  21. package/dist/Table/index.js +124 -89
  22. package/dist/Table/index.js.map +1 -1
  23. package/dist/Table/index.mjs +124 -89
  24. package/dist/Table/index.mjs.map +1 -1
  25. package/dist/TableProvider/index.css +26 -0
  26. package/dist/TableProvider/index.css.map +1 -1
  27. package/dist/TableProvider/index.d.mts +1 -1
  28. package/dist/TableProvider/index.d.ts +1 -1
  29. package/dist/TableProvider/index.js +484 -449
  30. package/dist/TableProvider/index.js.map +1 -1
  31. package/dist/TableProvider/index.mjs +484 -449
  32. package/dist/TableProvider/index.mjs.map +1 -1
  33. package/dist/{TableProvider-DyhwEkPT.d.mts → TableProvider-BnAnv3OV.d.mts} +12 -4
  34. package/dist/{TableProvider-48a6wb7j.d.ts → TableProvider-GfPlLqzg.d.ts} +12 -4
  35. package/dist/index.css +26 -0
  36. package/dist/index.css.map +1 -1
  37. package/dist/index.d.mts +4 -2
  38. package/dist/index.d.ts +4 -2
  39. package/dist/index.js +1359 -1165
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +1360 -1166
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/styles.css +26 -0
  44. package/dist/styles.css.map +1 -1
  45. package/package.json +12 -1
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/components/LatexRenderer/LatexRenderer.tsx
31
+ var LatexRenderer_exports = {};
32
+ __export(LatexRenderer_exports, {
33
+ default: () => LatexRenderer_default
34
+ });
35
+ module.exports = __toCommonJS(LatexRenderer_exports);
36
+ var import_katex_min = require("katex/dist/katex.min.css");
37
+ var import_react_katex = require("react-katex");
38
+ var import_dompurify = __toESM(require("dompurify"));
39
+ var import_html_react_parser = __toESM(require("html-react-parser"));
40
+
41
+ // src/utils/utils.ts
42
+ var import_clsx = require("clsx");
43
+ var import_tailwind_merge = require("tailwind-merge");
44
+ function cn(...inputs) {
45
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
46
+ }
47
+
48
+ // src/components/LatexRenderer/LatexRenderer.tsx
49
+ var import_jsx_runtime = require("react/jsx-runtime");
50
+ var sanitizeHtml = (value) => {
51
+ return import_dompurify.default.sanitize(value, {
52
+ ADD_ATTR: ["data-latex", "data-display-mode", "data-math", "data-math-id"]
53
+ });
54
+ };
55
+ var decodeHtmlEntities = (str) => {
56
+ const textarea = document.createElement("textarea");
57
+ textarea.innerHTML = str;
58
+ return textarea.value;
59
+ };
60
+ var cleanLatex = (str) => {
61
+ return str.replaceAll(/[\u200B-\u200D\uFEFF]/g, "").trim();
62
+ };
63
+ var createMathReplacer = (mathParts, errorRenderer) => {
64
+ return (domNode) => {
65
+ if (domNode instanceof import_html_react_parser.Element && domNode.name === "span" && domNode.attribs["data-math-id"]) {
66
+ const mathId = Number.parseInt(domNode.attribs["data-math-id"], 10);
67
+ const mathPart = mathParts[mathId];
68
+ if (!mathPart) return domNode;
69
+ if (mathPart.type === "inline") {
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
71
+ import_react_katex.InlineMath,
72
+ {
73
+ math: mathPart.latex,
74
+ renderError: () => errorRenderer(mathPart.latex)
75
+ },
76
+ `math-${mathId}`
77
+ );
78
+ } else {
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "my-2.5 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
80
+ import_react_katex.BlockMath,
81
+ {
82
+ math: mathPart.latex,
83
+ renderError: () => errorRenderer(mathPart.latex)
84
+ }
85
+ ) }, `math-${mathId}`);
86
+ }
87
+ }
88
+ return domNode;
89
+ };
90
+ };
91
+ var LatexRenderer = ({
92
+ content,
93
+ className,
94
+ style,
95
+ onError
96
+ }) => {
97
+ const renderContentWithMath = (htmlContent) => {
98
+ if (!htmlContent) return null;
99
+ let processedContent = htmlContent;
100
+ const mathParts = [];
101
+ const mathFormulaPattern = /<span[^>]*class="math-formula"[^>]*data-latex="([^"]*)"[^>]*>[\s\S]*?<\/span>/g;
102
+ processedContent = processedContent.replaceAll(
103
+ mathFormulaPattern,
104
+ (match, latex) => {
105
+ const isDisplayMode = match.includes('data-display-mode="true"');
106
+ const id = mathParts.length;
107
+ mathParts.push({
108
+ id,
109
+ type: isDisplayMode ? "block" : "inline",
110
+ latex: cleanLatex(decodeHtmlEntities(latex))
111
+ });
112
+ return `<span data-math-id="${id}"></span>`;
113
+ }
114
+ );
115
+ const wrappedMathPattern = /<span[^>]*class="math-expression"[^>]*data-math="([^"]*)"[^>]*>.*?<\/span>/g;
116
+ processedContent = processedContent.replaceAll(
117
+ wrappedMathPattern,
118
+ (match, latex) => {
119
+ const id = mathParts.length;
120
+ mathParts.push({
121
+ id,
122
+ type: "inline",
123
+ latex: cleanLatex(decodeHtmlEntities(latex))
124
+ });
125
+ return `<span data-math-id="${id}"></span>`;
126
+ }
127
+ );
128
+ const doubleDollarPattern = /(?<!\\)\$\$([\s\S]+?)\$\$/g;
129
+ processedContent = processedContent.replaceAll(
130
+ doubleDollarPattern,
131
+ (match, latex) => {
132
+ const id = mathParts.length;
133
+ mathParts.push({
134
+ id,
135
+ type: "block",
136
+ latex: cleanLatex(latex)
137
+ });
138
+ return `<span data-math-id="${id}"></span>`;
139
+ }
140
+ );
141
+ const singleDollarPattern = /(?<!\\)\$([\s\S]+?)\$/g;
142
+ processedContent = processedContent.replaceAll(
143
+ singleDollarPattern,
144
+ (match, latex) => {
145
+ const id = mathParts.length;
146
+ mathParts.push({
147
+ id,
148
+ type: "inline",
149
+ latex: cleanLatex(latex)
150
+ });
151
+ return `<span data-math-id="${id}"></span>`;
152
+ }
153
+ );
154
+ const latexTagPattern = /(?:<latex>|&lt;latex&gt;)([\s\S]*?)(?:<\/latex>|&lt;\/latex&gt;)/g;
155
+ processedContent = processedContent.replaceAll(
156
+ latexTagPattern,
157
+ (match, latex) => {
158
+ const id = mathParts.length;
159
+ mathParts.push({
160
+ id,
161
+ type: "inline",
162
+ latex: cleanLatex(latex)
163
+ });
164
+ return `<span data-math-id="${id}"></span>`;
165
+ }
166
+ );
167
+ const latexEnvPattern = /\\begin\{([^}]+)\}([\s\S]*?)\\end\{\1\}/g;
168
+ processedContent = processedContent.replaceAll(latexEnvPattern, (match) => {
169
+ const id = mathParts.length;
170
+ mathParts.push({
171
+ id,
172
+ type: "block",
173
+ latex: cleanLatex(match)
174
+ });
175
+ return `<span data-math-id="${id}"></span>`;
176
+ });
177
+ const sanitizedContent = sanitizeHtml(processedContent);
178
+ const defaultErrorRenderer = (latex) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-red-600", children: [
179
+ "Math Error: ",
180
+ latex
181
+ ] });
182
+ const errorRenderer = onError || defaultErrorRenderer;
183
+ const options = {
184
+ replace: createMathReplacer(mathParts, errorRenderer)
185
+ };
186
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: (0, import_html_react_parser.default)(sanitizedContent, options) });
187
+ };
188
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
189
+ "div",
190
+ {
191
+ className: cn("whitespace-pre-wrap leading-relaxed", className),
192
+ style,
193
+ children: renderContentWithMath(content)
194
+ }
195
+ );
196
+ };
197
+ var LatexRenderer_default = LatexRenderer;
198
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/LatexRenderer/LatexRenderer.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { CSSProperties, ReactNode } from 'react';\nimport 'katex/dist/katex.min.css';\nimport { InlineMath, BlockMath } from 'react-katex';\nimport DOMPurify from 'dompurify';\nimport parse, {\n DOMNode,\n Element,\n HTMLReactParserOptions,\n} from 'html-react-parser';\nimport { cn } from '../../utils/utils';\n\n/**\n * Props for the LatexRenderer component\n */\nexport interface LatexRendererProps {\n /** HTML content containing LaTeX expressions to render */\n content: string;\n /** Additional CSS classes to apply */\n className?: string;\n /** Inline styles to apply */\n style?: CSSProperties;\n /** Custom error renderer for invalid LaTeX expressions */\n onError?: (latex: string) => ReactNode;\n}\n\n/**\n * Helper function to sanitize HTML content to prevent XSS attacks\n */\nconst sanitizeHtml = (value: string): string => {\n return DOMPurify.sanitize(value, {\n ADD_ATTR: ['data-latex', 'data-display-mode', 'data-math', 'data-math-id'],\n });\n};\n\n/**\n * Helper function to decode HTML entities\n * Converts entities like &amp;, &lt;, &gt; back to their actual characters\n */\nconst decodeHtmlEntities = (str: string): string => {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = str;\n return textarea.value;\n};\n\n/**\n * Helper function to clean latex from invisible characters\n */\nconst cleanLatex = (str: string): string => {\n // Remove zero-width characters, invisible characters, and other problematic Unicode\n return str.replaceAll(/[\\u200B-\\u200D\\uFEFF]/g, '').trim();\n};\n\n/**\n * Type for math parts used in rendering\n */\ninterface MathPart {\n id: number;\n type: 'inline' | 'block';\n latex: string;\n}\n\n/**\n * Creates a replace function for html-react-parser that replaces math placeholders\n * with KaTeX components\n */\nconst createMathReplacer = (\n mathParts: MathPart[],\n errorRenderer: (latex: string) => ReactNode\n) => {\n return (domNode: DOMNode) => {\n if (\n domNode instanceof Element &&\n domNode.name === 'span' &&\n domNode.attribs['data-math-id']\n ) {\n const mathId = Number.parseInt(domNode.attribs['data-math-id'], 10);\n const mathPart = mathParts[mathId];\n\n if (!mathPart) return domNode;\n\n if (mathPart.type === 'inline') {\n return (\n <InlineMath\n key={`math-${mathId}`}\n math={mathPart.latex}\n renderError={() => errorRenderer(mathPart.latex)}\n />\n );\n } else {\n return (\n <div key={`math-${mathId}`} className=\"my-2.5 text-center\">\n <BlockMath\n math={mathPart.latex}\n renderError={() => errorRenderer(mathPart.latex)}\n />\n </div>\n );\n }\n }\n return domNode;\n };\n};\n\n/**\n * LatexRenderer component for Analytica Ensino platforms\n *\n * Renders HTML content with embedded LaTeX/KaTeX mathematical expressions.\n * Supports multiple LaTeX formats:\n * - Inline math: `$...$` or `<latex>...</latex>`\n * - Block math: `$$...$$`\n * - LaTeX environments: `\\begin{equation}...\\end{equation}`, etc.\n * - Editor format: `<span class=\"math-formula\" data-latex=\"...\">...</span>`\n *\n * @param content - HTML content with LaTeX expressions\n * @param className - Additional CSS classes\n * @param style - Inline styles\n * @param onError - Custom error renderer\n * @returns Rendered content with mathematical expressions\n *\n * @example\n * ```tsx\n * <LatexRenderer content=\"The formula is $E = mc^2$\" />\n *\n * <LatexRenderer\n * content=\"Block equation: $$\\sum_{i=1}^{n} x_i$$\"\n * className=\"my-custom-class\"\n * />\n *\n * <LatexRenderer\n * content=\"<p>Matrix: \\begin{pmatrix} a & b \\\\ c & d \\end{pmatrix}</p>\"\n * onError={(latex) => <span>Invalid: {latex}</span>}\n * />\n * ```\n */\nconst LatexRenderer = ({\n content,\n className,\n style,\n onError,\n}: LatexRendererProps) => {\n const renderContentWithMath = (htmlContent: string) => {\n if (!htmlContent) return null;\n\n let processedContent = htmlContent;\n const mathParts: MathPart[] = [];\n\n // Step 1: Handle math-formula spans (from the editor)\n const mathFormulaPattern =\n /<span[^>]*class=\"math-formula\"[^>]*data-latex=\"([^\"]*)\"[^>]*>[\\s\\S]*?<\\/span>/g;\n processedContent = processedContent.replaceAll(\n mathFormulaPattern,\n (match, latex) => {\n const isDisplayMode = match.includes('data-display-mode=\"true\"');\n const id = mathParts.length;\n mathParts.push({\n id,\n type: isDisplayMode ? 'block' : 'inline',\n latex: cleanLatex(decodeHtmlEntities(latex)),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 2: Handle wrapped math expressions (from math modal - legacy)\n const wrappedMathPattern =\n /<span[^>]*class=\"math-expression\"[^>]*data-math=\"([^\"]*)\"[^>]*>.*?<\\/span>/g;\n processedContent = processedContent.replaceAll(\n wrappedMathPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(decodeHtmlEntities(latex)),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 3: Handle raw $$...$$ expressions (manual input or saved content) - BEFORE single $\n const doubleDollarPattern = /(?<!\\\\)\\$\\$([\\s\\S]+?)\\$\\$/g;\n processedContent = processedContent.replaceAll(\n doubleDollarPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'block',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 4: Handle single $...$ expressions for inline math\n const singleDollarPattern = /(?<!\\\\)\\$([\\s\\S]+?)\\$/g;\n processedContent = processedContent.replaceAll(\n singleDollarPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 5: Handle <latex>...</latex> tags for inline math\n const latexTagPattern =\n /(?:<latex>|&lt;latex&gt;)([\\s\\S]*?)(?:<\\/latex>|&lt;\\/latex&gt;)/g;\n processedContent = processedContent.replaceAll(\n latexTagPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 6: Handle standalone LaTeX environments (align, equation, pmatrix, etc.) for block math\n const latexEnvPattern = /\\\\begin\\{([^}]+)\\}([\\s\\S]*?)\\\\end\\{\\1\\}/g;\n processedContent = processedContent.replaceAll(latexEnvPattern, (match) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'block',\n latex: cleanLatex(match),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n });\n\n // Sanitize the HTML with placeholders\n const sanitizedContent = sanitizeHtml(processedContent);\n\n // Default error renderer\n const defaultErrorRenderer = (latex: string) => (\n <span className=\"text-red-600\">Math Error: {latex}</span>\n );\n\n const errorRenderer = onError || defaultErrorRenderer;\n\n // Parse HTML and replace math placeholders with React components\n const options: HTMLReactParserOptions = {\n replace: createMathReplacer(mathParts, errorRenderer),\n };\n\n return <>{parse(sanitizedContent, options)}</>;\n };\n\n return (\n <div\n className={cn('whitespace-pre-wrap leading-relaxed', className)}\n style={style}\n >\n {renderContentWithMath(content)}\n </div>\n );\n};\n\nexport default LatexRenderer;\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n"],"mappings":"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","names":["DOMPurify","parse"]}
@@ -0,0 +1,169 @@
1
+ // src/components/LatexRenderer/LatexRenderer.tsx
2
+ import "katex/dist/katex.min.css";
3
+ import { InlineMath, BlockMath } from "react-katex";
4
+ import DOMPurify from "dompurify";
5
+ import parse, {
6
+ Element
7
+ } from "html-react-parser";
8
+
9
+ // src/utils/utils.ts
10
+ import { clsx } from "clsx";
11
+ import { twMerge } from "tailwind-merge";
12
+ function cn(...inputs) {
13
+ return twMerge(clsx(inputs));
14
+ }
15
+
16
+ // src/components/LatexRenderer/LatexRenderer.tsx
17
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
+ var sanitizeHtml = (value) => {
19
+ return DOMPurify.sanitize(value, {
20
+ ADD_ATTR: ["data-latex", "data-display-mode", "data-math", "data-math-id"]
21
+ });
22
+ };
23
+ var decodeHtmlEntities = (str) => {
24
+ const textarea = document.createElement("textarea");
25
+ textarea.innerHTML = str;
26
+ return textarea.value;
27
+ };
28
+ var cleanLatex = (str) => {
29
+ return str.replaceAll(/[\u200B-\u200D\uFEFF]/g, "").trim();
30
+ };
31
+ var createMathReplacer = (mathParts, errorRenderer) => {
32
+ return (domNode) => {
33
+ if (domNode instanceof Element && domNode.name === "span" && domNode.attribs["data-math-id"]) {
34
+ const mathId = Number.parseInt(domNode.attribs["data-math-id"], 10);
35
+ const mathPart = mathParts[mathId];
36
+ if (!mathPart) return domNode;
37
+ if (mathPart.type === "inline") {
38
+ return /* @__PURE__ */ jsx(
39
+ InlineMath,
40
+ {
41
+ math: mathPart.latex,
42
+ renderError: () => errorRenderer(mathPart.latex)
43
+ },
44
+ `math-${mathId}`
45
+ );
46
+ } else {
47
+ return /* @__PURE__ */ jsx("div", { className: "my-2.5 text-center", children: /* @__PURE__ */ jsx(
48
+ BlockMath,
49
+ {
50
+ math: mathPart.latex,
51
+ renderError: () => errorRenderer(mathPart.latex)
52
+ }
53
+ ) }, `math-${mathId}`);
54
+ }
55
+ }
56
+ return domNode;
57
+ };
58
+ };
59
+ var LatexRenderer = ({
60
+ content,
61
+ className,
62
+ style,
63
+ onError
64
+ }) => {
65
+ const renderContentWithMath = (htmlContent) => {
66
+ if (!htmlContent) return null;
67
+ let processedContent = htmlContent;
68
+ const mathParts = [];
69
+ const mathFormulaPattern = /<span[^>]*class="math-formula"[^>]*data-latex="([^"]*)"[^>]*>[\s\S]*?<\/span>/g;
70
+ processedContent = processedContent.replaceAll(
71
+ mathFormulaPattern,
72
+ (match, latex) => {
73
+ const isDisplayMode = match.includes('data-display-mode="true"');
74
+ const id = mathParts.length;
75
+ mathParts.push({
76
+ id,
77
+ type: isDisplayMode ? "block" : "inline",
78
+ latex: cleanLatex(decodeHtmlEntities(latex))
79
+ });
80
+ return `<span data-math-id="${id}"></span>`;
81
+ }
82
+ );
83
+ const wrappedMathPattern = /<span[^>]*class="math-expression"[^>]*data-math="([^"]*)"[^>]*>.*?<\/span>/g;
84
+ processedContent = processedContent.replaceAll(
85
+ wrappedMathPattern,
86
+ (match, latex) => {
87
+ const id = mathParts.length;
88
+ mathParts.push({
89
+ id,
90
+ type: "inline",
91
+ latex: cleanLatex(decodeHtmlEntities(latex))
92
+ });
93
+ return `<span data-math-id="${id}"></span>`;
94
+ }
95
+ );
96
+ const doubleDollarPattern = /(?<!\\)\$\$([\s\S]+?)\$\$/g;
97
+ processedContent = processedContent.replaceAll(
98
+ doubleDollarPattern,
99
+ (match, latex) => {
100
+ const id = mathParts.length;
101
+ mathParts.push({
102
+ id,
103
+ type: "block",
104
+ latex: cleanLatex(latex)
105
+ });
106
+ return `<span data-math-id="${id}"></span>`;
107
+ }
108
+ );
109
+ const singleDollarPattern = /(?<!\\)\$([\s\S]+?)\$/g;
110
+ processedContent = processedContent.replaceAll(
111
+ singleDollarPattern,
112
+ (match, latex) => {
113
+ const id = mathParts.length;
114
+ mathParts.push({
115
+ id,
116
+ type: "inline",
117
+ latex: cleanLatex(latex)
118
+ });
119
+ return `<span data-math-id="${id}"></span>`;
120
+ }
121
+ );
122
+ const latexTagPattern = /(?:<latex>|&lt;latex&gt;)([\s\S]*?)(?:<\/latex>|&lt;\/latex&gt;)/g;
123
+ processedContent = processedContent.replaceAll(
124
+ latexTagPattern,
125
+ (match, latex) => {
126
+ const id = mathParts.length;
127
+ mathParts.push({
128
+ id,
129
+ type: "inline",
130
+ latex: cleanLatex(latex)
131
+ });
132
+ return `<span data-math-id="${id}"></span>`;
133
+ }
134
+ );
135
+ const latexEnvPattern = /\\begin\{([^}]+)\}([\s\S]*?)\\end\{\1\}/g;
136
+ processedContent = processedContent.replaceAll(latexEnvPattern, (match) => {
137
+ const id = mathParts.length;
138
+ mathParts.push({
139
+ id,
140
+ type: "block",
141
+ latex: cleanLatex(match)
142
+ });
143
+ return `<span data-math-id="${id}"></span>`;
144
+ });
145
+ const sanitizedContent = sanitizeHtml(processedContent);
146
+ const defaultErrorRenderer = (latex) => /* @__PURE__ */ jsxs("span", { className: "text-red-600", children: [
147
+ "Math Error: ",
148
+ latex
149
+ ] });
150
+ const errorRenderer = onError || defaultErrorRenderer;
151
+ const options = {
152
+ replace: createMathReplacer(mathParts, errorRenderer)
153
+ };
154
+ return /* @__PURE__ */ jsx(Fragment, { children: parse(sanitizedContent, options) });
155
+ };
156
+ return /* @__PURE__ */ jsx(
157
+ "div",
158
+ {
159
+ className: cn("whitespace-pre-wrap leading-relaxed", className),
160
+ style,
161
+ children: renderContentWithMath(content)
162
+ }
163
+ );
164
+ };
165
+ var LatexRenderer_default = LatexRenderer;
166
+ export {
167
+ LatexRenderer_default as default
168
+ };
169
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/LatexRenderer/LatexRenderer.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { CSSProperties, ReactNode } from 'react';\nimport 'katex/dist/katex.min.css';\nimport { InlineMath, BlockMath } from 'react-katex';\nimport DOMPurify from 'dompurify';\nimport parse, {\n DOMNode,\n Element,\n HTMLReactParserOptions,\n} from 'html-react-parser';\nimport { cn } from '../../utils/utils';\n\n/**\n * Props for the LatexRenderer component\n */\nexport interface LatexRendererProps {\n /** HTML content containing LaTeX expressions to render */\n content: string;\n /** Additional CSS classes to apply */\n className?: string;\n /** Inline styles to apply */\n style?: CSSProperties;\n /** Custom error renderer for invalid LaTeX expressions */\n onError?: (latex: string) => ReactNode;\n}\n\n/**\n * Helper function to sanitize HTML content to prevent XSS attacks\n */\nconst sanitizeHtml = (value: string): string => {\n return DOMPurify.sanitize(value, {\n ADD_ATTR: ['data-latex', 'data-display-mode', 'data-math', 'data-math-id'],\n });\n};\n\n/**\n * Helper function to decode HTML entities\n * Converts entities like &amp;, &lt;, &gt; back to their actual characters\n */\nconst decodeHtmlEntities = (str: string): string => {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = str;\n return textarea.value;\n};\n\n/**\n * Helper function to clean latex from invisible characters\n */\nconst cleanLatex = (str: string): string => {\n // Remove zero-width characters, invisible characters, and other problematic Unicode\n return str.replaceAll(/[\\u200B-\\u200D\\uFEFF]/g, '').trim();\n};\n\n/**\n * Type for math parts used in rendering\n */\ninterface MathPart {\n id: number;\n type: 'inline' | 'block';\n latex: string;\n}\n\n/**\n * Creates a replace function for html-react-parser that replaces math placeholders\n * with KaTeX components\n */\nconst createMathReplacer = (\n mathParts: MathPart[],\n errorRenderer: (latex: string) => ReactNode\n) => {\n return (domNode: DOMNode) => {\n if (\n domNode instanceof Element &&\n domNode.name === 'span' &&\n domNode.attribs['data-math-id']\n ) {\n const mathId = Number.parseInt(domNode.attribs['data-math-id'], 10);\n const mathPart = mathParts[mathId];\n\n if (!mathPart) return domNode;\n\n if (mathPart.type === 'inline') {\n return (\n <InlineMath\n key={`math-${mathId}`}\n math={mathPart.latex}\n renderError={() => errorRenderer(mathPart.latex)}\n />\n );\n } else {\n return (\n <div key={`math-${mathId}`} className=\"my-2.5 text-center\">\n <BlockMath\n math={mathPart.latex}\n renderError={() => errorRenderer(mathPart.latex)}\n />\n </div>\n );\n }\n }\n return domNode;\n };\n};\n\n/**\n * LatexRenderer component for Analytica Ensino platforms\n *\n * Renders HTML content with embedded LaTeX/KaTeX mathematical expressions.\n * Supports multiple LaTeX formats:\n * - Inline math: `$...$` or `<latex>...</latex>`\n * - Block math: `$$...$$`\n * - LaTeX environments: `\\begin{equation}...\\end{equation}`, etc.\n * - Editor format: `<span class=\"math-formula\" data-latex=\"...\">...</span>`\n *\n * @param content - HTML content with LaTeX expressions\n * @param className - Additional CSS classes\n * @param style - Inline styles\n * @param onError - Custom error renderer\n * @returns Rendered content with mathematical expressions\n *\n * @example\n * ```tsx\n * <LatexRenderer content=\"The formula is $E = mc^2$\" />\n *\n * <LatexRenderer\n * content=\"Block equation: $$\\sum_{i=1}^{n} x_i$$\"\n * className=\"my-custom-class\"\n * />\n *\n * <LatexRenderer\n * content=\"<p>Matrix: \\begin{pmatrix} a & b \\\\ c & d \\end{pmatrix}</p>\"\n * onError={(latex) => <span>Invalid: {latex}</span>}\n * />\n * ```\n */\nconst LatexRenderer = ({\n content,\n className,\n style,\n onError,\n}: LatexRendererProps) => {\n const renderContentWithMath = (htmlContent: string) => {\n if (!htmlContent) return null;\n\n let processedContent = htmlContent;\n const mathParts: MathPart[] = [];\n\n // Step 1: Handle math-formula spans (from the editor)\n const mathFormulaPattern =\n /<span[^>]*class=\"math-formula\"[^>]*data-latex=\"([^\"]*)\"[^>]*>[\\s\\S]*?<\\/span>/g;\n processedContent = processedContent.replaceAll(\n mathFormulaPattern,\n (match, latex) => {\n const isDisplayMode = match.includes('data-display-mode=\"true\"');\n const id = mathParts.length;\n mathParts.push({\n id,\n type: isDisplayMode ? 'block' : 'inline',\n latex: cleanLatex(decodeHtmlEntities(latex)),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 2: Handle wrapped math expressions (from math modal - legacy)\n const wrappedMathPattern =\n /<span[^>]*class=\"math-expression\"[^>]*data-math=\"([^\"]*)\"[^>]*>.*?<\\/span>/g;\n processedContent = processedContent.replaceAll(\n wrappedMathPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(decodeHtmlEntities(latex)),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 3: Handle raw $$...$$ expressions (manual input or saved content) - BEFORE single $\n const doubleDollarPattern = /(?<!\\\\)\\$\\$([\\s\\S]+?)\\$\\$/g;\n processedContent = processedContent.replaceAll(\n doubleDollarPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'block',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 4: Handle single $...$ expressions for inline math\n const singleDollarPattern = /(?<!\\\\)\\$([\\s\\S]+?)\\$/g;\n processedContent = processedContent.replaceAll(\n singleDollarPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 5: Handle <latex>...</latex> tags for inline math\n const latexTagPattern =\n /(?:<latex>|&lt;latex&gt;)([\\s\\S]*?)(?:<\\/latex>|&lt;\\/latex&gt;)/g;\n processedContent = processedContent.replaceAll(\n latexTagPattern,\n (match, latex) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'inline',\n latex: cleanLatex(latex),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n }\n );\n\n // Step 6: Handle standalone LaTeX environments (align, equation, pmatrix, etc.) for block math\n const latexEnvPattern = /\\\\begin\\{([^}]+)\\}([\\s\\S]*?)\\\\end\\{\\1\\}/g;\n processedContent = processedContent.replaceAll(latexEnvPattern, (match) => {\n const id = mathParts.length;\n mathParts.push({\n id,\n type: 'block',\n latex: cleanLatex(match),\n });\n return `<span data-math-id=\"${id}\"></span>`;\n });\n\n // Sanitize the HTML with placeholders\n const sanitizedContent = sanitizeHtml(processedContent);\n\n // Default error renderer\n const defaultErrorRenderer = (latex: string) => (\n <span className=\"text-red-600\">Math Error: {latex}</span>\n );\n\n const errorRenderer = onError || defaultErrorRenderer;\n\n // Parse HTML and replace math placeholders with React components\n const options: HTMLReactParserOptions = {\n replace: createMathReplacer(mathParts, errorRenderer),\n };\n\n return <>{parse(sanitizedContent, options)}</>;\n };\n\n return (\n <div\n className={cn('whitespace-pre-wrap leading-relaxed', className)}\n style={style}\n >\n {renderContentWithMath(content)}\n </div>\n );\n};\n\nexport default LatexRenderer;\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,5 +1,5 @@
1
1
  import react__default, { HTMLAttributes, ThHTMLAttributes } from 'react';
2
- import { L as LoadingStateConfig, N as NoSearchResultConfig, E as EmptyStateConfig } from '../TableProvider-DyhwEkPT.mjs';
2
+ import { L as LoadingStateConfig, N as NoSearchResultConfig, E as EmptyStateConfig } from '../TableProvider-BnAnv3OV.mjs';
3
3
  export { default as TablePagination, TablePaginationProps } from './TablePagination/index.mjs';
4
4
  import 'react/jsx-runtime';
5
5
  import '../CheckBoxGroup-9n5C0OH4.mjs';
@@ -1,5 +1,5 @@
1
1
  import react__default, { HTMLAttributes, ThHTMLAttributes } from 'react';
2
- import { L as LoadingStateConfig, N as NoSearchResultConfig, E as EmptyStateConfig } from '../TableProvider-48a6wb7j.js';
2
+ import { L as LoadingStateConfig, N as NoSearchResultConfig, E as EmptyStateConfig } from '../TableProvider-GfPlLqzg.js';
3
3
  export { default as TablePagination, TablePaginationProps } from './TablePagination/index.js';
4
4
  import 'react/jsx-runtime';
5
5
  import '../CheckBoxGroup-9n5C0OH4.js';