作者 202304001

增加思维导图页面

1 import { ControlParamItem } from "../sd"; 1 import { ControlParamItem } from "../sd";
2 import { IconButton } from "../button"; 2 import { IconButton } from "../button";
3 import styles from "./bg-removal-panel.module.scss"; 3 import styles from "./bg-removal-panel.module.scss";
4 -import { useEffect, useState } from "react";  
5 -import { Select } from "@/app/components/ui-lib";  
6 -import { message } from 'antd';  
7 -import type { LocalData, FileProps } from '@/app/types/zuotang';  
8 -import { ApiPath } from '@/app/constant';  
9 -import { useAccessStore } from '@/app/store';  
10 -import Locale from '@/app/locales'; 4 +import { useState } from "react";
  5 +import { message } from "antd";
  6 +import type { LocalData, FileProps } from "@/app/types/zuotang";
  7 +import { ApiPath } from "@/app/constant";
  8 +import { useAccessStore } from "@/app/store";
  9 +import Locale from "@/app/locales";
11 import LoadingIcon from "@/app/icons/three-dots.svg"; 10 import LoadingIcon from "@/app/icons/three-dots.svg";
12 -import WriteIcon from '@/app/icons/write.svg' 11 +import WriteIcon from "@/app/icons/write.svg";
13 import { useChatStore } from "@/app/store"; 12 import { useChatStore } from "@/app/store";
  13 +import { getBgPrompt } from "@/app/utils/prompt";
  14 +
