作者 202304001

提示词修改

1 import chatStyles from "@/app/components/chat.module.scss"; 1 import chatStyles from "@/app/components/chat.module.scss";
2 import homeStyles from "@/app/components/home.module.scss"; 2 import homeStyles from "@/app/components/home.module.scss";
3 -import styles from './bgRemoval.module.scss'  
4 3
5 import { WindowContent } from "@/app/components/home"; 4 import { WindowContent } from "@/app/components/home";
6 import { useMobileScreen } from "@/app/utils"; 5 import { useMobileScreen } from "@/app/utils";
@@ -13,123 +12,116 @@ import { getClientConfig } from "@/app/config/client"; @@ -13,123 +12,116 @@ import { getClientConfig } from "@/app/config/client";
13 import React, { useEffect, useMemo, useRef, useState } from "react"; 12 import React, { useEffect, useMemo, useRef, useState } from "react";
14 import { useAppConfig } from "@/app/store"; 13 import { useAppConfig } from "@/app/store";
15 import { BgSiderBar } from "./bg-siderBar"; 14 import { BgSiderBar } from "./bg-siderBar";
16 -import { Button, Flex, Upload, message } from 'antd';  
17 -import { UploadOutlined } from '@ant-design/icons';  
18 -import type { UploadFile } from 'antd';  
19 - 15 +import { message } from "antd";
  16 +import type { UploadFile } from "antd";
20 17
21 import ReturnIcon from "@/app/icons/return.svg"; 18 import ReturnIcon from "@/app/icons/return.svg";
22 import MinIcon from "@/app/icons/min.svg"; 19 import MinIcon from "@/app/icons/min.svg";
23 import MaxIcon from "@/app/icons/max.svg"; 20 import MaxIcon from "@/app/icons/max.svg";
24 import SDIcon from "@/app/icons/sd.svg"; 21 import SDIcon from "@/app/icons/sd.svg";
25 -import LoadingIcon from "@/app/icons/loading.svg";  
26 -import BotIcon from "@/app/icons/bot.svg";  
27 -import CloseIcon from "@/app/icons/close.svg";  
28 -  
29 - 22 +import { ChartComponent } from "../chart";
30 23
31 export function BgRemoval() { 24 export function BgRemoval() {
32 - const isMobileScreen = useMobileScreen();  
33 - const navigate = useNavigate();  
34 - const clientConfig = useMemo(() => getClientConfig(), []);  
35 - const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;  
36 - const config = useAppConfig();  
37 - const scrollRef = useRef<HTMLDivElement>(null);  
38 - const isBgRemoval = location.pathname === Path.BgRemoval; 25 + const isMobileScreen = useMobileScreen();
  26 + const navigate = useNavigate();
  27 + const clientConfig = useMemo(() => getClientConfig(), []);
  28 + const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
  29 + const config = useAppConfig();
  30 + const scrollRef = useRef<HTMLDivElement>(null);
  31 + const isBgRemoval = location.pathname === Path.BgRemoval;
39 32
40 - const [isLoading, setIsLoading] = useState(false)  
41 - const [fileData, setFileData] = useState<Blob | null>(null); //储存上传图片  
42 - const [previewUrl, setPreviewUrl] = useState<string | null>('')  
43 - // 关闭图片  
44 - const closePic = () => {  
45 - setFileData(null);  
46 - setPreviewUrl('');  
47 - }; 33 + const [isLoading, setIsLoading] = useState(false);
  34 + const [fileData, setFileData] = useState<Blob | null>(null); //储存上传图片
  35 + const [previewUrl, setPreviewUrl] = useState<string | null>("");
  36 + // 关闭图片
  37 + const closePic = () => {
  38 + setFileData(null);
  39 + setPreviewUrl("");
  40 + };
48 41
49 - //上传图片  
50 - const onChange = (info: any) => {  
51 - if (info.file.status === 'uploading') {  
52 - return;  
53 - }  
54 - if (info.file.status === 'done') {  
55 - // 获取上传的文件对象  
56 - const file = info.file as UploadFile;  
57 - const blob = file.originFileObj as Blob;  
58 - setFileData(blob);  
59 - } else if (info.file.status === 'error') {  
60 - message.error(`${info.file.name} file upload failed.`);  
61 - }  
62 - };  
63 - // 修改 useEffect 监听 fileData  
64 - useEffect(() => {  
65 - if (fileData) {  
66 - // 创建 Blob 的临时 URL  
67 - const objectUrl = URL.createObjectURL(fileData);  
68 - setPreviewUrl(objectUrl);  
69 - // 组件卸载时释放内存  
70 - return () => URL.revokeObjectURL(objectUrl);  
71 - }  
72 - }, [fileData]); 42 + //上传图片
  43 + const onChange = (info: any) => {
  44 + if (info.file.status === "uploading") {
  45 + return;
  46 + }
  47 + if (info.file.status === "done") {
  48 + // 获取上传的文件对象
  49 + const file = info.file as UploadFile;
  50 + const blob = file.originFileObj as Blob;
  51 + setFileData(blob);
  52 + } else if (info.file.status === "error") {
  53 + message.error(`${info.file.name} file upload failed.`);
  54 + }
  55 + };
  56 + // 修改 useEffect 监听 fileData
  57 + useEffect(() => {
  58 + if (fileData) {
  59 + // 创建 Blob 的临时 URL
  60 + const objectUrl = URL.createObjectURL(fileData);
  61 + setPreviewUrl(objectUrl);
  62 + // 组件卸载时释放内存
  63 + return () => URL.revokeObjectURL(objectUrl);
  64 + }
  65 + }, [fileData]);
73 66
74 -  
75 - return (  
76 - <>  
77 - <BgSiderBar  
78 - className={clsx({ [homeStyles["sidebar-show"]]: isBgRemoval })}  
79 - fileData={fileData}  
80 - setFileData={setFileData}  
81 - previewUrl={previewUrl}  
82 - setPreviewUrl={setPreviewUrl}  
83 - isLoading={isLoading}  
84 - setIsLoading={setIsLoading}  
85 - />  
86 - <WindowContent>  
87 - <div className={chatStyles.chat} key={"1"}>  
88 - <div className="window-header" data-tauri-drag-region>  
89 - {isMobileScreen && (  
90 - <div className="window-actions">  
91 - <div className={"window-action-button"}>  
92 - <IconButton  
93 - icon={<ReturnIcon />}  
94 - bordered  
95 - title={Locale.Chat.Actions.ChatList}  
96 - onClick={() => navigate(Path.BgRemoval)}  
97 - />  
98 - </div>  
99 - </div>  
100 - )}  
101 - <div  
102 - className={clsx(  
103 - "window-header-title",  
104 - chatStyles["chat-body-title"],  
105 - )}  
106 - >  
107 - <div className={`window-header-main-title`}>智能抠图</div>  
108 - </div>  
109 - <div className="window-actions">  
110 - {showMaxIcon && (  
111 - <div className="window-action-button">  
112 - <IconButton  
113 - aria={Locale.Chat.Actions.FullScreen}  
114 - icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}  
115 - bordered  
116 - onClick={() => {  
117 - config.update(  
118 - (config) => (config.tightBorder = !config.tightBorder),  
119 - );  
120 - }}  
121 - />  
122 - </div>  
123 - )}  
124 - {isMobileScreen && <SDIcon width={50} height={50} />}  
125 - </div>  
126 - </div>  
127 - <div className={chatStyles["chat-body"]} ref={scrollRef}>  
128 - <Flex vertical justify='center' align="center" gap="middle" className={styles['panelFlex']}> 67 + return (
  68 + <>
  69 + <BgSiderBar
  70 + className={clsx({ [homeStyles["sidebar-show"]]: isBgRemoval })}
  71 + fileData={fileData}
  72 + setFileData={setFileData}
  73 + previewUrl={previewUrl}
  74 + setPreviewUrl={setPreviewUrl}
  75 + isLoading={isLoading}
  76 + setIsLoading={setIsLoading}
  77 + />
  78 + <WindowContent>
  79 + <div className={chatStyles.chat} key={"1"}>
  80 + <div className="window-header" data-tauri-drag-region>
  81 + {isMobileScreen && (
  82 + <div className="window-actions">
  83 + <div className={"window-action-button"}>
  84 + <IconButton
  85 + icon={<ReturnIcon />}
  86 + bordered
  87 + title={Locale.Chat.Actions.ChatList}
  88 + onClick={() => navigate(Path.BgRemoval)}
  89 + />
  90 + </div>
  91 + </div>
  92 + )}
  93 + <div
  94 + className={clsx(
  95 + "window-header-title",
  96 + chatStyles["chat-body-title"],
  97 + )}
  98 + >
  99 + <div className={`window-header-main-title`}>智能抠图</div>
  100 + </div>
  101 + <div className="window-actions">
  102 + {showMaxIcon && (
  103 + <div className="window-action-button">
  104 + <IconButton
  105 + aria={Locale.Chat.Actions.FullScreen}
  106 + icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}
  107 + bordered
  108 + onClick={() => {
  109 + config.update(
  110 + (config) => (config.tightBorder = !config.tightBorder),
  111 + );
  112 + }}
  113 + />
  114 + </div>
  115 + )}
  116 + {isMobileScreen && <SDIcon width={50} height={50} />}
  117 + </div>
  118 + </div>
  119 + <div className={chatStyles["chat-body"]} ref={scrollRef}>
  120 + {/* <Flex vertical justify='center' align="center" gap="middle" className={styles['panelFlex']}>
129 {isLoading ? ( 121 {isLoading ? (
130 <div className={clsx("no-dark", styles["loading-content"])}> 122 <div className={clsx("no-dark", styles["loading-content"])}>
131 <BotIcon /> 123 <BotIcon />
132 - <LoadingIcon /> 124 + <LoadingIcon/>
133 </div> 125 </div>
134 ) : previewUrl ? ( 126 ) : previewUrl ? (
135 <div className={styles['preview']}> 127 <div className={styles['preview']}>
@@ -151,9 +143,11 @@ export function BgRemoval() { @@ -151,9 +143,11 @@ export function BgRemoval() {
151 </Button> 143 </Button>
152 </Upload> 144 </Upload>
153 )} 145 )}
154 - </Flex>  
155 - </div>  
156 - </div>  
157 - </WindowContent>  
158 - </>)  
159 -}  
  146 + </Flex> */}
  147 + <ChartComponent />
  148 + </div>
  149 + </div>
  150 + </WindowContent>
  151 + </>
  152 + );
  153 +}
