作者 202304001

提示词修改

import chatStyles from "@/app/components/chat.module.scss";
import homeStyles from "@/app/components/home.module.scss";
import styles from './bgRemoval.module.scss'
import { WindowContent } from "@/app/components/home";
import { useMobileScreen } from "@/app/utils";
... ... @@ -13,123 +12,116 @@ import { getClientConfig } from "@/app/config/client";
import React, { useEffect, useMemo, useRef, useState } from "react";
import { useAppConfig } from "@/app/store";
import { BgSiderBar } from "./bg-siderBar";
import { Button, Flex, Upload, message } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import type { UploadFile } from 'antd';
import { message } from "antd";
import type { UploadFile } from "antd";
import ReturnIcon from "@/app/icons/return.svg";
import MinIcon from "@/app/icons/min.svg";
import MaxIcon from "@/app/icons/max.svg";
import SDIcon from "@/app/icons/sd.svg";
import LoadingIcon from "@/app/icons/loading.svg";
import BotIcon from "@/app/icons/bot.svg";
import CloseIcon from "@/app/icons/close.svg";
import { ChartComponent } from "../chart";
export function BgRemoval() {
const isMobileScreen = useMobileScreen();
const navigate = useNavigate();
const clientConfig = useMemo(() => getClientConfig(), []);
const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
const config = useAppConfig();
const scrollRef = useRef<HTMLDivElement>(null);
const isBgRemoval = location.pathname === Path.BgRemoval;
const isMobileScreen = useMobileScreen();
const navigate = useNavigate();
const clientConfig = useMemo(() => getClientConfig(), []);
const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
const config = useAppConfig();
const scrollRef = useRef<HTMLDivElement>(null);
const isBgRemoval = location.pathname === Path.BgRemoval;
const [isLoading, setIsLoading] = useState(false)
const [fileData, setFileData] = useState<Blob | null>(null); //储存上传图片
const [previewUrl, setPreviewUrl] = useState<string | null>('')
// 关闭图片
const closePic = () => {
setFileData(null);
setPreviewUrl('');
};
const [isLoading, setIsLoading] = useState(false);
const [fileData, setFileData] = useState<Blob | null>(null); //储存上传图片
const [previewUrl, setPreviewUrl] = useState<string | null>("");
// 关闭图片
const closePic = () => {
setFileData(null);
setPreviewUrl("");
};
//上传图片
const onChange = (info: any) => {
if (info.file.status === 'uploading') {
return;
}
if (info.file.status === 'done') {
// 获取上传的文件对象
const file = info.file as UploadFile;
const blob = file.originFileObj as Blob;
setFileData(blob);
} else if (info.file.status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
};
// 修改 useEffect 监听 fileData
useEffect(() => {
if (fileData) {
// 创建 Blob 的临时 URL
const objectUrl = URL.createObjectURL(fileData);
setPreviewUrl(objectUrl);
// 组件卸载时释放内存
return () => URL.revokeObjectURL(objectUrl);
}
}, [fileData]);
//上传图片
const onChange = (info: any) => {
if (info.file.status === "uploading") {
return;
}
if (info.file.status === "done") {
// 获取上传的文件对象
const file = info.file as UploadFile;
const blob = file.originFileObj as Blob;
setFileData(blob);
} else if (info.file.status === "error") {
message.error(`${info.file.name} file upload failed.`);
}
};
// 修改 useEffect 监听 fileData
useEffect(() => {
if (fileData) {
// 创建 Blob 的临时 URL
const objectUrl = URL.createObjectURL(fileData);
setPreviewUrl(objectUrl);
// 组件卸载时释放内存
return () => URL.revokeObjectURL(objectUrl);
}
}, [fileData]);
return (
<>
<BgSiderBar
className={clsx({ [homeStyles["sidebar-show"]]: isBgRemoval })}
fileData={fileData}
setFileData={setFileData}
previewUrl={previewUrl}
setPreviewUrl={setPreviewUrl}
isLoading={isLoading}
setIsLoading={setIsLoading}
/>
<WindowContent>
<div className={chatStyles.chat} key={"1"}>
<div className="window-header" data-tauri-drag-region>
{isMobileScreen && (
<div className="window-actions">
<div className={"window-action-button"}>
<IconButton
icon={<ReturnIcon />}
bordered
title={Locale.Chat.Actions.ChatList}
onClick={() => navigate(Path.BgRemoval)}
/>
</div>
</div>
)}
<div
className={clsx(
"window-header-title",
chatStyles["chat-body-title"],
)}
>
<div className={`window-header-main-title`}>智能抠图</div>
</div>
<div className="window-actions">
{showMaxIcon && (
<div className="window-action-button">
<IconButton
aria={Locale.Chat.Actions.FullScreen}
icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}
bordered
onClick={() => {
config.update(
(config) => (config.tightBorder = !config.tightBorder),
);
}}
/>
</div>
)}
{isMobileScreen && <SDIcon width={50} height={50} />}
</div>
</div>
<div className={chatStyles["chat-body"]} ref={scrollRef}>
<Flex vertical justify='center' align="center" gap="middle" className={styles['panelFlex']}>
return (
<>
<BgSiderBar
className={clsx({ [homeStyles["sidebar-show"]]: isBgRemoval })}
fileData={fileData}
setFileData={setFileData}
previewUrl={previewUrl}
setPreviewUrl={setPreviewUrl}
isLoading={isLoading}
setIsLoading={setIsLoading}
/>
<WindowContent>
<div className={chatStyles.chat} key={"1"}>
<div className="window-header" data-tauri-drag-region>
{isMobileScreen && (
<div className="window-actions">
<div className={"window-action-button"}>
<IconButton
icon={<ReturnIcon />}
bordered
title={Locale.Chat.Actions.ChatList}
onClick={() => navigate(Path.BgRemoval)}
/>
</div>
</div>
)}
<div
className={clsx(
"window-header-title",
chatStyles["chat-body-title"],
)}
>
<div className={`window-header-main-title`}>智能抠图</div>
</div>
<div className="window-actions">
{showMaxIcon && (
<div className="window-action-button">
<IconButton
aria={Locale.Chat.Actions.FullScreen}
icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}
bordered
onClick={() => {
config.update(
(config) => (config.tightBorder = !config.tightBorder),
);
}}
/>
</div>
)}
{isMobileScreen && <SDIcon width={50} height={50} />}
</div>
</div>
<div className={chatStyles["chat-body"]} ref={scrollRef}>
{/* <Flex vertical justify='center' align="center" gap="middle" className={styles['panelFlex']}>
{isLoading ? (
<div className={clsx("no-dark", styles["loading-content"])}>
<BotIcon />
<LoadingIcon />
<LoadingIcon/>
</div>
) : previewUrl ? (
<div className={styles['preview']}>
... ... @@ -151,9 +143,11 @@ export function BgRemoval() {
</Button>
</Upload>
)}
</Flex>
</div>
</div>
</WindowContent>
</>)
}
\ No newline at end of file
</Flex> */}
<ChartComponent />
</div>
</div>
</WindowContent>
</>
);
}
... ...
export function ChartPage() {
return <>zhehzsids</>;
import { Card } from "antd";
import * as echarts from "echarts/core";
import { GridComponent, GridComponentOption } from "echarts/components";
import { BarChart, BarSeriesOption } from "echarts/charts";
import { CanvasRenderer } from "echarts/renderers";
import { useRef, useState } from "react";
const tabList = [
{
key: "bar",
label: "柱状图",
},
{
key: "pie",
label: "饼图",
},
{
key: "line",
label: "折线图",
},
];
echarts.use([GridComponent, BarChart, CanvasRenderer]);
type EChartsOption = echarts.ComposeOption<
GridComponentOption | BarSeriesOption
>;
var option: EChartsOption;
option = {
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
},
series: [
{
data: [120, 200, 150, 80, 70, 110, 130],
type: "bar",
},
],
};
export function ChartComponent() {
const [activeTabKey, setActiveTabKey] = useState<string>("bar");
const line = useRef<HTMLCanvasElement>(null);
const bar = useRef<HTMLCanvasElement>(null);
const pie = useRef<HTMLCanvasElement>(null);
const contentListNoTitle: Record<string, React.ReactNode> = {
bar: <canvas ref={bar}></canvas>,
pie: <canvas ref={pie}></canvas>,
line: <canvas ref={line}></canvas>,
};
// var myChart = echarts.init(bar);
return (
<>
<Card
style={{ width: "100%" }}
tabList={tabList}
activeTabKey={activeTabKey}
onTabChange={setActiveTabKey}
tabProps={{ size: "middle" }}
>
{contentListNoTitle[activeTabKey]}
</Card>
</>
);
}
... ...
... ... @@ -109,10 +109,6 @@ const PowerPoint = dynamic(
loading: () => <Loading noLogo />,
},
);
//以下新增图表 页面 20250331
const ChartPage = dynamic(async () => (await import("./chart")).ChartPage, {
loading: () => <Loading noLogo />,
});
export function useSwitchTheme() {
const config = useAppConfig();
... ... @@ -202,7 +198,6 @@ function Screen() {
const isBgRemoval = location.pathname === Path.BgRemoval;
const isWrting = location.pathname === Path.Writing;
const isPowerpoint = location.pathname === Path.Powerpoint;
const isChart = location.pathname === Path.Chart;
const isMobileScreen = useMobileScreen();
const shouldTightBorder =
... ... @@ -231,8 +226,6 @@ function Screen() {
if (isWrting) return <WritingPage />;
//20250328新增ppt制作页面
if (isPowerpoint) return <PowerPoint />;
//20250331新增图标页面
if (isChart) return <ChartPage />;
return (
<>
... ...
... ... @@ -132,19 +132,6 @@ export function PreCode(props: { children: any }) {
return (
<>
<pre ref={ref}>
<span
className="copy-code-button"
onClick={() => {
if (ref.current) {
copyToClipboard(
ref.current.querySelector("code")?.innerText ?? "",
);
}
}}
></span>
{props.children}
</pre>
{mermaidCode.length > 0 && (
<Mermaid code={mermaidCode} key={mermaidCode} />
)}
... ... @@ -169,6 +156,19 @@ export function PreCode(props: { children: any }) {
/>
</FullScreen>
)}
<pre ref={ref}>
<span
className="copy-code-button"
onClick={() => {
if (ref.current) {
copyToClipboard(
ref.current.querySelector("code")?.innerText ?? "",
);
}
}}
></span>
{props.children}
</pre>
</>
);
}
... ...
... ... @@ -204,6 +204,7 @@ export function MindPage() {
);
if (mindInstance.current) {
mindInstance.current.destroy();
mindInstance.current = null;
}
};
}, []);
... ...
... ... @@ -24,7 +24,7 @@ import ReturnIcon from "@/app/icons/return.svg";
import MinIcon from "@/app/icons/min.svg";
import MaxIcon from "@/app/icons/max.svg";
import SDIcon from "@/app/icons/sd.svg";
import LoadingIcon from "@/app/icons/loading.svg";
import LoadingIcon from "@/app/icons/three-dots.svg";
import BotIcon from "@/app/icons/bot.svg";
import EditIcon from "@/app/icons/rename.svg";
import ReloadIcon from "@/app/icons/reload.svg";
... ...
... ... @@ -57,7 +57,6 @@ export enum Path {
BgRemoval = "/background-removal",
Writing = "/aiWriting",
Powerpoint = "/powerpoint",
Chart = "/chart",
}
export enum ApiPath {
... ...
... ... @@ -884,6 +884,7 @@ const cn = {
generateBg: "生成背景",
promptTitle: "背景提示词",
},
Thinking: "AI思考中",
};
type DeepPartial<T> = T extends object
... ...
... ... @@ -398,4 +398,4 @@ pre {
.copyable {
user-select: text;
}
}
\ No newline at end of file
... ...
import type { writePromptParam } from "@/app/types/prompt";
export function getWrtingPrompt(param: writePromptParam) {
const isImg = `文案要配上图片,实现图文混排,要美观,要符合${param.writingPurposeName}的排版标准和写作风格,写作风格要${param.writingStyleName},
let writingPurposeName;
switch (param.writingPurposeName) {
case "公司官网":
writingPurposeName = "公司官网的介绍";
break;
case "小红书":
writingPurposeName = "小红书的介绍";
break;
case "微信":
writingPurposeName = "微信的介绍";
break;
case "公众号":
writingPurposeName = "公众号的介绍";
break;
case "今日头条":
writingPurposeName = "今日头条的介绍";
break;
}
const isImg = `文案要配上图片,实现图文混排,要美观,要符合${writingPurposeName}的排版标准和写作风格,写作风格要${param.writingStyleName},
你没有图片没关系,把图文混排的效果实现,并在你认为要插入图片的地方将图片的Prompt用英文输出给:![description](https://image.pollinations.ai/prompt/description?nologo=true),记得图片地址后面的?nologo=true一定不能去掉了,
因为这个语法可以自动按照提示生成并渲染图片。你可以帮我大幅提高生成图片质量和丰富程度,比如增加相机光圈、具体场景描述等内容,注意图片一定要用<img,否则在HTML下图片可能显示不了`;
const input = `帮我使用${param.writingLanguageName}写一篇主题是${
param.prompt
}的${param.writingTypeName},${
param.isImgName === "是" ? isImg : ""
},字数要求不少于${
param.writingCount
}字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`;
}的${param.writingTypeName},
${param.isImgName === "是" ? isImg : ""}
,字数要求不少于${
param.writingCount
}字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`;
return input;
}
... ...
... ... @@ -7,6 +7,7 @@
"name": "nextchat",
"license": "mit",
"dependencies": {
"@docmee/sdk-ui": "^1.1.17",
"@fortaine/fetch-event-source": "^3.0.6",
"@hello-pangea/dnd": "^16.5.0",
"@modelcontextprotocol/sdk": "^1.0.4",
... ... @@ -18,6 +19,7 @@
"@xyflow/react": "^12.4.4",
"antd": "^5.24.4",
"axios": "^1.7.5",
"chart.js": "^4.4.8",
"cheerio": "^1.0.0",
"clsx": "^2.1.1",
"docx": "^9.3.0",
... ... @@ -34,6 +36,7 @@
"lucide-react": "^0.484.0",
"markdown-to-txt": "^2.0.1",
"mermaid": "^10.6.1",
"mind-elixir": "^4.5.0",
"nanoid": "^5.0.3",
"next": "^14.1.1",
"node-fetch": "^3.3.1",
... ... @@ -53,8 +56,6 @@
"sass": "^1.59.2",
"spark-md5": "^3.0.2",
"use-debounce": "^9.0.4",
"vue": "^3.5.13",
"vue-template-compiler": "^2.7.16",
"xlsx": "^0.18.5",
"zod": "^3.24.1"
},
... ... @@ -64,6 +65,7 @@
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.1.0",
"@types/chart.js": "^2.9.41",
"@types/file-saver": "^2.0.7",
"@types/html-docx-js": "^0.3.4",
"@types/html-to-draftjs": "^1.5.0",
... ... @@ -947,6 +949,7 @@
"version": "7.25.3",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
"integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.25.2"
... ... @@ -962,6 +965,7 @@
"version": "7.24.8",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
... ... @@ -971,6 +975,7 @@
"version": "7.24.7",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
... ... @@ -980,6 +985,7 @@
"version": "7.25.2",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
"integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.24.8",
... ... @@ -2670,6 +2676,15 @@
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@docmee/sdk-ui": {
"version": "1.1.17",
"resolved": "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz",
"integrity": "sha512-K/pWu2tg9ZrE9wbI5Naylh+LVd86kwMG7A9pu5urN1XjV+MAHj7ruOMrmqMkGbN5fVfFN8DbxWx4yUMcCMHTxA==",
"license": "Apache-2.0",
"dependencies": {
"query-string": "^9.1.1"
}
},
"node_modules/@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz",
... ... @@ -3474,6 +3489,12 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@kurkle/color": {
"version": "0.3.4",
"resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz",
"integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
"license": "MIT"
},
"node_modules/@modelcontextprotocol/sdk": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz",
... ... @@ -4641,6 +4662,16 @@
"@babel/types": "^7.20.7"
}
},
"node_modules/@types/chart.js": {
"version": "2.9.41",
"resolved": "https://registry.npmmirror.com/@types/chart.js/-/chart.js-2.9.41.tgz",
"integrity": "sha512-3dvkDvueckY83UyUXtJMalYoH6faOLkWQoaTlJgB4Djde3oORmNP0Jw85HtzTuXyliUHcdp704s0mZFQKio/KQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"moment": "^2.10.2"
}
},
"node_modules/@types/d3-color": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz",
... ... @@ -5254,152 +5285,6 @@
"hasInstallScript": true,
"license": "Apache-2.0"
},
"node_modules/@vue/compiler-core": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
"integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.25.3",
"@vue/shared": "3.5.13",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
"integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-core": "3.5.13",
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
"integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.25.3",
"@vue/compiler-core": "3.5.13",
"@vue/compiler-dom": "3.5.13",
"@vue/compiler-ssr": "3.5.13",
"@vue/shared": "3.5.13",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.11",
"postcss": "^8.4.48",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-sfc/node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/@vue/compiler-sfc/node_modules/postcss": {
"version": "8.5.3",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",
"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.8",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
"integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.13",
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/reactivity": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz",
"integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
"integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.13",
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
"integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.13",
"@vue/runtime-core": "3.5.13",
"@vue/shared": "3.5.13",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
"integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-ssr": "3.5.13",
"@vue/shared": "3.5.13"
},
"peerDependencies": {
"vue": "3.5.13"
}
},
"node_modules/@vue/shared": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",
"integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
"license": "MIT"
},
"node_modules/@webassemblyjs/ast": {
"version": "1.9.0",
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz",
... ... @@ -6837,6 +6722,18 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/chart.js": {
"version": "4.4.8",
"resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.8.tgz",
"integrity": "sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==",
"license": "MIT",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
"engines": {
"pnpm": ">=8"
}
},
"node_modules/cheerio": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz",
... ... @@ -8159,12 +8056,6 @@
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"license": "MIT"
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
... ... @@ -8202,6 +8093,15 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/decode-uri-component": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz",
"integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==",
"license": "MIT",
"engines": {
"node": ">=14.16"
}
},
"node_modules/dedent": {
"version": "1.5.3",
"resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz",
... ... @@ -9510,12 +9410,6 @@
"node": ">=4.0"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
... ... @@ -9786,6 +9680,18 @@
"node": ">=8"
}
},
"node_modules/filter-obj": {
"version": "5.1.0",
"resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz",
"integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==",
"license": "MIT",
"engines": {
"node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/find-cache-dir": {
"version": "3.3.2",
"resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
... ... @@ -10481,15 +10387,6 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/heap": {
"version": "0.2.7",
"resolved": "https://registry.npmmirror.com/heap/-/heap-0.2.7.tgz",
... ... @@ -13785,21 +13682,6 @@
"lz-string": "bin/bin.js"
}
},
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
"license": "MIT"
},
"node_modules/make-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz",
... ... @@ -14865,6 +14747,12 @@
"node": ">=4"
}
},
"node_modules/mind-elixir": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz",
"integrity": "sha512-EyodIX7CK1d3Rq0urT91suZwVGHz7XegfcRiEVVFQfc952gW0xTU9Z5gaEQ4Iukwte5Sex6lOKgyxH8iGp/Puw==",
"license": "MIT"
},
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
... ... @@ -14987,6 +14875,16 @@
"node": ">=10"
}
},
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"devOptional": true,
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
... ... @@ -15967,6 +15865,23 @@
],
"license": "MIT"
},
"node_modules/query-string": {
"version": "9.1.1",
"resolved": "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz",
"integrity": "sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==",
"license": "MIT",
"dependencies": {
"decode-uri-component": "^0.4.1",
"filter-obj": "^5.1.0",
"split-on-first": "^3.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
... ... @@ -17658,6 +17573,18 @@
"integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
"dev": true
},
"node_modules/split-on-first": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz",
"integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
... ... @@ -18468,7 +18395,7 @@
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
"devOptional": true,
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
... ... @@ -18913,27 +18840,6 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/vue": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz",
"integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.13",
"@vue/compiler-sfc": "3.5.13",
"@vue/runtime-dom": "3.5.13",
"@vue/server-renderer": "3.5.13",
"@vue/shared": "3.5.13"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vue-loader": {
"version": "17.3.1",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.3.1.tgz",
... ... @@ -18957,16 +18863,6 @@
}
}
},
"node_modules/vue-template-compiler": {
"version": "2.7.16",
"resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
"integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"license": "MIT",
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
... ...
... ... @@ -33,10 +33,12 @@
"@xyflow/react": "^12.4.4",
"antd": "^5.24.4",
"axios": "^1.7.5",
"chart.js": "^4.4.8",
"cheerio": "^1.0.0",
"clsx": "^2.1.1",
"docx": "^9.3.0",
"docxtemplater": "^3.60.1",
"echarts": "^5.6.0",
"emoji-picker-react": "^4.9.2",
"file-saver": "^2.0.5",
"fuse.js": "^7.0.0",
... ... @@ -56,6 +58,7 @@
"openapi-client-axios": "^7.5.5",
"rc-tooltip": "^6.4.0",
"react": "^18.2.0",
"react-chartjs-2": "^5.3.0",
"react-dom": "^18.2.0",
"react-markdown": "^8.0.7",
"react-quill": "^2.0.0",
... ...
... ... @@ -1373,7 +1373,7 @@
"@docmee/sdk-ui@^1.1.17":
version "1.1.17"
resolved "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz#549ee8b20dfe07eada422e9943b651d5a5196dd0"
resolved "https://registry.npmmirror.com/@docmee/sdk-ui/-/sdk-ui-1.1.17.tgz"
integrity sha512-K/pWu2tg9ZrE9wbI5Naylh+LVd86kwMG7A9pu5urN1XjV+MAHj7ruOMrmqMkGbN5fVfFN8DbxWx4yUMcCMHTxA==
dependencies:
query-string "^9.1.1"
... ... @@ -1841,6 +1841,11 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@kurkle/color@^0.3.0":
version "0.3.4"
resolved "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz"
integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==
"@modelcontextprotocol/sdk@^1.0.4":
version "1.0.4"
resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz"
... ... @@ -3502,6 +3507,13 @@ character-entities@^2.0.0:
resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
chart.js@^4.4.8:
version "4.4.8"
resolved "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.8.tgz#54645b638e9d585099bc16b892947b5e6cd2a552"
integrity sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==
dependencies:
"@kurkle/color" "^0.3.0"
cheerio-select@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz"
... ... @@ -4275,7 +4287,7 @@ decode-named-character-reference@^1.0.0:
decode-uri-component@^0.4.1:
version "0.4.1"
resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz#2ac4859663c704be22bf7db760a1494a49ab2cc5"
resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz"
integrity sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==
dedent@^1.0.0:
... ... @@ -4524,6 +4536,14 @@ eastasianwidth@^0.2.0:
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
echarts@^5.6.0:
version "5.6.0"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==
dependencies:
tslib "2.3.0"
zrender "5.6.1"
electron-to-chromium@^1.5.73:
version "1.5.124"
resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.124.tgz"
... ... @@ -5150,7 +5170,7 @@ fill-range@^7.0.1:
filter-obj@^5.1.0:
version "5.1.0"
resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz#5bd89676000a713d7db2e197f660274428e524ed"
resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz"
integrity sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==
find-cache-dir@^3.3.1:
... ... @@ -7506,7 +7526,7 @@ min-indent@^1.0.0:
mind-elixir@^4.5.0:
version "4.5.0"
resolved "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz#e9cc9dca9e93a22777f5bb83096ba40dd0accd37"
resolved "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.5.0.tgz"
integrity sha512-EyodIX7CK1d3Rq0urT91suZwVGHz7XegfcRiEVVFQfc952gW0xTU9Z5gaEQ4Iukwte5Sex6lOKgyxH8iGp/Puw==
minimalistic-assert@^1.0.1:
... ... @@ -8054,7 +8074,7 @@ pure-rand@^6.0.0:
query-string@^9.1.1:
version "9.1.1"
resolved "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz#dbfebb4196aeb2919915f2b2b81b91b965cf03a0"
resolved "https://registry.npmmirror.com/query-string/-/query-string-9.1.1.tgz"
integrity sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==
dependencies:
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:
rc-resize-observer "^1.0.0"
rc-util "^5.36.0"
react-chartjs-2@^5.3.0:
version "5.3.0"
resolved "https://registry.npmmirror.com/react-chartjs-2/-/react-chartjs-2-5.3.0.tgz#2d3286339a742bc7f77b5829c33ebab215f714cc"
integrity sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==
react-dom@^18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
... ... @@ -9096,7 +9121,7 @@ spawn-command@0.0.2:
split-on-first@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz#f04959c9ea8101b9b0bbf35a61b9ebea784a23e7"
resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz"
integrity sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==
sprintf-js@~1.0.2:
... ... @@ -9527,6 +9552,11 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6"
strip-bom "^3.0.0"
tslib@2.3.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
tslib@^1.13.0:
version "1.14.1"
resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
... ... @@ -10146,6 +10176,13 @@ zod@^3.23.8, zod@^3.24.1:
resolved "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz"
integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==
zrender@5.6.1:
version "5.6.1"
resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz#e08d57ecf4acac708c4fcb7481eb201df7f10a6b"
integrity sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==
dependencies:
tslib "2.3.0"
zustand@^4.4.0:
version "4.5.6"
resolved "https://registry.npmmirror.com/zustand/-/zustand-4.5.6.tgz"
... ...