14 // 错误消息映射函数 15 // 错误消息映射函数
15 const getErrorMessage = (state: number): string => { 16 const getErrorMessage = (state: number): string => {
16 - const errorMap: { [key: number]: string } = {  
17 - [-8]: '处理超时,最长处理时间30秒',  
18 - [-7]: '无效图片文件(可能已损坏或格式错误)',  
19 - [-5]: '图片大小超过15MB限制',  
20 - [-3]: '服务器下载图片失败,请检查URL有效性',  
21 - [-2]: '处理结果上传失败',  
22 - [-1]: '任务处理失败'  
23 - };  
24 - return errorMap[state] || `未知错误(状态码:${state})`; 17 + const errorMap: { [key: number]: string } = {
  18 + [-8]: "处理超时,最长处理时间30秒",
  19 + [-7]: "无效图片文件(可能已损坏或格式错误)",
  20 + [-5]: "图片大小超过15MB限制",
  21 + [-3]: "服务器下载图片失败,请检查URL有效性",
  22 + [-2]: "处理结果上传失败",
  23 + [-1]: "任务处理失败",
  24 + };
  25 + return errorMap[state] || `未知错误(状态码:${state})`;
25 }; 26 };
26 27
27 // 图片URL转Blob方法 28 // 图片URL转Blob方法
28 const urlToBlob = async (url: string): Promise<Blob> => { 29 const urlToBlob = async (url: string): Promise<Blob> => {
29 - const response = await fetch(url);  
30 - if (!response.ok) throw new Error(Locale.BgRemoval.error.imgLoadingErr);  
31 - return await response.blob(); 30 + const response = await fetch(url);
  31 + if (!response.ok) throw new Error(Locale.BgRemoval.error.imgLoadingErr);
  32 + return await response.blob();
32 }; 33 };
33 34
34 // 通用轮询函数 35 // 通用轮询函数
35 const useTaskPoller = () => { 36 const useTaskPoller = () => {
36 - const pollTask = async (  
37 - taskId: string,  
38 - endpoint: string,  
39 - onSuccess: (data: any) => void,  
40 - onError: (message: string) => void  
41 - ) => {  
42 - const pollInterval = 1000;  
43 - const maxAttempts = 60;  
44 - let attempts = 0;  
45 - const intervalId = setInterval(async () => {  
46 - try {  
47 - attempts++;  
48 - if (attempts > maxAttempts) {  
49 - clearInterval(intervalId);  
50 - onError(Locale.BgRemoval.error.timeoutErr);  
51 - return;  
52 - }  
53 - const result = await fetch(`${ApiPath.ZuoTang}/${endpoint}/${taskId}`);  
54 - if (!result.ok) {  
55 - const errorData = await result.json();  
56 - throw new Error(errorData.message || Locale.BgRemoval.error.statuErr);  
57 - }  
58 - const taskResult = await result.json();  
59 - // 根据 state 字段处理状态  
60 - switch (taskResult.data?.state) {  
61 - case 1: // 任务成功  
62 - clearInterval(intervalId);  
63 - onSuccess(taskResult.data);  
64 - break;  
65 - case 0: // 队列中  
66 - case 2: // 准备中  
67 - case 3: // 等待中  
68 - case 4: // 处理中  
69 - // 保持轮询不做操作  
70 - break;  
71 - default: // 处理错误状态  
72 - clearInterval(intervalId);  
73 - if (taskResult.data?.state < 0) { // 所有负数状态均为错误  
74 - onError(getErrorMessage(taskResult.data.state));  
75 - } else {  
76 - onError('未知任务状态');  
77 - }  
78 - }  
79 - } catch (error) {  
80 - clearInterval(intervalId);  
81 - onError(error instanceof Error ? error.message : Locale.BgRemoval.error.reqErr); 37 + const pollTask = async (
  38 + taskId: string,
  39 + endpoint: string,
  40 + onSuccess: (data: any) => void,
  41 + onError: (message: string) => void,
  42 + ) => {
  43 + const pollInterval = 1000;
  44 + const maxAttempts = 60;
  45 + let attempts = 0;
  46 + const intervalId = setInterval(async () => {
  47 + try {
  48 + attempts++;
  49 + if (attempts > maxAttempts) {
  50 + clearInterval(intervalId);
  51 + onError(Locale.BgRemoval.error.timeoutErr);
  52 + return;
  53 + }
  54 + const result = await fetch(`${ApiPath.ZuoTang}/${endpoint}/${taskId}`);
  55 + if (!result.ok) {
  56 + const errorData = await result.json();
  57 + throw new Error(errorData.message || Locale.BgRemoval.error.statuErr);
  58 + }
  59 + const taskResult = await result.json();
  60 + // 根据 state 字段处理状态
  61 + switch (taskResult.data?.state) {
  62 + case 1: // 任务成功
  63 + clearInterval(intervalId);
  64 + onSuccess(taskResult.data);
  65 + break;
  66 + case 0: // 队列中
  67 + case 2: // 准备中
  68 + case 3: // 等待中
  69 + case 4: // 处理中
  70 + // 保持轮询不做操作
  71 + break;
  72 + default: // 处理错误状态
  73 + clearInterval(intervalId);
  74 + if (taskResult.data?.state < 0) {
  75 + // 所有负数状态均为错误
  76 + onError(getErrorMessage(taskResult.data.state));
  77 + } else {
  78 + onError("未知任务状态");
82 } 79 }
83 - }, pollInterval); 80 + }
  81 + } catch (error) {
  82 + clearInterval(intervalId);
  83 + onError(
  84 + error instanceof Error
  85 + ? error.message
  86 + : Locale.BgRemoval.error.reqErr,
  87 + );
  88 + }
  89 + }, pollInterval);
84 90
85 - return () => clearInterval(intervalId);  
86 - }; 91 + return () => clearInterval(intervalId);
  92 + };
87 93
88 - return { pollTask }; 94 + return { pollTask };
89 }; 95 };
90 96
91 // 日期处理工具 97 // 日期处理工具
92 const useDateUtils = () => { 98 const useDateUtils = () => {
93 - const getFormattedToday = (): string => {  
94 - const today = new Date();  
95 - return today.toISOString().split('T')[0].replace(/-/g, '');  
96 - }; 99 + const getFormattedToday = (): string => {
  100 + const today = new Date();
  101 + return today.toISOString().split("T")[0].replace(/-/g, "");
  102 + };
97 103
98 - const isToday = (dateStr: string): boolean => {  
99 - return dateStr === getFormattedToday();  
100 - }; 104 + const isToday = (dateStr: string): boolean => {
  105 + return dateStr === getFormattedToday();
  106 + };
101 107
102 - return { getFormattedToday, isToday }; 108 + return { getFormattedToday, isToday };
103 }; 109 };
104 110
105 // 本地存储管理 111 // 本地存储管理
106 const useLocalStorage = () => { 112 const useLocalStorage = () => {
107 - const { getFormattedToday, isToday } = useDateUtils(); 113 + const { getFormattedToday, isToday } = useDateUtils();
108 114
109 - const getLocalData = (accessCode: string): LocalData => {  
110 - try {  
111 - const data = localStorage.getItem(accessCode);  
112 - if (!data) return defaultLocalData(); 115 + const getLocalData = (accessCode: string): LocalData => {
  116 + try {
  117 + const data = localStorage.getItem(accessCode);
  118 + if (!data) return defaultLocalData();
113 119
114 - const parsed = JSON.parse(data);  
115 - if (!isToday(parsed.date)) return defaultLocalData(); 120 + const parsed = JSON.parse(data);
  121 + if (!isToday(parsed.date)) return defaultLocalData();
116 122
117 - return {  
118 - date: parsed.date || getFormattedToday(),  
119 - maxDailyUses: parsed.maxDailyUses || 'first'  
120 - };  
121 - } catch (e) {  
122 - return defaultLocalData();  
123 - }  
124 - }; 123 + return {
  124 + date: parsed.date || getFormattedToday(),
  125 + maxDailyUses: parsed.maxDailyUses || "first",
  126 + };
  127 + } catch (e) {
  128 + return defaultLocalData();
  129 + }
  130 + };
125 131
126 - const updateLocalUsage = (accessCode: string, maxDailyUses: number) => {  
127 - const saveData: LocalData = {  
128 - date: getFormattedToday(),  
129 - maxDailyUses: maxDailyUses.toString()  
130 - };  
131 - localStorage.setItem(accessCode, JSON.stringify(saveData)); 132 + const updateLocalUsage = (accessCode: string, maxDailyUses: number) => {
  133 + const saveData: LocalData = {
  134 + date: getFormattedToday(),
  135 + maxDailyUses: maxDailyUses.toString(),
132 }; 136 };
  137 + localStorage.setItem(accessCode, JSON.stringify(saveData));
  138 + };
133 139
134 - const defaultLocalData = (): LocalData => ({  
135 - date: getFormattedToday(),  
136 - maxDailyUses: 'first'  
137 - }); 140 + const defaultLocalData = (): LocalData => ({
  141 + date: getFormattedToday(),
  142 + maxDailyUses: "first",
  143 + });
138 144
139 - return { getLocalData, updateLocalUsage }; 145 + return { getLocalData, updateLocalUsage };
140 }; 146 };
141 147
142 -  
143 // 定义组件的 props 类型 148 // 定义组件的 props 类型
144 interface PromptListProps { 149 interface PromptListProps {
145 - promptList: string[];  
146 - setPromptList: React.Dispatch<React.SetStateAction<string[]>>;  
147 - setPrompt: React.Dispatch<React.SetStateAction<string>>; 150 + promptList: string[];
  151 + setPromptList: React.Dispatch<React.SetStateAction<string[]>>;
  152 + setPrompt: React.Dispatch<React.SetStateAction<string>>;
148 } 153 }
149 const PromptListComponent: React.FC<PromptListProps> = ({ 154 const PromptListComponent: React.FC<PromptListProps> = ({
150 - promptList,  
151 - setPromptList,  
152 - setPrompt, 155 + promptList,
  156 + setPromptList,
  157 + setPrompt,
153 }) => { 158 }) => {
154 - // 删除处理函数  
155 - const handleDelete = (index: number, e: React.MouseEvent) => {  
156 - e.stopPropagation(); // 阻止冒泡  
157 - setPromptList(prev => prev.filter((_, i) => i !== index));  
158 - }; 159 + // 删除处理函数
  160 + const handleDelete = (index: number, e: React.MouseEvent) => {
  161 + e.stopPropagation(); // 阻止冒泡
  162 + setPromptList((prev) => prev.filter((_, i) => i !== index));
  163 + };
159 164
160 - // 响应式样式配置  
161 - const containerStyle: React.CSSProperties = {  
162 - maxWidth: '90%',  
163 - margin: '0 auto',  
164 - padding: '0.6rem',  
165 - }; 165 + // 响应式样式配置
  166 + const containerStyle: React.CSSProperties = {
  167 + maxWidth: "90%",
  168 + margin: "0 auto",
  169 + padding: "0.6rem",
  170 + };
166 171
167 - const itemStyle: React.CSSProperties = {  
168 - position: 'relative',  
169 - backgroundColor: '#f8f9fa',  
170 - padding: '0.5rem',  
171 - margin: '0.5rem 0',  
172 - borderRadius: '12px',  
173 - cursor: 'pointer',  
174 - boxShadow: '0 2px 8px rgba(0,0,0,0.1)',  
175 - transition: 'all 0.3s ease',  
176 - }; 172 + const itemStyle: React.CSSProperties = {
  173 + position: "relative",
  174 + backgroundColor: "#f8f9fa",
  175 + padding: "0.5rem",
  176 + margin: "0.5rem 0",
  177 + borderRadius: "12px",
  178 + cursor: "pointer",
  179 + boxShadow: "0 2px 8px rgba(0,0,0,0.1)",
  180 + transition: "all 0.3s ease",
  181 + };
177 182
178 - const deleteButtonStyle: React.CSSProperties = {  
179 - position: 'absolute',  
180 - top: '0.2rem',  
181 - right: '0.5rem',  
182 - width: '15px',  
183 - height: '15px',  
184 - borderRadius: '50%',  
185 - backgroundColor: '#ff4444',  
186 - color: 'white',  
187 - display: 'flex',  
188 - alignItems: 'center',  
189 - justifyContent: 'center',  
190 - cursor: 'pointer',  
191 - transition: 'all 0.2s ease',  
192 - visibility: 'hidden', // 默认隐藏  
193 - }; 183 + const deleteButtonStyle: React.CSSProperties = {
  184 + position: "absolute",
  185 + top: "0.2rem",
  186 + right: "0.5rem",
  187 + width: "15px",
  188 + height: "15px",
  189 + borderRadius: "50%",
  190 + backgroundColor: "#ff4444",
  191 + color: "white",
  192 + display: "flex",
  193 + alignItems: "center",
  194 + justifyContent: "center",
  195 + cursor: "pointer",
  196 + transition: "all 0.2s ease",
  197 + visibility: "hidden", // 默认隐藏
  198 + };
194 199
195 - return (  
196 - <div style={containerStyle}>  
197 - {promptList.map((item, index) => (  
198 - <div  
199 - key={index}  
200 - style={itemStyle}  
201 - onMouseEnter={(e) => {  
202 - const currentTarget = e.currentTarget as HTMLElement;  
203 - currentTarget.style.transform = 'translateY(-3px)';  
204 - currentTarget.style.boxShadow = '0 4px 12px rgba(0,0,0,0.15)';  
205 - // 显示删除按钮  
206 - const button = currentTarget.querySelector('.delete-btn');  
207 - if (button) {  
208 - (button as HTMLElement).style.visibility = 'visible';  
209 - }  
210 - }}  
211 - onMouseLeave={(e) => {  
212 - const currentTarget = e.currentTarget as HTMLElement;  
213 - currentTarget.style.transform = 'translateY(0)';  
214 - currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.1)';  
215 - // 隐藏删除按钮  
216 - const button = currentTarget.querySelector('.delete-btn');  
217 - if (button) {  
218 - (button as HTMLElement).style.visibility = 'hidden';  
219 - }  
220 - }}  
221 - onClick={() => setPrompt(item)}  
222 - >  
223 - {/* 删除按钮 */}  
224 - <div  
225 - className="delete-btn"  
226 - style={deleteButtonStyle}  
227 - onClick={(e) => handleDelete(index, e)}  
228 - onMouseEnter={(e) => {  
229 - e.currentTarget.style.backgroundColor = '#cc0000';  
230 - e.currentTarget.style.transform = 'scale(1.1)';  
231 - }}  
232 - onMouseLeave={(e) => {  
233 - e.currentTarget.style.backgroundColor = '#ff4444';  
234 - e.currentTarget.style.transform = 'scale(1)';  
235 - }}  
236 - >  
237 - ×  
238 - </div> 200 + return (
  201 + <div style={containerStyle}>
  202 + {promptList.map((item, index) => (
  203 + <div
  204 + key={index}
  205 + style={itemStyle}
  206 + onMouseEnter={(e) => {
  207 + const currentTarget = e.currentTarget as HTMLElement;
  208 + currentTarget.style.transform = "translateY(-3px)";
  209 + currentTarget.style.boxShadow = "0 4px 12px rgba(0,0,0,0.15)";
  210 + // 显示删除按钮
  211 + const button = currentTarget.querySelector(".delete-btn");
  212 + if (button) {
  213 + (button as HTMLElement).style.visibility = "visible";
  214 + }
  215 + }}
  216 + onMouseLeave={(e) => {
  217 + const currentTarget = e.currentTarget as HTMLElement;
  218 + currentTarget.style.transform = "translateY(0)";
  219 + currentTarget.style.boxShadow = "0 2px 8px rgba(0,0,0,0.1)";
  220 + // 隐藏删除按钮
  221 + const button = currentTarget.querySelector(".delete-btn");
  222 + if (button) {
  223 + (button as HTMLElement).style.visibility = "hidden";
  224 + }
  225 + }}
  226 + onClick={() => setPrompt(item)}
  227 + >
  228 + {/* 删除按钮 */}
  229 + <div
  230 + className="delete-btn"
  231 + style={deleteButtonStyle}
  232 + onClick={(e) => handleDelete(index, e)}
  233 + onMouseEnter={(e) => {
  234 + e.currentTarget.style.backgroundColor = "#cc0000";
  235 + e.currentTarget.style.transform = "scale(1.1)";
  236 + }}
  237 + onMouseLeave={(e) => {
  238 + e.currentTarget.style.backgroundColor = "#ff4444";
  239 + e.currentTarget.style.transform = "scale(1)";
  240 + }}
  241 + >
  242 + ×
  243 + </div>
239 244
240 - {/* 内容区域 */}  
241 - <div style={{  
242 - fontSize: 'clamp(12px, 2vw, 14px)',  
243 - color: '#343a40',  
244 - lineHeight: 1.6,  
245 - paddingRight: '2rem', // 为删除按钮留出空间  
246 - }}>  
247 - {item}  
248 - </div>  
249 - </div>  
250 - ))} 245 + {/* 内容区域 */}
  246 + <div
  247 + style={{
  248 + fontSize: "clamp(12px, 2vw, 14px)",
  249 + color: "#343a40",
  250 + lineHeight: 1.6,
  251 + paddingRight: "2rem", // 为删除按钮留出空间
  252 + }}
  253 + >
  254 + {item}
  255 + </div>
251 </div> 256 </div>
252 - ); 257 + ))}
  258 + </div>
  259 + );
253 }; 260 };
254 261
255 -  
256 export function BgPanel(props: FileProps) { 262 export function BgPanel(props: FileProps) {
257 - const [prompt, setPrompt] = useState('') //背景提示词  
258 - const [promptList, setPromptList] = useState<string[]>([]) //背景提示词优化列表  
259 - const [isGenerate, setIsGenerate] = useState(false)  
260 - const [sceneTypeList, setSceneTypeList] = useState([])  
261 - const chatStore = useChatStore();  
262 - const [loading, setLoading] = useState(false) //是否优化文案  
263 - const { previewUrl, setPreviewUrl, fileData, setFileData, isLoading, setIsLoading } = props;  
264 - const accessStore = useAccessStore();  
265 - const { pollTask } = useTaskPoller();  
266 - const { updateLocalUsage, getLocalData } = useLocalStorage(); 263 + const [prompt, setPrompt] = useState(""); //背景提示词
  264 + const [promptList, setPromptList] = useState<string[]>([]); //背景提示词优化列表
  265 + const [isGenerate, setIsGenerate] = useState(false);
  266 + const [sceneTypeList, setSceneTypeList] = useState([]);
  267 + const chatStore = useChatStore();
  268 + const [loading, setLoading] = useState(false); //是否优化文案
  269 + const {
  270 + previewUrl,
  271 + setPreviewUrl,
  272 + fileData,
  273 + setFileData,
  274 + isLoading,
  275 + setIsLoading,
  276 + } = props;
  277 + const accessStore = useAccessStore();
  278 + const { pollTask } = useTaskPoller();
  279 + const { updateLocalUsage, getLocalData } = useLocalStorage();
267 280
268 -  
269 - const handleApiRequest = async (endpoint: string) => {  
270 - if (!previewUrl) {  
271 - message.error(Locale.BgRemoval.error.selectImg);  
272 - throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.selectImg}`);  
273 - }  
274 - if (!accessStore.accessCode) {  
275 - message.error(Locale.BgRemoval.error.code);  
276 - throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.code}`);  
277 - }  
278 - if (endpoint === 'visual/r-background' && !prompt.trim()) {  
279 - message.error(Locale.BgRemoval.error.prompt);  
280 - setIsLoading(false);  
281 - throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.prompt}`); 281 + const handleApiRequest = async (endpoint: string) => {
  282 + if (!previewUrl) {
  283 + message.error(Locale.BgRemoval.error.selectImg);
  284 + throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.selectImg}`);
  285 + }
  286 + if (!accessStore.accessCode) {
  287 + message.error(Locale.BgRemoval.error.code);
  288 + throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.code}`);
  289 + }
  290 + if (endpoint === "visual/r-background" && !prompt.trim()) {
  291 + message.error(Locale.BgRemoval.error.prompt);
  292 + setIsLoading(false);
  293 + throw new Error(`VALIDATION_ERROR: ${Locale.BgRemoval.error.prompt}`);
  294 + }
  295 + try {
  296 + const formData = new FormData();
  297 + const localData = getLocalData(accessStore.accessCode); // 获取本地数据
  298 + formData.append("accessCode", accessStore.accessCode);
  299 + formData.append("localData", JSON.stringify(localData)); // 序列化后添加
  300 + formData.append("image_file", fileData as Blob);
  301 + if (endpoint === "visual/r-background") {
  302 + formData.append("prompt", prompt);
  303 + } //生成背景添加提示词
  304 + const res = await fetch(`${ApiPath.ZuoTang}/${endpoint}`, {
  305 + method: "POST",
  306 + body: formData,
  307 + });
  308 + if (!res.ok) {
  309 + const errorData = await res.json();
  310 + throw new Error(errorData.message || Locale.BgRemoval.error.reqErr);
  311 + }
  312 + const responseData = await res.json();
  313 + if (responseData.status >= 400) {
  314 + if (responseData.status === 429) {
  315 + updateLocalUsage(accessStore.accessCode, 0);
282 } 316 }
283 - try {  
284 - const formData = new FormData();  
285 - const localData = getLocalData(accessStore.accessCode); // 获取本地数据  
286 - formData.append("accessCode", accessStore.accessCode);  
287 - formData.append("localData", JSON.stringify(localData)); // 序列化后添加  
288 - formData.append("image_file", fileData as Blob);  
289 - if (endpoint === 'visual/r-background') { formData.append("prompt", prompt) } //生成背景添加提示词  
290 - const res = await fetch(`${ApiPath.ZuoTang}/${endpoint}`, {  
291 - method: 'POST',  
292 - body: formData  
293 - });  
294 - if (!res.ok) {  
295 - const errorData = await res.json();  
296 - throw new Error(errorData.message || Locale.BgRemoval.error.reqErr);  
297 - }  
298 - const responseData = await res.json();  
299 - if (responseData.status >= 400) {  
300 - if (responseData.status === 429) {  
301 - updateLocalUsage(accessStore.accessCode, 0);  
302 - }  
303 - throw new Error(responseData.message);  
304 - }  
305 - return responseData;  
306 - } finally {}  
307 - };  
308 - 317 + throw new Error(responseData.message);
  318 + }
  319 + return responseData;
  320 + } finally {
  321 + }
  322 + };
309 323
310 - const handleProcessImage = async (endpoint: string) => {  
311 - setIsLoading(true);  
312 - try {  
313 - const responseData = await handleApiRequest(endpoint);  
314 - updateLocalUsage(accessStore.accessCode, responseData.maxDailyUses); 324 + const handleProcessImage = async (endpoint: string) => {
  325 + setIsLoading(true);
  326 + try {
  327 + const responseData = await handleApiRequest(endpoint);
  328 + updateLocalUsage(accessStore.accessCode, responseData.maxDailyUses);
315 329
316 - pollTask(  
317 - responseData.data.task_id,  
318 - endpoint,  
319 - async (data) => {  
320 - try {  
321 - // 获取新图片的Blob  
322 - const newBlob = await urlToBlob(data.image || data.image_1);  
323 - // 创建新的对象URL  
324 - const newUrl = URL.createObjectURL(newBlob);  
325 - // 同步更新所有相关状态  
326 - setPreviewUrl(newUrl);  
327 - setFileData(newBlob);  
328 - message.success(Locale.BgRemoval.success);  
329 - } catch (error) {  
330 - message.error(Locale.BgRemoval.error.resultErr);  
331 - } finally {  
332 - setIsLoading(false);  
333 - }  
334 - },  
335 - (errorMsg) => {  
336 - message.error(errorMsg);  
337 - setIsLoading(false);  
338 - }  
339 - );  
340 - } catch (error) {  
341 - const errorMessage = error instanceof Error ? error.message : '';  
342 - if (!errorMessage.startsWith('VALIDATION_ERROR:')) {  
343 - message.error(Locale.BgRemoval.error.reqErr);  
344 - } 330 + pollTask(
  331 + responseData.data.task_id,
  332 + endpoint,
  333 + async (data) => {
  334 + try {
  335 + // 获取新图片的Blob
  336 + const newBlob = await urlToBlob(data.image || data.image_1);
  337 + // 创建新的对象URL
  338 + const newUrl = URL.createObjectURL(newBlob);
  339 + // 同步更新所有相关状态
  340 + setPreviewUrl(newUrl);
  341 + setFileData(newBlob);
  342 + message.success(Locale.BgRemoval.success);
  343 + } catch (error) {
  344 + message.error(Locale.BgRemoval.error.resultErr);
  345 + } finally {
345 setIsLoading(false); 346 setIsLoading(false);
346 - }  
347 - }; 347 + }
  348 + },
  349 + (errorMsg) => {
  350 + message.error(errorMsg);
  351 + setIsLoading(false);
  352 + },
  353 + );
  354 + } catch (error) {
  355 + const errorMessage = error instanceof Error ? error.message : "";
  356 + if (!errorMessage.startsWith("VALIDATION_ERROR:")) {
  357 + message.error(Locale.BgRemoval.error.reqErr);
  358 + }
  359 + setIsLoading(false);
  360 + }
  361 + };
348 362
349 - const handleDownload = () => {  
350 - if (!previewUrl) return message.error(Locale.BgRemoval.error.downLoadErr);  
351 - const link = document.createElement('a');  
352 - link.href = previewUrl;  
353 - link.download = `processed-${Date.now()}.png`;  
354 - document.body.appendChild(link);  
355 - link.click();  
356 - document.body.removeChild(link);  
357 - }; 363 + const handleDownload = () => {
  364 + if (!previewUrl) return message.error(Locale.BgRemoval.error.downLoadErr);
  365 + const link = document.createElement("a");
  366 + link.href = previewUrl;
  367 + link.download = `processed-${Date.now()}.png`;
  368 + document.body.appendChild(link);
  369 + link.click();
  370 + document.body.removeChild(link);
  371 + };
358 372
359 - const optimizePrompt = async () => {  
360 - try {  
361 - if (!prompt.trim()) {  
362 - return message.error(Locale.BgRemoval.error.prompt);  
363 - }  
364 - const input = `你现扮演生成创意思图片的提示词工程师,参考我的描述“${prompt}”帮我做优化润色5组,返回的数据用''分割,直接输出结果,不要做解释`  
365 - setLoading(true)  
366 - const response = await chatStore.directLlmInvoke(input,'gpt-4o-mini');  
367 - const items = response.split("'").filter(item => item.trim() !== '');  
368 - setPromptList(items);  
369 - } catch (error) {  
370 - message.error("优化失败,请重试")  
371 - } finally {  
372 - setLoading(false)  
373 - } 373 + const optimizePrompt = async () => {
  374 + try {
  375 + if (!prompt.trim()) {
  376 + return message.error(Locale.BgRemoval.error.prompt);
  377 + }
  378 + const input = getBgPrompt(prompt);
  379 + setLoading(true);
  380 + const response = await chatStore.directLlmInvoke(input, "gpt-4o-mini");
  381 + const items = response.split("'").filter((item) => item.trim() !== "");
  382 + setPromptList(items);
  383 + } catch (error) {
  384 + message.error("优化失败,请重试");
  385 + } finally {
  386 + setLoading(false);
374 } 387 }
375 - return (  
376 - <>  
377 - <ControlParamItem title={Locale.BgRemoval.subTitle}>  
378 - <div className={styles["ai-models"]}>  
379 - <IconButton  
380 - text={Locale.BgRemoval.bgRemoveBtn}  
381 - type="primary"  
382 - shadow  
383 - onClick={() => handleProcessImage('visual/segmentation')}  
384 - disabled={isLoading}  
385 - />  
386 - <IconButton  
387 - text={Locale.BgRemoval.downloadImg}  
388 - type="primary"  
389 - shadow  
390 - onClick={handleDownload}  
391 - disabled={!previewUrl}  
392 - />  
393 - <IconButton  
394 - text={Locale.BgRemoval.generateBg}  
395 - type="primary"  
396 - shadow  
397 - onClick={() => handleProcessImage('visual/r-background')}  
398 - disabled={isLoading}  
399 - />  
400 - </div>  
401 - </ControlParamItem>  
402 - <ControlParamItem  
403 - title={Locale.BgRemoval.promptTitle}  
404 - required={true}  
405 - >  
406 - <div className={styles["prompt"]}>  
407 - <textarea  
408 - rows={3}  
409 - className={styles["tx"]}  
410 - placeholder={Locale.BgRemoval.error.prompt}  
411 - onChange={(e) => { setPrompt(e.target.value) }}  
412 - value={prompt}  
413 - ></textarea>  
414 - <div className={styles["ai-prompt"]} onClick={optimizePrompt}>  
415 - <WriteIcon />  
416 - AI优化文案  
417 - </div>  
418 - </div>  
419 - {loading ?  
420 - (<div className={styles["loading-content"]}>  
421 - <LoadingIcon />  
422 - </div>)  
423 - : (<PromptListComponent promptList={promptList} setPromptList={setPromptList} setPrompt={setPrompt} />)}  
424 -  
425 - </ControlParamItem>  
426 - </>  
427 - )  
428 -}  
  388 + };
  389 + return (
  390 + <>
  391 + <ControlParamItem title={Locale.BgRemoval.subTitle}>
  392 + <div className={styles["ai-models"]}>
  393 + <IconButton
  394 + text={Locale.BgRemoval.bgRemoveBtn}
  395 + type="primary"
  396 + shadow
  397 + onClick={() => handleProcessImage("visual/segmentation")}
  398 + disabled={isLoading}
  399 + />
  400 + <IconButton
  401 + text={Locale.BgRemoval.downloadImg}
  402 + type="primary"
  403 + shadow
  404 + onClick={handleDownload}
  405 + disabled={!previewUrl}
  406 + />
  407 + <IconButton
  408 + text={Locale.BgRemoval.generateBg}
  409 + type="primary"
  410 + shadow
  411 + onClick={() => handleProcessImage("visual/r-background")}
  412 + disabled={isLoading}
  413 + />
  414 + </div>
  415 + </ControlParamItem>
  416 + <ControlParamItem title={Locale.BgRemoval.promptTitle} required={true}>
  417 + <div className={styles["prompt"]}>
  418 + <textarea
  419 + rows={3}
  420 + className={styles["tx"]}
  421 + placeholder={Locale.BgRemoval.error.prompt}
  422 + onChange={(e) => {
  423 + setPrompt(e.target.value);
  424 + }}
  425 + value={prompt}
  426 + ></textarea>
  427 + <div
  428 + className={styles["ai-prompt"]}
  429 + onClick={(e) => {
  430 + if (loading) {
  431 + e.stopPropagation();
  432 + return;
  433 + }
  434 + optimizePrompt();
  435 + }}
  436 + >
  437 + <WriteIcon />
  438 + AI优化文案
  439 + </div>
  440 + </div>
  441 + {loading ? (
  442 + <div className={styles["loading-content"]}>
  443 + <LoadingIcon />
  444 + </div>
  445 + ) : (
  446 + <PromptListComponent
  447 + promptList={promptList}
  448 + setPromptList={setPromptList}
  449 + setPrompt={setPrompt}
  450 + />
  451 + )}
  452 + </ControlParamItem>
  453 + </>
  454 + );
  455 +}
@@ -32,9 +32,9 @@ import clsx from "clsx"; @@ -32,9 +32,9 @@ import clsx from "clsx";
32 import { initializeMcpSystem, isMcpEnabled } from "../mcp/actions"; 32 import { initializeMcpSystem, isMcpEnabled } from "../mcp/actions";
33 33
34 /** 34 /**
35 - * 35 + *
36 * @param props 可选参数,用于控制是否显示机器人图标 36 * @param props 可选参数,用于控制是否显示机器人图标
37 - * @returns 37 + * @returns
38 */ 38 */
39 export function Loading(props: { noLogo?: boolean }) { 39 export function Loading(props: { noLogo?: boolean }) {
40 return ( 40 return (
@@ -45,7 +45,6 @@ export function Loading(props: { noLogo?: boolean }) { @@ -45,7 +45,6 @@ export function Loading(props: { noLogo?: boolean }) {
45 ); 45 );
46 } 46 }
47 47
48 -  
49 const Artifacts = dynamic(async () => (await import("./artifacts")).Artifacts, { 48 const Artifacts = dynamic(async () => (await import("./artifacts")).Artifacts, {
50 loading: () => <Loading noLogo />, 49 loading: () => <Loading noLogo />,
51 }); 50 });
@@ -88,19 +87,13 @@ const McpMarketPage = dynamic( @@ -88,19 +87,13 @@ const McpMarketPage = dynamic(
88 }, 87 },
89 ); 88 );
90 //以下新增思维导图路由,抠图路由 20250319 89 //以下新增思维导图路由,抠图路由 20250319
91 -const Mind = dynamic(  
92 - async () => (await import("./mind")).Mind,  
93 - {  
94 - loading: () => <Loading noLogo />,  
95 - },  
96 -); 90 +const Mind = dynamic(async () => (await import("./mind")).MindPage, {
  91 + loading: () => <Loading noLogo />,
  92 +});
97 93
98 -const BgRemoval = dynamic(  
99 - async () => (await import("./bgRemoval")).BgRemoval,  
100 - {  
101 - loading: () => <Loading noLogo />,  
102 - },  
103 -); 94 +const BgRemoval = dynamic(async () => (await import("./bgRemoval")).BgRemoval, {
  95 + loading: () => <Loading noLogo />,
  96 +});
104 97
105 const WritingPage = dynamic( 98 const WritingPage = dynamic(
106 async () => (await import("./writing")).WritingPage, 99 async () => (await import("./writing")).WritingPage,
@@ -109,7 +102,6 @@ const WritingPage = dynamic( @@ -109,7 +102,6 @@ const WritingPage = dynamic(
109 }, 102 },
110 ); 103 );
111 104
112 -  
113 export function useSwitchTheme() { 105 export function useSwitchTheme() {
114 const config = useAppConfig(); 106 const config = useAppConfig();
115 107
@@ -198,7 +190,6 @@ function Screen() { @@ -198,7 +190,6 @@ function Screen() {
198 const isBgRemoval = location.pathname === Path.BgRemoval; 190 const isBgRemoval = location.pathname === Path.BgRemoval;
199 const isWrting = location.pathname === Path.Writing; 191 const isWrting = location.pathname === Path.Writing;
200 192
201 -  
202 const isMobileScreen = useMobileScreen(); 193 const isMobileScreen = useMobileScreen();
203 const shouldTightBorder = 194 const shouldTightBorder =
204 getClientConfig()?.isApp || (config.tightBorder && !isMobileScreen); 195 getClientConfig()?.isApp || (config.tightBorder && !isMobileScreen);
@@ -221,9 +212,9 @@ function Screen() { @@ -221,9 +212,9 @@ function Screen() {
221 // 20250317新增思维导图 212 // 20250317新增思维导图
222 if (isMind) return <Mind />; 213 if (isMind) return <Mind />;
223 //20250322新增抠图界面 214 //20250322新增抠图界面
224 - if (isBgRemoval) return <BgRemoval /> 215 + if (isBgRemoval) return <BgRemoval />;
225 //20250325新增AI写作界面 216 //20250325新增AI写作界面
226 - if(isWrting)return <WritingPage/> 217 + if (isWrting) return <WritingPage />;
227 218
228 return ( 219 return (
229 <> 220 <>
1 -.minder-container {  
2 - position: absolute;  
3 - width: 100%;  
4 - height: 100%;  
5 - background: transparent !important;  
6 - z-index: 1;  
7 -}  
8 -  
9 -.minder-tools {  
10 - width: 950px;  
11 - position: absolute;  
12 - z-index: 2;  
13 - background: #f7f7f8;  
14 - border-radius: 10px;  
15 - left: 50%;  
16 - transform: translateX(-50%);  
17 - top: 0;  
18 - display: flex;  
19 - align-items: center;  
20 - padding: 4px 9px;  
21 - box-shadow: 0 0 20px rgba(100, 100, 100, 0.1);  
22 -  
23 - .split {  
24 - height: 14px;  
25 - width: 1px;  
26 - background: #ddd;  
27 - margin: 0 10px;  
28 - padding: 0;  
29 - }  
30 -  
31 - .tools-item {  
32 - padding: 4px 8px;  
33 - border-radius: 5px;  
34 - color: #666 !important;  
35 - margin: 0 3px;  
36 - font-size: 14px;  
37 - cursor: pointer;  
38 -  
39 - .icon {  
40 - font-size: 18px;  
41 - }  
42 -  
43 - .color-block {  
44 - display: block;  
45 - width: 16px;  
46 - height: 16px;  
47 - border-radius: 4px;  
48 - }  
49 -  
50 - &:hover,  
51 - &:active {  
52 - background: #eff0f0;  
53 - }  
54 -  
55 - &.active {  
56 - background: #e3e4e4;  
57 - }  
58 -  
59 - &.disabled {  
60 - color: #ccc !important;  
61 -  
62 - .icon {  
63 - color: #ccc !important;  
64 - }  
65 - }  
66 -  
67 - &.btn-primary {  
68 - //background: linear-gradient(108deg, #a561ff 0, #ff6060 96%), linear-gradient(69deg, #ffa100 14%, #f95757 49%) !important;  
69 - background: linear-gradient(108deg, #35b1d9 0, #1adca9 96%) !important;  
70 - color: #fff !important;  
71 -  
72 - &:hover {  
73 - background: linear-gradient(108deg, #289dc2 0, #15bb8f 96%) !important;  
74 - }  
75 - }  
76 - }  
77 -}  
78 -  
79 -.el-popover {  
80 - padding: 0;  
81 -}  
1 -import React from 'react';  
2 -import { ReactFlow } from '@xyflow/react';  
3 -  
4 -import '@xyflow/react/dist/style.css';  
5 -  
6 -const initialNodes = [  
7 - { id: '1', position: { x: 0, y: 0 }, data: { label: 'jsadisahsaa' } },  
8 - { id: '2', position: { x: 0, y: 100 }, data: { label: 'sohidhso' } },  
9 - { id: '3', position: { x: 0, y: 100 }, data: { label: 'sohidhso' } },  
10 - { id: '2', position: { x: 0, y: 100 }, data: { label: 'sohidhso' } },  
11 -];  
12 -const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];  
13 -  
14 -export function Mind() {  
15 - return (  
16 - <div style={{ width: '100vw', height: '100vh' }}>  
17 - <ReactFlow nodes={initialNodes} edges={initialEdges} />  
18 - </div>  
19 - );  
20 -}  
  1 +export * from "./mind";
  2 +export * from "./mind-panel";
  1 +import { useState } from "react";
  2 +import { ControlParamItem } from "../sd";
  3 +import { SideBarTail } from "@/app/components/sidebar";
  4 +import { IconButton } from "../button";
  5 +import { getMindPrompt } from "@/app/utils/prompt";
  6 +import { useChatStore } from "@/app/store";
  7 +import { type MindElixirData } from "mind-elixir";
  8 +import { message } from "antd";
  9 +
  10 +export interface MindPanelProps {
  11 + setData: React.Dispatch<React.SetStateAction<MindElixirData>>;
  12 + isLoading: boolean;
  13 + setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
  14 +}
  15 +
  16 +export function MindPanel(props: MindPanelProps) {
  17 + const { setData, isLoading, setIsLoading } = props;
  18 + const [inputValue, setInputValue] = useState("");
  19 + const [loading, setLoading] = useState(false);
  20 + const chatStore = useChatStore();
  21 + const submit = async () => {
  22 + if (!inputValue.trim()) return message.error("请输入提示词!");
  23 + setIsLoading(true);
  24 + try {
  25 + const prompt = getMindPrompt(inputValue);
  26 + const response = await chatStore.directLlmInvoke(prompt, "gpt-4o-mini");
  27 + console.log("原始响应:", response);
  28 + const parsedData: MindElixirData = JSON.parse(response);
  29 + console.log("解析后响应:", parsedData);
  30 + // 增强校验逻辑
  31 + if (
  32 + !parsedData?.nodeData?.id ||
  33 + !Array.isArray(parsedData.nodeData.children)
  34 + ) {
  35 + throw new Error("数据结构不完整");
  36 + }
  37 + setData(parsedData);
  38 + } catch (error) {
  39 + console.log(error);
  40 + message.error("请求失败,请重试");
  41 + } finally {
  42 + setIsLoading(false); // 确保关闭加载状态‌:ml-citation{ref="2,5" data="citationList"}
  43 + }
  44 + };
  45 + return (
  46 + <>
  47 + <div>
  48 + <ControlParamItem title="提示词" required={true}>
  49 + <textarea
  50 + rows={3}
  51 + style={{ maxWidth: "100%", width: "100%", padding: "10px" }}
  52 + placeholder="请输入"
  53 + value={inputValue}
  54 + onChange={(e) => {
  55 + setInputValue(e.target.value);
  56 + }}
  57 + ></textarea>
  58 + </ControlParamItem>
  59 + <SideBarTail
  60 + secondaryAction={
  61 + <IconButton
  62 + text="提交生成"
  63 + type="primary"
  64 + shadow
  65 + onClick={submit}
  66 + disabled={isLoading}
  67 + ></IconButton>
  68 + }
  69 + />
  70 + </div>
  71 + </>
  72 + );
  73 +}
  1 +import { useMobileScreen } from "@/app/utils";
  2 +import dynamic from "next/dynamic";
  3 +import {
  4 + SideBarContainer,
  5 + SideBarBody,
  6 + SideBarHeader,
  7 + useDragSideBar,
  8 + useHotKey,
  9 +} from "@/app/components/sidebar";
  10 +import { type MindElixirData } from "mind-elixir";
  11 +import { IconButton } from "@/app/components/button";
  12 +import ReturnIcon from "@/app/icons/return.svg";
  13 +import HistoryIcon from "@/app/icons/history.svg";
  14 +import Locale from "@/app/locales";
  15 +import { Path } from "@/app/constant";
  16 +import { useNavigate } from "react-router-dom";
  17 +import SDIcon from "@/app/icons/sd.svg";
  18 +
  19 +const MindPanel = dynamic(
  20 + async () => (await import("@/app/components/mind")).MindPanel,
  21 + {
  22 + loading: () => null,
  23 + },
  24 +);
  25 +
  26 +export interface MindSiderBarProps {
  27 + className?: string;
  28 + setData: React.Dispatch<React.SetStateAction<MindElixirData>>;
  29 + isLoading: boolean;
  30 + setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
  31 +}
  32 +
  33 +export function MindSiderBar(props: MindSiderBarProps) {
  34 + const { className, setData, isLoading, setIsLoading } = props;
  35 + const isMobileScreen = useMobileScreen();
  36 + const { onDragStart, shouldNarrow } = useDragSideBar();
  37 + const navigate = useNavigate();
  38 + useHotKey();
  39 + return (
  40 + <>
  41 + <SideBarContainer
  42 + onDragStart={onDragStart}
  43 + shouldNarrow={shouldNarrow}
  44 + {...props}
  45 + >
  46 + {isMobileScreen ? (
  47 + <div
  48 + className="window-header"
  49 + data-tauri-drag-region
  50 + style={{
  51 + paddingLeft: 0,
  52 + paddingRight: 0,
  53 + }}
  54 + >
  55 + <div className="window-actions">
  56 + <div className="window-action-button">
  57 + <IconButton
  58 + icon={<ReturnIcon />}
  59 + bordered
  60 + title={Locale.Sd.Actions.ReturnHome}
  61 + onClick={() => navigate(Path.Home)}
  62 + />
  63 + </div>
  64 + </div>
  65 + <SDIcon width={50} height={50} />
  66 + <div className="window-actions">
  67 + <div className="window-action-button">
  68 + <IconButton
  69 + icon={<HistoryIcon />}
  70 + bordered
  71 + title={Locale.Sd.Actions.History}
  72 + onClick={() => navigate(Path.SdNew)}
  73 + />
  74 + </div>
  75 + </div>
  76 + </div>
  77 + ) : (
  78 + <SideBarHeader
  79 + title={
  80 + <IconButton
  81 + icon={<ReturnIcon />}
  82 + bordered
  83 + title={Locale.Sd.Actions.ReturnHome}
  84 + onClick={() => navigate(Path.Home)}
  85 + />
  86 + }
  87 + logo={<SDIcon width={38} height={"100%"} />}
  88 + ></SideBarHeader>
  89 + )}
  90 + <SideBarBody>
  91 + <MindPanel
  92 + setData={setData}
  93 + isLoading={isLoading}
  94 + setIsLoading={setIsLoading}
  95 + />
  96 + </SideBarBody>
  97 + </SideBarContainer>
  98 + </>
  99 + );
  100 +}
  1 +.loading-content {
  2 + display: flex;
  3 + flex-direction: column;
  4 + justify-content: center;
  5 + align-items: center;
  6 + height: 100%;
  7 + width: 100%;
  8 + gap: 5px;
  9 +}
  1 +import chatStyles from "@/app/components/chat.module.scss";
  2 +import homeStyles from "@/app/components/home.module.scss";
  3 +
  4 +import { MindSiderBar } from "./mind-siderBar";
  5 +import MindElixir, { type Options, type MindElixirData } from "mind-elixir";
  6 +import { WindowContent } from "@/app/components/home";
  7 +import { useMobileScreen } from "@/app/utils";
  8 +import { IconButton } from "../button";
  9 +import Locale from "@/app/locales";
  10 +import { Path } from "@/app/constant";
  11 +import { useNavigate } from "react-router-dom";
  12 +import clsx from "clsx";
  13 +import { getClientConfig } from "@/app/config/client";
  14 +import React, { useEffect, useMemo, useRef, useState } from "react";
  15 +import { useAppConfig } from "@/app/store";
  16 +
  17 +import ReturnIcon from "@/app/icons/return.svg";
  18 +import MinIcon from "@/app/icons/min.svg";
  19 +import MaxIcon from "@/app/icons/max.svg";
  20 +import SDIcon from "@/app/icons/sd.svg";
  21 +
  22 +export function MindPage() {
  23 + const isMobileScreen = useMobileScreen();
  24 + const navigate = useNavigate();
  25 + const clientConfig = useMemo(() => getClientConfig(), []);
  26 + const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
  27 + const config = useAppConfig();
  28 + const scrollRef = useRef<HTMLDivElement>(null);
  29 + const isWriting = location.pathname === Path.Writing;
  30 + const [isLoading, setIsLoading] = useState(false);
  31 + const containerRef = useRef<HTMLDivElement>(null);
  32 + const mindInstance = useRef<InstanceType<typeof MindElixir> | null>(null);
  33 + const [data, setData] = useState<MindElixirData>({
  34 + nodeData: {
  35 + id: "root",
  36 + topic: "中心主题",
  37 + },
  38 + });
  39 +
  40 + useEffect(() => {
  41 + // 确保容器元素已挂载
  42 + if (!containerRef.current) return;
  43 + // 初始化配置项
  44 + const options: Options = {
  45 + el: containerRef.current,
  46 + contextMenu: true,
  47 + toolBar: true,
  48 + nodeMenu: true,
  49 + };
  50 + // 创建实例
  51 + mindInstance.current = new MindElixir(options);
  52 + mindInstance.current.init(data);
  53 +
  54 + return () => {
  55 + if (mindInstance.current) {
  56 + mindInstance.current.destroy();
  57 + // 移除事件监听器
  58 + document.removeEventListener("mousemove", () => {});
  59 + document.removeEventListener("mouseup", () => {});
  60 + }
  61 + };
  62 + }, []);
  63 +
  64 + useEffect(() => {
  65 + mindInstance.current?.refresh(data);
  66 + }, [data]);
  67 +
  68 + useEffect(() => {
  69 + if (isLoading) {
  70 + mindInstance.current?.refresh({
  71 + nodeData: {
  72 + id: "root",
  73 + topic: "生成中....",
  74 + },
  75 + });
  76 + }
  77 + }, [isLoading]);
  78 +
  79 + // const meNode=document.querySelector('me-nodes')
  80 + // const draggableElement = meNode?.querySelector('me-root') as HTMLElement | null;
  81 + // if (draggableElement) {
  82 + // let isDragging = false; // 是否正在拖拽
  83 + // let startX = 0; // 鼠标按下时的 X 坐标
  84 + // let startY = 0; // 鼠标按下时的 Y 坐标
  85 + // let initialLeft = 0; // 元素初始的左偏移量
  86 + // let initialTop = 0; // 元素初始的上偏移量
  87 + // // 鼠标按下事件
  88 + // draggableElement.addEventListener('mousedown', (e) => {
  89 + // isDragging = true;
  90 + // startX = e.clientX;
  91 + // startY = e.clientY;
  92 + // // 获取 me-root 元素当前的位置
  93 + // const draggableStyle = window.getComputedStyle(draggableElement);
  94 + // initialLeft = parseInt(draggableStyle.left) || 0;
  95 + // initialTop = parseInt(draggableStyle.top) || 0;
  96 + // // 确保元素可以移动
  97 + // draggableElement.style.position = 'absolute';
  98 + // });
  99 + // // 鼠标移动事件
  100 + // document.addEventListener('mousemove', (e) => {
  101 + // if (isDragging) {
  102 + // const currentX = e.clientX;
  103 + // const currentY = e.clientY;
  104 + // // 计算偏移量
  105 + // const diffX = currentX - startX;
  106 + // const diffY = currentY - startY;
  107 + // // 更新 me-root 元素位置
  108 + // draggableElement.style.left = `${initialLeft + diffX}px`;
  109 + // draggableElement.style.top = `${initialTop + diffY}px`;
  110 + // // 检查 meMain 是否存在,如果存在则更新其位置
  111 + // const meMain = meNode?.querySelector('me-main') as HTMLElement | null;
  112 + // if (meMain) {
  113 + // // 获取 meMain 元素当前的位置
  114 + // const meMainStyle = window.getComputedStyle(meMain);
  115 + // const meMainInitialLeft = parseInt(meMainStyle.left) || 0;
  116 + // const meMainInitialTop = parseInt(meMainStyle.top) || 0;
  117 + // // 更新 meMain 元素位置
  118 + // meMain.style.position = 'absolute';
  119 + // meMain.style.left = `${meMainInitialLeft + diffX}px`;
  120 + // meMain.style.top = `${meMainInitialTop + diffY}px`;
  121 + // }
  122 + // }
  123 + // });
  124 +
  125 + // // 鼠标释放事件
  126 + // document.addEventListener('mouseup', () => {
  127 + // isDragging = false;
  128 + // });
  129 + // } else {
  130 + // console.error('未找到 me-root 元素');
  131 + // }
  132 +
  133 + return (
  134 + <>
  135 + <MindSiderBar
  136 + className={clsx({ [homeStyles["sidebar-show"]]: isWriting })}
  137 + setData={setData}
  138 + isLoading={isLoading}
  139 + setIsLoading={setIsLoading}
  140 + />
  141 + <WindowContent>
  142 + <div className={chatStyles.chat} key={"1"}>
  143 + <div className="window-header" data-tauri-drag-region>
  144 + {isMobileScreen && (
  145 + <div className="window-actions">
  146 + <div className={"window-action-button"}>
  147 + <IconButton
  148 + icon={<ReturnIcon />}
  149 + bordered
  150 + title={Locale.Chat.Actions.ChatList}
  151 + onClick={() => navigate(Path.BgRemoval)}
  152 + />
  153 + </div>
  154 + </div>
  155 + )}
  156 + <div
  157 + className={clsx(
  158 + "window-header-title",
  159 + chatStyles["chat-body-title"],
  160 + )}
  161 + >
  162 + <div className={`window-header-main-title`}>生成思维导图</div>
  163 + </div>
  164 + <div className={chatStyles["chat-message-actions"]}>
  165 + <div className={chatStyles["chat-input-actions"]}>
  166 + {/* <ChatAction
  167 + text={Locale.Chat.Actions.ReWrite}
  168 + icon={<ReloadIcon />}
  169 + onClick={() => { }
  170 + }
  171 + /> */}
  172 + </div>
  173 + </div>
  174 + <div className="window-actions">
  175 + {showMaxIcon && (
  176 + <div className="window-action-button">
  177 + <IconButton
  178 + aria={Locale.Chat.Actions.FullScreen}
  179 + icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}
  180 + bordered
  181 + onClick={() => {
  182 + config.update(
  183 + (config) => (config.tightBorder = !config.tightBorder),
  184 + );
  185 + }}
  186 + />
  187 + </div>
  188 + )}
  189 + {isMobileScreen && <SDIcon width={50} height={50} />}
  190 + </div>
  191 + </div>
  192 + <div className={chatStyles["chat-body"]} ref={scrollRef}>
  193 + <div ref={containerRef} style={{ width: "100%", height: "100%" }} />
  194 + </div>
  195 + </div>
  196 + </WindowContent>
  197 + </>
  198 + );
  199 +}
@@ -38,7 +38,8 @@ const DISCOVERY = [ @@ -38,7 +38,8 @@ const DISCOVERY = [
38 { name: "Stable Diffusion", path: Path.Sd }, 38 { name: "Stable Diffusion", path: Path.Sd },
39 { name: Locale.SearchChat.Page.Title, path: Path.SearchChat }, 39 { name: Locale.SearchChat.Page.Title, path: Path.SearchChat },
40 { name: "智能抠图", path: Path.BgRemoval }, 40 { name: "智能抠图", path: Path.BgRemoval },
41 - { name: "AI-writing", path: Path.Writing } 41 + { name: "AI-writing", path: Path.Writing },
  42 + { name: "思维导图", path: Path.Mind },
42 ]; 43 ];
43 44
44 const ChatList = dynamic(async () => (await import("./chat-list")).ChatList, { 45 const ChatList = dynamic(async () => (await import("./chat-list")).ChatList, {
1 import { useMobileScreen } from "@/app/utils"; 1 import { useMobileScreen } from "@/app/utils";
2 import dynamic from "next/dynamic"; 2 import dynamic from "next/dynamic";
3 import { 3 import {
4 - SideBarContainer,  
5 - SideBarBody,  
6 - SideBarHeader,  
7 - SideBarTail,  
8 - useDragSideBar,  
9 - useHotKey, 4 + SideBarContainer,
  5 + SideBarBody,
  6 + SideBarHeader,
  7 + useDragSideBar,
  8 + useHotKey,
10 } from "@/app/components/sidebar"; 9 } from "@/app/components/sidebar";
11 import { IconButton } from "@/app/components/button"; 10 import { IconButton } from "@/app/components/button";
12 import ReturnIcon from "@/app/icons/return.svg"; 11 import ReturnIcon from "@/app/icons/return.svg";
@@ -15,84 +14,88 @@ import Locale from "@/app/locales"; @@ -15,84 +14,88 @@ import Locale from "@/app/locales";
15 import { Path } from "@/app/constant"; 14 import { Path } from "@/app/constant";
16 import { useNavigate } from "react-router-dom"; 15 import { useNavigate } from "react-router-dom";
17 import SDIcon from "@/app/icons/sd.svg"; 16 import SDIcon from "@/app/icons/sd.svg";
18 -import { ApiPath } from '@/app/constant';  
19 -import { message } from 'antd';  
20 17
21 export interface WriteSiderBarProps { 18 export interface WriteSiderBarProps {
22 - className?: string;  
23 - htmlCode: string;  
24 - setHtmlCode: React.Dispatch<React.SetStateAction<string>>; 19 + className?: string;
  20 + htmlCode: string;
  21 + setHtmlCode: React.Dispatch<React.SetStateAction<string>>;
  22 + loading: boolean;
  23 + setLoading: React.Dispatch<React.SetStateAction<boolean>>;
25 } 24 }
26 25
27 -  
28 const WritingPanel = dynamic( 26 const WritingPanel = dynamic(
29 - async () => (await import("@/app/components/writing")).WritingPanel,  
30 - {  
31 - loading: () => null,  
32 - }, 27 + async () => (await import("@/app/components/writing")).WritingPanel,
  28 + {
  29 + loading: () => null,
  30 + },
33 ); 31 );
34 32
35 -export function WriteSiderBar(props:WriteSiderBarProps) {  
36 - const {className,htmlCode,setHtmlCode}=props  
37 - const isMobileScreen = useMobileScreen();  
38 - const { onDragStart, shouldNarrow } = useDragSideBar();  
39 - const navigate = useNavigate();  
40 - useHotKey();  
41 - return (  
42 - <>  
43 - <SideBarContainer  
44 - onDragStart={onDragStart}  
45 - shouldNarrow={shouldNarrow}  
46 - {...props}  
47 - >  
48 - {isMobileScreen ? (  
49 - <div  
50 - className="window-header"  
51 - data-tauri-drag-region  
52 - style={{  
53 - paddingLeft: 0,  
54 - paddingRight: 0,  
55 - }}  
56 - >  
57 - <div className="window-actions">  
58 - <div className="window-action-button">  
59 - <IconButton  
60 - icon={<ReturnIcon />}  
61 - bordered  
62 - title={Locale.Sd.Actions.ReturnHome}  
63 - onClick={() => navigate(Path.Home)}  
64 - />  
65 - </div>  
66 - </div>  
67 - <SDIcon width={50} height={50} />  
68 - <div className="window-actions">  
69 - <div className="window-action-button">  
70 - <IconButton  
71 - icon={<HistoryIcon />}  
72 - bordered  
73 - title={Locale.Sd.Actions.History}  
74 - onClick={() => navigate(Path.SdNew)}  
75 - />  
76 - </div>  
77 - </div>  
78 - </div>  
79 - ) : (  
80 - <SideBarHeader  
81 - title={  
82 - <IconButton  
83 - icon={<ReturnIcon />}  
84 - bordered  
85 - title={Locale.Sd.Actions.ReturnHome}  
86 - onClick={() => navigate(Path.Home)}  
87 - />  
88 - }  
89 - logo={<SDIcon width={38} height={"100%"} />}  
90 - ></SideBarHeader>  
91 - )}  
92 - <SideBarBody>  
93 - <WritingPanel htmlCode={htmlCode} setHtmlCode={setHtmlCode}/>  
94 - </SideBarBody>  
95 - </SideBarContainer>  
96 - </>  
97 - )  
98 -}  
  33 +export function WriteSiderBar(props: WriteSiderBarProps) {
  34 + const { className, htmlCode, setHtmlCode, loading, setLoading } = props;
  35 + const isMobileScreen = useMobileScreen();
  36 + const { onDragStart, shouldNarrow } = useDragSideBar();
  37 + const navigate = useNavigate();
  38 + useHotKey();
  39 + return (
  40 + <>
  41 + <SideBarContainer
  42 + onDragStart={onDragStart}
  43 + shouldNarrow={shouldNarrow}
  44 + {...props}
  45 + >
  46 + {isMobileScreen ? (
  47 + <div
  48 + className="window-header"
  49 + data-tauri-drag-region
  50 + style={{
  51 + paddingLeft: 0,
  52 + paddingRight: 0,
  53 + }}
  54 + >
  55 + <div className="window-actions">
  56 + <div className="window-action-button">
  57 + <IconButton
  58 + icon={<ReturnIcon />}
  59 + bordered
  60 + title={Locale.Sd.Actions.ReturnHome}
  61 + onClick={() => navigate(Path.Home)}
  62 + />
  63 + </div>
  64 + </div>
  65 + <SDIcon width={50} height={50} />
  66 + <div className="window-actions">
  67 + <div className="window-action-button">
  68 + <IconButton
  69 + icon={<HistoryIcon />}
  70 + bordered
  71 + title={Locale.Sd.Actions.History}
  72 + onClick={() => navigate(Path.SdNew)}
  73 + />
  74 + </div>
  75 + </div>
  76 + </div>
  77 + ) : (
  78 + <SideBarHeader
  79 + title={
  80 + <IconButton
  81 + icon={<ReturnIcon />}
  82 + bordered
  83 + title={Locale.Sd.Actions.ReturnHome}
  84 + onClick={() => navigate(Path.Home)}
  85 + />
  86 + }
  87 + logo={<SDIcon width={38} height={"100%"} />}
  88 + ></SideBarHeader>
  89 + )}
  90 + <SideBarBody>
  91 + <WritingPanel
  92 + htmlCode={htmlCode}
  93 + setHtmlCode={setHtmlCode}
  94 + loading={loading}
  95 + setLoading={setLoading}
  96 + />
  97 + </SideBarBody>
  98 + </SideBarContainer>
  99 + </>
  100 + );
  101 +}
1 import { Select } from "@/app/components/ui-lib"; 1 import { Select } from "@/app/components/ui-lib";
2 import { ControlParamItem } from "../sd"; 2 import { ControlParamItem } from "../sd";
3 import { SideBarTail } from "@/app/components/sidebar"; 3 import { SideBarTail } from "@/app/components/sidebar";
4 -import { useEffect, useState } from "react"; 4 +import { useState } from "react";
5 import { IconButton } from "../button"; 5 import { IconButton } from "../button";
6 import { message } from "antd"; 6 import { message } from "antd";
7 import { useChatStore } from "@/app/store"; 7 import { useChatStore } from "@/app/store";
  8 +import { getWrtingPrompt } from "@/app/utils/prompt";
  9 +import type { writePromptParam } from "@/app/types/prompt";
  10 +
8 // 定义mergedData数据结构 11 // 定义mergedData数据结构
9 const mergedData = [ 12 const mergedData = [
10 - {  
11 - title: "写作用途",  
12 - required: true,  
13 - type: "select",  
14 - default: "公司官网",  
15 - options: [  
16 - { name: '公司官网', value: '1' },  
17 - { name: '小红书', value: '2' },  
18 - { name: '微信', value: '3' },  
19 - { name: '公众号', value: '4' },  
20 - { name: '今日头条', value: '5' },  
21 - ]  
22 - },  
23 - {  
24 - title: "图片模式",  
25 - type: "select",  
26 - required: false,  
27 - default: "免费配图",  
28 - options: [  
29 - { name: '免费配图', value: 'free' },  
30 - { name: '收费配图', value: 'paid' }  
31 - ]  
32 - },  
33 - {  
34 - title: "写作风格",  
35 - type: "select",  
36 - required: false,  
37 - default: "专业",  
38 - options: [  
39 - { name: '专业', value: 'professional' },  
40 - { name: '活泼', value: 'lively' },  
41 - { name: '严谨', value: 'strict' },  
42 - ]  
43 - },  
44 - {  
45 - title: "写作语言",  
46 - type: "select",  
47 - required: false,  
48 - default: "中文",  
49 - options: [  
50 - { name: '中文', value: 'Chinese' },  
51 - { name: '英文', value: 'English' },  
52 - { name: '法文', value: 'French' },  
53 - { name: '德文', value: 'German' },  
54 - ]  
55 - },  
56 - {  
57 - title: "写作类型",  
58 - type: "select",  
59 - required: false,  
60 - default: "产品推广文案",  
61 - options: [  
62 - { name: '产品推广文案', value: '产品推广文案' },  
63 - { name: '品牌宣传文案', value: '品牌宣传文案' },  
64 - { name: '产品说明书', value: '产品说明书' },  
65 - { name: '产品介绍', value: '产品介绍' },  
66 - ]  
67 - },  
68 - {  
69 - title: "是否图文",  
70 - type: "select",  
71 - required: false,  
72 - default: "是",  
73 - options: [  
74 - { name: '是', value: 'true' },  
75 - { name: '否', value: 'false' },  
76 - ]  
77 - }, 13 + {
  14 + title: "写作用途",
  15 + required: true,
  16 + type: "select",
  17 + default: "公司官网",
  18 + options: [
  19 + { name: "公司官网", value: "1" },
  20 + { name: "小红书", value: "2" },
  21 + { name: "微信", value: "3" },
  22 + { name: "公众号", value: "4" },
  23 + { name: "今日头条", value: "5" },
  24 + ],
  25 + },
  26 + {
  27 + title: "图片模式",
  28 + type: "select",
  29 + required: false,
  30 + default: "免费配图",
  31 + options: [
  32 + { name: "免费配图", value: "free" },
  33 + { name: "收费配图", value: "paid" },
  34 + ],
  35 + },
  36 + {
  37 + title: "写作风格",
  38 + type: "select",
  39 + required: false,
  40 + default: "专业",
  41 + options: [
  42 + { name: "专业", value: "professional" },
  43 + { name: "活泼", value: "lively" },
  44 + { name: "严谨", value: "strict" },
  45 + ],
  46 + },
  47 + {
  48 + title: "写作语言",
  49 + type: "select",
  50 + required: false,
  51 + default: "中文",
  52 + options: [
  53 + { name: "中文", value: "Chinese" },
  54 + { name: "英文", value: "English" },
  55 + { name: "法文", value: "French" },
  56 + { name: "德文", value: "German" },
  57 + ],
  58 + },
  59 + {
  60 + title: "写作类型",
  61 + type: "select",
  62 + required: false,
  63 + default: "产品推广文案",
  64 + options: [
  65 + { name: "产品推广文案", value: "产品推广文案" },
  66 + { name: "品牌宣传文案", value: "品牌宣传文案" },
  67 + { name: "产品说明书", value: "产品说明书" },
  68 + { name: "产品介绍", value: "产品介绍" },
  69 + ],
  70 + },
  71 + {
  72 + title: "是否图文",
  73 + type: "select",
  74 + required: false,
  75 + default: "是",
  76 + options: [
  77 + { name: "是", value: "true" },
  78 + { name: "否", value: "false" },
  79 + ],
  80 + },
78 ]; 81 ];
79 82
80 export interface WritePanelProps { 83 export interface WritePanelProps {
81 - htmlCode: string;  
82 - setHtmlCode: React.Dispatch<React.SetStateAction<string>>; 84 + htmlCode: string;
  85 + setHtmlCode: React.Dispatch<React.SetStateAction<string>>;
  86 + loading: boolean;
  87 + setLoading: React.Dispatch<React.SetStateAction<boolean>>;
83 } 88 }
84 export function WritingPanel(props: WritePanelProps) { 89 export function WritingPanel(props: WritePanelProps) {
85 - const { htmlCode, setHtmlCode } = props;  
86 - // 为每个选择框单独声明状态,存储name  
87 - const chatStore = useChatStore();  
88 - const [writingPurposeName, setWritingPurposeName] = useState('公司官网'); // 写作用途  
89 - const [imageModeName, setImageModeName] = useState('免费配图'); // 图片模式  
90 - const [writingStyleName, setWritingStyleName] = useState('专业'); // 写作风格  
91 - const [writingLanguageName, setWritingLanguageName] = useState('中文'); // 写作语言  
92 - const [writingTypeName, setWritingTypeName] = useState('产品推广文案'); // 写作类型  
93 - const [isImgName, setIsImgName] = useState('是'); // 是否图文  
94 - // 为输入框和文本区域单独声明状态  
95 - const [writingCount, setWritingCount] = useState('200'); // 写作字数  
96 - const [prompt, setPrompt] = useState(''); // 提示词  
97 - const [isLoading, setIsLoading] = useState(false)  
98 - // 处理选择框变更事件  
99 - const handleSelectChange = (index: number, value: string) => {  
100 - const options = mergedData[index].options;  
101 - const selectedName = options.find(opt => opt.value === value)?.name || '';  
102 -  
103 - switch (index) {  
104 - case 0:  
105 - setWritingPurposeName(selectedName);  
106 - break;  
107 - case 1:  
108 - setImageModeName(selectedName);  
109 - break;  
110 - case 2:  
111 - setWritingStyleName(selectedName);  
112 - break;  
113 - case 3:  
114 - setWritingLanguageName(selectedName);  
115 - break;  
116 - case 4:  
117 - setWritingTypeName(selectedName);  
118 - break;  
119 - case 5:  
120 - setIsImgName(selectedName);  
121 - break;  
122 - default:  
123 - break;  
124 - }  
125 - };  
126 -  
127 - // 处理输入框变更事件  
128 - const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {  
129 - setWritingCount(e.target.value);  
130 - }; 90 + const { htmlCode, setHtmlCode, setLoading, loading } = props;
  91 + // 为每个选择框单独声明状态,存储name
  92 + const chatStore = useChatStore();
  93 + const [writingPurposeName, setWritingPurposeName] = useState("公司官网"); // 写作用途
  94 + const [imageModeName, setImageModeName] = useState("免费配图"); // 图片模式
  95 + const [writingStyleName, setWritingStyleName] = useState("专业"); // 写作风格
  96 + const [writingLanguageName, setWritingLanguageName] = useState("中文"); // 写作语言
  97 + const [writingTypeName, setWritingTypeName] = useState("产品推广文案"); // 写作类型
  98 + const [isImgName, setIsImgName] = useState("是"); // 是否图文
  99 + // 为输入框和文本区域单独声明状态
  100 + const [writingCount, setWritingCount] = useState("200"); // 写作字数
  101 + const [prompt, setPrompt] = useState(""); // 提示词
  102 + const [isLoading, setIsLoading] = useState(false);
  103 + // 处理选择框变更事件
  104 + const handleSelectChange = (index: number, value: string) => {
  105 + const options = mergedData[index].options;
  106 + const selectedName = options.find((opt) => opt.value === value)?.name || "";
131 107
132 - // 处理文本区域变更事件  
133 - const handleTextareaChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {  
134 - setPrompt(e.target.value);  
135 - }; 108 + switch (index) {
  109 + case 0:
  110 + setWritingPurposeName(selectedName);
  111 + break;
  112 + case 1:
  113 + setImageModeName(selectedName);
  114 + break;
  115 + case 2:
  116 + setWritingStyleName(selectedName);
  117 + break;
  118 + case 3:
  119 + setWritingLanguageName(selectedName);
  120 + break;
  121 + case 4:
  122 + setWritingTypeName(selectedName);
  123 + break;
  124 + case 5:
  125 + setIsImgName(selectedName);
  126 + break;
  127 + default:
  128 + break;
  129 + }
  130 + };
136 131
137 - // 提交表单时的处理函数  
138 - const handleSubmit = async () => {  
139 - if (!prompt.trim()) { return message.error('请输入提示词') }  
140 - try {  
141 - const isImg = `文案要配上图片,实现图文混排,要美观,  
142 - 要符合${writingPurposeName}的排版标准和写作风格,写作风格要${writingStyleName},  
143 - 你没有图片没关系,把图文混排的效果实现,  
144 - 并在你认为要插入图片的地方将图片的Prompt用英文输出给:  
145 - ![description](https://image.pollinations.ai/prompt/description?nologo=true),记得图片地址后面的?nologo=true一定不能去掉了,  
146 - 因为这个语法可以自动按照提示生成并渲染图片。你可以帮我大幅提高生成图片质量和丰富程度,  
147 - 比如增加相机光圈、具体场景描述等内容,注意图片一定要用<img,  
148 - 否则在HTML下图片可能显示不了`  
149 - const input = `帮我使用${writingLanguageName}写一篇主题是${prompt}的${writingTypeName},  
150 - ${isImgName ? isImg : ''},字数要求不少于${writingCount}字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`  
151 - setIsLoading(true)  
152 - console.log("------------------------" + input)  
153 - const response = await chatStore.directLlmInvoke(input, 'gpt-4o-mini');  
154 - let cleanedContent = response.startsWith('```html') ? response.substring(8) : response;  
155 - if (cleanedContent.endsWith('```')) {  
156 - cleanedContent = cleanedContent.substring(0, cleanedContent.length - 4);  
157 - }  
158 - setHtmlCode(cleanedContent)  
159 - } catch (error) {  
160 - message.error("生成失败,请重试")  
161 - } finally {  
162 - setIsLoading(false)  
163 - } 132 + // 处理输入框变更事件
  133 + const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
  134 + setWritingCount(e.target.value);
  135 + };