1 -export function ChartPage() {  
2 - return <>zhehzsids</>; 1 +import { Card } from "antd";
  2 +import * as echarts from "echarts/core";
  3 +import { GridComponent, GridComponentOption } from "echarts/components";
  4 +import { BarChart, BarSeriesOption } from "echarts/charts";
  5 +import { CanvasRenderer } from "echarts/renderers";
  6 +import { useRef, useState } from "react";
  7 +const tabList = [
  8 + {
  9 + key: "bar",
  10 + label: "柱状图",
  11 + },
  12 + {
  13 + key: "pie",
  14 + label: "饼图",
  15 + },
  16 + {
  17 + key: "line",
  18 + label: "折线图",
  19 + },
  20 +];
  21 +
  22 +echarts.use([GridComponent, BarChart, CanvasRenderer]);
  23 +type EChartsOption = echarts.ComposeOption<
  24 + GridComponentOption | BarSeriesOption
  25 +>;
  26 +
  27 +var option: EChartsOption;
  28 +
  29 +option = {
  30 + xAxis: {
  31 + type: "category",
  32 + data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
  33 + },
  34 + yAxis: {
  35 + type: "value",
  36 + },
  37 + series: [
  38 + {
  39 + data: [120, 200, 150, 80, 70, 110, 130],
  40 + type: "bar",
  41 + },
  42 + ],
  43 +};
  44 +export function ChartComponent() {
  45 + const [activeTabKey, setActiveTabKey] = useState<string>("bar");
  46 + const line = useRef<HTMLCanvasElement>(null);
  47 + const bar = useRef<HTMLCanvasElement>(null);
  48 + const pie = useRef<HTMLCanvasElement>(null);
  49 + const contentListNoTitle: Record<string, React.ReactNode> = {
  50 + bar: <canvas ref={bar}></canvas>,
  51 + pie: <canvas ref={pie}></canvas>,
  52 + line: <canvas ref={line}></canvas>,
  53 + };
  54 + // var myChart = echarts.init(bar);
  55 + return (
  56 + <>
  57 + <Card
  58 + style={{ width: "100%" }}
  59 + tabList={tabList}
  60 + activeTabKey={activeTabKey}
  61 + onTabChange={setActiveTabKey}
  62 + tabProps={{ size: "middle" }}
  63 + >
  64 + {contentListNoTitle[activeTabKey]}
  65 + </Card>
  66 + </>
  67 + );
3 } 68 }
@@ -109,10 +109,6 @@ const PowerPoint = dynamic( @@ -109,10 +109,6 @@ const PowerPoint = dynamic(
109 loading: () => <Loading noLogo />, 109 loading: () => <Loading noLogo />,
110 }, 110 },
111 ); 111 );
112 -//以下新增图表 页面 20250331  
113 -const ChartPage = dynamic(async () => (await import("./chart")).ChartPage, {  
114 - loading: () => <Loading noLogo />,  
115 -});  
116 112
117 export function useSwitchTheme() { 113 export function useSwitchTheme() {
118 const config = useAppConfig(); 114 const config = useAppConfig();
@@ -202,7 +198,6 @@ function Screen() { @@ -202,7 +198,6 @@ function Screen() {
202 const isBgRemoval = location.pathname === Path.BgRemoval; 198 const isBgRemoval = location.pathname === Path.BgRemoval;
203 const isWrting = location.pathname === Path.Writing; 199 const isWrting = location.pathname === Path.Writing;
204 const isPowerpoint = location.pathname === Path.Powerpoint; 200 const isPowerpoint = location.pathname === Path.Powerpoint;
205 - const isChart = location.pathname === Path.Chart;  
206 201
207 const isMobileScreen = useMobileScreen(); 202 const isMobileScreen = useMobileScreen();
208 const shouldTightBorder = 203 const shouldTightBorder =
@@ -231,8 +226,6 @@ function Screen() { @@ -231,8 +226,6 @@ function Screen() {
231 if (isWrting) return <WritingPage />; 226 if (isWrting) return <WritingPage />;
232 //20250328新增ppt制作页面 227 //20250328新增ppt制作页面
233 if (isPowerpoint) return <PowerPoint />; 228 if (isPowerpoint) return <PowerPoint />;
234 - //20250331新增图标页面  
235 - if (isChart) return <ChartPage />;  
236 229
237 return ( 230 return (
238 <> 231 <>
@@ -132,19 +132,6 @@ export function PreCode(props: { children: any }) { @@ -132,19 +132,6 @@ export function PreCode(props: { children: any }) {
132 132
133 return ( 133 return (
134 <> 134 <>
135 - <pre ref={ref}>  
136 - <span  
137 - className="copy-code-button"  
138 - onClick={() => {  
139 - if (ref.current) {  
140 - copyToClipboard(  
141 - ref.current.querySelector("code")?.innerText ?? "",  
142 - );  
143 - }  
144 - }}  
145 - ></span>  
146 - {props.children}  
147 - </pre>  
148 {mermaidCode.length > 0 && ( 135 {mermaidCode.length > 0 && (
149 <Mermaid code={mermaidCode} key={mermaidCode} /> 136 <Mermaid code={mermaidCode} key={mermaidCode} />
150 )} 137 )}
@@ -169,6 +156,19 @@ export function PreCode(props: { children: any }) { @@ -169,6 +156,19 @@ export function PreCode(props: { children: any }) {
169 /> 156 />
170 </FullScreen> 157 </FullScreen>
171 )} 158 )}
  159 + <pre ref={ref}>
  160 + <span
  161 + className="copy-code-button"
  162 + onClick={() => {
  163 + if (ref.current) {
  164 + copyToClipboard(
  165 + ref.current.querySelector("code")?.innerText ?? "",
  166 + );
  167 + }
  168 + }}
  169 + ></span>
  170 + {props.children}
  171 + </pre>
172 </> 172 </>
173 ); 173 );
174 } 174 }
@@ -204,6 +204,7 @@ export function MindPage() { @@ -204,6 +204,7 @@ export function MindPage() {
204 ); 204 );
205 if (mindInstance.current) { 205 if (mindInstance.current) {
206 mindInstance.current.destroy(); 206 mindInstance.current.destroy();
  207 + mindInstance.current = null;
207 } 208 }
208 }; 209 };
209 }, []); 210 }, []);
@@ -24,7 +24,7 @@ import ReturnIcon from "@/app/icons/return.svg"; @@ -24,7 +24,7 @@ import ReturnIcon from "@/app/icons/return.svg";
24 import MinIcon from "@/app/icons/min.svg"; 24 import MinIcon from "@/app/icons/min.svg";
25 import MaxIcon from "@/app/icons/max.svg"; 25 import MaxIcon from "@/app/icons/max.svg";
26 import SDIcon from "@/app/icons/sd.svg"; 26 import SDIcon from "@/app/icons/sd.svg";
27 -import LoadingIcon from "@/app/icons/loading.svg"; 27 +import LoadingIcon from "@/app/icons/three-dots.svg";
28 import BotIcon from "@/app/icons/bot.svg"; 28 import BotIcon from "@/app/icons/bot.svg";
29 import EditIcon from "@/app/icons/rename.svg"; 29 import EditIcon from "@/app/icons/rename.svg";
30 import ReloadIcon from "@/app/icons/reload.svg"; 30 import ReloadIcon from "@/app/icons/reload.svg";
@@ -57,7 +57,6 @@ export enum Path { @@ -57,7 +57,6 @@ export enum Path {
57 BgRemoval = "/background-removal", 57 BgRemoval = "/background-removal",
58 Writing = "/aiWriting", 58 Writing = "/aiWriting",
59 Powerpoint = "/powerpoint", 59 Powerpoint = "/powerpoint",
60 - Chart = "/chart",  
61 } 60 }
62 61
63 export enum ApiPath { 62 export enum ApiPath {
@@ -884,6 +884,7 @@ const cn = { @@ -884,6 +884,7 @@ const cn = {
884 generateBg: "生成背景", 884 generateBg: "生成背景",
885 promptTitle: "背景提示词", 885 promptTitle: "背景提示词",
886 }, 886 },
  887 + Thinking: "AI思考中",
887 }; 888 };
888 889
889 type DeepPartial<T> = T extends object 890 type DeepPartial<T> = T extends object
@@ -398,4 +398,4 @@ pre { @@ -398,4 +398,4 @@ pre {
398 398
399 .copyable { 399 .copyable {
400 user-select: text; 400 user-select: text;
401 -} 401 +}
1 import type { writePromptParam } from "@/app/types/prompt"; 1 import type { writePromptParam } from "@/app/types/prompt";
  2 +
2 export function getWrtingPrompt(param: writePromptParam) { 3 export function getWrtingPrompt(param: writePromptParam) {
3 - const isImg = `文案要配上图片,实现图文混排,要美观,要符合${param.writingPurposeName}的排版标准和写作风格,写作风格要${param.writingStyleName}, 4 + let writingPurposeName;
  5 + switch (param.writingPurposeName) {
  6 + case "公司官网":
  7 + writingPurposeName = "公司官网的介绍";
  8 + break;
  9 + case "小红书":
  10 + writingPurposeName = "小红书的介绍";
  11 + break;
  12 + case "微信":
  13 + writingPurposeName = "微信的介绍";
  14 + break;
  15 + case "公众号":
  16 + writingPurposeName = "公众号的介绍";
  17 + break;
  18 + case "今日头条":
  19 + writingPurposeName = "今日头条的介绍";
  20 + break;
  21 + }
  22 + const isImg = `文案要配上图片,实现图文混排,要美观,要符合${writingPurposeName}的排版标准和写作风格,写作风格要${param.writingStyleName},
4 你没有图片没关系,把图文混排的效果实现,并在你认为要插入图片的地方将图片的Prompt用英文输出给:![description](https://image.pollinations.ai/prompt/description?nologo=true),记得图片地址后面的?nologo=true一定不能去掉了, 23 你没有图片没关系,把图文混排的效果实现,并在你认为要插入图片的地方将图片的Prompt用英文输出给:![description](https://image.pollinations.ai/prompt/description?nologo=true),记得图片地址后面的?nologo=true一定不能去掉了,
5 因为这个语法可以自动按照提示生成并渲染图片。你可以帮我大幅提高生成图片质量和丰富程度,比如增加相机光圈、具体场景描述等内容,注意图片一定要用<img,否则在HTML下图片可能显示不了`; 24 因为这个语法可以自动按照提示生成并渲染图片。你可以帮我大幅提高生成图片质量和丰富程度,比如增加相机光圈、具体场景描述等内容,注意图片一定要用<img,否则在HTML下图片可能显示不了`;
  25 +
6 const input = `帮我使用${param.writingLanguageName}写一篇主题是${ 26 const input = `帮我使用${param.writingLanguageName}写一篇主题是${
7 param.prompt 27 param.prompt
8 - }的${param.writingTypeName},${  
9 - param.isImgName === "是" ? isImg : ""  
10 - },字数要求不少于${  
11 - param.writingCount  
12 - }字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`; 28 + }的${param.writingTypeName},
  29 + ${param.isImgName === "是" ? isImg : ""}
  30 + ,字数要求不少于${
  31 + param.writingCount
  32 + }字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`;
13 return input; 33 return input;
14 } 34 }
15 35
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 "name": "nextchat", 7 "name": "nextchat",
8 "license": "mit", 8 "license": "mit",
9 "dependencies": { 9 "dependencies": {
  10 + "@docmee/sdk-ui": "^1.1.17",
10 "@fortaine/fetch-event-source": "^3.0.6", 11 "@fortaine/fetch-event-source": "^3.0.6",
11 "@hello-pangea/dnd": "^16.5.0", 12 "@hello-pangea/dnd": "^16.5.0",
12 "@modelcontextprotocol/sdk": "^1.0.4", 13 "@modelcontextprotocol/sdk": "^1.0.4",
@@ -18,6 +19,7 @@ @@ -18,6 +19,7 @@
18 "@xyflow/react": "^12.4.4", 19 "@xyflow/react": "^12.4.4",
19 "antd": "^5.24.4", 20 "antd": "^5.24.4",
20 "axios": "^1.7.5", 21 "axios": "^1.7.5",
  22 + "chart.js": "^4.4.8",
21 "cheerio": "^1.0.0", 23 "cheerio": "^1.0.0",
22 "clsx": "^2.1.1", 24 "clsx": "^2.1.1",
23 "docx": "^9.3.0", 25 "docx": "^9.3.0",
@@ -34,6 +36,7 @@ @@ -34,6 +36,7 @@
34 "lucide-react": "^0.484.0", 36 "lucide-react": "^0.484.0",
35 "markdown-to-txt": "^2.0.1", 37 "markdown-to-txt": "^2.0.1",
36 "mermaid": "^10.6.1", 38 "mermaid": "^10.6.1",
  39 + "mind-elixir": "^4.5.0",
37 "nanoid": "^5.0.3", 40 "nanoid": "^5.0.3",
38 "next": "^14.1.1", 41 "next": "^14.1.1",
39 "node-fetch": "^3.3.1", 42 "node-fetch": "^3.3.1",
@@ -53,8 +56,6 @@ @@ -53,8 +56,6 @@
53 "sass": "^1.59.2", 56 "sass": "^1.59.2",
54 "spark-md5": "^3.0.2", 57 "spark-md5": "^3.0.2",
55 "use-debounce": "^9.0.4", 58 "use-debounce": "^9.0.4",
56 - "vue": "^3.5.13",  
57 - "vue-template-compiler": "^2.7.16",  
58 "xlsx": "^0.18.5", 59 "xlsx": "^0.18.5",
59 "zod": "^3.24.1" 60 "zod": "^3.24.1"
60 }, 61 },
@@ -64,6 +65,7 @@ @@ -64,6 +65,7 @@
64 "@testing-library/dom": "^10.4.0", 65 "@testing-library/dom": "^10.4.0",
65 "@testing-library/jest-dom": "^6.6.3", 66 "@testing-library/jest-dom": "^6.6.3",
66 "@testing-library/react": "^16.1.0", 67 "@testing-library/react": "^16.1.0",
  68 + "@types/chart.js": "^2.9.41",
67 "@types/file-saver": "^2.0.7", 69 "@types/file-saver": "^2.0.7",
68 "@types/html-docx-js": "^0.3.4", 70 "@types/html-docx-js": "^0.3.4",
69 "@types/html-to-draftjs": "^1.5.0", 71 "@types/html-to-draftjs": "^1.5.0",
@@ -947,6 +949,7 @@ @@ -947,6 +949,7 @@
947 "version": "7.25.3", 949 "version": "7.25.3",
948 "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz", 950 "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
949 "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", 951 "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
  952 + "dev": true,
950 "license": "MIT", 953 "license": "MIT",
951 "dependencies": { 954 "dependencies": {
952 "@babel/types": "^7.25.2" 955 "@babel/types": "^7.25.2"
@@ -962,6 +965,7 @@ @@ -962,6 +965,7 @@
962 "version": "7.24.8", 965 "version": "7.24.8",
963 "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", 966 "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
964 "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", 967 "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
  968 + "dev": true,
965 "license": "MIT", 969 "license": "MIT",
966 "engines": { 970 "engines": {
967 "node": ">=6.9.0" 971 "node": ">=6.9.0"
@@ -971,6 +975,7 @@ @@ -971,6 +975,7 @@
971 "version": "7.24.7", 975 "version": "7.24.7",
972 "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", 976 "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
973 "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", 977 "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
  978 + "dev": true,
974 "license": "MIT", 979 "license": "MIT",
975 "engines": { 980 "engines": {
976 "node": ">=6.9.0" 981 "node": ">=6.9.0"
@@ -980,6 +985,7 @@ @@ -980,6 +985,7 @@
980 "version": "7.25.2", 985 "version": "7.25.2",
981 "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz", 986 "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
982 "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", 987 "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
  988 + "dev": true,
983 "license": "MIT", 989 "license": "MIT",
984 "dependencies": { 990 "dependencies": {
985 "@babel/helper-string-parser": "^7.24.8", 991 "@babel/helper-string-parser": "^7.24.8",
@@ -2670,6 +2676,15 @@ @@ -2670,6 +2676,15 @@
2670 "@jridgewell/sourcemap-codec": "^1.4.10" 2676 "@jridgewell/sourcemap-codec": "^1.4.10"
2671 } 2677 }
2672 }, 2678 },
  2679 + "node_modules/@docmee/sdk-ui": {
  2680 + "version": "1.1.17",
  2681 + "resolved": "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz",
  2682 + "integrity": "sha512-K/pWu2tg9ZrE9wbI5Naylh+LVd86kwMG7A9pu5urN1XjV+MAHj7ruOMrmqMkGbN5fVfFN8DbxWx4yUMcCMHTxA==",
  2683 + "license": "Apache-2.0",
  2684 + "dependencies": {
  2685 + "query-string": "^9.1.1"
  2686 + }
  2687 + },
2673 "node_modules/@emotion/hash": { 2688 "node_modules/@emotion/hash": {
2674 "version": "0.8.0", 2689 "version": "0.8.0",
2675 "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz", 2690 "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz",
@@ -3474,6 +3489,12 @@ @@ -3474,6 +3489,12 @@
3474 "@jridgewell/sourcemap-codec": "^1.4.14" 3489 "@jridgewell/sourcemap-codec": "^1.4.14"
3475 } 3490 }
3476 }, 3491 },
  3492 + "node_modules/@kurkle/color": {
  3493 + "version": "0.3.4",
  3494 + "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz",
  3495 + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
  3496 + "license": "MIT"
  3497 + },
3477 "node_modules/@modelcontextprotocol/sdk": { 3498 "node_modules/@modelcontextprotocol/sdk": {
3478 "version": "1.0.4", 3499 "version": "1.0.4",
3479 "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz", 3500 "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz",
@@ -4641,6 +4662,16 @@ @@ -4641,6 +4662,16 @@
4641 "@babel/types": "^7.20.7" 4662 "@babel/types": "^7.20.7"
4642 } 4663 }
4643 }, 4664 },
  4665 + "node_modules/@types/chart.js": {
  4666 + "version": "2.9.41",
  4667 + "resolved": "https://registry.npmmirror.com/@types/chart.js/-/chart.js-2.9.41.tgz",
  4668 + "integrity": "sha512-3dvkDvueckY83UyUXtJMalYoH6faOLkWQoaTlJgB4Djde3oORmNP0Jw85HtzTuXyliUHcdp704s0mZFQKio/KQ==",
  4669 + "dev": true,
  4670 + "license": "MIT",
  4671 + "dependencies": {
  4672 + "moment": "^2.10.2"
  4673 + }
  4674 + },
4644 "node_modules/@types/d3-color": { 4675 "node_modules/@types/d3-color": {
4645 "version": "3.1.3", 4676 "version": "3.1.3",
4646 "resolved": "https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz", 4677 "resolved": "https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz",
@@ -5254,152 +5285,6 @@ @@ -5254,152 +5285,6 @@
5254 "hasInstallScript": true, 5285 "hasInstallScript": true,
5255 "license": "Apache-2.0" 5286 "license": "Apache-2.0"
5256 }, 5287 },
5257 - "node_modules/@vue/compiler-core": {  
5258 - "version": "3.5.13",  
5259 - "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz",  
5260 - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",  
5261 - "license": "MIT",  
5262 - "dependencies": {  
5263 - "@babel/parser": "^7.25.3",  
5264 - "@vue/shared": "3.5.13",  
5265 - "entities": "^4.5.0",  
5266 - "estree-walker": "^2.0.2",  
5267 - "source-map-js": "^1.2.0"  
5268 - }  
5269 - },  
5270 - "node_modules/@vue/compiler-dom": {  
5271 - "version": "3.5.13",  
5272 - "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",  
5273 - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",  
5274 - "license": "MIT",  
5275 - "dependencies": {  
5276 - "@vue/compiler-core": "3.5.13",  
5277 - "@vue/shared": "3.5.13"  
5278 - }  
5279 - },  
5280 - "node_modules/@vue/compiler-sfc": {  
5281 - "version": "3.5.13",  
5282 - "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",  
5283 - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",  
5284 - "license": "MIT",  
5285 - "dependencies": {  
5286 - "@babel/parser": "^7.25.3",  
5287 - "@vue/compiler-core": "3.5.13",  
5288 - "@vue/compiler-dom": "3.5.13",  
5289 - "@vue/compiler-ssr": "3.5.13",  
5290 - "@vue/shared": "3.5.13",  
5291 - "estree-walker": "^2.0.2",  
5292 - "magic-string": "^0.30.11",  
5293 - "postcss": "^8.4.48",  
5294 - "source-map-js": "^1.2.0"  
5295 - }  
5296 - },  
5297 - "node_modules/@vue/compiler-sfc/node_modules/nanoid": {  
5298 - "version": "3.3.11",  
5299 - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",  
5300 - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",  
5301 - "funding": [  
5302 - {  
5303 - "type": "github",  
5304 - "url": "https://github.com/sponsors/ai"  
5305 - }  
5306 - ],  
5307 - "license": "MIT",  
5308 - "bin": {  
5309 - "nanoid": "bin/nanoid.cjs"  
5310 - },  
5311 - "engines": {  
5312 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"  
5313 - }  
5314 - },  
5315 - "node_modules/@vue/compiler-sfc/node_modules/postcss": {  
5316 - "version": "8.5.3",  
5317 - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",  
5318 - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",  
5319 - "funding": [  
5320 - {  
5321 - "type": "opencollective",  
5322 - "url": "https://opencollective.com/postcss/"  
5323 - },  
5324 - {  
5325 - "type": "tidelift",  
5326 - "url": "https://tidelift.com/funding/github/npm/postcss"  
5327 - },  
5328 - {  
5329 - "type": "github",  
5330 - "url": "https://github.com/sponsors/ai"  
5331 - }  
5332 - ],  
5333 - "license": "MIT",  
5334 - "dependencies": {  
5335 - "nanoid": "^3.3.8",  
5336 - "picocolors": "^1.1.1",  
5337 - "source-map-js": "^1.2.1"  
5338 - },  
5339 - "engines": {  
5340 - "node": "^10 || ^12 || >=14"  
5341 - }  
5342 - },  
5343 - "node_modules/@vue/compiler-ssr": {  
5344 - "version": "3.5.13",  
5345 - "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",  
5346 - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",  
5347 - "license": "MIT",  
5348 - "dependencies": {  
5349 - "@vue/compiler-dom": "3.5.13",  
5350 - "@vue/shared": "3.5.13"  
5351 - }  
5352 - },  
5353 - "node_modules/@vue/reactivity": {  
5354 - "version": "3.5.13",  
5355 - "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz",  
5356 - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",  
5357 - "license": "MIT",  
5358 - "dependencies": {  
5359 - "@vue/shared": "3.5.13"  
5360 - }  
5361 - },  
5362 - "node_modules/@vue/runtime-core": {  
5363 - "version": "3.5.13",  
5364 - "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz",  
5365 - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",  
5366 - "license": "MIT",  
5367 - "dependencies": {  
5368 - "@vue/reactivity": "3.5.13",  
5369 - "@vue/shared": "3.5.13"  
5370 - }  
5371 - },  
5372 - "node_modules/@vue/runtime-dom": {  
5373 - "version": "3.5.13",  
5374 - "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",  
5375 - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",  
5376 - "license": "MIT",  
5377 - "dependencies": {  
5378 - "@vue/reactivity": "3.5.13",  
5379 - "@vue/runtime-core": "3.5.13",  
5380 - "@vue/shared": "3.5.13",  
5381 - "csstype": "^3.1.3"  
5382 - }  
5383 - },  
5384 - "node_modules/@vue/server-renderer": {  
5385 - "version": "3.5.13",  
5386 - "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz",  
5387 - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",  
5388 - "license": "MIT",  
5389 - "dependencies": {  
5390 - "@vue/compiler-ssr": "3.5.13",  
5391 - "@vue/shared": "3.5.13"  
5392 - },  
5393 - "peerDependencies": {  
5394 - "vue": "3.5.13"  
5395 - }  
5396 - },  
5397 - "node_modules/@vue/shared": {  
5398 - "version": "3.5.13",  
5399 - "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",  
5400 - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",  
5401 - "license": "MIT"  
5402 - },  
5403 "node_modules/@webassemblyjs/ast": { 5288 "node_modules/@webassemblyjs/ast": {
5404 "version": "1.9.0", 5289 "version": "1.9.0",
5405 "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz", 5290 "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz",
@@ -6837,6 +6722,18 @@ @@ -6837,6 +6722,18 @@
6837 "url": "https://github.com/sponsors/wooorm" 6722 "url": "https://github.com/sponsors/wooorm"
6838 } 6723 }
6839 }, 6724 },
  6725 + "node_modules/chart.js": {
  6726 + "version": "4.4.8",
  6727 + "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.8.tgz",
  6728 + "integrity": "sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==",
  6729 + "license": "MIT",
  6730 + "dependencies": {
  6731 + "@kurkle/color": "^0.3.0"
  6732 + },
  6733 + "engines": {
  6734 + "pnpm": ">=8"
  6735 + }
  6736 + },
6840 "node_modules/cheerio": { 6737 "node_modules/cheerio": {
6841 "version": "1.0.0", 6738 "version": "1.0.0",
6842 "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz", 6739 "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz",
@@ -8159,12 +8056,6 @@ @@ -8159,12 +8056,6 @@
8159 "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", 8056 "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
8160 "license": "MIT" 8057 "license": "MIT"
8161 }, 8058 },
8162 - "node_modules/de-indent": {  
8163 - "version": "1.0.2",  
8164 - "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",  
8165 - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",  
8166 - "license": "MIT"  
8167 - },  
8168 "node_modules/debug": { 8059 "node_modules/debug": {
8169 "version": "4.3.4", 8060 "version": "4.3.4",
8170 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 8061 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -8202,6 +8093,15 @@ @@ -8202,6 +8093,15 @@
8202 "url": "https://github.com/sponsors/wooorm" 8093 "url": "https://github.com/sponsors/wooorm"
8203 } 8094 }
8204 }, 8095 },
  8096 + "node_modules/decode-uri-component": {
  8097 + "version": "0.4.1",
  8098 + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz",
  8099 + "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==",
  8100 + "license": "MIT",
  8101 + "engines": {
  8102 + "node": ">=14.16"
  8103 + }
  8104 + },
