eddyter 1.3.34 → 1.3.36
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.
- package/dist/{html2pdf.bundle-3478ea73.js → html2pdf.bundle-2195a04c.js} +2 -2
- package/dist/{html2pdf.bundle-3478ea73.js.map → html2pdf.bundle-2195a04c.js.map} +1 -1
- package/dist/{html2pdf.bundle.min-ae547e03.js → html2pdf.bundle.min-e3118523.js} +2 -2
- package/dist/{html2pdf.bundle.min-ae547e03.js.map → html2pdf.bundle.min-e3118523.js.map} +1 -1
- package/dist/{index-f66d9237.js → index-08c4c610.js} +2 -2
- package/dist/{index-f66d9237.js.map → index-08c4c610.js.map} +1 -1
- package/dist/{index-c32880a3.js → index-455942f2.js} +10 -10
- package/dist/{index-c32880a3.js.map → index-455942f2.js.map} +1 -1
- package/dist/{index-b749f5db.js → index-acc78985.js} +2 -2
- package/dist/{index-b749f5db.js.map → index-acc78985.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
3
3
|
import { $getNodeByKey } from "lexical";
|
|
4
|
-
import { a as createLucideIcon, D as Download, T as Trash2, F as FileText, $ as $isFileNode } from "./index-
|
|
4
|
+
import { a as createLucideIcon, D as Download, T as Trash2, F as FileText, $ as $isFileNode } from "./index-455942f2.js";
|
|
5
5
|
import "react";
|
|
6
6
|
import "axios";
|
|
7
7
|
import "@emotion/styled";
|
|
@@ -187,4 +187,4 @@ const FileView = ({ src, fileName, fileSize, nodeKey }) => {
|
|
|
187
187
|
export {
|
|
188
188
|
FileView as default
|
|
189
189
|
};
|
|
190
|
-
//# sourceMappingURL=index-
|
|
190
|
+
//# sourceMappingURL=index-08c4c610.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-f66d9237.js","sources":["../../../node_modules/.pnpm/lucide-react@0.344.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file-archive.js","../../../node_modules/.pnpm/lucide-react@0.344.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file.js","../src/components/FileView/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.344.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileArchive = createLucideIcon(\"FileArchive\", [\n [\"path\", { d: \"M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v18\", key: \"1oywqq\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"circle\", { cx: \"10\", cy: \"20\", r: \"2\", key: \"1xzdoj\" }],\n [\"path\", { d: \"M10 7V6\", key: \"dljcrl\" }],\n [\"path\", { d: \"M10 12v-1\", key: \"v7bkov\" }],\n [\"path\", { d: \"M10 18v-2\", key: \"1cjy8d\" }]\n]);\n\nexport { FileArchive as default };\n//# sourceMappingURL=file-archive.js.map\n","/**\n * @license lucide-react v0.344.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst File = createLucideIcon(\"File\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }]\n]);\n\nexport { File as default };\n//# sourceMappingURL=file.js.map\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\r\nimport { $getNodeByKey } from \"lexical\";\r\nimport { Download, File as FileIcon, FileArchive, FileText, Trash2 } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { $isFileNode } from \"src/nodes/FileNode\";\r\n\r\ninterface FileViewProps {\r\n src: string;\r\n fileName: string;\r\n fileSize?: number;\r\n nodeKey: string;\r\n}\r\n\r\n// Helper to format file size\r\nconst formatFileSize = (bytes?: number): string => {\r\n if (!bytes) return \"\";\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\r\n};\r\n\r\n// Helper to get file extension\r\nconst getFileExtension = (fileName: string): string => {\r\n const parts = fileName.split(\".\");\r\n return parts.length > 1 ? parts[parts.length - 1].toLowerCase() : \"\";\r\n};\r\n\r\n// Helper to get icon based on file type\r\nconst getFileIcon = (fileName: string) => {\r\n const ext = getFileExtension(fileName);\r\n\r\n if ([\"pdf\", \"doc\", \"docx\", \"txt\", \"odt\"].includes(ext)) {\r\n return <FileText className=\"cteditor-w-8 cteditor-h-8 cteditor-text-blue-500\" />;\r\n }\r\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\"].includes(ext)) {\r\n return <FileArchive className=\"cteditor-w-8 cteditor-h-8 cteditor-text-orange-500\" />;\r\n }\r\n return <FileIcon className=\"cteditor-w-8 cteditor-h-8 cteditor-text-gray-500\" />;\r\n};\r\n\r\nconst FileView: React.FC<FileViewProps> = ({ src, fileName, fileSize, nodeKey }) => {\r\n const [editor] = useLexicalComposerContext();\r\n\r\n // Validate props to prevent errors\r\n if (!src || !fileName) {\r\n console.error('FileView: Missing required props', { src, fileName, fileSize, nodeKey });\r\n return (\r\n <div className=\"cteditor-inline-flex cteditor-items-center cteditor-gap-3 cteditor-px-4 cteditor-py-3 cteditor-my-2 cteditor-border cteditor-border-destructive cteditor-rounded-lg cteditor-bg-destructive/10\">\r\n <div className=\"cteditor-text-sm cteditor-text-destructive\">\r\n Error loading file\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const handleDownload = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n try {\r\n // Check if it's a data URL (base64)\r\n if (src.startsWith('data:')) {\r\n // Convert data URL to blob for proper download\r\n const arr = src.split(',');\r\n const mimeMatch = arr[0].match(/:(.*?);/);\r\n const mime = mimeMatch ? mimeMatch[1] : 'application/octet-stream';\r\n const bstr = atob(arr[1]);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n\r\n const blob = new Blob([u8arr], { type: mime });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement(\"a\");\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n link.style.display = \"none\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Clean up the blob URL after a delay\r\n setTimeout(() => URL.revokeObjectURL(blobUrl), 100);\r\n } else {\r\n // Regular URL - just download directly\r\n const link = document.createElement(\"a\");\r\n link.href = src;\r\n link.download = fileName;\r\n link.style.display = \"none\";\r\n link.target = \"_blank\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n } catch (error) {\r\n console.error(\"Error downloading file:\", error);\r\n // Fallback: try to open in new tab\r\n window.open(src, '_blank');\r\n }\r\n };\r\n\r\n const handleDeleteFile = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isFileNode(node)) {\r\n node.remove();\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className=\"cteditor-inline-flex cteditor-items-center cteditor-gap-3 cteditor-py-1 cteditor-px-2 cteditor-my-2 cteditor-border cteditor-border-border cteditor-rounded-lg cteditor-bg-background hover:cteditor-bg-accent/50 cteditor-transition-colors cteditor-cursor-pointer cteditor-max-w-md\"\r\n onClick={handleDownload}\r\n role=\"button\"\r\n tabIndex={0}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleDownload(e as any);\r\n }\r\n }}\r\n >\r\n {/* File Icon */}\r\n <div className=\"cteditor-flex-shrink-0 *:cteditor-size-5\">\r\n {getFileIcon(fileName)}\r\n </div>\r\n\r\n {/* File Info */}\r\n <div className=\"cteditor-flex-1 cteditor-min-w-0\">\r\n <div className=\"cteditor-font-medium cteditor-text-xs cteditor-text-foreground cteditor-truncate\">\r\n {fileName}\r\n </div>\r\n {fileSize && (\r\n <div className=\"cteditor-text-xs cteditor-text-muted-foreground\">\r\n {formatFileSize(fileSize)}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Action Buttons - Download and Delete */}\r\n <div className=\"cteditor-flex cteditor-gap-1 cteditor-flex-shrink-0\">\r\n <button\r\n onClick={handleDownload}\r\n className=\"cteditor-p-1 cteditor-rounded-md hover:cteditor-bg-accent cteditor-transition-colors\"\r\n aria-label=\"Download file\"\r\n title=\"Download file\"\r\n >\r\n <Download className=\"cteditor-w-4 cteditor-h-4 cteditor-text-muted-foreground\" />\r\n </button>\r\n <button\r\n onClick={handleDeleteFile}\r\n className=\"cteditor-p-1 cteditor-rounded-md hover:cteditor-bg-destructive hover:cteditor-text-destructive-foreground cteditor-transition-colors\"\r\n aria-label=\"Delete file\"\r\n title=\"Delete file\"\r\n >\r\n <Trash2 className=\"cteditor-w-4 cteditor-h-4 cteditor-text-muted-foreground\" />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default FileView;\r\n"],"names":["FileIcon"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"index-08c4c610.js","sources":["../../../node_modules/.pnpm/lucide-react@0.344.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file-archive.js","../../../node_modules/.pnpm/lucide-react@0.344.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file.js","../src/components/FileView/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.344.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileArchive = createLucideIcon(\"FileArchive\", [\n [\"path\", { d: \"M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v18\", key: \"1oywqq\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"circle\", { cx: \"10\", cy: \"20\", r: \"2\", key: \"1xzdoj\" }],\n [\"path\", { d: \"M10 7V6\", key: \"dljcrl\" }],\n [\"path\", { d: \"M10 12v-1\", key: \"v7bkov\" }],\n [\"path\", { d: \"M10 18v-2\", key: \"1cjy8d\" }]\n]);\n\nexport { FileArchive as default };\n//# sourceMappingURL=file-archive.js.map\n","/**\n * @license lucide-react v0.344.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst File = createLucideIcon(\"File\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }]\n]);\n\nexport { File as default };\n//# sourceMappingURL=file.js.map\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\r\nimport { $getNodeByKey } from \"lexical\";\r\nimport { Download, File as FileIcon, FileArchive, FileText, Trash2 } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { $isFileNode } from \"src/nodes/FileNode\";\r\n\r\ninterface FileViewProps {\r\n src: string;\r\n fileName: string;\r\n fileSize?: number;\r\n nodeKey: string;\r\n}\r\n\r\n// Helper to format file size\r\nconst formatFileSize = (bytes?: number): string => {\r\n if (!bytes) return \"\";\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\r\n};\r\n\r\n// Helper to get file extension\r\nconst getFileExtension = (fileName: string): string => {\r\n const parts = fileName.split(\".\");\r\n return parts.length > 1 ? parts[parts.length - 1].toLowerCase() : \"\";\r\n};\r\n\r\n// Helper to get icon based on file type\r\nconst getFileIcon = (fileName: string) => {\r\n const ext = getFileExtension(fileName);\r\n\r\n if ([\"pdf\", \"doc\", \"docx\", \"txt\", \"odt\"].includes(ext)) {\r\n return <FileText className=\"cteditor-w-8 cteditor-h-8 cteditor-text-blue-500\" />;\r\n }\r\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\"].includes(ext)) {\r\n return <FileArchive className=\"cteditor-w-8 cteditor-h-8 cteditor-text-orange-500\" />;\r\n }\r\n return <FileIcon className=\"cteditor-w-8 cteditor-h-8 cteditor-text-gray-500\" />;\r\n};\r\n\r\nconst FileView: React.FC<FileViewProps> = ({ src, fileName, fileSize, nodeKey }) => {\r\n const [editor] = useLexicalComposerContext();\r\n\r\n // Validate props to prevent errors\r\n if (!src || !fileName) {\r\n console.error('FileView: Missing required props', { src, fileName, fileSize, nodeKey });\r\n return (\r\n <div className=\"cteditor-inline-flex cteditor-items-center cteditor-gap-3 cteditor-px-4 cteditor-py-3 cteditor-my-2 cteditor-border cteditor-border-destructive cteditor-rounded-lg cteditor-bg-destructive/10\">\r\n <div className=\"cteditor-text-sm cteditor-text-destructive\">\r\n Error loading file\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const handleDownload = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n try {\r\n // Check if it's a data URL (base64)\r\n if (src.startsWith('data:')) {\r\n // Convert data URL to blob for proper download\r\n const arr = src.split(',');\r\n const mimeMatch = arr[0].match(/:(.*?);/);\r\n const mime = mimeMatch ? mimeMatch[1] : 'application/octet-stream';\r\n const bstr = atob(arr[1]);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n\r\n const blob = new Blob([u8arr], { type: mime });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement(\"a\");\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n link.style.display = \"none\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Clean up the blob URL after a delay\r\n setTimeout(() => URL.revokeObjectURL(blobUrl), 100);\r\n } else {\r\n // Regular URL - just download directly\r\n const link = document.createElement(\"a\");\r\n link.href = src;\r\n link.download = fileName;\r\n link.style.display = \"none\";\r\n link.target = \"_blank\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n } catch (error) {\r\n console.error(\"Error downloading file:\", error);\r\n // Fallback: try to open in new tab\r\n window.open(src, '_blank');\r\n }\r\n };\r\n\r\n const handleDeleteFile = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isFileNode(node)) {\r\n node.remove();\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className=\"cteditor-inline-flex cteditor-items-center cteditor-gap-3 cteditor-py-1 cteditor-px-2 cteditor-my-2 cteditor-border cteditor-border-border cteditor-rounded-lg cteditor-bg-background hover:cteditor-bg-accent/50 cteditor-transition-colors cteditor-cursor-pointer cteditor-max-w-md\"\r\n onClick={handleDownload}\r\n role=\"button\"\r\n tabIndex={0}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleDownload(e as any);\r\n }\r\n }}\r\n >\r\n {/* File Icon */}\r\n <div className=\"cteditor-flex-shrink-0 *:cteditor-size-5\">\r\n {getFileIcon(fileName)}\r\n </div>\r\n\r\n {/* File Info */}\r\n <div className=\"cteditor-flex-1 cteditor-min-w-0\">\r\n <div className=\"cteditor-font-medium cteditor-text-xs cteditor-text-foreground cteditor-truncate\">\r\n {fileName}\r\n </div>\r\n {fileSize && (\r\n <div className=\"cteditor-text-xs cteditor-text-muted-foreground\">\r\n {formatFileSize(fileSize)}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Action Buttons - Download and Delete */}\r\n <div className=\"cteditor-flex cteditor-gap-1 cteditor-flex-shrink-0\">\r\n <button\r\n onClick={handleDownload}\r\n className=\"cteditor-p-1 cteditor-rounded-md hover:cteditor-bg-accent cteditor-transition-colors\"\r\n aria-label=\"Download file\"\r\n title=\"Download file\"\r\n >\r\n <Download className=\"cteditor-w-4 cteditor-h-4 cteditor-text-muted-foreground\" />\r\n </button>\r\n <button\r\n onClick={handleDeleteFile}\r\n className=\"cteditor-p-1 cteditor-rounded-md hover:cteditor-bg-destructive hover:cteditor-text-destructive-foreground cteditor-transition-colors\"\r\n aria-label=\"Delete file\"\r\n title=\"Delete file\"\r\n >\r\n <Trash2 className=\"cteditor-w-4 cteditor-h-4 cteditor-text-muted-foreground\" />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default FileView;\r\n"],"names":["FileIcon"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -76,7 +76,7 @@ const HtmlViewProvider = ({
|
|
|
76
76
|
}
|
|
77
77
|
);
|
|
78
78
|
};
|
|
79
|
-
const DEFAULT_API_ENDPOINT = "
|
|
79
|
+
const DEFAULT_API_ENDPOINT = "https://api.cteditor.com/api/license/validate";
|
|
80
80
|
const getApiEndpoint = () => {
|
|
81
81
|
return DEFAULT_API_ENDPOINT;
|
|
82
82
|
};
|
|
@@ -199,7 +199,7 @@ const EditorTheme = "";
|
|
|
199
199
|
const PlaygroundEditorTheme = "";
|
|
200
200
|
const AIChatPlugin$1 = "";
|
|
201
201
|
const backendInstance = axios.create({
|
|
202
|
-
baseURL: "
|
|
202
|
+
baseURL: "https://api.cteditor.com/",
|
|
203
203
|
headers: {
|
|
204
204
|
"Content-Type": "application/json"
|
|
205
205
|
}
|
|
@@ -1604,7 +1604,7 @@ const AiTextTransform = async ({ content, apiKey }) => {
|
|
|
1604
1604
|
const AI_ACTION_COMMAND = createCommand(
|
|
1605
1605
|
"AI_ACTION_COMMAND"
|
|
1606
1606
|
);
|
|
1607
|
-
const ImageView = React__default.lazy(() => import("./index-
|
|
1607
|
+
const ImageView = React__default.lazy(() => import("./index-acc78985.js"));
|
|
1608
1608
|
function isGoogleDocCheckboxImg(img) {
|
|
1609
1609
|
return img.parentElement != null && img.parentElement.tagName === "LI" && img.previousSibling === null && img.getAttribute("aria-roledescription") === "checkbox";
|
|
1610
1610
|
}
|
|
@@ -15333,7 +15333,7 @@ const EmbedComponent = ({ url, displayType, alignment, width: initialWidth, heig
|
|
|
15333
15333
|
}
|
|
15334
15334
|
);
|
|
15335
15335
|
};
|
|
15336
|
-
const FileComponent = React$1.lazy(() => import("./index-
|
|
15336
|
+
const FileComponent = React$1.lazy(() => import("./index-08c4c610.js"));
|
|
15337
15337
|
function convertFileElement(domNode) {
|
|
15338
15338
|
if (domNode instanceof HTMLDivElement) {
|
|
15339
15339
|
const dataUrl = domNode.getAttribute("data-lexical-file-src");
|
|
@@ -18102,7 +18102,7 @@ function ChartComponent({
|
|
|
18102
18102
|
setIsLoading(true);
|
|
18103
18103
|
const toastId = toast.loading("Updating chart...");
|
|
18104
18104
|
try {
|
|
18105
|
-
const backendUrl = "
|
|
18105
|
+
const backendUrl = "https://api.cteditor.com/".replace(/\/$/, "");
|
|
18106
18106
|
const apiKey = localStorage.getItem("apiKey") || "";
|
|
18107
18107
|
const response = await fetch(`${backendUrl}/api/chat/regenerate`, {
|
|
18108
18108
|
method: "POST",
|
|
@@ -20866,10 +20866,10 @@ const PDF_CONFIG = {
|
|
|
20866
20866
|
};
|
|
20867
20867
|
const loadHtml2Pdf = async () => {
|
|
20868
20868
|
try {
|
|
20869
|
-
const mod = await import("./html2pdf.bundle.min-
|
|
20869
|
+
const mod = await import("./html2pdf.bundle.min-e3118523.js").then((n) => n.h);
|
|
20870
20870
|
return (mod == null ? void 0 : mod.default) || mod;
|
|
20871
20871
|
} catch {
|
|
20872
|
-
const mod2 = await import("./html2pdf.bundle-
|
|
20872
|
+
const mod2 = await import("./html2pdf.bundle-2195a04c.js").then((n) => n.h);
|
|
20873
20873
|
return (mod2 == null ? void 0 : mod2.default) || mod2;
|
|
20874
20874
|
}
|
|
20875
20875
|
};
|
|
@@ -26876,7 +26876,7 @@ const Toolbar = ({
|
|
|
26876
26876
|
async (metadata) => {
|
|
26877
26877
|
const toastId = toast.loading("Generating chart...");
|
|
26878
26878
|
try {
|
|
26879
|
-
const backendUrl = "
|
|
26879
|
+
const backendUrl = "https://api.cteditor.com/".replace(/\/$/, "");
|
|
26880
26880
|
const response = await fetch(`${backendUrl}/api/chat/regenerate`, {
|
|
26881
26881
|
method: "POST",
|
|
26882
26882
|
headers: {
|
|
@@ -28485,7 +28485,7 @@ class GrammarAIService {
|
|
|
28485
28485
|
__publicField(this, "apiEndpoint");
|
|
28486
28486
|
__publicField(this, "requestTimeout", REQUEST_TIMEOUT);
|
|
28487
28487
|
__publicField(this, "sentenceCache", /* @__PURE__ */ new Map());
|
|
28488
|
-
this.apiEndpoint = "
|
|
28488
|
+
this.apiEndpoint = "https://api.cteditor.com/" + apiEndpoint;
|
|
28489
28489
|
}
|
|
28490
28490
|
isSentenceCached(text) {
|
|
28491
28491
|
const hash = generateSentenceHash(text);
|
|
@@ -41063,4 +41063,4 @@ export {
|
|
|
41063
41063
|
useReactNativeBridge as w,
|
|
41064
41064
|
editorConfig as x
|
|
41065
41065
|
};
|
|
41066
|
-
//# sourceMappingURL=index-
|
|
41066
|
+
//# sourceMappingURL=index-455942f2.js.map
|