164 136
165 - }; 137 + // 处理文本区域变更事件
  138 + const handleTextareaChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
  139 + setPrompt(e.target.value);
  140 + };
166 141
167 - return (  
168 - <div>  
169 - {/* 动态渲染选择框 */}  
170 - {mergedData.map((item, index) => {  
171 - let currentValue = '';  
172 - switch (index) {  
173 - case 0:  
174 - currentValue = writingPurposeName;  
175 - break;  
176 - case 1:  
177 - currentValue = imageModeName;  
178 - break;  
179 - case 2:  
180 - currentValue = writingStyleName;  
181 - break;  
182 - case 3:  
183 - currentValue = writingLanguageName;  
184 - break;  
185 - case 4:  
186 - currentValue = writingTypeName;  
187 - break;  
188 - case 5:  
189 - currentValue = isImgName;  
190 - break;  
191 - default:  
192 - currentValue = '';  
193 - break;  
194 - } 142 + // 提交表单时的处理函数
  143 + const handleSubmit = async () => {
  144 + if (!prompt.trim()) {
  145 + return message.error("请输入提示词");
  146 + }
  147 + try {
  148 + const param: writePromptParam = {
  149 + writingPurposeName,
  150 + writingStyleName,
  151 + writingLanguageName,
  152 + prompt,
  153 + writingTypeName,
  154 + isImgName,
  155 + writingCount,
  156 + };
  157 + const input = getWrtingPrompt(param);
  158 + setLoading(true);
  159 + console.log("------------------------" + input);
  160 + const response = await chatStore.directLlmInvoke(input, "gpt-4o-mini");
  161 + let cleanedContent = response.startsWith("```html")
  162 + ? response.substring(8)
  163 + : response;
  164 + if (cleanedContent.endsWith("```")) {
  165 + cleanedContent = cleanedContent.substring(0, cleanedContent.length - 4);
  166 + }
  167 + setHtmlCode(cleanedContent);
  168 + } catch (error) {
  169 + message.error("生成失败,请重试");
  170 + } finally {
  171 + setLoading(false);
  172 + }
  173 + };
195 174
196 - return (  
197 - <ControlParamItem  
198 - key={item.title}  
199 - title={item.title}  
200 - required={item.required}  
201 - >  
202 - <Select  
203 - aria-label={item.title}  
204 - value={item.options.find(opt => opt.name === currentValue)?.value || ''}  
205 - onChange={(e) => handleSelectChange(index, e.target.value)}  
206 - >  
207 - {item.options.map((opt) => (  
208 - <option key={opt.value} value={opt.value}>  
209 - {opt.name}  
210 - </option>  
211 - ))}  
212 - </Select>  
213 - </ControlParamItem>  
214 - );  
215 - })} 175 + return (
  176 + <div>
  177 + {/* 动态渲染选择框 */}
  178 + {mergedData.map((item, index) => {
  179 + let currentValue = "";
  180 + switch (index) {
  181 + case 0:
  182 + currentValue = writingPurposeName;
  183 + break;
  184 + case 1:
  185 + currentValue = imageModeName;
  186 + break;
  187 + case 2:
  188 + currentValue = writingStyleName;
  189 + break;
  190 + case 3:
  191 + currentValue = writingLanguageName;
  192 + break;
  193 + case 4:
  194 + currentValue = writingTypeName;
  195 + break;
  196 + case 5:
  197 + currentValue = isImgName;
  198 + break;
  199 + default:
  200 + currentValue = "";
  201 + break;
  202 + }
216 203
217 - {/* 写作字数输入框 */}  
218 - <ControlParamItem  
219 - title="写作字数"  
220 - required={true} 204 + return (
  205 + <ControlParamItem
  206 + key={item.title}
  207 + title={item.title}
  208 + required={item.required}
  209 + >
  210 + <Select
  211 + aria-label={item.title}
  212 + value={
  213 + item.options.find((opt) => opt.name === currentValue)?.value ||
  214 + ""
  215 + }
  216 + onChange={(e) => handleSelectChange(index, e.target.value)}
221 > 217 >
222 - <input  
223 - aria-label="写作字数"  
224 - type="number"  
225 - placeholder="200"  
226 - min="200"  
227 - max="5000"  
228 - value={writingCount}  
229 - onChange={handleInputChange}  
230 - />  
231 - </ControlParamItem> 218 + {item.options.map((opt) => (
  219 + <option key={opt.value} value={opt.value}>
  220 + {opt.name}
  221 + </option>
  222 + ))}
  223 + </Select>
  224 + </ControlParamItem>
  225 + );
  226 + })}
232 227
233 - {/* 提示词文本区域 */}  
234 - <ControlParamItem  
235 - title="提示词"  
236 - required={true}  
237 - >  
238 - <textarea  
239 - rows={3}  
240 - style={{ maxWidth: "100%", width: "100%", padding: "10px" }}  
241 - placeholder="请输入"  
242 - value={prompt}  
243 - onChange={handleTextareaChange}  
244 - ></textarea>  
245 - </ControlParamItem> 228 + {/* 写作字数输入框 */}
  229 + <ControlParamItem title="写作字数" required={true}>
  230 + <input
  231 + aria-label="写作字数"
  232 + type="number"
  233 + placeholder="200"
  234 + min="200"
  235 + max="5000"
  236 + value={writingCount}
  237 + onChange={handleInputChange}
  238 + />
  239 + </ControlParamItem>
246 240
247 - {/* 提交按钮 */}  
248 - <SideBarTail  
249 - secondaryAction={  
250 - <IconButton  
251 - text="提交生成"  
252 - type="primary"  
253 - shadow  
254 - onClick={handleSubmit}  
255 - ></IconButton>  
256 - }  
257 - />  
258 - </div>  
259 - );  
260 -}  
  241 + {/* 提示词文本区域 */}
  242 + <ControlParamItem title="提示词" required={true}>
  243 + <textarea
  244 + rows={3}
  245 + style={{ maxWidth: "100%", width: "100%", padding: "10px" }}
  246 + placeholder="请输入"
  247 + value={prompt}
  248 + onChange={handleTextareaChange}
  249 + ></textarea>
  250 + </ControlParamItem>
  251 +
  252 + {/* 提交按钮 */}
  253 + <SideBarTail
  254 + secondaryAction={
  255 + <IconButton
  256 + text="提交生成"
  257 + type="primary"
  258 + shadow
  259 + onClick={handleSubmit}
  260 + disabled={loading}
  261 + ></IconButton>
  262 + }
  263 + />
  264 + </div>
  265 + );
  266 +}
  1 +.loading-content {
  2 + display: flex;
  3 + flex-direction: column;
  4 + justify-content: center;
  5 + align-items: center;
  6 + height: 100%;
  7 + width: 100%;
  8 + gap: 5px;
  9 +}
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 "@/app/components/writing/writing.module.scss";
3 import clsx from "clsx"; 4 import clsx from "clsx";
4 5
5 import { WriteSiderBar } from "./write-siderBar"; 6 import { WriteSiderBar } from "./write-siderBar";
6 import { WindowContent } from "@/app/components/home"; 7 import { WindowContent } from "@/app/components/home";
7 -import { useMobileScreen, copyToClipboard } from "@/app/utils"; 8 +import { useMobileScreen } from "@/app/utils";
8 import { IconButton } from "../button"; 9 import { IconButton } from "../button";
9 import Locale from "@/app/locales"; 10 import Locale from "@/app/locales";
10 import { Path } from "@/app/constant"; 11 import { Path } from "@/app/constant";
11 import { useNavigate } from "react-router-dom"; 12 import { useNavigate } from "react-router-dom";
12 import { getClientConfig } from "@/app/config/client"; 13 import { getClientConfig } from "@/app/config/client";
13 -import React, { MutableRefObject, useEffect, useMemo, useRef, useState } from "react"; 14 +import React, { useMemo, useRef, useState } from "react";
14 import { useAppConfig } from "@/app/store"; 15 import { useAppConfig } from "@/app/store";
15 import { ChatAction } from "../chat"; 16 import { ChatAction } from "../chat";
16 import { useWindowSize } from "@/app/utils"; 17 import { useWindowSize } from "@/app/utils";
17 import { exportWord } from "@/app/utils/excelAndWordUtils/word"; 18 import { exportWord } from "@/app/utils/excelAndWordUtils/word";
18 import { HTMLPreview } from "../artifacts"; 19 import { HTMLPreview } from "../artifacts";
19 -import ReactQuill from 'react-quill';  
20 -import 'react-quill/dist/quill.snow.css'; 20 +import ReactQuill from "react-quill";
  21 +import "react-quill/dist/quill.snow.css";