8205 "node_modules/dedent": { 8105 "node_modules/dedent": {
8206 "version": "1.5.3", 8106 "version": "1.5.3",
8207 "resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz", 8107 "resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz",
@@ -9510,12 +9410,6 @@ @@ -9510,12 +9410,6 @@
9510 "node": ">=4.0" 9410 "node": ">=4.0"
9511 } 9411 }
9512 }, 9412 },
9513 - "node_modules/estree-walker": {  
9514 - "version": "2.0.2",  
9515 - "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",  
9516 - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",  
9517 - "license": "MIT"  
9518 - },  
9519 "node_modules/esutils": { 9413 "node_modules/esutils": {
9520 "version": "2.0.3", 9414 "version": "2.0.3",
9521 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 9415 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@@ -9786,6 +9680,18 @@ @@ -9786,6 +9680,18 @@
9786 "node": ">=8" 9680 "node": ">=8"
9787 } 9681 }
9788 }, 9682 },
  9683 + "node_modules/filter-obj": {
  9684 + "version": "5.1.0",
  9685 + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz",
  9686 + "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==",
  9687 + "license": "MIT",
  9688 + "engines": {
  9689 + "node": ">=14.16"
  9690 + },
  9691 + "funding": {
  9692 + "url": "https://github.com/sponsors/sindresorhus"
  9693 + }
  9694 + },