21 22
22 import ReturnIcon from "@/app/icons/return.svg"; 23 import ReturnIcon from "@/app/icons/return.svg";
23 import MinIcon from "@/app/icons/min.svg"; 24 import MinIcon from "@/app/icons/min.svg";
@@ -25,196 +26,217 @@ import MaxIcon from "@/app/icons/max.svg"; @@ -25,196 +26,217 @@ import MaxIcon from "@/app/icons/max.svg";
25 import SDIcon from "@/app/icons/sd.svg"; 26 import SDIcon from "@/app/icons/sd.svg";
26 import LoadingIcon from "@/app/icons/loading.svg"; 27 import LoadingIcon from "@/app/icons/loading.svg";
27 import BotIcon from "@/app/icons/bot.svg"; 28 import BotIcon from "@/app/icons/bot.svg";
28 -import CloseIcon from "@/app/icons/close.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";
31 import CopyIcon from "@/app/icons/copy.svg"; 31 import CopyIcon from "@/app/icons/copy.svg";
32 import ExcelIcon from "@/app/icons/excel.svg"; 32 import ExcelIcon from "@/app/icons/excel.svg";
33 import WordIcon from "@/app/icons/word.svg"; 33 import WordIcon from "@/app/icons/word.svg";
34 -import MindIcon from "@/app/icons/mind.svg" 34 +import MindIcon from "@/app/icons/mind.svg";
35 import PptIcon from "@/app/icons/ppt.svg"; 35 import PptIcon from "@/app/icons/ppt.svg";
36 import PdfIcon from "@/app/icons/pdf.svg"; 36 import PdfIcon from "@/app/icons/pdf.svg";
37 import { message } from "antd"; 37 import { message } from "antd";
38 38
39 export function WritingPage() { 39 export function WritingPage() {
40 - const isMobileScreen = useMobileScreen();  
41 - const navigate = useNavigate();  
42 - const clientConfig = useMemo(() => getClientConfig(), []);  
43 - const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;  
44 - const config = useAppConfig();  
45 - const scrollRef = useRef<HTMLDivElement>(null);  
46 - const isWriting = location.pathname === Path.Writing;  
47 - const { height } = useWindowSize();  
48 - const [isEdit, setIsEdit] = useState(false) 40 + const isMobileScreen = useMobileScreen();
  41 + const navigate = useNavigate();
  42 + const clientConfig = useMemo(() => getClientConfig(), []);
  43 + const showMaxIcon = !isMobileScreen && !clientConfig?.isApp;
  44 + const config = useAppConfig();
  45 + const scrollRef = useRef<HTMLDivElement>(null);
  46 + const isWriting = location.pathname === Path.Writing;
  47 + const { height } = useWindowSize();
  48 + const [isEdit, setIsEdit] = useState(false);
  49 + const [loading, setLoading] = useState(false);
  50 + const quillRef = useRef<ReactQuill | null>(null);
  51 + const [htmlCode, setHtmlCode] = useState("");
49 52
50 - const quillRef = useRef<ReactQuill | null>(null); 53 + //编辑器
  54 + const toolbarOptions = [
  55 + [{ font: [] }, { size: ["small", false, "large", "huge"] }],
  56 + [{ header: [1, 2, 3, 4, 5, 6, false] }],
  57 + ["bold", "italic", "underline", "strike"],
  58 + [{ list: "ordered" }, { list: "bullet" }, { align: [] }],
  59 + [{ color: [] }, { background: [] }],
  60 + ["link", "image"],
  61 + ];
51 62
52 - const [htmlCode, setHtmlCode] = useState('');  
53 - //编辑器  
54 - const toolbarOptions = [  
55 - [{ 'font': [] }, { 'size': ['small', false, 'large', 'huge'] }],  
56 - [{ 'header': [1, 2, 3, 4, 5, 6, false] }],  
57 - ['bold', 'italic', 'underline', 'strike'],  
58 - [{ 'list': 'ordered' }, { 'list': 'bullet' }, { 'align': [] }],  
59 - [{ 'color': [] }, { 'background': [] }],  
60 - ['link', 'image'],  
61 - ]; 63 + const copyToClipboard = () => {
  64 + // 检查quillRef.current是否为null
  65 + if (quillRef.current) {
  66 + const editor = quillRef.current.getEditor(); // 获取编辑器实例
  67 + const range = editor.getSelection(); // 获取当前选择的范围
  68 + const text = editor.getText(); // 获取编辑器中的文本内容
62 69
63 - const copyToClipboard = () => {  
64 - // 检查quillRef.current是否为null  
65 - if (quillRef.current) {  
66 - const editor = quillRef.current.getEditor(); // 获取编辑器实例  
67 - const range = editor.getSelection(); // 获取当前选择的范围  
68 - const text = editor.getText(); // 获取编辑器中的文本内容 70 + if (range && range.length > 0) {
  71 + // 如果有选中的文本,复制选中的内容
  72 + const selectedText = text.substring(
  73 + range.index,
  74 + range.index + range.length,
  75 + );
  76 + navigator.clipboard
  77 + .writeText(selectedText)
  78 + .then(() => {
  79 + message.success("复制成功");
  80 + })
  81 + .catch((err) => {
  82 + message.error("复制失败:");
  83 + });
  84 + } else {
  85 + // 如果没有选择文本,就复制全部内容
  86 + navigator.clipboard
  87 + .writeText(text)
  88 + .then(() => {
  89 + message.success("复制成功");
  90 + })
  91 + .catch((err) => {
  92 + message.error("复制失败:");
  93 + });
  94 + }
  95 + } else {
  96 + console.error("Quill编辑器尚未初始化");
  97 + }
  98 + };
69 99
70 - if (range && range.length > 0) {  
71 - // 如果有选中的文本,复制选中的内容  
72 - const selectedText = text.substring(range.index, range.index + range.length);  
73 - navigator.clipboard.writeText(selectedText)  
74 - .then(() => {  
75 - message.success("复制成功")  
76 - })  
77 - .catch((err) => {  
78 - message.error('复制失败:');  
79 - });  
80 - } else {  
81 - // 如果没有选择文本,就复制全部内容  
82 - navigator.clipboard.writeText(text)  
83 - .then(() => {  
84 - message.success("复制成功")  
85 - })  
86 - .catch((err) => {  
87 - message.error('复制失败:');  
88 - });  
89 - }  
90 - } else {  
91 - console.error('Quill编辑器尚未初始化');  
92 - }  
93 - };  
94 -  
95 - return (  
96 - <>  
97 - <WriteSiderBar className={clsx({ [homeStyles["sidebar-show"]]: isWriting })} htmlCode={htmlCode} setHtmlCode={setHtmlCode}/>  
98 - <WindowContent>  
99 - <div className={chatStyles.chat} key={"1"}>  
100 - <div className="window-header" data-tauri-drag-region>  
101 - {isMobileScreen && (  
102 - <div className="window-actions">  
103 - <div className={"window-action-button"}>  
104 - <IconButton  
105 - icon={<ReturnIcon />}  
106 - bordered  
107 - title={Locale.Chat.Actions.ChatList}  
108 - onClick={() => navigate(Path.BgRemoval)}  
109 - />  
110 - </div>  
111 - </div>  
112 - )}  
113 - <div  
114 - className={clsx(  
115 - "window-header-title",  
116 - chatStyles["chat-body-title"],  
117 - )}  
118 - >  
119 - <div className={`window-header-main-title`}>AI-Writing</div>  
120 - </div>  
121 - <div className={chatStyles["chat-message-actions"]}>  
122 - <div className={chatStyles["chat-input-actions"]}>  
123 - <ChatAction  
124 - text={Locale.Chat.Actions.ReWrite}  
125 - icon={<ReloadIcon />}  
126 - onClick={() => { }  
127 - }  
128 - />  
129 - <ChatAction  
130 - text={Locale.Chat.Actions.Copy}  
131 - icon={<CopyIcon />}  
132 - onClick={copyToClipboard}  
133 - />  
134 - {!isEdit ? (  
135 - <ChatAction  
136 - text={Locale.Chat.Actions.Edit}  
137 - icon={<EditIcon />}  
138 - onClick={() => { setIsEdit(true) }}  
139 - />  
140 - ) : (  
141 - <ChatAction  
142 - text="取消编辑"  
143 - icon={<EditIcon />}  
144 - onClick={() => { setIsEdit(false) }}  
145 - />  
146 - )} 100 + return (
  101 + <>
  102 + <WriteSiderBar
  103 + className={clsx({ [homeStyles["sidebar-show"]]: isWriting })}
  104 + htmlCode={htmlCode}
  105 + setHtmlCode={setHtmlCode}
  106 + loading={loading}
  107 + setLoading={setLoading}
  108 + />
  109 + <WindowContent>
  110 + <div className={chatStyles.chat} key={"1"}>
  111 + <div className="window-header" data-tauri-drag-region>
  112 + {isMobileScreen && (
  113 + <div className="window-actions">
  114 + <div className={"window-action-button"}>
  115 + <IconButton
  116 + icon={<ReturnIcon />}
  117 + bordered
  118 + title={Locale.Chat.Actions.ChatList}
  119 + onClick={() => navigate(Path.BgRemoval)}
  120 + />
  121 + </div>
  122 + </div>
  123 + )}
  124 + <div
  125 + className={clsx(
  126 + "window-header-title",
  127 + chatStyles["chat-body-title"],
  128 + )}
  129 + >
  130 + <div className={`window-header-main-title`}>AI-Writing</div>
  131 + </div>
  132 + <div className={chatStyles["chat-message-actions"]}>
  133 + <div className={chatStyles["chat-input-actions"]}>
  134 + <ChatAction
  135 + text={Locale.Chat.Actions.ReWrite}
  136 + icon={<ReloadIcon />}
  137 + onClick={() => {}}
  138 + />
  139 + <ChatAction
  140 + text={Locale.Chat.Actions.Copy}
  141 + icon={<CopyIcon />}
  142 + onClick={copyToClipboard}
  143 + />
  144 + {!isEdit ? (
  145 + <ChatAction
  146 + text={Locale.Chat.Actions.Edit}
  147 + icon={<EditIcon />}
  148 + onClick={() => {
  149 + setIsEdit(true);
  150 + }}
  151 + />
  152 + ) : (
  153 + <ChatAction
  154 + text="取消编辑"
  155 + icon={<EditIcon />}
  156 + onClick={() => {
  157 + setIsEdit(false);
  158 + }}
  159 + />
  160 + )}
147 161
148 - <ChatAction  
149 - text={Locale.Chat.Actions.Pdf}  
150 - icon={<PdfIcon />}  
151 - onClick={() => { }}  
152 - />  
153 - {htmlCode&&  
154 - <ChatAction  
155 - text={Locale.Chat.Actions.Word}  
156 - icon={<WordIcon />}  
157 - onClick={()=>{exportWord(htmlCode)}}  
158 - />  
159 - }  
160 - <ChatAction  
161 - text={Locale.Chat.Actions.Excel}  
162 - icon={<ExcelIcon />}  
163 - onClick={() => { }}  
164 - />  
165 - <ChatAction  
166 - text={Locale.Chat.Actions.Ppt}  
167 - icon={<PptIcon />}  
168 - onClick={() => { }}  
169 - />  
170 - <ChatAction  
171 - text={Locale.Chat.Actions.Mind}  
172 - icon={<MindIcon />}  
173 - onClick={() => { }}  
174 - />  
175 - </div>  
176 - </div>  
177 - <div className="window-actions">  
178 - {showMaxIcon && (  
179 - <div className="window-action-button">  
180 - <IconButton  
181 - aria={Locale.Chat.Actions.FullScreen}  
182 - icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}  
183 - bordered  
184 - onClick={() => {  
185 - config.update(  
186 - (config) => (config.tightBorder = !config.tightBorder),  
187 - );  
188 - }}  
189 - />  
190 - </div>  
191 - )}  
192 - {isMobileScreen && <SDIcon width={50} height={50} />}  
193 - </div>  
194 - </div>  
195 - <div className={chatStyles["chat-body"]} ref={scrollRef}>  
196 - {htmlCode && (  
197 - isEdit ? (  
198 - <ReactQuill  
199 - ref={quillRef}  
200 - theme="snow"  
201 - value={htmlCode}  
202 - onChange={setHtmlCode}  
203 - modules={{  
204 - toolbar: toolbarOptions  
205 - }}  
206 - />  
207 - ) : (  
208 - <HTMLPreview  
209 - code={htmlCode}  
210 - autoHeight={!document.fullscreenElement}  
211 - height={!document.fullscreenElement ? 600 : height}  
212 - />  
213 - )  
214 - )}  
215 - </div> 162 + <ChatAction
  163 + text={Locale.Chat.Actions.Pdf}
  164 + icon={<PdfIcon />}
  165 + onClick={() => {}}
  166 + />
  167 + {htmlCode && (
  168 + <ChatAction
  169 + text={Locale.Chat.Actions.Word}
  170 + icon={<WordIcon />}
  171 + onClick={() => {
  172 + exportWord(htmlCode);
  173 + }}
  174 + />
  175 + )}
  176 + <ChatAction
  177 + text={Locale.Chat.Actions.Excel}
  178 + icon={<ExcelIcon />}
  179 + onClick={() => {}}
  180 + />
  181 + <ChatAction
  182 + text={Locale.Chat.Actions.Ppt}
  183 + icon={<PptIcon />}
  184 + onClick={() => {}}
  185 + />
  186 + <ChatAction
  187 + text={Locale.Chat.Actions.Mind}
  188 + icon={<MindIcon />}
  189 + onClick={() => {}}
  190 + />
  191 + </div>
  192 + </div>
  193 + <div className="window-actions">
  194 + {showMaxIcon && (
  195 + <div className="window-action-button">
  196 + <IconButton
  197 + aria={Locale.Chat.Actions.FullScreen}
  198 + icon={config.tightBorder ? <MinIcon /> : <MaxIcon />}
  199 + bordered
  200 + onClick={() => {
  201 + config.update(
  202 + (config) => (config.tightBorder = !config.tightBorder),
  203 + );
  204 + }}
  205 + />
216 </div> 206 </div>
217 - </WindowContent>  
218 - </>  
219 - )  
220 -}  
  207 + )}
  208 + {isMobileScreen && <SDIcon width={50} height={50} />}
  209 + </div>
  210 + </div>
  211 + <div className={chatStyles["chat-body"]} ref={scrollRef}>
  212 + {loading ? (
  213 + <div className={clsx("no-dark", styles["loading-content"])}>
  214 + <BotIcon />
  215 + <LoadingIcon />
  216 + </div>
  217 + ) : (
  218 + htmlCode &&
  219 + (isEdit ? (
  220 + <ReactQuill
  221 + ref={quillRef}
  222 + theme="snow"
  223 + value={htmlCode}
  224 + onChange={setHtmlCode}
  225 + modules={{
  226 + toolbar: toolbarOptions,
  227 + }}
  228 + />
  229 + ) : (
  230 + <HTMLPreview
  231 + code={htmlCode}
  232 + autoHeight={!document.fullscreenElement}
  233 + height={!document.fullscreenElement ? 600 : height}
  234 + />
  235 + ))
  236 + )}
  237 + </div>
  238 + </div>
  239 + </WindowContent>
  240 + </>
  241 + );
  242 +}
  1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1742974696172" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4604" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M870.4 204.8c-18.6368 0-36.1472 5.0176-51.2 13.7728V153.6a102.5024 102.5024 0 0 0-159.3856-85.0432C645.7856 28.672 607.7952 0 563.2 0S480.5632 28.672 466.5856 68.5568A102.5024 102.5024 0 0 0 307.2 153.6v377.4976L238.2848 411.648a99.6864 99.6864 0 0 0-61.3888-48.7936 95.5392 95.5392 0 0 0-74.8544 10.3424c-46.4384 27.8528-64.1536 90.8288-39.424 140.3904 1.536 3.1232 34.2016 70.0416 136.192 273.92 48.0256 96 100.7104 164.6592 156.6208 203.9808 43.8784 30.8736 74.1888 32.4608 79.8208 32.4608h256c43.5712 0 84.0704-14.1824 120.4224-42.0864 34.1504-26.2656 63.7952-64.256 88.064-112.8448 47.8208-95.6416 73.1136-227.9424 73.1136-382.6688v-179.2c0-56.4736-45.9264-102.4-102.4-102.4z m51.2 281.6c0 146.7904-23.3984 271.1552-67.6864 359.7312C825.0368 903.8848 773.3248 972.8 691.2 972.8H435.712c-1.9968-0.1536-23.552-2.56-56.064-26.88-32.4096-24.2688-82.176-75.3664-135.0656-181.248-103.7824-207.5648-135.68-272.9472-135.9872-273.5616l-0.1024-0.2048c-12.8512-25.7536-3.7376-59.4944 19.9168-73.6768a44.8512 44.8512 0 0 1 35.072-4.864 48.9472 48.9472 0 0 1 30.0544 24.1664l0.3072 0.512 79.9232 138.496c16.3328 29.8496 34.7136 42.3936 54.6304 37.3248 19.968-5.0688 30.0544-25.0368 30.0544-59.2384V153.6c0-28.2112 22.9888-51.2 51.2-51.2s51.2 22.9888 51.2 51.2v332.8a25.6 25.6 0 0 0 51.2 0V102.4c0-28.2112 22.9888-51.2 51.2-51.2s51.2 22.9888 51.2 51.2v384a25.6 25.6 0 0 0 51.2 0V153.6c0-28.2112 22.9888-51.2 51.2-51.2s51.2 22.9888 51.2 51.2v384a25.6 25.6 0 0 0 51.2 0V307.2c0-28.2112 22.9888-51.2 51.2-51.2s51.2 22.9888 51.2 51.2v179.2z" fill="" p-id="4605"></path></svg>
  1 +export type writePromptParam = {
  2 + writingPurposeName: string;
  3 + writingStyleName: string;
  4 + writingLanguageName: string;
  5 + prompt: string;
  6 + writingTypeName: string;
  7 + isImgName: string;
  8 + writingCount: string;
  9 +};
  1 +import type { writePromptParam } from "@/app/types/prompt";
  2 +
  3 +export function getWrtingPrompt(param: writePromptParam) {
  4 + const isImg = `文案要配上图片,实现图文混排,要美观,要符合${param.writingPurposeName}的排版标准和写作风格,写作风格要${param.writingStyleName},
  5 + 你没有图片没关系,把图文混排的效果实现,并在你认为要插入图片的地方将图片的Prompt用英文输出给:![description](https://image.pollinations.ai/prompt/description?nologo=true),记得图片地址后面的?nologo=true一定不能去掉了,
  6 + 因为这个语法可以自动按照提示生成并渲染图片。你可以帮我大幅提高生成图片质量和丰富程度,比如增加相机光圈、具体场景描述等内容,注意图片一定要用<img,否则在HTML下图片可能显示不了`;
  7 + const input = `帮我使用${param.writingLanguageName}写一篇主题是${
  8 + param.prompt
  9 + }的${param.writingTypeName},${
  10 + param.isImgName === "是" ? isImg : ""
  11 + },字数要求不少于${
  12 + param.writingCount
  13 + }字,字数不包括html代码和图片Prompt。输出成标准的html,直接给结果,不要做任何解释`;
  14 + return input;
  15 +}
  16 +
  17 +export function getBgPrompt(content: string) {
  18 + const input = `你现扮演生成创意思图片的提示词工程师,参考我的描述“${content}”帮我做优化润色5组,返回的数据用''分割,直接输出结果,不要做解释`;
  19 + return input;
  20 +}
  21 +
  22 +export function getMindPrompt(content: string) {
  23 + return `请你帮我生成一份以"${content}"为主题的思维导图数据,请严格遵循以下要求生成思维导图数据:
  24 + 1. 所有键名必须使用双引号
  25 + 2. 所有字符串值必须使用双引号
  26 + 3. 确保没有尾随逗号
  27 + 4. 按这个模板结构生成::{
  28 + "nodeData": {
  29 + "id": "root",
  30 + "topic": "中心主题",
  31 + "children": [
  32 + {
  33 + "id": "d451a724b7c10970",
  34 + "topic": "sub1",
  35 + "children": [
  36 + {
  37 + "id": "d451a77ca7348eae",
  38 + "topic": "sub2",
  39 + },],
  40 + },
  41 + ],
  42 + },}
  43 + 只需要返回数据,不要做任何解释
  44 + `;
  45 +}