9789 "node_modules/find-cache-dir": { 9695 "node_modules/find-cache-dir": {
9790 "version": "3.3.2", 9696 "version": "3.3.2",
9791 "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", 9697 "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
@@ -10481,15 +10387,6 @@ @@ -10481,15 +10387,6 @@
10481 "url": "https://opencollective.com/unified" 10387 "url": "https://opencollective.com/unified"
10482 } 10388 }
10483 }, 10389 },
10484 - "node_modules/he": {  
10485 - "version": "1.2.0",  
10486 - "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",  
10487 - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",  
10488 - "license": "MIT",  
10489 - "bin": {  
10490 - "he": "bin/he"  
10491 - }  
10492 - },  
10493 "node_modules/heap": { 10390 "node_modules/heap": {
10494 "version": "0.2.7", 10391 "version": "0.2.7",
10495 "resolved": "https://registry.npmmirror.com/heap/-/heap-0.2.7.tgz", 10392 "resolved": "https://registry.npmmirror.com/heap/-/heap-0.2.7.tgz",
@@ -13785,21 +13682,6 @@ @@ -13785,21 +13682,6 @@
13785 "lz-string": "bin/bin.js" 13682 "lz-string": "bin/bin.js"
13786 } 13683 }
13787 }, 13684 },
13788 - "node_modules/magic-string": {  
13789 - "version": "0.30.17",  
13790 - "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",  
13791 - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",  
13792 - "license": "MIT",  
13793 - "dependencies": {  
13794 - "@jridgewell/sourcemap-codec": "^1.5.0"  
13795 - }  
13796 - },  
13797 - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": {  
13798 - "version": "1.5.0",  
13799 - "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",  
13800 - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",  
13801 - "license": "MIT"  
13802 - },  
13803 "node_modules/make-dir": { 13685 "node_modules/make-dir": {
13804 "version": "4.0.0", 13686 "version": "4.0.0",
13805 "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz", 13687 "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz",
@@ -14865,6 +14747,12 @@ @@ -14865,6 +14747,12 @@
14865 "node": ">=4" 14747 "node": ">=4"
14866 } 14748 }
14867 }, 14749 },
  14750 + "node_modules/mind-elixir": {
  14751 + "version": "4.5.0",
  14752 + "resolved": "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz",
  14753 + "integrity": "sha512-EyodIX7CK1d3Rq0urT91suZwVGHz7XegfcRiEVVFQfc952gW0xTU9Z5gaEQ4Iukwte5Sex6lOKgyxH8iGp/Puw==",
  14754 + "license": "MIT"
  14755 + },
14868 "node_modules/minimalistic-assert": { 14756 "node_modules/minimalistic-assert": {
14869 "version": "1.0.1", 14757 "version": "1.0.1",
14870 "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 14758 "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -14987,6 +14875,16 @@ @@ -14987,6 +14875,16 @@
14987 "node": ">=10" 14875 "node": ">=10"
14988 } 14876 }
14989 }, 14877 },
  14878 + "node_modules/moment": {
  14879 + "version": "2.30.1",
  14880 + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz",
  14881 + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
  14882 + "devOptional": true,
  14883 + "license": "MIT",
  14884 + "engines": {
  14885 + "node": "*"
  14886 + }
  14887 + },
14990 "node_modules/mri": { 14888 "node_modules/mri": {
14991 "version": "1.2.0", 14889 "version": "1.2.0",
14992 "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 14890 "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -15967,6 +15865,23 @@ @@ -15967,6 +15865,23 @@
15967 ], 15865 ],
15968 "license": "MIT" 15866 "license": "MIT"
15969 }, 15867 },
  15868 + "node_modules/query-string": {
  15869 + "version": "9.1.1",
  15870 + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz",
  15871 + "integrity": "sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==",
  15872 + "license": "MIT",
  15873 + "dependencies": {
  15874 + "decode-uri-component": "^0.4.1",
  15875 + "filter-obj": "^5.1.0",
  15876 + "split-on-first": "^3.0.0"
  15877 + },
  15878 + "engines": {
  15879 + "node": ">=18"
  15880 + },
  15881 + "funding": {
  15882 + "url": "https://github.com/sponsors/sindresorhus"
  15883 + }
  15884 + },