1 import webpack from "webpack"; 1 import webpack from "webpack";
2 -  
3 const mode = process.env.BUILD_MODE ?? "standalone"; 2 const mode = process.env.BUILD_MODE ?? "standalone";
4 console.log("[Next] build mode", mode); 3 console.log("[Next] build mode", mode);
5 4
@@ -13,7 +12,6 @@ const nextConfig = { @@ -13,7 +12,6 @@ const nextConfig = {
13 test: /\.svg$/, 12 test: /\.svg$/,
14 use: ["@svgr/webpack"], 13 use: ["@svgr/webpack"],
15 }); 14 });
16 -  
17 if (disableChunk) { 15 if (disableChunk) {
18 config.plugins.push( 16 config.plugins.push(
19 new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }), 17 new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),
此 diff 太大无法显示。
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 "@hello-pangea/dnd": "^16.5.0", 25 "@hello-pangea/dnd": "^16.5.0",
26 "@modelcontextprotocol/sdk": "^1.0.4", 26 "@modelcontextprotocol/sdk": "^1.0.4",
27 "@next/third-parties": "^14.1.0", 27 "@next/third-parties": "^14.1.0",
  28 + "@radix-ui/react-slot": "^1.1.2",
28 "@svgr/webpack": "^6.5.1", 29 "@svgr/webpack": "^6.5.1",
29 "@vercel/analytics": "^0.1.11", 30 "@vercel/analytics": "^0.1.11",
30 "@vercel/speed-insights": "^1.0.2", 31 "@vercel/speed-insights": "^1.0.2",
@@ -44,8 +45,10 @@ @@ -44,8 +45,10 @@
44 "html-to-image": "^1.11.11", 45 "html-to-image": "^1.11.11",
45 "idb-keyval": "^6.2.1", 46 "idb-keyval": "^6.2.1",
46 "lodash-es": "^4.17.21", 47 "lodash-es": "^4.17.21",
  48 + "lucide-react": "^0.484.0",
47 "markdown-to-txt": "^2.0.1", 49 "markdown-to-txt": "^2.0.1",
48 "mermaid": "^10.6.1", 50 "mermaid": "^10.6.1",
  51 + "mind-elixir": "^4.4.3",
49 "nanoid": "^5.0.3", 52 "nanoid": "^5.0.3",
50 "next": "^14.1.1", 53 "next": "^14.1.1",
51 "node-fetch": "^3.3.1", 54 "node-fetch": "^3.3.1",
@@ -66,8 +69,7 @@ @@ -66,8 +69,7 @@
66 "spark-md5": "^3.0.2", 69 "spark-md5": "^3.0.2",
67 "use-debounce": "^9.0.4", 70 "use-debounce": "^9.0.4",
68 "xlsx": "^0.18.5", 71 "xlsx": "^0.18.5",
69 - "zod": "^3.24.1",  
70 - "zustand": "^4.3.8" 72 + "zod": "^3.24.1"
71 }, 73 },
72 "devDependencies": { 74 "devDependencies": {
73 "@tauri-apps/api": "^2.1.1", 75 "@tauri-apps/api": "^2.1.1",
@@ -103,8 +105,9 @@ @@ -103,8 +105,9 @@
103 "ts-node": "^10.9.2", 105 "ts-node": "^10.9.2",
104 "tsx": "^4.16.0", 106 "tsx": "^4.16.0",
105 "typescript": "5.2.2", 107 "typescript": "5.2.2",
  108 + "vue-loader": "^17.3.1",
106 "watch": "^1.0.2", 109 "watch": "^1.0.2",
107 - "webpack": "^5.88.1" 110 + "webpack": "^5.0.0-rc.6"
108 }, 111 },
109 "resolutions": { 112 "resolutions": {
110 "lint-staged/yaml": "^2.2.2" 113 "lint-staged/yaml": "^2.2.2"
@@ -21,8 +21,8 @@ @@ -21,8 +21,8 @@
21 ], 21 ],
22 "paths": { 22 "paths": {
23 "@/*": ["./*"] 23 "@/*": ["./*"]
24 - }, 24 + }
25 }, 25 },
26 "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
27 "exclude": ["node_modules"] 27 "exclude": ["node_modules"]
28 -} 28 +}
@@ -1533,6 +1533,11 @@ @@ -1533,6 +1533,11 @@
1533 resolved "https://registry.npmmirror.com/@fortaine/fetch-event-source/-/fetch-event-source-3.0.6.tgz" 1533 resolved "https://registry.npmmirror.com/@fortaine/fetch-event-source/-/fetch-event-source-3.0.6.tgz"
1534 integrity sha512-621GAuLMvKtyZQ3IA6nlDWhV1V/7PGOTNIGLUifxt0KzM+dZIweJ6F3XvQF3QnqeNfS1N7WQ0Kil1Di/lhChEw== 1534 integrity sha512-621GAuLMvKtyZQ3IA6nlDWhV1V/7PGOTNIGLUifxt0KzM+dZIweJ6F3XvQF3QnqeNfS1N7WQ0Kil1Di/lhChEw==
1535 1535
  1536 +"@gar/promisify@^1.0.1":
  1537 + version "1.1.3"
  1538 + resolved "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz"
  1539 + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
  1540 +
1536 "@hello-pangea/dnd@^16.5.0": 1541 "@hello-pangea/dnd@^16.5.0":
1537 version "16.5.0" 1542 version "16.5.0"
1538 resolved "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-16.5.0.tgz" 1543 resolved "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-16.5.0.tgz"
@@ -1781,71 +1786,38 @@ @@ -1781,71 +1786,38 @@
1781 "@jridgewell/set-array" "^1.0.0" 1786 "@jridgewell/set-array" "^1.0.0"
1782 "@jridgewell/sourcemap-codec" "^1.4.10" 1787 "@jridgewell/sourcemap-codec" "^1.4.10"
1783 1788
1784 -"@jridgewell/gen-mapping@^0.3.0":  
1785 - version "0.3.3"  
1786 - resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz"  
1787 - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==  
1788 - dependencies:  
1789 - "@jridgewell/set-array" "^1.0.1"  
1790 - "@jridgewell/sourcemap-codec" "^1.4.10"  
1791 - "@jridgewell/trace-mapping" "^0.3.9"  
1792 -  
1793 -"@jridgewell/gen-mapping@^0.3.2":  
1794 - version "0.3.2"  
1795 - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"  
1796 - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==  
1797 - dependencies:  
1798 - "@jridgewell/set-array" "^1.0.1"  
1799 - "@jridgewell/sourcemap-codec" "^1.4.10"  
1800 - "@jridgewell/trace-mapping" "^0.3.9"  
1801 -  
1802 -"@jridgewell/gen-mapping@^0.3.5":  
1803 - version "0.3.5"  
1804 - resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"  
1805 - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 1789 +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5":
  1790 + version "0.3.8"
  1791 + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz"
  1792 + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
1806 dependencies: 1793 dependencies:
1807 "@jridgewell/set-array" "^1.2.1" 1794 "@jridgewell/set-array" "^1.2.1"
1808 "@jridgewell/sourcemap-codec" "^1.4.10" 1795 "@jridgewell/sourcemap-codec" "^1.4.10"
1809 "@jridgewell/trace-mapping" "^0.3.24" 1796 "@jridgewell/trace-mapping" "^0.3.24"
1810 1797
1811 -"@jridgewell/resolve-uri@3.1.0":  
1812 - version "3.1.0"  
1813 - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"  
1814 - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==  
1815 -  
1816 "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": 1798 "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
1817 version "3.1.2" 1799 version "3.1.2"
1818 resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 1800 resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
1819 integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 1801 integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
1820 1802
1821 -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":  
1822 - version "1.1.2"  
1823 - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"  
1824 - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==  
1825 -  
1826 -"@jridgewell/set-array@^1.2.1": 1803 +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.2.1":
1827 version "1.2.1" 1804 version "1.2.1"
1828 resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz" 1805 resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz"
1829 integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 1806 integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
1830 1807
1831 "@jridgewell/source-map@^0.3.3": 1808 "@jridgewell/source-map@^0.3.3":
1832 - version "0.3.3"  
1833 - resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz"  
1834 - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== 1809 + version "0.3.6"
  1810 + resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz"
  1811 + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
1835 dependencies: 1812 dependencies:
1836 - "@jridgewell/gen-mapping" "^0.3.0"  
1837 - "@jridgewell/trace-mapping" "^0.3.9" 1813 + "@jridgewell/gen-mapping" "^0.3.5"
  1814 + "@jridgewell/trace-mapping" "^0.3.25"
1838 1815
1839 -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 1816 +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
1840 version "1.4.14" 1817 version "1.4.14"
1841 resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" 1818 resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
1842 integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 1819 integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
1843 1820
1844 -"@jridgewell/sourcemap-codec@^1.4.14":  
1845 - version "1.5.0"  
1846 - resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"  
1847 - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==  
1848 -  
1849 "@jridgewell/trace-mapping@0.3.9": 1821 "@jridgewell/trace-mapping@0.3.9":
1850 version "0.3.9" 1822 version "0.3.9"
1851 resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" 1823 resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
@@ -1854,7 +1826,7 @@ @@ -1854,7 +1826,7 @@
1854 "@jridgewell/resolve-uri" "^3.0.3" 1826 "@jridgewell/resolve-uri" "^3.0.3"
1855 "@jridgewell/sourcemap-codec" "^1.4.10" 1827 "@jridgewell/sourcemap-codec" "^1.4.10"
1856 1828
1857 -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 1829 +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9":
1858 version "0.3.25" 1830 version "0.3.25"
1859 resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" 1831 resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
1860 integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 1832 integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
@@ -1862,14 +1834,6 @@ @@ -1862,14 +1834,6 @@
1862 "@jridgewell/resolve-uri" "^3.1.0" 1834 "@jridgewell/resolve-uri" "^3.1.0"
1863 "@jridgewell/sourcemap-codec" "^1.4.14" 1835 "@jridgewell/sourcemap-codec" "^1.4.14"
1864 1836
1865 -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":  
1866 - version "0.3.17"  
1867 - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz"  
1868 - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==  
1869 - dependencies:  
1870 - "@jridgewell/resolve-uri" "3.1.0"  
1871 - "@jridgewell/sourcemap-codec" "1.4.14"  
1872 -  
1873 "@modelcontextprotocol/sdk@^1.0.4": 1837 "@modelcontextprotocol/sdk@^1.0.4":
1874 version "1.0.4" 1838 version "1.0.4"
1875 resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz" 1839 resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.4.tgz"
@@ -1964,11 +1928,39 @@ @@ -1964,11 +1928,39 @@
1964 "@nodelib/fs.scandir" "2.1.5" 1928 "@nodelib/fs.scandir" "2.1.5"
1965 fastq "^1.6.0" 1929 fastq "^1.6.0"
1966 1930
  1931 +"@npmcli/fs@^1.0.0":
  1932 + version "1.1.1"
  1933 + resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz"
  1934 + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==
  1935 + dependencies:
  1936 + "@gar/promisify" "^1.0.1"
  1937 + semver "^7.3.5"
  1938 +
  1939 +"@npmcli/move-file@^1.0.1":
  1940 + version "1.1.2"
  1941 + resolved "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz"
  1942 + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
  1943 + dependencies:
  1944 + mkdirp "^1.0.4"
  1945 + rimraf "^3.0.2"
  1946 +
1967 "@pkgr/core@^0.1.0": 1947 "@pkgr/core@^0.1.0":
1968 version "0.1.0" 1948 version "0.1.0"
1969 resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz" 1949 resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz"
1970 integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ== 1950 integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==
1971 1951
  1952 +"@radix-ui/react-compose-refs@1.1.1":
  1953 + version "1.1.1"
  1954 + resolved "https://registry.npmmirror.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz"
  1955 + integrity sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==
  1956 +
  1957 +"@radix-ui/react-slot@^1.1.2":
  1958 + version "1.1.2"
  1959 + resolved "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.1.2.tgz"
  1960 + integrity sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==
  1961 + dependencies:
  1962 + "@radix-ui/react-compose-refs" "1.1.1"
  1963 +
1972 "@rc-component/async-validator@^5.0.3": 1964 "@rc-component/async-validator@^5.0.3":
1973 version "5.0.4" 1965 version "5.0.4"
1974 resolved "https://registry.npmmirror.com/@rc-component/async-validator/-/async-validator-5.0.4.tgz" 1966 resolved "https://registry.npmmirror.com/@rc-component/async-validator/-/async-validator-5.0.4.tgz"
@@ -2437,10 +2429,10 @@ @@ -2437,10 +2429,10 @@
2437 "@types/react" "*" 2429 "@types/react" "*"
2438 immutable "~3.7.4" 2430 immutable "~3.7.4"
2439 2431
2440 -"@types/eslint-scope@^3.7.3":  
2441 - version "3.7.4"  
2442 - resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz"  
2443 - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== 2432 +"@types/eslint-scope@^3.7.0":
  2433 + version "3.7.7"
  2434 + resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz"
  2435 + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
2444 dependencies: 2436 dependencies:
2445 "@types/eslint" "*" 2437 "@types/eslint" "*"
2446 "@types/estree" "*" 2438 "@types/estree" "*"
@@ -2453,11 +2445,16 @@ @@ -2453,11 +2445,16 @@
2453 "@types/estree" "*" 2445 "@types/estree" "*"
2454 "@types/json-schema" "*" 2446 "@types/json-schema" "*"
2455 2447
2456 -"@types/estree@*", "@types/estree@^1.0.0": 2448 +"@types/estree@*":
2457 version "1.0.1" 2449 version "1.0.1"
2458 resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz" 2450 resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz"
2459 integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== 2451 integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
2460 2452
  2453 +"@types/estree@^0.0.45":
  2454 + version "0.0.45"
  2455 + resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.45.tgz"
  2456 + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
  2457 +
2461 "@types/file-saver@^2.0.7": 2458 "@types/file-saver@^2.0.7":
2462 version "2.0.7" 2459 version "2.0.7"
2463 resolved "https://registry.npmmirror.com/@types/file-saver/-/file-saver-2.0.7.tgz" 2460 resolved "https://registry.npmmirror.com/@types/file-saver/-/file-saver-2.0.7.tgz"
@@ -2617,7 +2614,7 @@ @@ -2617,7 +2614,7 @@
2617 2614
2618 "@types/quill@^1.3.10": 2615 "@types/quill@^1.3.10":
2619 version "1.3.10" 2616 version "1.3.10"
2620 - resolved "https://registry.npmmirror.com/@types/quill/-/quill-1.3.10.tgz#dc1f7b6587f7ee94bdf5291bc92289f6f0497613" 2617 + resolved "https://registry.npmmirror.com/@types/quill/-/quill-1.3.10.tgz"
2621 integrity sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw== 2618 integrity sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==
2622 dependencies: 2619 dependencies:
2623 parchment "^1.1.2" 2620 parchment "^1.1.2"
@@ -2749,125 +2746,149 @@ @@ -2749,125 +2746,149 @@
2749 resolved "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.0.2.tgz" 2746 resolved "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.0.2.tgz"
2750 integrity sha512-y5HWeB6RmlyVYxJAMrjiDEz8qAIy2cit0fhBq+MD78WaUwQvuBnQlX4+5MuwVTWi46bV3klaRMq83u9zUy1KOg== 2747 integrity sha512-y5HWeB6RmlyVYxJAMrjiDEz8qAIy2cit0fhBq+MD78WaUwQvuBnQlX4+5MuwVTWi46bV3klaRMq83u9zUy1KOg==
2751 2748
2752 -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":  
2753 - version "1.11.6"  
2754 - resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz"  
2755 - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== 2749 +"@webassemblyjs/ast@1.9.0":
  2750 + version "1.9.0"
  2751 + resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz"
  2752 + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
2756 dependencies: 2753 dependencies:
2757 - "@webassemblyjs/helper-numbers" "1.11.6"  
2758 - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 2754 + "@webassemblyjs/helper-module-context" "1.9.0"
  2755 + "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
  2756 + "@webassemblyjs/wast-parser" "1.9.0"
2759 2757
2760 -"@webassemblyjs/floating-point-hex-parser@1.11.6":  
2761 - version "1.11.6"  
2762 - resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz"  
2763 - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== 2758 +"@webassemblyjs/floating-point-hex-parser@1.9.0":
  2759 + version "1.9.0"
  2760 + resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz"
  2761 + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
2764 2762
2765 -"@webassemblyjs/helper-api-error@1.11.6":  
2766 - version "1.11.6"  
2767 - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz"  
2768 - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== 2763 +"@webassemblyjs/helper-api-error@1.9.0":
  2764 + version "1.9.0"
  2765 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz"
  2766 + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
2769 2767
2770 -"@webassemblyjs/helper-buffer@1.11.6":  
2771 - version "1.11.6"  
2772 - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz"  
2773 - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== 2768 +"@webassemblyjs/helper-buffer@1.9.0":
  2769 + version "1.9.0"
  2770 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz"
  2771 + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
2774 2772
2775 -"@webassemblyjs/helper-numbers@1.11.6":  
2776 - version "1.11.6"  
2777 - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz"  
2778 - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== 2773 +"@webassemblyjs/helper-code-frame@1.9.0":
  2774 + version "1.9.0"
  2775 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz"
  2776 + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
2779 dependencies: 2777 dependencies:
2780 - "@webassemblyjs/floating-point-hex-parser" "1.11.6"  
2781 - "@webassemblyjs/helper-api-error" "1.11.6"  
2782 - "@xtuc/long" "4.2.2" 2778 + "@webassemblyjs/wast-printer" "1.9.0"
  2779 +
  2780 +"@webassemblyjs/helper-fsm@1.9.0":
  2781 + version "1.9.0"
  2782 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz"
  2783 + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
  2784 +
  2785 +"@webassemblyjs/helper-module-context@1.9.0":
  2786 + version "1.9.0"
  2787 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz"
  2788 + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
  2789 + dependencies:
  2790 + "@webassemblyjs/ast" "1.9.0"
2783 2791
2784 -"@webassemblyjs/helper-wasm-bytecode@1.11.6":  
2785 - version "1.11.6"  
2786 - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz"  
2787 - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== 2792 +"@webassemblyjs/helper-wasm-bytecode@1.9.0":
  2793 + version "1.9.0"
  2794 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz"
  2795 + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
2788 2796
2789 -"@webassemblyjs/helper-wasm-section@1.11.6":  
2790 - version "1.11.6"  
2791 - resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz"  
2792 - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== 2797 +"@webassemblyjs/helper-wasm-section@1.9.0":
  2798 + version "1.9.0"
  2799 + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz"
  2800 + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
2793 dependencies: 2801 dependencies:
2794 - "@webassemblyjs/ast" "1.11.6"  
2795 - "@webassemblyjs/helper-buffer" "1.11.6"  
2796 - "@webassemblyjs/helper-wasm-bytecode" "1.11.6"  
2797 - "@webassemblyjs/wasm-gen" "1.11.6" 2802 + "@webassemblyjs/ast" "1.9.0"
  2803 + "@webassemblyjs/helper-buffer" "1.9.0"
  2804 + "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
  2805 + "@webassemblyjs/wasm-gen" "1.9.0"
2798 2806
2799 -"@webassemblyjs/ieee754@1.11.6":  
2800 - version "1.11.6"  
2801 - resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz"  
2802 - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== 2807 +"@webassemblyjs/ieee754@1.9.0":
  2808 + version "1.9.0"
  2809 + resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz"
  2810 + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
2803 dependencies: 2811 dependencies:
2804 "@xtuc/ieee754" "^1.2.0" 2812 "@xtuc/ieee754" "^1.2.0"
2805 2813
2806 -"@webassemblyjs/leb128@1.11.6":  
2807 - version "1.11.6"  
2808 - resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz"  
2809 - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== 2814 +"@webassemblyjs/leb128@1.9.0":
  2815 + version "1.9.0"
  2816 + resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz"
  2817 + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
2810 dependencies: 2818 dependencies:
2811 "@xtuc/long" "4.2.2" 2819 "@xtuc/long" "4.2.2"
2812 2820
2813 -"@webassemblyjs/utf8@1.11.6":  
2814 - version "1.11.6"  
2815 - resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz"  
2816 - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==  
2817 -  
2818 -"@webassemblyjs/wasm-edit@^1.11.5":  
2819 - version "1.11.6"  
2820 - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz"  
2821 - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==  
2822 - dependencies:  
2823 - "@webassemblyjs/ast" "1.11.6"  
2824 - "@webassemblyjs/helper-buffer" "1.11.6"  
2825 - "@webassemblyjs/helper-wasm-bytecode" "1.11.6"  
2826 - "@webassemblyjs/helper-wasm-section" "1.11.6"  
2827 - "@webassemblyjs/wasm-gen" "1.11.6"  
2828 - "@webassemblyjs/wasm-opt" "1.11.6"  
2829 - "@webassemblyjs/wasm-parser" "1.11.6"  
2830 - "@webassemblyjs/wast-printer" "1.11.6"  
2831 -  
2832 -"@webassemblyjs/wasm-gen@1.11.6":  
2833 - version "1.11.6"  
2834 - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz"  
2835 - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==  
2836 - dependencies:  
2837 - "@webassemblyjs/ast" "1.11.6"  
2838 - "@webassemblyjs/helper-wasm-bytecode" "1.11.6"  
2839 - "@webassemblyjs/ieee754" "1.11.6"  
2840 - "@webassemblyjs/leb128" "1.11.6"  
2841 - "@webassemblyjs/utf8" "1.11.6"  
2842 -  
2843 -"@webassemblyjs/wasm-opt@1.11.6":  
2844 - version "1.11.6"  
2845 - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz"  
2846 - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==  
2847 - dependencies:  
2848 - "@webassemblyjs/ast" "1.11.6"  
2849 - "@webassemblyjs/helper-buffer" "1.11.6"  
2850 - "@webassemblyjs/wasm-gen" "1.11.6"  
2851 - "@webassemblyjs/wasm-parser" "1.11.6"  
2852 -  
2853 -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":  
2854 - version "1.11.6"  
2855 - resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz"  
2856 - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==  
2857 - dependencies:  
2858 - "@webassemblyjs/ast" "1.11.6"  
2859 - "@webassemblyjs/helper-api-error" "1.11.6"  
2860 - "@webassemblyjs/helper-wasm-bytecode" "1.11.6"  
2861 - "@webassemblyjs/ieee754" "1.11.6"  
2862 - "@webassemblyjs/leb128" "1.11.6"  
2863 - "@webassemblyjs/utf8" "1.11.6"  
2864 -  
2865 -"@webassemblyjs/wast-printer@1.11.6":  
2866 - version "1.11.6"  
2867 - resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz"  
2868 - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==  
2869 - dependencies:  
2870 - "@webassemblyjs/ast" "1.11.6" 2821 +"@webassemblyjs/utf8@1.9.0":
  2822 + version "1.9.0"
  2823 + resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz"
  2824 + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
  2825 +
  2826 +"@webassemblyjs/wasm-edit@1.9.0":
  2827 + version "1.9.0"
  2828 + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz"
  2829 + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
  2830 + dependencies:
  2831 + "@webassemblyjs/ast" "1.9.0"
  2832 + "@webassemblyjs/helper-buffer" "1.9.0"
  2833 + "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
  2834 + "@webassemblyjs/helper-wasm-section" "1.9.0"
  2835 + "@webassemblyjs/wasm-gen" "1.9.0"
  2836 + "@webassemblyjs/wasm-opt" "1.9.0"
  2837 + "@webassemblyjs/wasm-parser" "1.9.0"
  2838 + "@webassemblyjs/wast-printer" "1.9.0"
  2839 +
  2840 +"@webassemblyjs/wasm-gen@1.9.0":
  2841 + version "1.9.0"
  2842 + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz"
  2843 + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
  2844 + dependencies:
  2845 + "@webassemblyjs/ast" "1.9.0"
  2846 + "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
  2847 + "@webassemblyjs/ieee754" "1.9.0"
  2848 + "@webassemblyjs/leb128" "1.9.0"
  2849 + "@webassemblyjs/utf8" "1.9.0"
  2850 +
  2851 +"@webassemblyjs/wasm-opt@1.9.0":
  2852 + version "1.9.0"
  2853 + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz"
  2854 + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
  2855 + dependencies:
  2856 + "@webassemblyjs/ast" "1.9.0"
  2857 + "@webassemblyjs/helper-buffer" "1.9.0"
  2858 + "@webassemblyjs/wasm-gen" "1.9.0"
  2859 + "@webassemblyjs/wasm-parser" "1.9.0"
  2860 +
  2861 +"@webassemblyjs/wasm-parser@1.9.0":
  2862 + version "1.9.0"
  2863 + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz"
  2864 + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
  2865 + dependencies:
  2866 + "@webassemblyjs/ast" "1.9.0"
  2867 + "@webassemblyjs/helper-api-error" "1.9.0"
  2868 + "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
  2869 + "@webassemblyjs/ieee754" "1.9.0"
  2870 + "@webassemblyjs/leb128" "1.9.0"
  2871 + "@webassemblyjs/utf8" "1.9.0"
  2872 +
  2873 +"@webassemblyjs/wast-parser@1.9.0":
  2874 + version "1.9.0"
  2875 + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz"
  2876 + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
  2877 + dependencies:
  2878 + "@webassemblyjs/ast" "1.9.0"
  2879 + "@webassemblyjs/floating-point-hex-parser" "1.9.0"
  2880 + "@webassemblyjs/helper-api-error" "1.9.0"
  2881 + "@webassemblyjs/helper-code-frame" "1.9.0"
  2882 + "@webassemblyjs/helper-fsm" "1.9.0"
  2883 + "@xtuc/long" "4.2.2"
  2884 +
  2885 +"@webassemblyjs/wast-printer@1.9.0":
  2886 + version "1.9.0"
  2887 + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz"
  2888 + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
  2889 + dependencies:
  2890 + "@webassemblyjs/ast" "1.9.0"
  2891 + "@webassemblyjs/wast-parser" "1.9.0"
2871 "@xtuc/long" "4.2.2" 2892 "@xtuc/long" "4.2.2"
2872 2893
2873 "@xmldom/xmldom@^0.9.7": 2894 "@xmldom/xmldom@^0.9.7":
@@ -2920,11 +2941,6 @@ acorn-globals@^7.0.0: @@ -2920,11 +2941,6 @@ acorn-globals@^7.0.0:
2920 acorn "^8.1.0" 2941 acorn "^8.1.0"
2921 acorn-walk "^8.0.2" 2942 acorn-walk "^8.0.2"
2922 2943
2923 -acorn-import-assertions@^1.9.0:  
2924 - version "1.9.0"  
2925 - resolved "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz"  
2926 - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==  
2927 -  
2928 acorn-jsx@^5.3.2: 2944 acorn-jsx@^5.3.2:
2929 version "5.3.2" 2945 version "5.3.2"
2930 resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 2946 resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
@@ -2937,20 +2953,10 @@ acorn-walk@^8.0.2, acorn-walk@^8.1.1: @@ -2937,20 +2953,10 @@ acorn-walk@^8.0.2, acorn-walk@^8.1.1:
2937 dependencies: 2953 dependencies:
2938 acorn "^8.11.0" 2954 acorn "^8.11.0"
2939 2955
2940 -acorn@^8.1.0, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.8.1:  
2941 - version "8.12.1"  
2942 - resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz"  
2943 - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==  
2944 -  
2945 -acorn@^8.7.1, acorn@^8.8.2:  
2946 - version "8.9.0"  
2947 - resolved "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz"  
2948 - integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==  
2949 -  
2950 -acorn@^8.9.0:  
2951 - version "8.10.0"  
2952 - resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz"  
2953 - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 2956 +acorn@^8.0.3, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
  2957 + version "8.14.1"
  2958 + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz"
  2959 + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
2954 2960
2955 adler-32@~1.3.0: 2961 adler-32@~1.3.0:
2956 version "1.3.1" 2962 version "1.3.1"
@@ -3340,35 +3346,15 @@ browser-or-node@^1.2.1: @@ -3340,35 +3346,15 @@ browser-or-node@^1.2.1:
3340 resolved "https://registry.npmmirror.com/browser-or-node/-/browser-or-node-1.3.0.tgz" 3346 resolved "https://registry.npmmirror.com/browser-or-node/-/browser-or-node-1.3.0.tgz"
3341 integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg== 3347 integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==
3342 3348
3343 -browserslist@^4.14.5:  
3344 - version "4.21.9"  
3345 - resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.9.tgz"  
3346 - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==  
3347 - dependencies:  
3348 - caniuse-lite "^1.0.30001503"  
3349 - electron-to-chromium "^1.4.431"  
3350 - node-releases "^2.0.12"  
3351 - update-browserslist-db "^1.0.11"  
3352 -  
3353 -browserslist@^4.21.3, browserslist@^4.21.5:  
3354 - version "4.21.5"  
3355 - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz"  
3356 - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==  
3357 - dependencies:  
3358 - caniuse-lite "^1.0.30001449"  
3359 - electron-to-chromium "^1.4.284"  
3360 - node-releases "^2.0.8"  
3361 - update-browserslist-db "^1.0.10"  
3362 -  
3363 -browserslist@^4.23.1:  
3364 - version "4.23.3"  
3365 - resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.3.tgz"  
3366 - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== 3349 +browserslist@^4.14.3, browserslist@^4.21.3, browserslist@^4.21.5, browserslist@^4.23.1:
  3350 + version "4.24.4"
  3351 + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.4.tgz"
  3352 + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
3367 dependencies: 3353 dependencies:
3368 - caniuse-lite "^1.0.30001646"  
3369 - electron-to-chromium "^1.5.4"  
3370 - node-releases "^2.0.18"  
3371 - update-browserslist-db "^1.1.0" 3354 + caniuse-lite "^1.0.30001688"
  3355 + electron-to-chromium "^1.5.73"
  3356 + node-releases "^2.0.19"
  3357 + update-browserslist-db "^1.1.1"
3372 3358
3373 bser@2.1.1: 3359 bser@2.1.1:
3374 version "2.1.1" 3360 version "2.1.1"
@@ -3394,25 +3380,41 @@ bytes@3.1.2: @@ -3394,25 +3380,41 @@ bytes@3.1.2:
3394 resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 3380 resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
3395 integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 3381 integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
3396 3382
  3383 +cacache@^15.0.5:
  3384 + version "15.3.0"
  3385 + resolved "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz"
  3386 + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
  3387 + dependencies:
  3388 + "@npmcli/fs" "^1.0.0"
  3389 + "@npmcli/move-file" "^1.0.1"
  3390 + chownr "^2.0.0"
  3391 + fs-minipass "^2.0.0"
  3392 + glob "^7.1.4"
  3393 + infer-owner "^1.0.4"
  3394 + lru-cache "^6.0.0"
  3395 + minipass "^3.1.1"
  3396 + minipass-collect "^1.0.2"
  3397 + minipass-flush "^1.0.5"
  3398 + minipass-pipeline "^1.2.2"
  3399 + mkdirp "^1.0.3"
  3400 + p-map "^4.0.0"
  3401 + promise-inflight "^1.0.1"
  3402 + rimraf "^3.0.2"
  3403 + ssri "^8.0.1"
  3404 + tar "^6.0.2"
  3405 + unique-filename "^1.1.1"
  3406 +
3397 call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 3407 call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
3398 version "1.0.2" 3408 version "1.0.2"
3399 - resolved "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" 3409 + resolved "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz"
3400 integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 3410 integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
3401 dependencies: 3411 dependencies:
3402 es-errors "^1.3.0" 3412 es-errors "^1.3.0"
3403 function-bind "^1.1.2" 3413 function-bind "^1.1.2"
3404 3414
3405 -call-bind@^1.0.0, call-bind@^1.0.2:  
3406 - version "1.0.2"  
3407 - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"  
3408 - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==  
3409 - dependencies:  
3410 - function-bind "^1.1.1"  
3411 - get-intrinsic "^1.0.2"  
3412 -  
3413 -call-bind@^1.0.8: 3415 +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.8:
3414 version "1.0.8" 3416 version "1.0.8"
3415 - resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" 3417 + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz"
3416 integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== 3418 integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
3417 dependencies: 3419 dependencies:
3418 call-bind-apply-helpers "^1.0.0" 3420 call-bind-apply-helpers "^1.0.0"
@@ -3435,7 +3437,7 @@ camelcase@^6.2.0: @@ -3435,7 +3437,7 @@ camelcase@^6.2.0:
3435 resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 3437 resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
3436 integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 3438 integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
3437 3439
3438 -caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001503, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001646: 3440 +caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001688:
3439 version "1.0.30001692" 3441 version "1.0.30001692"
3440 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz" 3442 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz"
3441 integrity sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A== 3443 integrity sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==
@@ -3495,7 +3497,7 @@ character-entities@^2.0.0: @@ -3495,7 +3497,7 @@ character-entities@^2.0.0:
3495 3497
3496 cheerio-select@^2.1.0: 3498 cheerio-select@^2.1.0:
3497 version "2.1.0" 3499 version "2.1.0"
3498 - resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 3500 + resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz"
3499 integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 3501 integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
3500 dependencies: 3502 dependencies:
3501 boolbase "^1.0.0" 3503 boolbase "^1.0.0"
@@ -3507,7 +3509,7 @@ cheerio-select@^2.1.0: @@ -3507,7 +3509,7 @@ cheerio-select@^2.1.0:
3507 3509
3508 cheerio@^1.0.0: 3510 cheerio@^1.0.0:
3509 version "1.0.0" 3511 version "1.0.0"
3510 - resolved "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81" 3512 + resolved "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz"
3511 integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww== 3513 integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==
3512 dependencies: 3514 dependencies:
3513 cheerio-select "^2.1.0" 3515 cheerio-select "^2.1.0"
@@ -3537,6 +3539,11 @@ cheerio@^1.0.0: @@ -3537,6 +3539,11 @@ cheerio@^1.0.0:
3537 optionalDependencies: 3539 optionalDependencies:
3538 fsevents "~2.3.2" 3540 fsevents "~2.3.2"
3539 3541
  3542 +chownr@^2.0.0:
  3543 + version "2.0.0"
  3544 + resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz"
  3545 + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
  3546 +
3540 chrome-trace-event@^1.0.2: 3547 chrome-trace-event@^1.0.2:
3541 version "1.0.3" 3548 version "1.0.3"
3542 resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" 3549 resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
@@ -3606,7 +3613,7 @@ cliui@^8.0.1: @@ -3606,7 +3613,7 @@ cliui@^8.0.1:
3606 3613
3607 clone@^2.1.1: 3614 clone@^2.1.1:
3608 version "2.1.2" 3615 version "2.1.2"
3609 - resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" 3616 + resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz"
3610 integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== 3617 integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
3611 3618
3612 clsx@^2.1.1: 3619 clsx@^2.1.1:
@@ -3690,6 +3697,11 @@ commander@^8.0.0, commander@^8.3.0: @@ -3690,6 +3697,11 @@ commander@^8.0.0, commander@^8.3.0:
3690 resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" 3697 resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
3691 integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== 3698 integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
3692 3699
  3700 +commondir@^1.0.1:
  3701 + version "1.0.1"
  3702 + resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz"
  3703 + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
  3704 +
3693 compute-scroll-into-view@^3.0.2: 3705 compute-scroll-into-view@^3.0.2:
3694 version "3.1.1" 3706 version "3.1.1"
3695 resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz" 3707 resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz"
@@ -3833,7 +3845,7 @@ css-select@^4.1.3: @@ -3833,7 +3845,7 @@ css-select@^4.1.3:
3833 3845
3834 css-select@^5.1.0: 3846 css-select@^5.1.0:
3835 version "5.1.0" 3847 version "5.1.0"
3836 - resolved "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 3848 + resolved "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz"
3837 integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 3849 integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
3838 dependencies: 3850 dependencies:
3839 boolbase "^1.0.0" 3851 boolbase "^1.0.0"
@@ -4261,7 +4273,7 @@ dedent@^1.0.0: @@ -4261,7 +4273,7 @@ dedent@^1.0.0:
4261 4273
4262 deep-equal@^1.0.1: 4274 deep-equal@^1.0.1:
4263 version "1.1.2" 4275 version "1.1.2"
4264 - resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761" 4276 + resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz"
4265 integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg== 4277 integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
4266 dependencies: 4278 dependencies:
4267 is-arguments "^1.1.1" 4279 is-arguments "^1.1.1"
@@ -4306,24 +4318,16 @@ deepmerge@^4.2.2: @@ -4306,24 +4318,16 @@ deepmerge@^4.2.2:
4306 4318
4307 define-data-property@^1.0.1, define-data-property@^1.1.4: 4319 define-data-property@^1.0.1, define-data-property@^1.1.4:
4308 version "1.1.4" 4320 version "1.1.4"
4309 - resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 4321 + resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz"
4310 integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 4322 integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
4311 dependencies: 4323 dependencies:
4312 es-define-property "^1.0.0" 4324 es-define-property "^1.0.0"
4313 es-errors "^1.3.0" 4325 es-errors "^1.3.0"
4314 gopd "^1.0.1" 4326 gopd "^1.0.1"
4315 4327
4316 -define-properties@^1.1.3, define-properties@^1.1.4:  
4317 - version "1.2.0"  
4318 - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz"  
4319 - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==  
4320 - dependencies:  
4321 - has-property-descriptors "^1.0.0"  
4322 - object-keys "^1.1.1"  
4323 -  
4324 -define-properties@^1.2.1: 4328 +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.1:
4325 version "1.2.1" 4329 version "1.2.1"
4326 - resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" 4330 + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz"
4327 integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== 4331 integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
4328 dependencies: 4332 dependencies:
4329 define-data-property "^1.0.1" 4333 define-data-property "^1.0.1"
@@ -4438,7 +4442,7 @@ dom-serializer@^1.0.1: @@ -4438,7 +4442,7 @@ dom-serializer@^1.0.1:
4438 4442
4439 dom-serializer@^2.0.0: 4443 dom-serializer@^2.0.0:
4440 version "2.0.0" 4444 version "2.0.0"
4441 - resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 4445 + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz"
4442 integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 4446 integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
4443 dependencies: 4447 dependencies:
4444 domelementtype "^2.3.0" 4448 domelementtype "^2.3.0"
@@ -4466,7 +4470,7 @@ domhandler@^4.2.0, domhandler@^4.3.1: @@ -4466,7 +4470,7 @@ domhandler@^4.2.0, domhandler@^4.3.1:
4466 4470
4467 domhandler@^5.0.2, domhandler@^5.0.3: 4471 domhandler@^5.0.2, domhandler@^5.0.3:
4468 version "5.0.3" 4472 version "5.0.3"
4469 - resolved "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 4473 + resolved "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz"
4470 integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 4474 integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
4471 dependencies: 4475 dependencies:
4472 domelementtype "^2.3.0" 4476 domelementtype "^2.3.0"
@@ -4487,7 +4491,7 @@ domutils@^2.8.0: @@ -4487,7 +4491,7 @@ domutils@^2.8.0:
4487 4491
4488 domutils@^3.0.1, domutils@^3.1.0: 4492 domutils@^3.0.1, domutils@^3.1.0:
4489 version "3.2.2" 4493 version "3.2.2"
4490 - resolved "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" 4494 + resolved "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz"
4491 integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== 4495 integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
4492 dependencies: 4496 dependencies:
4493 dom-serializer "^2.0.0" 4497 dom-serializer "^2.0.0"
@@ -4496,7 +4500,7 @@ domutils@^3.0.1, domutils@^3.1.0: @@ -4496,7 +4500,7 @@ domutils@^3.0.1, domutils@^3.1.0:
4496 4500
4497 dunder-proto@^1.0.1: 4501 dunder-proto@^1.0.1:
4498 version "1.0.1" 4502 version "1.0.1"
4499 - resolved "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 4503 + resolved "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz"
4500 integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 4504 integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
4501 dependencies: 4505 dependencies:
4502 call-bind-apply-helpers "^1.0.1" 4506 call-bind-apply-helpers "^1.0.1"
@@ -4508,20 +4512,10 @@ eastasianwidth@^0.2.0: @@ -4508,20 +4512,10 @@ eastasianwidth@^0.2.0:
4508 resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" 4512 resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
4509 integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 4513 integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
4510 4514
4511 -electron-to-chromium@^1.4.284:  
4512 - version "1.4.345"  
4513 - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.345.tgz"  
4514 - integrity sha512-znGhOQK2TUYLICgS25uaM0a7pHy66rSxbre7l762vg9AUoCcJK+Bu+HCPWpjL/U/kK8/Hf+6E0szAUJSyVYb3Q==  
4515 -  
4516 -electron-to-chromium@^1.4.431:  
4517 - version "1.4.445"  
4518 - resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.445.tgz"  
4519 - integrity sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==  
4520 -  
4521 -electron-to-chromium@^1.5.4:  
4522 - version "1.5.5"  
4523 - resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz"  
4524 - integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== 4515 +electron-to-chromium@^1.5.73:
  4516 + version "1.5.124"
  4517 + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.124.tgz"
  4518 + integrity sha512-riELkpDUqBi00gqreV3RIGoowxGrfueEKBd6zPdOk/I8lvuFpBGNkYoHof3zUHbiTBsIU8oxdIIL/WNrAG1/7A==
4525 4519
4526 elkjs@^0.8.2: 4520 elkjs@^0.8.2:
4527 version "0.8.2" 4521 version "0.8.2"
@@ -4552,24 +4546,16 @@ emoji-regex@^9.2.2: @@ -4552,24 +4546,16 @@ emoji-regex@^9.2.2:
4552 4546
4553 encoding-sniffer@^0.2.0: 4547 encoding-sniffer@^0.2.0:
4554 version "0.2.0" 4548 version "0.2.0"
4555 - resolved "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" 4549 + resolved "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz"
4556 integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== 4550 integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==
4557 dependencies: 4551 dependencies:
4558 iconv-lite "^0.6.3" 4552 iconv-lite "^0.6.3"
4559 whatwg-encoding "^3.1.1" 4553 whatwg-encoding "^3.1.1"
4560 4554
4561 -enhanced-resolve@^5.12.0:  
4562 - version "5.12.0"  
4563 - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz"  
4564 - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==  
4565 - dependencies:  
4566 - graceful-fs "^4.2.4"  
4567 - tapable "^2.2.0"  
4568 -  
4569 -enhanced-resolve@^5.15.0:  
4570 - version "5.15.0"  
4571 - resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz"  
4572 - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== 4555 +enhanced-resolve@^5.12.0, enhanced-resolve@^5.2.0:
  4556 + version "5.18.1"
  4557 + resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz"
  4558 + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==
4573 dependencies: 4559 dependencies:
4574 graceful-fs "^4.2.4" 4560 graceful-fs "^4.2.4"
4575 tapable "^2.2.0" 4561 tapable "^2.2.0"
@@ -4579,16 +4565,11 @@ entities@^2.0.0: @@ -4579,16 +4565,11 @@ entities@^2.0.0:
4579 resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" 4565 resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
4580 integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 4566 integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
4581 4567
4582 -entities@^4.2.0, entities@^4.5.0: 4568 +entities@^4.2.0, entities@^4.4.0, entities@^4.5.0:
4583 version "4.5.0" 4569 version "4.5.0"
4584 - resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 4570 + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
4585 integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 4571 integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
4586 4572
4587 -entities@^4.4.0:  
4588 - version "4.4.0"  
4589 - resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz"  
4590 - integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==  
4591 -  
4592 error-ex@^1.3.1: 4573 error-ex@^1.3.1:
4593 version "1.3.2" 4574 version "1.3.2"
4594 resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 4575 resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
@@ -4638,12 +4619,12 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: @@ -4638,12 +4619,12 @@ es-abstract@^1.19.0, es-abstract@^1.20.4:
4638 4619
4639 es-define-property@^1.0.0, es-define-property@^1.0.1: 4620 es-define-property@^1.0.0, es-define-property@^1.0.1:
4640 version "1.0.1" 4621 version "1.0.1"
4641 - resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 4622 + resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz"
4642 integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 4623 integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
4643 4624
4644 es-errors@^1.3.0: 4625 es-errors@^1.3.0:
4645 version "1.3.0" 4626 version "1.3.0"
4646 - resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 4627 + resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz"
4647 integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 4628 integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
4648 4629
4649 es-get-iterator@^1.1.2: 4630 es-get-iterator@^1.1.2:
@@ -4661,14 +4642,9 @@ es-get-iterator@^1.1.2: @@ -4661,14 +4642,9 @@ es-get-iterator@^1.1.2:
4661 isarray "^2.0.5" 4642 isarray "^2.0.5"
4662 stop-iteration-iterator "^1.0.0" 4643 stop-iteration-iterator "^1.0.0"
4663 4644
4664 -es-module-lexer@^1.2.1:  
4665 - version "1.3.0"  
4666 - resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz"  
4667 - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==  
4668 -  
4669 es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 4645 es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
4670 version "1.1.1" 4646 version "1.1.1"
4671 - resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" 4647 + resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz"
4672 integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 4648 integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
4673 dependencies: 4649 dependencies:
4674 es-errors "^1.3.0" 4650 es-errors "^1.3.0"
@@ -4727,15 +4703,10 @@ esbuild@~0.21.5: @@ -4727,15 +4703,10 @@ esbuild@~0.21.5:
4727 "@esbuild/win32-ia32" "0.21.5" 4703 "@esbuild/win32-ia32" "0.21.5"
4728 "@esbuild/win32-x64" "0.21.5" 4704 "@esbuild/win32-x64" "0.21.5"
4729 4705
4730 -escalade@^3.1.1:  
4731 - version "3.1.1"  
4732 - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"  
4733 - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==  
4734 -  
4735 -escalade@^3.1.2:  
4736 - version "3.1.2"  
4737 - resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz"  
4738 - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== 4706 +escalade@^3.1.1, escalade@^3.2.0:
  4707 + version "3.2.0"
  4708 + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz"
  4709 + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
4739 4710
4740 escape-string-regexp@^1.0.5: 4711 escape-string-regexp@^1.0.5:
4741 version "1.0.5" 4712 version "1.0.5"
@@ -4906,7 +4877,7 @@ eslint-rule-composer@^0.3.0: @@ -4906,7 +4877,7 @@ eslint-rule-composer@^0.3.0:
4906 resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" 4877 resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz"
4907 integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== 4878 integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==
4908 4879
4909 -eslint-scope@5.1.1: 4880 +eslint-scope@^5.1.0:
4910 version "5.1.1" 4881 version "5.1.1"
4911 resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" 4882 resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
4912 integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 4883 integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -5015,7 +4986,7 @@ esutils@^2.0.2: @@ -5015,7 +4986,7 @@ esutils@^2.0.2:
5015 4986
5016 eventemitter3@^2.0.3: 4987 eventemitter3@^2.0.3:
5017 version "2.0.3" 4988 version "2.0.3"
5018 - resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" 4989 + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz"
5019 integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg== 4990 integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==
5020 4991
5021 events@^3.2.0: 4992 events@^3.2.0:
@@ -5088,7 +5059,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: @@ -5088,7 +5059,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
5088 5059
5089 fast-diff@1.1.2: 5060 fast-diff@1.1.2:
5090 version "1.1.2" 5061 version "1.1.2"
5091 - resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" 5062 + resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz"
5092 integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== 5063 integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
5093 5064
5094 fast-diff@^1.1.2: 5065 fast-diff@^1.1.2:
@@ -5165,6 +5136,15 @@ fill-range@^7.0.1: @@ -5165,6 +5136,15 @@ fill-range@^7.0.1:
5165 dependencies: 5136 dependencies:
5166 to-regex-range "^5.0.1" 5137 to-regex-range "^5.0.1"
5167 5138
  5139 +find-cache-dir@^3.3.1:
  5140 + version "3.3.2"
  5141 + resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
  5142 + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
  5143 + dependencies:
  5144 + commondir "^1.0.1"
  5145 + make-dir "^3.0.2"
  5146 + pkg-dir "^4.1.0"
  5147 +
5168 find-up@^4.0.0, find-up@^4.1.0: 5148 find-up@^4.0.0, find-up@^4.1.0:
5169 version "4.1.0" 5149 version "4.1.0"
5170 resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz" 5150 resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
@@ -5237,6 +5217,13 @@ frac@~1.1.2: @@ -5237,6 +5217,13 @@ frac@~1.1.2:
5237 resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz" 5217 resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz"
5238 integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== 5218 integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==
5239 5219
  5220 +fs-minipass@^2.0.0:
  5221 + version "2.1.0"
  5222 + resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz"
  5223 + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
  5224 + dependencies:
  5225 + minipass "^3.0.0"
  5226 +
5240 fs.realpath@^1.0.0: 5227 fs.realpath@^1.0.0:
5241 version "1.0.0" 5228 version "1.0.0"
5242 resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 5229 resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
@@ -5247,12 +5234,7 @@ fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: @@ -5247,12 +5234,7 @@ fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3:
5247 resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 5234 resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
5248 integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 5235 integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
5249 5236
5250 -function-bind@^1.1.1:  
5251 - version "1.1.1"  
5252 - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"  
5253 - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==  
5254 -  
5255 -function-bind@^1.1.2: 5237 +function-bind@^1.1.1, function-bind@^1.1.2:
5256 version "1.1.2" 5238 version "1.1.2"
5257 resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" 5239 resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
5258 integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 5240 integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
@@ -5287,18 +5269,9 @@ get-caller-file@^2.0.5: @@ -5287,18 +5269,9 @@ get-caller-file@^2.0.5:
5287 resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 5269 resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
5288 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 5270 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
5289 5271
5290 -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:  
5291 - version "1.2.0"  
5292 - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz"  
5293 - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==  
5294 - dependencies:  
5295 - function-bind "^1.1.1"  
5296 - has "^1.0.3"  
5297 - has-symbols "^1.0.3"  
5298 -  
5299 -get-intrinsic@^1.2.4: 5272 +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.4:
5300 version "1.3.0" 5273 version "1.3.0"
5301 - resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" 5274 + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz"
5302 integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 5275 integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
5303 dependencies: 5276 dependencies:
5304 call-bind-apply-helpers "^1.0.2" 5277 call-bind-apply-helpers "^1.0.2"
@@ -5319,7 +5292,7 @@ get-package-type@^0.1.0: @@ -5319,7 +5292,7 @@ get-package-type@^0.1.0:
5319 5292
5320 get-proto@^1.0.1: 5293 get-proto@^1.0.1:
5321 version "1.0.1" 5294 version "1.0.1"
5322 - resolved "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 5295 + resolved "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz"
5323 integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 5296 integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
5324 dependencies: 5297 dependencies:
5325 dunder-proto "^1.0.1" 5298 dunder-proto "^1.0.1"
@@ -5435,16 +5408,9 @@ globby@^13.1.3: @@ -5435,16 +5408,9 @@ globby@^13.1.3:
5435 merge2 "^1.4.1" 5408 merge2 "^1.4.1"
5436 slash "^4.0.0" 5409 slash "^4.0.0"
5437 5410
5438 -gopd@^1.0.1:  
5439 - version "1.0.1"  
5440 - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz"  
5441 - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==  
5442 - dependencies:  
5443 - get-intrinsic "^1.1.3"  
5444 -  
5445 -gopd@^1.2.0: 5411 +gopd@^1.0.1, gopd@^1.2.0:
5446 version "1.2.0" 5412 version "1.2.0"
5447 - resolved "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 5413 + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz"
5448 integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 5414 integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
5449 5415
5450 graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: 5416 graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
@@ -5472,16 +5438,9 @@ has-flag@^4.0.0: @@ -5472,16 +5438,9 @@ has-flag@^4.0.0:
5472 resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 5438 resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
5473 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 5439 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
5474 5440
5475 -has-property-descriptors@^1.0.0:  
5476 - version "1.0.0"  
5477 - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"  
5478 - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==  
5479 - dependencies:  
5480 - get-intrinsic "^1.1.1"  
5481 -  
5482 -has-property-descriptors@^1.0.2: 5441 +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
5483 version "1.0.2" 5442 version "1.0.2"
5484 - resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 5443 + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
5485 integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 5444 integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
5486 dependencies: 5445 dependencies:
5487 es-define-property "^1.0.0" 5446 es-define-property "^1.0.0"
@@ -5491,14 +5450,9 @@ has-proto@^1.0.1: @@ -5491,14 +5450,9 @@ has-proto@^1.0.1:
5491 resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" 5450 resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz"
5492 integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 5451 integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
5493 5452
5494 -has-symbols@^1.0.2, has-symbols@^1.0.3:  
5495 - version "1.0.3"  
5496 - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"  
5497 - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==  
5498 -  
5499 -has-symbols@^1.1.0: 5453 +has-symbols@^1.0.2, has-symbols@^1.0.3, has-symbols@^1.1.0:
5500 version "1.1.0" 5454 version "1.1.0"
5501 - resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 5455 + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz"
5502 integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 5456 integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
5503 5457
5504 has-tostringtag@^1.0.0: 5458 has-tostringtag@^1.0.0:
@@ -5515,6 +5469,11 @@ has@^1.0.3: @@ -5515,6 +5469,11 @@ has@^1.0.3:
5515 dependencies: 5469 dependencies:
5516 function-bind "^1.1.1" 5470 function-bind "^1.1.1"
5517 5471
  5472 +hash-sum@^2.0.0:
  5473 + version "2.0.0"
  5474 + resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz"
  5475 + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
  5476 +