15970 "node_modules/querystringify": { 15885 "node_modules/querystringify": {
15971 "version": "2.2.0", 15886 "version": "2.2.0",
15972 "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", 15887 "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
@@ -17658,6 +17573,18 @@ @@ -17658,6 +17573,18 @@
17658 "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", 17573 "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
17659 "dev": true 17574 "dev": true
17660 }, 17575 },
  17576 + "node_modules/split-on-first": {
  17577 + "version": "3.0.0",
  17578 + "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz",
  17579 + "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==",
  17580 + "license": "MIT",
  17581 + "engines": {
  17582 + "node": ">=12"
  17583 + },
  17584 + "funding": {
  17585 + "url": "https://github.com/sponsors/sindresorhus"
  17586 + }
  17587 + },
17661 "node_modules/sprintf-js": { 17588 "node_modules/sprintf-js": {
17662 "version": "1.0.3", 17589 "version": "1.0.3",
17663 "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", 17590 "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -18468,7 +18395,7 @@ @@ -18468,7 +18395,7 @@
18468 "version": "5.2.2", 18395 "version": "5.2.2",
18469 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 18396 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
18470 "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 18397 "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
18471 - "devOptional": true, 18398 + "dev": true,
18472 "license": "Apache-2.0", 18399 "license": "Apache-2.0",
18473 "bin": { 18400 "bin": {
18474 "tsc": "bin/tsc", 18401 "tsc": "bin/tsc",
@@ -18913,27 +18840,6 @@ @@ -18913,27 +18840,6 @@
18913 "url": "https://opencollective.com/unified" 18840 "url": "https://opencollective.com/unified"
18914 } 18841 }
18915 }, 18842 },
18916 - "node_modules/vue": {  
18917 - "version": "3.5.13",  
18918 - "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz",  
18919 - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",  
18920 - "license": "MIT",  
18921 - "dependencies": {  
18922 - "@vue/compiler-dom": "3.5.13",  
18923 - "@vue/compiler-sfc": "3.5.13",  
18924 - "@vue/runtime-dom": "3.5.13",  
18925 - "@vue/server-renderer": "3.5.13",  
18926 - "@vue/shared": "3.5.13"  
18927 - },  
18928 - "peerDependencies": {  
18929 - "typescript": "*"  
18930 - },  
18931 - "peerDependenciesMeta": {  
18932 - "typescript": {  
18933 - "optional": true  
18934 - }  
18935 - }  
18936 - },  
18937 "node_modules/vue-loader": { 18843 "node_modules/vue-loader": {
18938 "version": "17.3.1", 18844 "version": "17.3.1",
18939 "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.3.1.tgz", 18845 "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.3.1.tgz",
@@ -18957,16 +18863,6 @@ @@ -18957,16 +18863,6 @@
18957 } 18863 }
18958 } 18864 }
18959 }, 18865 },
18960 - "node_modules/vue-template-compiler": {  
18961 - "version": "2.7.16",  
18962 - "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",  
18963 - "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",  
18964 - "license": "MIT",  
18965 - "dependencies": {  
18966 - "de-indent": "^1.0.2",  
18967 - "he": "^1.2.0"  
18968 - }  
18969 - },  
18970 "node_modules/w3c-xmlserializer": { 18866 "node_modules/w3c-xmlserializer": {
18971 "version": "4.0.0", 18867 "version": "4.0.0",
18972 "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", 18868 "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
@@ -33,10 +33,12 @@ @@ -33,10 +33,12 @@
33 "@xyflow/react": "^12.4.4", 33 "@xyflow/react": "^12.4.4",
34 "antd": "^5.24.4", 34 "antd": "^5.24.4",
35 "axios": "^1.7.5", 35 "axios": "^1.7.5",
  36 + "chart.js": "^4.4.8",
36 "cheerio": "^1.0.0", 37 "cheerio": "^1.0.0",
37 "clsx": "^2.1.1", 38 "clsx": "^2.1.1",
38 "docx": "^9.3.0", 39 "docx": "^9.3.0",
39 "docxtemplater": "^3.60.1", 40 "docxtemplater": "^3.60.1",
  41 + "echarts": "^5.6.0",
40 "emoji-picker-react": "^4.9.2", 42 "emoji-picker-react": "^4.9.2",
41 "file-saver": "^2.0.5", 43 "file-saver": "^2.0.5",
42 "fuse.js": "^7.0.0", 44 "fuse.js": "^7.0.0",
@@ -56,6 +58,7 @@ @@ -56,6 +58,7 @@
56 "openapi-client-axios": "^7.5.5", 58 "openapi-client-axios": "^7.5.5",
57 "rc-tooltip": "^6.4.0", 59 "rc-tooltip": "^6.4.0",
58 "react": "^18.2.0", 60 "react": "^18.2.0",
  61 + "react-chartjs-2": "^5.3.0",
59 "react-dom": "^18.2.0", 62 "react-dom": "^18.2.0",
60 "react-markdown": "^8.0.7", 63 "react-markdown": "^8.0.7",
61 "react-quill": "^2.0.0", 64 "react-quill": "^2.0.0",
@@ -1373,7 +1373,7 @@ @@ -1373,7 +1373,7 @@
1373 1373
1374 "@docmee/sdk-ui@^1.1.17": 1374 "@docmee/sdk-ui@^1.1.17":
1375 version "1.1.17" 1375 version "1.1.17"
1376 - resolved "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz#549ee8b20dfe07eada422e9943b651d5a5196dd0" 1376 + resolved "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz"
1377 integrity sha512-K/pWu2tg9ZrE9wbI5Naylh+LVd86kwMG7A9pu5urN1XjV+MAHj7ruOMrmqMkGbN5fVfFN8DbxWx4yUMcCMHTxA== 1377 integrity sha512-K/pWu2tg9ZrE9wbI5Naylh+LVd86kwMG7A9pu5urN1XjV+MAHj7ruOMrmqMkGbN5fVfFN8DbxWx4yUMcCMHTxA==
1378 dependencies: 1378 dependencies:
1379 query-string "^9.1.1" 1379 query-string "^9.1.1"
@@ -1841,6 +1841,11 @@ @@ -1841,6 +1841,11 @@
1841 "@jridgewell/resolve-uri" "^3.1.0" 1841 "@jridgewell/resolve-uri" "^3.1.0"
1842 "@jridgewell/sourcemap-codec" "^1.4.14" 1842 "@jridgewell/sourcemap-codec" "^1.4.14"
1843 1843
  1844 +"@kurkle/color@^0.3.0":
  1845 + version "0.3.4"
  1846 + resolved "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz"
  1847 + integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==
  1848 +
1844 "@modelcontextprotocol/sdk@^1.0.4": 1849 "@modelcontextprotocol/sdk@^1.0.4":
1845 version "1.0.4" 1850 version "1.0.4"
1846 resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz" 1851 resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz"
@@ -3502,6 +3507,13 @@ character-entities@^2.0.0: @@ -3502,6 +3507,13 @@ character-entities@^2.0.0:
3502 resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" 3507 resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
3503 integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== 3508 integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
3504 3509
  3510 +chart.js@^4.4.8:
  3511 + version "4.4.8"
  3512 + resolved "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.8.tgz#54645b638e9d585099bc16b892947b5e6cd2a552"
  3513 + integrity sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==
  3514 + dependencies:
  3515 + "@kurkle/color" "^0.3.0"
  3516 +
3505 cheerio-select@^2.1.0: 3517 cheerio-select@^2.1.0:
3506 version "2.1.0" 3518 version "2.1.0"
3507 resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz" 3519 resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz"
@@ -4275,7 +4287,7 @@ decode-named-character-reference@^1.0.0: @@ -4275,7 +4287,7 @@ decode-named-character-reference@^1.0.0:
4275 4287
4276 decode-uri-component@^0.4.1: 4288 decode-uri-component@^0.4.1:
4277 version "0.4.1" 4289 version "0.4.1"
4278 - resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz#2ac4859663c704be22bf7db760a1494a49ab2cc5" 4290 + resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz"
4279 integrity sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ== 4291 integrity sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==
4280 4292
4281 dedent@^1.0.0: 4293 dedent@^1.0.0:
@@ -4524,6 +4536,14 @@ eastasianwidth@^0.2.0: @@ -4524,6 +4536,14 @@ eastasianwidth@^0.2.0:
4524 resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" 4536 resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
4525 integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 4537 integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
4526 4538
  4539 +echarts@^5.6.0:
  4540 + version "5.6.0"
  4541 + resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
  4542 + integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==
  4543 + dependencies:
  4544 + tslib "2.3.0"
  4545 + zrender "5.6.1"
  4546 +
4527 electron-to-chromium@^1.5.73: 4547 electron-to-chromium@^1.5.73:
4528 version "1.5.124" 4548 version "1.5.124"
4529 resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.124.tgz" 4549 resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.124.tgz"
@@ -5150,7 +5170,7 @@ fill-range@^7.0.1: @@ -5150,7 +5170,7 @@ fill-range@^7.0.1:
5150 5170
5151 filter-obj@^5.1.0: 5171 filter-obj@^5.1.0:
5152 version "5.1.0" 5172 version "5.1.0"
5153 - resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz#5bd89676000a713d7db2e197f660274428e524ed" 5173 + resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz"
5154 integrity sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng== 5174 integrity sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==
5155 5175
5156 find-cache-dir@^3.3.1: 5176 find-cache-dir@^3.3.1:
@@ -7506,7 +7526,7 @@ min-indent@^1.0.0: @@ -7506,7 +7526,7 @@ min-indent@^1.0.0:
7506 7526
7507 mind-elixir@^4.5.0: 7527 mind-elixir@^4.5.0:
7508 version "4.5.0" 7528 version "4.5.0"
7509 - resolved "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz#e9cc9dca9e93a22777f5bb83096ba40dd0accd37" 7529 + resolved "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz"
7510 integrity sha512-EyodIX7CK1d3Rq0urT91suZwVGHz7XegfcRiEVVFQfc952gW0xTU9Z5gaEQ4Iukwte5Sex6lOKgyxH8iGp/Puw== 7530 integrity sha512-EyodIX7CK1d3Rq0urT91suZwVGHz7XegfcRiEVVFQfc952gW0xTU9Z5gaEQ4Iukwte5Sex6lOKgyxH8iGp/Puw==
7511 7531
7512 minimalistic-assert@^1.0.1: 7532 minimalistic-assert@^1.0.1:
@@ -8054,7 +8074,7 @@ pure-rand@^6.0.0: @@ -8054,7 +8074,7 @@ pure-rand@^6.0.0:
8054 8074
8055 query-string@^9.1.1: 8075 query-string@^9.1.1:
8056 version "9.1.1" 8076 version "9.1.1"
8057 - resolved "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz#dbfebb4196aeb2919915f2b2b81b91b965cf03a0" 8077 + resolved "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz"
8058 integrity sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg== 8078 integrity sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==
8059 dependencies: 8079 dependencies:
8060 decode-uri-component "^0.4.1" 8080 decode-uri-component "^0.4.1"
@@ -8465,6 +8485,11 @@ rc-virtual-list@^3.14.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: @@ -8465,6 +8485,11 @@ rc-virtual-list@^3.14.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2:
8465 rc-resize-observer "^1.0.0" 8485 rc-resize-observer "^1.0.0"
8466 rc-util "^5.36.0" 8486 rc-util "^5.36.0"
8467 8487
  8488 +react-chartjs-2@^5.3.0:
  8489 + version "5.3.0"
  8490 + resolved "https://registry.npmmirror.com/react-chartjs-2/-/react-chartjs-2-5.3.0.tgz#2d3286339a742bc7f77b5829c33ebab215f714cc"
  8491 + integrity sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==
  8492 +
8468 react-dom@^18.2.0: 8493 react-dom@^18.2.0:
8469 version "18.2.0" 8494 version "18.2.0"
8470 resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" 8495 resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
@@ -9096,7 +9121,7 @@ spawn-command@0.0.2: @@ -9096,7 +9121,7 @@ spawn-command@0.0.2:
9096 9121
9097 split-on-first@^3.0.0: 9122 split-on-first@^3.0.0:
9098 version "3.0.0" 9123 version "3.0.0"
9099 - resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz#f04959c9ea8101b9b0bbf35a61b9ebea784a23e7" 9124 + resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz"
9100 integrity sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA== 9125 integrity sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==
9101 9126
9102 sprintf-js@~1.0.2: 9127 sprintf-js@~1.0.2:
@@ -9527,6 +9552,11 @@ tsconfig-paths@^3.14.1: @@ -9527,6 +9552,11 @@ tsconfig-paths@^3.14.1:
9527 minimist "^1.2.6" 9552 minimist "^1.2.6"
9528 strip-bom "^3.0.0" 9553 strip-bom "^3.0.0"
9529 9554
  9555 +tslib@2.3.0:
  9556 + version "2.3.0"
  9557 + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
  9558 + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
  9559 +
9530 tslib@^1.13.0: 9560 tslib@^1.13.0:
9531 version "1.14.1" 9561 version "1.14.1"
9532 resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz" 9562 resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
@@ -10146,6 +10176,13 @@ zod@^3.23.8, zod@^3.24.1: @@ -10146,6 +10176,13 @@ zod@^3.23.8, zod@^3.24.1:
10146 resolved "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz" 10176 resolved "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz"
10147 integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== 10177 integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==
10148 10178
  10179 +zrender@5.6.1:
  10180 + version "5.6.1"
  10181 + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz#e08d57ecf4acac708c4fcb7481eb201df7f10a6b"
  10182 + integrity sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==
  10183 + dependencies:
  10184 + tslib "2.3.0"
  10185 +
10149 zustand@^4.4.0: 10186 zustand@^4.4.0:
10150 version "4.5.6" 10187 version "4.5.6"
10151 resolved "https://registry.npmmirror.com/zustand/-/zustand-4.5.6.tgz" 10188 resolved "https://registry.npmmirror.com/zustand/-/zustand-4.5.6.tgz"