5518 hash.js@^1.1.7: 5477 hash.js@^1.1.7:
5519 version "1.1.7" 5478 version "1.1.7"
5520 resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz" 5479 resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz"
@@ -5646,7 +5605,7 @@ html-docx-js-typescript@^0.1.5: @@ -5646,7 +5605,7 @@ html-docx-js-typescript@^0.1.5:
5646 5605
5647 html-docx-js@^0.3.1: 5606 html-docx-js@^0.3.1:
5648 version "0.3.1" 5607 version "0.3.1"
5649 - resolved "https://registry.npmmirror.com/html-docx-js/-/html-docx-js-0.3.1.tgz#9713f6587a08d1f0c87a801fe7649a4d0ab07d76" 5608 + resolved "https://registry.npmmirror.com/html-docx-js/-/html-docx-js-0.3.1.tgz"
5650 integrity sha512-QSrMiRhxesqxYCa3f+2Z3ttIHPzSjDOL1tCOmIDIEET7HdabxXND6tAbsFMXAgRG4RADQ3wbl74ydMmjidaDPA== 5609 integrity sha512-QSrMiRhxesqxYCa3f+2Z3ttIHPzSjDOL1tCOmIDIEET7HdabxXND6tAbsFMXAgRG4RADQ3wbl74ydMmjidaDPA==
5651 dependencies: 5610 dependencies:
5652 jszip "^2.3.0" 5611 jszip "^2.3.0"
@@ -5672,7 +5631,7 @@ html-to-image@^1.11.11: @@ -5672,7 +5631,7 @@ html-to-image@^1.11.11:
5672 5631
5673 htmlparser2@^9.1.0: 5632 htmlparser2@^9.1.0:
5674 version "9.1.0" 5633 version "9.1.0"
5675 - resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" 5634 + resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-9.1.0.tgz"
5676 integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== 5635 integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==
5677 dependencies: 5636 dependencies:
5678 domelementtype "^2.3.0" 5637 domelementtype "^2.3.0"
@@ -5781,6 +5740,11 @@ indent-string@^4.0.0: @@ -5781,6 +5740,11 @@ indent-string@^4.0.0:
5781 resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" 5740 resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
5782 integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 5741 integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
5783 5742
  5743 +infer-owner@^1.0.4:
  5744 + version "1.0.4"
  5745 + resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz"
  5746 + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
  5747 +
5784 inflight@^1.0.4: 5748 inflight@^1.0.4:
5785 version "1.0.6" 5749 version "1.0.6"
5786 resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 5750 resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
@@ -6452,14 +6416,14 @@ jest-watcher@^29.7.0: @@ -6452,14 +6416,14 @@ jest-watcher@^29.7.0:
6452 jest-util "^29.7.0" 6416 jest-util "^29.7.0"
6453 string-length "^4.0.1" 6417 string-length "^4.0.1"
6454 6418
6455 -jest-worker@^27.4.5:  
6456 - version "27.5.1"  
6457 - resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz"  
6458 - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 6419 +jest-worker@^26.5.0:
  6420 + version "26.6.2"
  6421 + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-26.6.2.tgz"
  6422 + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
6459 dependencies: 6423 dependencies:
6460 "@types/node" "*" 6424 "@types/node" "*"
6461 merge-stream "^2.0.0" 6425 merge-stream "^2.0.0"
6462 - supports-color "^8.0.0" 6426 + supports-color "^7.0.0"
6463 6427
6464 jest-worker@^29.7.0: 6428 jest-worker@^29.7.0:
6465 version "29.7.0" 6429 version "29.7.0"
@@ -6543,7 +6507,12 @@ jsesc@~0.5.0: @@ -6543,7 +6507,12 @@ jsesc@~0.5.0:
6543 resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" 6507 resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz"
6544 integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== 6508 integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
6545 6509
6546 -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: 6510 +json-parse-better-errors@^1.0.2:
  6511 + version "1.0.2"
  6512 + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
  6513 + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
  6514 +
  6515 +json-parse-even-better-errors@^2.3.0:
6547 version "2.3.1" 6516 version "2.3.1"
6548 resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" 6517 resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
6549 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 6518 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -6597,7 +6566,7 @@ jszip@*, jszip@^3.10.1, jszip@^3.4.0: @@ -6597,7 +6566,7 @@ jszip@*, jszip@^3.10.1, jszip@^3.4.0:
6597 6566
6598 jszip@^2.3.0: 6567 jszip@^2.3.0:
6599 version "2.7.0" 6568 version "2.7.0"
6600 - resolved "https://registry.npmmirror.com/jszip/-/jszip-2.7.0.tgz#c420b1e1aa800490724a0dd277e8cca950bc2c41" 6569 + resolved "https://registry.npmmirror.com/jszip/-/jszip-2.7.0.tgz"
6601 integrity sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw== 6570 integrity sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==
6602 dependencies: 6571 dependencies:
6603 pako "~1.0.2" 6572 pako "~1.0.2"
@@ -6716,7 +6685,7 @@ listr2@^5.0.7: @@ -6716,7 +6685,7 @@ listr2@^5.0.7:
6716 through "^2.3.8" 6685 through "^2.3.8"
6717 wrap-ansi "^7.0.0" 6686 wrap-ansi "^7.0.0"
6718 6687
6719 -loader-runner@^4.2.0: 6688 +loader-runner@^4.1.0:
6720 version "4.3.0" 6689 version "4.3.0"
6721 resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz" 6690 resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz"
6722 integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 6691 integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
@@ -6742,32 +6711,32 @@ lodash-es@^4.17.21: @@ -6742,32 +6711,32 @@ lodash-es@^4.17.21:
6742 6711
6743 lodash._arraycopy@^3.0.0: 6712 lodash._arraycopy@^3.0.0:
6744 version "3.0.0" 6713 version "3.0.0"
6745 - resolved "https://registry.npmmirror.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" 6714 + resolved "https://registry.npmmirror.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz"
6746 integrity sha512-RHShTDnPKP7aWxlvXKiDT6IX2jCs6YZLCtNhOru/OX2Q/tzX295vVBK5oX1ECtN+2r86S0Ogy8ykP1sgCZAN0A== 6715 integrity sha512-RHShTDnPKP7aWxlvXKiDT6IX2jCs6YZLCtNhOru/OX2Q/tzX295vVBK5oX1ECtN+2r86S0Ogy8ykP1sgCZAN0A==
6747 6716
6748 lodash._arrayeach@^3.0.0: 6717 lodash._arrayeach@^3.0.0:
6749 version "3.0.0" 6718 version "3.0.0"
6750 - resolved "https://registry.npmmirror.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" 6719 + resolved "https://registry.npmmirror.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz"
6751 integrity sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ== 6720 integrity sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ==
6752 6721
6753 lodash._basecopy@^3.0.0: 6722 lodash._basecopy@^3.0.0:
6754 version "3.0.1" 6723 version "3.0.1"
6755 - resolved "https://registry.npmmirror.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 6724 + resolved "https://registry.npmmirror.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz"
6756 integrity sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ== 6725 integrity sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==
6757 6726
6758 lodash._basefor@^3.0.0: 6727 lodash._basefor@^3.0.0:
6759 version "3.0.3" 6728 version "3.0.3"
6760 - resolved "https://registry.npmmirror.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" 6729 + resolved "https://registry.npmmirror.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz"
6761 integrity sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A== 6730 integrity sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A==
6762 6731
6763 lodash._bindcallback@^3.0.0: 6732 lodash._bindcallback@^3.0.0:
6764 version "3.0.1" 6733 version "3.0.1"
6765 - resolved "https://registry.npmmirror.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" 6734 + resolved "https://registry.npmmirror.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz"
6766 integrity sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ== 6735 integrity sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==
6767 6736
6768 lodash._createassigner@^3.0.0: 6737 lodash._createassigner@^3.0.0:
6769 version "3.1.1" 6738 version "3.1.1"
6770 - resolved "https://registry.npmmirror.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" 6739 + resolved "https://registry.npmmirror.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz"
6771 integrity sha512-LziVL7IDnJjQeeV95Wvhw6G28Z8Q6da87LWKOPWmzBLv4u6FAT/x5v00pyGW0u38UoogNF2JnD3bGgZZDaNEBw== 6740 integrity sha512-LziVL7IDnJjQeeV95Wvhw6G28Z8Q6da87LWKOPWmzBLv4u6FAT/x5v00pyGW0u38UoogNF2JnD3bGgZZDaNEBw==
6772 dependencies: 6741 dependencies:
6773 lodash._bindcallback "^3.0.0" 6742 lodash._bindcallback "^3.0.0"
@@ -6776,17 +6745,17 @@ lodash._createassigner@^3.0.0: @@ -6776,17 +6745,17 @@ lodash._createassigner@^3.0.0:
6776 6745
6777 lodash._getnative@^3.0.0: 6746 lodash._getnative@^3.0.0:
6778 version "3.9.1" 6747 version "3.9.1"
6779 - resolved "https://registry.npmmirror.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 6748 + resolved "https://registry.npmmirror.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz"
6780 integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA== 6749 integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==
6781 6750
6782 lodash._isiterateecall@^3.0.0: 6751 lodash._isiterateecall@^3.0.0:
6783 version "3.0.9" 6752 version "3.0.9"
6784 - resolved "https://registry.npmmirror.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 6753 + resolved "https://registry.npmmirror.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz"
6785 integrity sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ== 6754 integrity sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==
6786 6755
6787 lodash._root@^3.0.0: 6756 lodash._root@^3.0.0:
6788 version "3.0.1" 6757 version "3.0.1"
6789 - resolved "https://registry.npmmirror.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" 6758 + resolved "https://registry.npmmirror.com/lodash._root/-/lodash._root-3.0.1.tgz"
6790 integrity sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ== 6759 integrity sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==
6791 6760
6792 lodash.debounce@^4.0.8: 6761 lodash.debounce@^4.0.8:
@@ -6796,7 +6765,7 @@ lodash.debounce@^4.0.8: @@ -6796,7 +6765,7 @@ lodash.debounce@^4.0.8:
6796 6765
6797 lodash.escape@^3.0.0: 6766 lodash.escape@^3.0.0:
6798 version "3.2.0" 6767 version "3.2.0"
6799 - resolved "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" 6768 + resolved "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-3.2.0.tgz"
6800 integrity sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ== 6769 integrity sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==
6801 dependencies: 6770 dependencies:
6802 lodash._root "^3.0.0" 6771 lodash._root "^3.0.0"
@@ -6808,17 +6777,17 @@ lodash.escape@^4.0.1: @@ -6808,17 +6777,17 @@ lodash.escape@^4.0.1:
6808 6777
6809 lodash.isarguments@^3.0.0: 6778 lodash.isarguments@^3.0.0:
6810 version "3.1.0" 6779 version "3.1.0"
6811 - resolved "https://registry.npmmirror.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 6780 + resolved "https://registry.npmmirror.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz"
6812 integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== 6781 integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
6813 6782
6814 lodash.isarray@^3.0.0: 6783 lodash.isarray@^3.0.0:
6815 version "3.0.4" 6784 version "3.0.4"
6816 - resolved "https://registry.npmmirror.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 6785 + resolved "https://registry.npmmirror.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz"
6817 integrity sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ== 6786 integrity sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==
6818 6787
6819 lodash.isplainobject@^3.0.0: 6788 lodash.isplainobject@^3.0.0:
6820 version "3.2.0" 6789 version "3.2.0"
6821 - resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz#9a8238ae16b200432960cd7346512d0123fbf4c5" 6790 + resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz"
6822 integrity sha512-P4wZnho5curNqeEq/x292Pb57e1v+woR7DJ84DURelKB46lby8aDEGVobSaYtzHdQBWQrJSdxcCwjlGOvvdIyg== 6791 integrity sha512-P4wZnho5curNqeEq/x292Pb57e1v+woR7DJ84DURelKB46lby8aDEGVobSaYtzHdQBWQrJSdxcCwjlGOvvdIyg==
6823 dependencies: 6792 dependencies:
6824 lodash._basefor "^3.0.0" 6793 lodash._basefor "^3.0.0"
@@ -6827,12 +6796,12 @@ lodash.isplainobject@^3.0.0: @@ -6827,12 +6796,12 @@ lodash.isplainobject@^3.0.0:
6827 6796
6828 lodash.istypedarray@^3.0.0: 6797 lodash.istypedarray@^3.0.0:
6829 version "3.0.6" 6798 version "3.0.6"
6830 - resolved "https://registry.npmmirror.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62" 6799 + resolved "https://registry.npmmirror.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz"
6831 integrity sha512-lGWJ6N8AA3KSv+ZZxlTdn4f6A7kMfpJboeyvbFdE7IU9YAgweODqmOgdUHOA+c6lVWeVLysdaxciFXi+foVsWw== 6800 integrity sha512-lGWJ6N8AA3KSv+ZZxlTdn4f6A7kMfpJboeyvbFdE7IU9YAgweODqmOgdUHOA+c6lVWeVLysdaxciFXi+foVsWw==
6832 6801
6833 lodash.keys@^3.0.0: 6802 lodash.keys@^3.0.0:
6834 version "3.1.2" 6803 version "3.1.2"
6835 - resolved "https://registry.npmmirror.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 6804 + resolved "https://registry.npmmirror.com/lodash.keys/-/lodash.keys-3.1.2.tgz"
6836 integrity sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ== 6805 integrity sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==
6837 dependencies: 6806 dependencies:
6838 lodash._getnative "^3.0.0" 6807 lodash._getnative "^3.0.0"
@@ -6841,7 +6810,7 @@ lodash.keys@^3.0.0: @@ -6841,7 +6810,7 @@ lodash.keys@^3.0.0:
6841 6810
6842 lodash.keysin@^3.0.0: 6811 lodash.keysin@^3.0.0:
6843 version "3.0.8" 6812 version "3.0.8"
6844 - resolved "https://registry.npmmirror.com/lodash.keysin/-/lodash.keysin-3.0.8.tgz#22c4493ebbedb1427962a54b445b2c8a767fb47f" 6813 + resolved "https://registry.npmmirror.com/lodash.keysin/-/lodash.keysin-3.0.8.tgz"
6845 integrity sha512-YDB/5xkL3fBKFMDaC+cfGV00pbiJ6XoJIfRmBhv7aR6wWtbCW6IzkiWnTfkiHTF6ALD7ff83dAtB3OEaSoyQPg== 6814 integrity sha512-YDB/5xkL3fBKFMDaC+cfGV00pbiJ6XoJIfRmBhv7aR6wWtbCW6IzkiWnTfkiHTF6ALD7ff83dAtB3OEaSoyQPg==
6846 dependencies: 6815 dependencies:
6847 lodash.isarguments "^3.0.0" 6816 lodash.isarguments "^3.0.0"
@@ -6849,7 +6818,7 @@ lodash.keysin@^3.0.0: @@ -6849,7 +6818,7 @@ lodash.keysin@^3.0.0:
6849 6818
6850 lodash.merge@^3.2.0: 6819 lodash.merge@^3.2.0:
6851 version "3.3.2" 6820 version "3.3.2"
6852 - resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-3.3.2.tgz#0d90d93ed637b1878437bb3e21601260d7afe994" 6821 + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-3.3.2.tgz"
6853 integrity sha512-ZgGZpRhWLjivGUbjtApZR4HyLv/UAyoYqESVYkK4aLBJVHRrbFpG+GNnE9JPijliME4LkKM0SFI/WyOiBiv1+w== 6822 integrity sha512-ZgGZpRhWLjivGUbjtApZR4HyLv/UAyoYqESVYkK4aLBJVHRrbFpG+GNnE9JPijliME4LkKM0SFI/WyOiBiv1+w==
6854 dependencies: 6823 dependencies:
6855 lodash._arraycopy "^3.0.0" 6824 lodash._arraycopy "^3.0.0"
@@ -6871,12 +6840,12 @@ lodash.merge@^4.6.2: @@ -6871,12 +6840,12 @@ lodash.merge@^4.6.2:
6871 6840
6872 lodash.restparam@^3.0.0: 6841 lodash.restparam@^3.0.0:
6873 version "3.6.1" 6842 version "3.6.1"
6874 - resolved "https://registry.npmmirror.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" 6843 + resolved "https://registry.npmmirror.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz"
6875 integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw== 6844 integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==
6876 6845
6877 lodash.toplainobject@^3.0.0: 6846 lodash.toplainobject@^3.0.0:
6878 version "3.0.0" 6847 version "3.0.0"
6879 - resolved "https://registry.npmmirror.com/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz#28790ad942d293d78aa663a07ecf7f52ca04198d" 6848 + resolved "https://registry.npmmirror.com/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz"
6880 integrity sha512-wMI0Ju1bvSmnBS3EcRRH/3zDnZOPpDtMtNDzbbNMKuTrEpALsf+sPyMeogmv63Y11qZQO7H1xFzohIEGRMjPYA== 6849 integrity sha512-wMI0Ju1bvSmnBS3EcRRH/3zDnZOPpDtMtNDzbbNMKuTrEpALsf+sPyMeogmv63Y11qZQO7H1xFzohIEGRMjPYA==
6881 dependencies: 6850 dependencies:
6882 lodash._basecopy "^3.0.0" 6851 lodash._basecopy "^3.0.0"
@@ -6937,11 +6906,23 @@ lru-cache@^6.0.0: @@ -6937,11 +6906,23 @@ lru-cache@^6.0.0:
6937 dependencies: 6906 dependencies:
6938 yallist "^4.0.0" 6907 yallist "^4.0.0"
6939 6908
  6909 +lucide-react@^0.484.0:
  6910 + version "0.484.0"
  6911 + resolved "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.484.0.tgz"
  6912 + integrity sha512-oZy8coK9kZzvqhSgfbGkPtTgyjpBvs3ukLgDPv14dSOZtBtboryWF5o8i3qen7QbGg7JhiJBz5mK1p8YoMZTLQ==
  6913 +
6940 lz-string@^1.5.0: 6914 lz-string@^1.5.0:
6941 version "1.5.0" 6915 version "1.5.0"
6942 resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz" 6916 resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz"
6943 integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== 6917 integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
6944 6918
  6919 +make-dir@^3.0.2:
  6920 + version "3.1.0"
  6921 + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
  6922 + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
  6923 + dependencies:
  6924 + semver "^6.0.0"
  6925 +
6945 make-dir@^4.0.0: 6926 make-dir@^4.0.0:
6946 version "4.0.0" 6927 version "4.0.0"
6947 resolved "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz" 6928 resolved "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz"
@@ -6982,7 +6963,7 @@ marked@^4.0.14: @@ -6982,7 +6963,7 @@ marked@^4.0.14:
6982 6963
6983 math-intrinsics@^1.1.0: 6964 math-intrinsics@^1.1.0:
6984 version "1.1.0" 6965 version "1.1.0"
6985 - resolved "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 6966 + resolved "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
6986 integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 6967 integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
6987 6968
6988 mdast-util-definitions@^5.0.0: 6969 mdast-util-definitions@^5.0.0:
@@ -7506,6 +7487,11 @@ min-indent@^1.0.0: @@ -7506,6 +7487,11 @@ min-indent@^1.0.0:
7506 resolved "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz" 7487 resolved "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz"
7507 integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 7488 integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
7508 7489
  7490 +mind-elixir@^4.4.3:
  7491 + version "4.4.3"
  7492 + resolved "https://registry.npmmirror.com/mind-elixir/-/mind-elixir-4.4.3.tgz#bef5650a29276856bef089bc54576048c87eeabd"
  7493 + integrity sha512-i2GBFtZ4Z6pv5z5/QcfQFrbVTNa0OWayfx7OvQpzNn7X62l6xJn0y3dKxQ/KuT50HxgZiyRptY5J0xBc2qeuZw==
  7494 +
7509 minimalistic-assert@^1.0.1: 7495 minimalistic-assert@^1.0.1:
7510 version "1.0.1" 7496 version "1.0.1"
7511 resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" 7497 resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
@@ -7523,6 +7509,52 @@ minimist@^1.2.0, minimist@^1.2.6: @@ -7523,6 +7509,52 @@ minimist@^1.2.0, minimist@^1.2.6:
7523 resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" 7509 resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
7524 integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 7510 integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
7525 7511
  7512 +minipass-collect@^1.0.2:
  7513 + version "1.0.2"
  7514 + resolved "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz"
  7515 + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
  7516 + dependencies:
  7517 + minipass "^3.0.0"
  7518 +
  7519 +minipass-flush@^1.0.5:
  7520 + version "1.0.5"
  7521 + resolved "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz"
  7522 + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
  7523 + dependencies:
  7524 + minipass "^3.0.0"
  7525 +
  7526 +minipass-pipeline@^1.2.2:
  7527 + version "1.2.4"
  7528 + resolved "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz"
  7529 + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
  7530 + dependencies:
  7531 + minipass "^3.0.0"
  7532 +
  7533 +minipass@^3.0.0, minipass@^3.1.1:
  7534 + version "3.3.6"
  7535 + resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz"
  7536 + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
  7537 + dependencies:
  7538 + yallist "^4.0.0"
  7539 +
  7540 +minipass@^5.0.0:
  7541 + version "5.0.0"
  7542 + resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz"
  7543 + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
  7544 +
  7545 +minizlib@^2.1.1:
  7546 + version "2.1.2"
  7547 + resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz"
  7548 + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
  7549 + dependencies:
  7550 + minipass "^3.0.0"
  7551 + yallist "^4.0.0"
  7552 +
  7553 +mkdirp@^1.0.3, mkdirp@^1.0.4:
  7554 + version "1.0.4"
  7555 + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz"
  7556 + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
  7557 +
7526 mri@^1.1.0: 7558 mri@^1.1.0:
7527 version "1.2.0" 7559 version "1.2.0"
7528 resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" 7560 resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
@@ -7600,20 +7632,10 @@ node-int64@^0.4.0: @@ -7600,20 +7632,10 @@ node-int64@^0.4.0:
7600 resolved "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz" 7632 resolved "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz"
7601 integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 7633 integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
7602 7634
7603 -node-releases@^2.0.12:  
7604 - version "2.0.12"  
7605 - resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz"  
7606 - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==  
7607 -  
7608 -node-releases@^2.0.18:  
7609 - version "2.0.18"  
7610 - resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz"  
7611 - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==  
7612 -  
7613 -node-releases@^2.0.8:  
7614 - version "2.0.10"  
7615 - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz"  
7616 - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== 7635 +node-releases@^2.0.19:
  7636 + version "2.0.19"
  7637 + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz"
  7638 + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
7617 7639
7618 non-layered-tidy-tree-layout@^2.0.2: 7640 non-layered-tidy-tree-layout@^2.0.2:
7619 version "2.0.2" 7641 version "2.0.2"
@@ -7813,7 +7835,7 @@ pako@~1.0.2: @@ -7813,7 +7835,7 @@ pako@~1.0.2:
7813 7835
7814 parchment@^1.1.2, parchment@^1.1.4: 7836 parchment@^1.1.2, parchment@^1.1.4:
7815 version "1.1.4" 7837 version "1.1.4"
7816 - resolved "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" 7838 + resolved "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz"
7817 integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== 7839 integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==
7818 7840
7819 parent-module@^1.0.0: 7841 parent-module@^1.0.0:
@@ -7835,7 +7857,7 @@ parse-json@^5.0.0, parse-json@^5.2.0: @@ -7835,7 +7857,7 @@ parse-json@^5.0.0, parse-json@^5.2.0:
7835 7857
7836 parse5-htmlparser2-tree-adapter@^7.0.0: 7858 parse5-htmlparser2-tree-adapter@^7.0.0:
7837 version "7.1.0" 7859 version "7.1.0"
7838 - resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" 7860 + resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz"
7839 integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== 7861 integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==
7840 dependencies: 7862 dependencies:
7841 domhandler "^5.0.3" 7863 domhandler "^5.0.3"
@@ -7843,25 +7865,18 @@ parse5-htmlparser2-tree-adapter@^7.0.0: @@ -7843,25 +7865,18 @@ parse5-htmlparser2-tree-adapter@^7.0.0:
7843 7865
7844 parse5-parser-stream@^7.1.2: 7866 parse5-parser-stream@^7.1.2:
7845 version "7.1.2" 7867 version "7.1.2"
7846 - resolved "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1" 7868 + resolved "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz"
7847 integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== 7869 integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==
7848 dependencies: 7870 dependencies:
7849 parse5 "^7.0.0" 7871 parse5 "^7.0.0"
7850 7872
7851 -parse5@^7.0.0, parse5@^7.1.1: 7873 +parse5@^7.0.0, parse5@^7.1.1, parse5@^7.1.2:
7852 version "7.1.2" 7874 version "7.1.2"
7853 resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" 7875 resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz"
7854 integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== 7876 integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
7855 dependencies: 7877 dependencies:
7856 entities "^4.4.0" 7878 entities "^4.4.0"
7857 7879
7858 -parse5@^7.1.2:  
7859 - version "7.2.1"  
7860 - resolved "https://registry.npmmirror.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a"  
7861 - integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==  
7862 - dependencies:  
7863 - entities "^4.5.0"  
7864 -  
7865 path-exists@^4.0.0: 7880 path-exists@^4.0.0:
7866 version "4.0.0" 7881 version "4.0.0"
7867 resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 7882 resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
@@ -7892,15 +7907,10 @@ path-type@^4.0.0: @@ -7892,15 +7907,10 @@ path-type@^4.0.0:
7892 resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" 7907 resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
7893 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 7908 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
7894 7909
7895 -picocolors@^1.0.0:  
7896 - version "1.0.0"  
7897 - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"  
7898 - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==  
7899 -  
7900 -picocolors@^1.0.1:  
7901 - version "1.0.1"  
7902 - resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz"  
7903 - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 7910 +picocolors@^1.0.0, picocolors@^1.1.1:
  7911 + version "1.1.1"
  7912 + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz"
  7913 + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
7904 7914
7905 picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: 7915 picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
7906 version "2.3.1" 7916 version "2.3.1"
@@ -7917,7 +7927,7 @@ pirates@^4.0.4: @@ -7917,7 +7927,7 @@ pirates@^4.0.4:
7917 resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz" 7927 resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz"
7918 integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== 7928 integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
7919 7929
7920 -pkg-dir@^4.2.0: 7930 +pkg-dir@^4.1.0, pkg-dir@^4.2.0:
7921 version "4.2.0" 7931 version "4.2.0"
7922 resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz" 7932 resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz"
7923 integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 7933 integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -7973,6 +7983,11 @@ process-nextick-args@~2.0.0: @@ -7973,6 +7983,11 @@ process-nextick-args@~2.0.0:
7973 resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 7983 resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
7974 integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 7984 integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
7975 7985
  7986 +promise-inflight@^1.0.1:
  7987 + version "1.0.1"
  7988 + resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
  7989 + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
  7990 +
7976 prompts@^2.0.1: 7991 prompts@^2.0.1:
7977 version "2.4.2" 7992 version "2.4.2"
7978 resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz" 7993 resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz"
@@ -8032,7 +8047,7 @@ queue-microtask@^1.2.2: @@ -8032,7 +8047,7 @@ queue-microtask@^1.2.2:
8032 8047
8033 quill-delta@^3.6.2: 8048 quill-delta@^3.6.2:
8034 version "3.6.3" 8049 version "3.6.3"
8035 - resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" 8050 + resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz"
8036 integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== 8051 integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==
8037 dependencies: 8052 dependencies:
8038 deep-equal "^1.0.1" 8053 deep-equal "^1.0.1"
@@ -8041,7 +8056,7 @@ quill-delta@^3.6.2: @@ -8041,7 +8056,7 @@ quill-delta@^3.6.2:
8041 8056
8042 quill@^1.3.7: 8057 quill@^1.3.7:
8043 version "1.3.7" 8058 version "1.3.7"
8044 - resolved "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8" 8059 + resolved "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz"
8045 integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g== 8060 integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==
8046 dependencies: 8061 dependencies:
8047 clone "^2.1.1" 8062 clone "^2.1.1"
@@ -8470,7 +8485,7 @@ react-markdown@^8.0.7: @@ -8470,7 +8485,7 @@ react-markdown@^8.0.7:
8470 8485
8471 react-quill@^2.0.0: 8486 react-quill@^2.0.0:
8472 version "2.0.0" 8487 version "2.0.0"
8473 - resolved "https://registry.npmmirror.com/react-quill/-/react-quill-2.0.0.tgz#67a0100f58f96a246af240c9fa6841b363b3e017" 8488 + resolved "https://registry.npmmirror.com/react-quill/-/react-quill-2.0.0.tgz"
8474 integrity sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg== 8489 integrity sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==
8475 dependencies: 8490 dependencies:
8476 "@types/quill" "^1.3.10" 8491 "@types/quill" "^1.3.10"
@@ -8570,18 +8585,9 @@ regenerator-transform@^0.15.1: @@ -8570,18 +8585,9 @@ regenerator-transform@^0.15.1:
8570 dependencies: 8585 dependencies:
8571 "@babel/runtime" "^7.8.4" 8586 "@babel/runtime" "^7.8.4"
8572 8587
8573 -regexp.prototype.flags@^1.4.3:  
8574 - version "1.4.3"  
8575 - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"  
8576 - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==  
8577 - dependencies:  
8578 - call-bind "^1.0.2"  
8579 - define-properties "^1.1.3"  
8580 - functions-have-names "^1.2.2"  
8581 -  
8582 -regexp.prototype.flags@^1.5.1: 8588 +regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.1:
8583 version "1.5.4" 8589 version "1.5.4"
8584 - resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" 8590 + resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz"
8585 integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== 8591 integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
8586 dependencies: 8592 dependencies:
8587 call-bind "^1.0.8" 8593 call-bind "^1.0.8"
@@ -8820,12 +8826,7 @@ sade@^1.7.3: @@ -8820,12 +8826,7 @@ sade@^1.7.3:
8820 dependencies: 8826 dependencies:
8821 mri "^1.1.0" 8827 mri "^1.1.0"
8822 8828
8823 -safe-buffer@^5.1.0:  
8824 - version "5.2.1"  
8825 - resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"  
8826 - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==  
8827 -  
8828 -safe-buffer@~5.1.0, safe-buffer@~5.1.1: 8829 +safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
8829 version "5.1.2" 8830 version "5.1.2"
8830 resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz" 8831 resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
8831 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 8832 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -8872,7 +8873,7 @@ scheduler@^0.23.0: @@ -8872,7 +8873,7 @@ scheduler@^0.23.0:
8872 dependencies: 8873 dependencies:
8873 loose-envify "^1.1.0" 8874 loose-envify "^1.1.0"
8874 8875
8875 -schema-utils@^3.1.1, schema-utils@^3.2.0: 8876 +schema-utils@^3.0.0:
8876 version "3.3.0" 8877 version "3.3.0"
8877 resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz" 8878 resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz"
8878 integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== 8879 integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
@@ -8888,11 +8889,16 @@ scroll-into-view-if-needed@^3.1.0: @@ -8888,11 +8889,16 @@ scroll-into-view-if-needed@^3.1.0:
8888 dependencies: 8889 dependencies:
8889 compute-scroll-into-view "^3.0.2" 8890 compute-scroll-into-view "^3.0.2"
8890 8891
8891 -semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: 8892 +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1:
8892 version "6.3.1" 8893 version "6.3.1"
8893 resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" 8894 resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
8894 integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 8895 integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
8895 8896
  8897 +semver@^7.3.5:
  8898 + version "7.7.1"
  8899 + resolved "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz"
  8900 + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
  8901 +
8896 semver@^7.5.3: 8902 semver@^7.5.3:
8897 version "7.6.3" 8903 version "7.6.3"
8898 resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz" 8904 resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz"
@@ -8905,16 +8911,16 @@ semver@^7.5.4: @@ -8905,16 +8911,16 @@ semver@^7.5.4:
8905 dependencies: 8911 dependencies:
8906 lru-cache "^6.0.0" 8912 lru-cache "^6.0.0"
8907 8913
8908 -serialize-javascript@^6.0.1:  
8909 - version "6.0.1"  
8910 - resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz"  
8911 - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== 8914 +serialize-javascript@^5.0.1:
  8915 + version "5.0.1"
  8916 + resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz"
  8917 + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
8912 dependencies: 8918 dependencies:
8913 randombytes "^2.1.0" 8919 randombytes "^2.1.0"
8914 8920
8915 set-function-length@^1.2.2: 8921 set-function-length@^1.2.2:
8916 version "1.2.2" 8922 version "1.2.2"
8917 - resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 8923 + resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz"
8918 integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 8924 integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
8919 dependencies: 8925 dependencies:
8920 define-data-property "^1.1.4" 8926 define-data-property "^1.1.4"
@@ -8926,7 +8932,7 @@ set-function-length@^1.2.2: @@ -8926,7 +8932,7 @@ set-function-length@^1.2.2:
8926 8932
8927 set-function-name@^2.0.2: 8933 set-function-name@^2.0.2:
8928 version "2.0.2" 8934 version "2.0.2"
8929 - resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" 8935 + resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz"
8930 integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== 8936 integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
8931 dependencies: 8937 dependencies:
8932 define-data-property "^1.1.4" 8938 define-data-property "^1.1.4"
@@ -9016,10 +9022,15 @@ slice-ansi@^5.0.0: @@ -9016,10 +9022,15 @@ slice-ansi@^5.0.0:
9016 ansi-styles "^6.0.0" 9022 ansi-styles "^6.0.0"
9017 is-fullwidth-code-point "^4.0.0" 9023 is-fullwidth-code-point "^4.0.0"
9018 9024
  9025 +source-list-map@^2.0.0, source-list-map@^2.0.1:
  9026 + version "2.0.1"
  9027 + resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz"
  9028 + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
  9029 +
9019 "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: 9030 "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
9020 - version "1.0.2"  
9021 - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"  
9022 - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 9031 + version "1.2.1"
  9032 + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz"
  9033 + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
9023 9034
9024 source-map-support@0.5.13: 9035 source-map-support@0.5.13:
9025 version "0.5.13" 9036 version "0.5.13"
@@ -9069,6 +9080,13 @@ ssf@~0.11.2: @@ -9069,6 +9080,13 @@ ssf@~0.11.2:
9069 dependencies: 9080 dependencies:
9070 frac "~1.1.2" 9081 frac "~1.1.2"
9071 9082
  9083 +ssri@^8.0.1:
  9084 + version "8.0.1"
  9085 + resolved "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz"
  9086 + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
  9087 + dependencies:
  9088 + minipass "^3.1.1"
  9089 +
9072 stable@^0.1.8: 9090 stable@^0.1.8:
9073 version "0.1.8" 9091 version "0.1.8"
9074 resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" 9092 resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
@@ -9254,7 +9272,7 @@ supports-color@^5.3.0: @@ -9254,7 +9272,7 @@ supports-color@^5.3.0:
9254 dependencies: 9272 dependencies:
9255 has-flag "^3.0.0" 9273 has-flag "^3.0.0"
9256 9274
9257 -supports-color@^7.1.0: 9275 +supports-color@^7.0.0, supports-color@^7.1.0:
9258 version "7.2.0" 9276 version "7.2.0"
9259 resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 9277 resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
9260 integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 9278 integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
@@ -9304,26 +9322,42 @@ synckit@^0.8.5, synckit@^0.8.6: @@ -9304,26 +9322,42 @@ synckit@^0.8.5, synckit@^0.8.6:
9304 "@pkgr/core" "^0.1.0" 9322 "@pkgr/core" "^0.1.0"
9305 tslib "^2.6.2" 9323 tslib "^2.6.2"
9306 9324
9307 -tapable@^2.1.1, tapable@^2.2.0: 9325 +tapable@^2.0.0, tapable@^2.2.0:
9308 version "2.2.1" 9326 version "2.2.1"
9309 resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" 9327 resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
9310 integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 9328 integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
9311 9329
9312 -terser-webpack-plugin@^5.3.7:  
9313 - version "5.3.9"  
9314 - resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz"  
9315 - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== 9330 +tar@^6.0.2:
  9331 + version "6.2.1"
  9332 + resolved "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz"
  9333 + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
  9334 + dependencies:
  9335 + chownr "^2.0.0"
  9336 + fs-minipass "^2.0.0"
  9337 + minipass "^5.0.0"
  9338 + minizlib "^2.1.1"
  9339 + mkdirp "^1.0.3"
  9340 + yallist "^4.0.0"
  9341 +
  9342 +terser-webpack-plugin@^4.1.0:
  9343 + version "4.2.3"
  9344 + resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz"
  9345 + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==
9316 dependencies: 9346 dependencies:
9317 - "@jridgewell/trace-mapping" "^0.3.17"  
9318 - jest-worker "^27.4.5"  
9319 - schema-utils "^3.1.1"  
9320 - serialize-javascript "^6.0.1"  
9321 - terser "^5.16.8" 9347 + cacache "^15.0.5"
  9348 + find-cache-dir "^3.3.1"
  9349 + jest-worker "^26.5.0"
  9350 + p-limit "^3.0.2"
  9351 + schema-utils "^3.0.0"
  9352 + serialize-javascript "^5.0.1"
  9353 + source-map "^0.6.1"
  9354 + terser "^5.3.4"
  9355 + webpack-sources "^1.4.3"
9322 9356
9323 -terser@^5.16.8:  
9324 - version "5.18.2"  
9325 - resolved "https://registry.npmmirror.com/terser/-/terser-5.18.2.tgz"  
9326 - integrity sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w== 9357 +terser@^5.3.4:
  9358 + version "5.39.0"
  9359 + resolved "https://registry.npmmirror.com/terser/-/terser-5.39.0.tgz"
  9360 + integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==
9327 dependencies: 9361 dependencies:
9328 "@jridgewell/source-map" "^0.3.3" 9362 "@jridgewell/source-map" "^0.3.3"
9329 acorn "^8.8.2" 9363 acorn "^8.8.2"
@@ -9545,7 +9579,7 @@ undici-types@~6.20.0: @@ -9545,7 +9579,7 @@ undici-types@~6.20.0:
9545 9579
9546 undici@^6.19.5: 9580 undici@^6.19.5:
9547 version "6.21.2" 9581 version "6.21.2"
9548 - resolved "https://registry.npmmirror.com/undici/-/undici-6.21.2.tgz#49c5884e8f9039c65a89ee9018ef3c8e2f1f4928" 9582 + resolved "https://registry.npmmirror.com/undici/-/undici-6.21.2.tgz"
9549 integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g== 9583 integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==
9550 9584
9551 unicode-canonical-property-names-ecmascript@^2.0.0: 9585 unicode-canonical-property-names-ecmascript@^2.0.0:
@@ -9584,6 +9618,20 @@ unified@^10.0.0: @@ -9584,6 +9618,20 @@ unified@^10.0.0:
9584 trough "^2.0.0" 9618 trough "^2.0.0"
9585 vfile "^5.0.0" 9619 vfile "^5.0.0"
9586 9620
  9621 +unique-filename@^1.1.1:
  9622 + version "1.1.1"
  9623 + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz"
  9624 + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
  9625 + dependencies:
  9626 + unique-slug "^2.0.0"
  9627 +
  9628 +unique-slug@^2.0.0:
  9629 + version "2.0.2"
  9630 + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz"
  9631 + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
  9632 + dependencies:
  9633 + imurmurhash "^0.1.4"
  9634 +
9587 unist-util-find-after@^4.0.0: 9635 unist-util-find-after@^4.0.0:
9588 version "4.0.1" 9636 version "4.0.1"
9589 resolved "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz" 9637 resolved "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz"
@@ -9653,29 +9701,13 @@ unpipe@1.0.0: @@ -9653,29 +9701,13 @@ unpipe@1.0.0:
9653 resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 9701 resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
9654 integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 9702 integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
9655 9703
9656 -update-browserslist-db@^1.0.10:  
9657 - version "1.0.10"  
9658 - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz"  
9659 - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==  
9660 - dependencies:  
9661 - escalade "^3.1.1"  
9662 - picocolors "^1.0.0"  
9663 -  
9664 -update-browserslist-db@^1.0.11:  
9665 - version "1.0.11"  
9666 - resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz"  
9667 - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==  
9668 - dependencies:  
9669 - escalade "^3.1.1"  
9670 - picocolors "^1.0.0"  
9671 -  
9672 -update-browserslist-db@^1.1.0:  
9673 - version "1.1.0"  
9674 - resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz"  
9675 - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== 9704 +update-browserslist-db@^1.1.1:
  9705 + version "1.1.3"
  9706 + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz"
  9707 + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
9676 dependencies: 9708 dependencies:
9677 - escalade "^3.1.2"  
9678 - picocolors "^1.0.1" 9709 + escalade "^3.2.0"
  9710 + picocolors "^1.1.1"
9679 9711
9680 uri-js@^4.2.2: 9712 uri-js@^4.2.2:
9681 version "4.4.1" 9713 version "4.4.1"
@@ -9767,6 +9799,15 @@ vfile@^5.0.0: @@ -9767,6 +9799,15 @@ vfile@^5.0.0:
9767 unist-util-stringify-position "^3.0.0" 9799 unist-util-stringify-position "^3.0.0"
9768 vfile-message "^3.0.0" 9800 vfile-message "^3.0.0"
9769 9801
  9802 +vue-loader@^17.3.1:
  9803 + version "17.3.1"
  9804 + resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.3.1.tgz"
  9805 + integrity sha512-nmVu7KU8geOyzsStyyaxID/uBGDMS8BkPXb6Lu2SNkMawriIbb+hYrNtgftHMKxOSkjjjTF5OSSwPo3KP59egg==
  9806 + dependencies:
  9807 + chalk "^4.1.0"
  9808 + hash-sum "^2.0.0"
  9809 + watchpack "^2.4.0"
  9810 +
9770 w3c-xmlserializer@^4.0.0: 9811 w3c-xmlserializer@^4.0.0:
9771 version "4.0.0" 9812 version "4.0.0"
9772 resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" 9813 resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz"
@@ -9789,10 +9830,10 @@ watch@^1.0.2: @@ -9789,10 +9830,10 @@ watch@^1.0.2:
9789 exec-sh "^0.2.0" 9830 exec-sh "^0.2.0"
9790 minimist "^1.2.0" 9831 minimist "^1.2.0"
9791 9832
9792 -watchpack@^2.4.0:  
9793 - version "2.4.0"  
9794 - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz"  
9795 - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== 9833 +watchpack@^2.0.0, watchpack@^2.4.0:
  9834 + version "2.4.2"
  9835 + resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.2.tgz"
  9836 + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==
9796 dependencies: 9837 dependencies:
9797 glob-to-regexp "^0.4.1" 9838 glob-to-regexp "^0.4.1"
9798 graceful-fs "^4.1.2" 9839 graceful-fs "^4.1.2"
@@ -9817,40 +9858,51 @@ webidl-conversions@^7.0.0: @@ -9817,40 +9858,51 @@ webidl-conversions@^7.0.0:
9817 resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz" 9858 resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
9818 integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== 9859 integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
9819 9860
9820 -webpack-sources@^3.2.3:  
9821 - version "3.2.3"  
9822 - resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz"  
9823 - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==  
9824 -  
9825 -webpack@^5.88.1:  
9826 - version "5.88.1"  
9827 - resolved "https://registry.npmmirror.com/webpack/-/webpack-5.88.1.tgz"  
9828 - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==  
9829 - dependencies:  
9830 - "@types/eslint-scope" "^3.7.3"  
9831 - "@types/estree" "^1.0.0"  
9832 - "@webassemblyjs/ast" "^1.11.5"  
9833 - "@webassemblyjs/wasm-edit" "^1.11.5"  
9834 - "@webassemblyjs/wasm-parser" "^1.11.5"  
9835 - acorn "^8.7.1"  
9836 - acorn-import-assertions "^1.9.0"  
9837 - browserslist "^4.14.5" 9861 +webpack-sources@^1.4.3:
  9862 + version "1.4.3"
  9863 + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz"
  9864 + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
  9865 + dependencies:
  9866 + source-list-map "^2.0.0"
  9867 + source-map "~0.6.1"
  9868 +
  9869 +webpack-sources@^2.0.1:
  9870 + version "2.3.1"
  9871 + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-2.3.1.tgz"
  9872 + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==
  9873 + dependencies:
  9874 + source-list-map "^2.0.1"
  9875 + source-map "^0.6.1"
  9876 +
  9877 +webpack@^5.0.0-rc.6:
  9878 + version "5.0.0-rc.6"
  9879 + resolved "https://registry.npmmirror.com/webpack/-/webpack-5.0.0-rc.6.tgz"
  9880 + integrity sha512-UeZzugQFKpfqwv4e908rNnXxHILh/+MhNZtGg3hDrLaGpRaagZpVfu2wyrcbyRFhEGNKjJSb5USUOi/kQbNwqA==
  9881 + dependencies:
  9882 + "@types/eslint-scope" "^3.7.0"
  9883 + "@types/estree" "^0.0.45"
  9884 + "@webassemblyjs/ast" "1.9.0"
  9885 + "@webassemblyjs/helper-module-context" "1.9.0"
  9886 + "@webassemblyjs/wasm-edit" "1.9.0"
  9887 + "@webassemblyjs/wasm-parser" "1.9.0"
  9888 + acorn "^8.0.3"
  9889 + browserslist "^4.14.3"
9838 chrome-trace-event "^1.0.2" 9890 chrome-trace-event "^1.0.2"
9839 - enhanced-resolve "^5.15.0"  
9840 - es-module-lexer "^1.2.1"  
9841 - eslint-scope "5.1.1" 9891 + enhanced-resolve "^5.2.0"
  9892 + eslint-scope "^5.1.0"
9842 events "^3.2.0" 9893 events "^3.2.0"
9843 glob-to-regexp "^0.4.1" 9894 glob-to-regexp "^0.4.1"
9844 - graceful-fs "^4.2.9"  
9845 - json-parse-even-better-errors "^2.3.1"  
9846 - loader-runner "^4.2.0" 9895 + graceful-fs "^4.2.4"
  9896 + json-parse-better-errors "^1.0.2"
  9897 + loader-runner "^4.1.0"
9847 mime-types "^2.1.27" 9898 mime-types "^2.1.27"
9848 neo-async "^2.6.2" 9899 neo-async "^2.6.2"
9849 - schema-utils "^3.2.0"  
9850 - tapable "^2.1.1"  
9851 - terser-webpack-plugin "^5.3.7"  
9852 - watchpack "^2.4.0"  
9853 - webpack-sources "^3.2.3" 9900 + pkg-dir "^4.2.0"
  9901 + schema-utils "^3.0.0"
  9902 + tapable "^2.0.0"
  9903 + terser-webpack-plugin "^4.1.0"
  9904 + watchpack "^2.0.0"
  9905 + webpack-sources "^2.0.1"
9854 9906
9855 whatwg-encoding@^2.0.0: 9907 whatwg-encoding@^2.0.0:
9856 version "2.0.0" 9908 version "2.0.0"
@@ -9861,7 +9913,7 @@ whatwg-encoding@^2.0.0: @@ -9861,7 +9913,7 @@ whatwg-encoding@^2.0.0:
9861 9913
9862 whatwg-encoding@^3.1.1: 9914 whatwg-encoding@^3.1.1:
9863 version "3.1.1" 9915 version "3.1.1"
9864 - resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" 9916 + resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz"
9865 integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== 9917 integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==
9866 dependencies: 9918 dependencies:
9867 iconv-lite "0.6.3" 9919 iconv-lite "0.6.3"
@@ -9873,7 +9925,7 @@ whatwg-mimetype@^3.0.0: @@ -9873,7 +9925,7 @@ whatwg-mimetype@^3.0.0:
9873 9925
9874 whatwg-mimetype@^4.0.0: 9926 whatwg-mimetype@^4.0.0:
9875 version "4.0.0" 9927 version "4.0.0"
9876 - resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" 9928 + resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz"
9877 integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== 9929 integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==
9878 9930
9879 whatwg-url@^11.0.0: 9931 whatwg-url@^11.0.0:
@@ -10017,7 +10069,7 @@ yallist@^3.0.2: @@ -10017,7 +10069,7 @@ yallist@^3.0.2:
10017 10069
10018 yallist@^4.0.0: 10070 yallist@^4.0.0:
10019 version "4.0.0" 10071 version "4.0.0"
10020 - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 10072 + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz"
10021 integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 10073 integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
10022 10074
10023 yaml@^1.10.0: 10075 yaml@^1.10.0:
@@ -10063,7 +10115,7 @@ zod@^3.23.8, zod@^3.24.1: @@ -10063,7 +10115,7 @@ zod@^3.23.8, zod@^3.24.1:
10063 resolved "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz" 10115 resolved "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz"
10064 integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== 10116 integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==
10065 10117
10066 -zustand@^4.3.8, zustand@^4.4.0: 10118 +zustand@^4.4.0:
10067 version "4.5.6" 10119 version "4.5.6"
10068 resolved "https://registry.npmmirror.com/zustand/-/zustand-4.5.6.tgz" 10120 resolved "https://registry.npmmirror.com/zustand/-/zustand-4.5.6.tgz"
10069 integrity sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ== 10121 integrity sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==