enzostvs HF Staff commited on
Commit
44390c3
·
1 Parent(s): ec51066

try sandbox

Browse files
components/editor/index.tsx CHANGED
@@ -12,6 +12,7 @@ import {
12
  useUnmount,
13
  useUpdateEffect,
14
  } from "react-use";
 
15
  import classNames from "classnames";
16
  import { useRouter, useSearchParams } from "next/navigation";
17
 
@@ -46,7 +47,7 @@ export const AppEditor = ({
46
  const router = useRouter();
47
  const deploy = searchParams.get("deploy") === "true";
48
 
49
- const iframeRef = useRef<HTMLIFrameElement | null>(null);
50
  const preview = useRef<HTMLDivElement>(null);
51
  const editor = useRef<HTMLDivElement>(null);
52
  const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);
 
12
  useUnmount,
13
  useUpdateEffect,
14
  } from "react-use";
15
+ import { SandpackPreviewRef } from "@codesandbox/sandpack-react";
16
  import classNames from "classnames";
17
  import { useRouter, useSearchParams } from "next/navigation";
18
 
 
47
  const router = useRouter();
48
  const deploy = searchParams.get("deploy") === "true";
49
 
50
+ const iframeRef = useRef<SandpackPreviewRef>(null);
51
  const preview = useRef<HTMLDivElement>(null);
52
  const editor = useRef<HTMLDivElement>(null);
53
  const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);
components/editor/preview/index.tsx CHANGED
@@ -3,6 +3,13 @@ import { useUpdateEffect } from "react-use";
3
  import { useMemo, useState } from "react";
4
  import classNames from "classnames";
5
  import { toast } from "sonner";
 
 
 
 
 
 
 
6
 
7
  import { cn } from "@/lib/utils";
8
  import { GridPattern } from "@/components/magic-ui/grid-pattern";
@@ -28,7 +35,7 @@ export const Preview = ({
28
  pages: Page[];
29
  setCurrentPage: React.Dispatch<React.SetStateAction<string>>;
30
  ref: React.RefObject<HTMLDivElement | null>;
31
- iframeRef?: React.RefObject<HTMLIFrameElement | null>;
32
  device: "desktop" | "mobile";
33
  currentTab: string;
34
  isEditableModeEnabled?: boolean;
@@ -39,106 +46,66 @@ export const Preview = ({
39
  );
40
 
41
  // add event listener to the iframe to track hovered elements
42
- const handleMouseOver = (event: MouseEvent) => {
43
- if (iframeRef?.current) {
44
- const iframeDocument = iframeRef.current.contentDocument;
45
- if (iframeDocument) {
46
- const targetElement = event.target as HTMLElement;
47
- if (
48
- hoveredElement !== targetElement &&
49
- targetElement !== iframeDocument.body
50
- ) {
51
- setHoveredElement(targetElement);
52
- targetElement.classList.add("hovered-element");
53
- } else {
54
- return setHoveredElement(null);
55
- }
56
- }
57
- }
58
- };
59
- const handleMouseOut = () => {
60
- setHoveredElement(null);
61
- };
62
- const handleClick = (event: MouseEvent) => {
63
- if (iframeRef?.current) {
64
- const iframeDocument = iframeRef.current.contentDocument;
65
- if (iframeDocument) {
66
- const targetElement = event.target as HTMLElement;
67
- if (targetElement !== iframeDocument.body) {
68
- onClickElement?.(targetElement);
69
- }
70
- }
71
- }
72
- };
73
- const handleCustomNavigation = (event: MouseEvent) => {
74
- if (iframeRef?.current) {
75
- const iframeDocument = iframeRef.current.contentDocument;
76
- if (iframeDocument) {
77
- const findClosestAnchor = (
78
- element: HTMLElement
79
- ): HTMLAnchorElement | null => {
80
- let current = element;
81
- while (current && current !== iframeDocument.body) {
82
- if (current.tagName === "A") {
83
- return current as HTMLAnchorElement;
84
- }
85
- current = current.parentElement as HTMLElement;
86
- }
87
- return null;
88
- };
89
-
90
- const anchorElement = findClosestAnchor(event.target as HTMLElement);
91
-
92
- if (anchorElement) {
93
- let href = anchorElement.getAttribute("href");
94
- if (href) {
95
- event.stopPropagation();
96
- event.preventDefault();
97
-
98
- if (href.includes("#") && !href.includes(".html")) {
99
- const targetElement = iframeDocument.querySelector(href);
100
- if (targetElement) {
101
- targetElement.scrollIntoView({ behavior: "smooth" });
102
- }
103
- return;
104
- }
105
 
106
- href = href.split(".html")[0] + ".html";
107
- const isPageExist = pages.some((page) => page.path === href);
108
- if (isPageExist) {
109
- setCurrentPage(href);
110
- }
111
- }
112
- }
113
- }
114
- }
115
- };
116
-
117
- useUpdateEffect(() => {
118
- const cleanupListeners = () => {
119
- if (iframeRef?.current?.contentDocument) {
120
- const iframeDocument = iframeRef.current.contentDocument;
121
- iframeDocument.removeEventListener("mouseover", handleMouseOver);
122
- iframeDocument.removeEventListener("mouseout", handleMouseOut);
123
- iframeDocument.removeEventListener("click", handleClick);
124
- }
125
- };
126
 
127
- if (iframeRef?.current) {
128
- const iframeDocument = iframeRef.current.contentDocument;
129
- if (iframeDocument) {
130
- cleanupListeners();
131
 
132
- if (isEditableModeEnabled) {
133
- iframeDocument.addEventListener("mouseover", handleMouseOver);
134
- iframeDocument.addEventListener("mouseout", handleMouseOut);
135
- iframeDocument.addEventListener("click", handleClick);
136
- }
137
- }
138
- }
139
 
140
- return cleanupListeners;
141
- }, [iframeRef, isEditableModeEnabled]);
142
 
143
  const selectedElement = useMemo(() => {
144
  if (!isEditableModeEnabled) return null;
@@ -146,6 +113,13 @@ export const Preview = ({
146
  return hoveredElement;
147
  }, [hoveredElement, isEditableModeEnabled]);
148
 
 
 
 
 
 
 
 
149
  return (
150
  <div
151
  ref={ref}
@@ -192,12 +166,11 @@ export const Preview = ({
192
  </span>
193
  </div>
194
  )}
195
- <iframe
196
  id="preview-iframe"
197
- ref={iframeRef}
198
  title="output"
199
  className={classNames(
200
- "w-full select-none transition-all duration-200 bg-black h-full",
201
  {
202
  "pointer-events-none": isResizing || isAiWorking,
203
  "lg:max-w-md lg:mx-auto lg:!rounded-[42px] lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl lg:h-[80dvh] lg:max-h-[996px]":
@@ -206,25 +179,49 @@ export const Preview = ({
206
  currentTab !== "preview" && device === "desktop",
207
  }
208
  )}
209
- srcDoc={html}
210
- onLoad={() => {
211
- if (iframeRef?.current?.contentWindow?.document?.body) {
212
- iframeRef.current.contentWindow.document.body.scrollIntoView({
213
- block: isAiWorking ? "end" : "start",
214
- inline: "nearest",
215
- behavior: isAiWorking ? "instant" : "smooth",
216
- });
217
- }
218
- // add event listener to all links in the iframe to handle navigation
219
- if (iframeRef?.current?.contentWindow?.document) {
220
- const links =
221
- iframeRef.current.contentWindow.document.querySelectorAll("a");
222
- links.forEach((link) => {
223
- link.addEventListener("click", handleCustomNavigation);
224
- });
225
- }
226
- }}
227
- />
228
  </div>
229
  );
230
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import { useMemo, useState } from "react";
4
  import classNames from "classnames";
5
  import { toast } from "sonner";
6
+ import {
7
+ SandpackLayout,
8
+ SandpackPreview,
9
+ SandpackPreviewRef,
10
+ SandpackProvider,
11
+ useSandpack,
12
+ } from "@codesandbox/sandpack-react";
13
 
14
  import { cn } from "@/lib/utils";
15
  import { GridPattern } from "@/components/magic-ui/grid-pattern";
 
35
  pages: Page[];
36
  setCurrentPage: React.Dispatch<React.SetStateAction<string>>;
37
  ref: React.RefObject<HTMLDivElement | null>;
38
+ iframeRef?: React.RefObject<SandpackPreviewRef | null>;
39
  device: "desktop" | "mobile";
40
  currentTab: string;
41
  isEditableModeEnabled?: boolean;
 
46
  );
47
 
48
  // add event listener to the iframe to track hovered elements
49
+ // const handleMouseOver = (event: MouseEvent) => {
50
+ // if (iframeRef?.current) {
51
+ // const iframeDocument = iframeRef.current.querySelector("iframe");
52
+ // if (iframeDocument) {
53
+ // const targetElement = event.target as HTMLElement;
54
+ // const iframeEl = iframeDocument as HTMLIFrameElement;
55
+ // const iframeBody = iframeEl.contentDocument?.body;
56
+ // if (hoveredElement !== targetElement && targetElement !== iframeBody) {
57
+ // setHoveredElement(targetElement);
58
+ // targetElement.classList.add("hovered-element");
59
+ // } else {
60
+ // return setHoveredElement(null);
61
+ // }
62
+ // }
63
+ // }
64
+ // };
65
+ // const handleMouseOut = () => {
66
+ // setHoveredElement(null);
67
+ // };
68
+ // const handleClick = (event: MouseEvent) => {
69
+ // if (iframeRef?.current) {
70
+ // const iframeDocument = iframeRef.current.querySelector("iframe");
71
+ // if (iframeDocument) {
72
+ // const targetElement = event.target as HTMLElement;
73
+ // const iframeEl = iframeDocument as HTMLIFrameElement;
74
+ // const iframeBody = iframeEl.contentDocument?.body;
75
+ // if (targetElement !== iframeBody) {
76
+ // onClickElement?.(targetElement);
77
+ // }
78
+ // }
79
+ // }
80
+ // };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
+ // useUpdateEffect(() => {
83
+ // const cleanupListeners = () => {
84
+ // if (iframeRef?.current) {
85
+ // const iframeDocument = iframeRef.current.querySelector("iframe");
86
+ // if (iframeDocument) {
87
+ // iframeDocument.removeEventListener("mouseover", handleMouseOver);
88
+ // iframeDocument.removeEventListener("mouseout", handleMouseOut);
89
+ // iframeDocument.removeEventListener("click", handleClick);
90
+ // }
91
+ // }
92
+ // };
 
 
 
 
 
 
 
 
 
93
 
94
+ // if (iframeRef?.current) {
95
+ // const iframeDocument = iframeRef.current.querySelector("iframe");
96
+ // if (iframeDocument) {
97
+ // cleanupListeners();
98
 
99
+ // if (isEditableModeEnabled) {
100
+ // iframeDocument.addEventListener("mouseover", handleMouseOver);
101
+ // iframeDocument.addEventListener("mouseout", handleMouseOut);
102
+ // iframeDocument.addEventListener("click", handleClick);
103
+ // }
104
+ // }
105
+ // }
106
 
107
+ // return cleanupListeners;
108
+ // }, [iframeRef, isEditableModeEnabled]);
109
 
110
  const selectedElement = useMemo(() => {
111
  if (!isEditableModeEnabled) return null;
 
113
  return hoveredElement;
114
  }, [hoveredElement, isEditableModeEnabled]);
115
 
116
+ const formattedPages = useMemo(() => {
117
+ return pages.reduce((acc, page) => {
118
+ acc[page.path] = page.html;
119
+ return acc;
120
+ }, {} as Record<string, string>);
121
+ }, [pages]);
122
+
123
  return (
124
  <div
125
  ref={ref}
 
166
  </span>
167
  </div>
168
  )}
169
+ <div
170
  id="preview-iframe"
 
171
  title="output"
172
  className={classNames(
173
+ "w-full select-none transition-all duration-200 bg-black h-full overflow-hidden",
174
  {
175
  "pointer-events-none": isResizing || isAiWorking,
176
  "lg:max-w-md lg:mx-auto lg:!rounded-[42px] lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl lg:h-[80dvh] lg:max-h-[996px]":
 
179
  currentTab !== "preview" && device === "desktop",
180
  }
181
  )}
182
+ >
183
+ <SandpackProvider
184
+ template="static"
185
+ options={{
186
+ classes: {
187
+ "sp-wrapper": "!w-full !h-full",
188
+ "sp-layout": "!w-full !h-full",
189
+ "sp-stack": "!w-full !h-full",
190
+ },
191
+ }}
192
+ files={formattedPages}
193
+ >
194
+ <SandpackLayout>
195
+ <SandpackPreviewClient ref={iframeRef!} />
196
+ </SandpackLayout>
197
+ </SandpackProvider>
198
+ </div>
 
 
199
  </div>
200
  );
201
  };
202
+
203
+ const SandpackPreviewClient = ({
204
+ ref,
205
+ }: {
206
+ ref: React.RefObject<SandpackPreviewRef | null>;
207
+ }) => {
208
+ const { sandpack } = useSandpack();
209
+
210
+ useUpdateEffect(() => {
211
+ const client = ref.current?.getClient();
212
+ const clientId = ref.current?.clientId;
213
+
214
+ if (client && clientId) {
215
+ // console.log({ client });
216
+ // console.log(sandpack.clients[clientId]);
217
+ const iframe = client.iframe;
218
+ console.log(iframe.contentWindow?.document);
219
+ }
220
+ /**
221
+ * NOTE: In order to make sure that the client will be available
222
+ * use the whole `sandpack` object as a dependency.
223
+ */
224
+ }, [sandpack]);
225
+
226
+ return <SandpackPreview ref={ref} />;
227
+ };
lib/providers.ts CHANGED
@@ -75,7 +75,6 @@ export const MODELS = [
75
  label: "DeepSeek V3.1",
76
  providers: ["fireworks-ai", "novita"],
77
  isNew: true,
78
- isThinker: true,
79
  autoProvider: "fireworks-ai",
80
  },
81
  ];
 
75
  label: "DeepSeek V3.1",
76
  providers: ["fireworks-ai", "novita"],
77
  isNew: true,
 
78
  autoProvider: "fireworks-ai",
79
  },
80
  ];
package-lock.json CHANGED
@@ -8,6 +8,7 @@
8
  "name": "deepsite-v2",
9
  "version": "0.1.0",
10
  "dependencies": {
 
11
  "@huggingface/hub": "^2.2.0",
12
  "@huggingface/inference": "^4.0.3",
13
  "@monaco-editor/react": "^4.7.0-rc.0",
@@ -97,6 +98,182 @@
97
  "node": ">=6.9.0"
98
  }
99
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  "node_modules/@emnapi/core": {
101
  "version": "1.4.3",
102
  "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz",
@@ -876,6 +1053,69 @@
876
  "@jridgewell/sourcemap-codec": "^1.4.14"
877
  }
878
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
879
  "node_modules/@monaco-editor/loader": {
880
  "version": "1.5.0",
881
  "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz",
@@ -1110,6 +1350,12 @@
1110
  "node": ">=12.4.0"
1111
  }
1112
  },
 
 
 
 
 
 
1113
  "node_modules/@radix-ui/number": {
1114
  "version": "1.1.1",
1115
  "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
@@ -2055,6 +2301,28 @@
2055
  "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
2056
  "license": "MIT"
2057
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2058
  "node_modules/@rtsao/scc": {
2059
  "version": "1.1.0",
2060
  "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
@@ -2069,6 +2337,12 @@
2069
  "dev": true,
2070
  "license": "MIT"
2071
  },
 
 
 
 
 
 
2072
  "node_modules/@swc/counter": {
2073
  "version": "0.1.3",
2074
  "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
@@ -3341,6 +3615,12 @@
3341
  "ajv": "^6.9.1"
3342
  }
3343
  },
 
 
 
 
 
 
3344
  "node_modules/ansi-styles": {
3345
  "version": "4.3.0",
3346
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -3620,6 +3900,26 @@
3620
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
3621
  "license": "MIT"
3622
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3623
  "node_modules/big.js": {
3624
  "version": "5.2.2",
3625
  "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -3695,6 +3995,30 @@
3695
  "node": ">=16.20.1"
3696
  }
3697
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3698
  "node_modules/buffer-from": {
3699
  "version": "1.1.2",
3700
  "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -3847,6 +4171,12 @@
3847
  "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==",
3848
  "license": "MIT"
3849
  },
 
 
 
 
 
 
3850
  "node_modules/client-only": {
3851
  "version": "0.0.1",
3852
  "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
@@ -3940,6 +4270,12 @@
3940
  "toggle-selection": "^1.0.6"
3941
  }
3942
  },
 
 
 
 
 
 
3943
  "node_modules/cross-spawn": {
3944
  "version": "7.0.6",
3945
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -3982,6 +4318,19 @@
3982
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
3983
  "license": "MIT"
3984
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
3985
  "node_modules/damerau-levenshtein": {
3986
  "version": "1.0.8",
3987
  "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -4121,6 +4470,15 @@
4121
  "node": ">=0.4.0"
4122
  }
4123
  },
 
 
 
 
 
 
 
 
 
4124
  "node_modules/detect-libc": {
4125
  "version": "2.0.4",
4126
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
@@ -4150,6 +4508,18 @@
4150
  "node": ">=0.10.0"
4151
  }
4152
  },
 
 
 
 
 
 
 
 
 
 
 
 
4153
  "node_modules/dunder-proto": {
4154
  "version": "1.0.1",
4155
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -4393,6 +4763,46 @@
4393
  "url": "https://github.com/sponsors/ljharb"
4394
  }
4395
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4396
  "node_modules/escalade": {
4397
  "version": "3.2.0",
4398
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -4404,6 +4814,12 @@
4404
  "node": ">=6"
4405
  }
4406
  },
 
 
 
 
 
 
4407
  "node_modules/escape-string-regexp": {
4408
  "version": "4.0.0",
4409
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -4775,6 +5191,21 @@
4775
  "url": "https://opencollective.com/eslint"
4776
  }
4777
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4778
  "node_modules/espree": {
4779
  "version": "10.3.0",
4780
  "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
@@ -4834,6 +5265,16 @@
4834
  "node": ">=0.10.0"
4835
  }
4836
  },
 
 
 
 
 
 
 
 
 
 
4837
  "node_modules/events": {
4838
  "version": "3.3.0",
4839
  "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -4845,6 +5286,15 @@
4845
  "node": ">=0.8.x"
4846
  }
4847
  },
 
 
 
 
 
 
 
 
 
4848
  "node_modules/fast-deep-equal": {
4849
  "version": "3.1.3",
4850
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -5351,6 +5801,26 @@
5351
  "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==",
5352
  "license": "BSD-3-Clause"
5353
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5354
  "node_modules/ignore": {
5355
  "version": "5.3.2",
5356
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -5409,6 +5879,12 @@
5409
  "node": ">= 0.4"
5410
  }
5411
  },
 
 
 
 
 
 
5412
  "node_modules/is-array-buffer": {
5413
  "version": "3.0.5",
5414
  "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
@@ -6340,6 +6816,15 @@
6340
  "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
6341
  }
6342
  },
 
 
 
 
 
 
 
 
 
6343
  "node_modules/magic-string": {
6344
  "version": "0.30.17",
6345
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -6726,6 +7211,12 @@
6726
  "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
6727
  }
6728
  },
 
 
 
 
 
 
6729
  "node_modules/next/node_modules/postcss": {
6730
  "version": "8.4.31",
6731
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -6902,6 +7393,12 @@
6902
  "node": ">= 0.8.0"
6903
  }
6904
  },
 
 
 
 
 
 
6905
  "node_modules/own-keys": {
6906
  "version": "1.0.1",
6907
  "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
@@ -7120,6 +7617,15 @@
7120
  "node": ">=0.10.0"
7121
  }
7122
  },
 
 
 
 
 
 
 
 
 
7123
  "node_modules/react-dom": {
7124
  "version": "19.1.0",
7125
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
@@ -7858,6 +8364,18 @@
7858
  "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==",
7859
  "license": "MIT"
7860
  },
 
 
 
 
 
 
 
 
 
 
 
 
7861
  "node_modules/stop-iteration-iterator": {
7862
  "version": "1.1.0",
7863
  "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
@@ -7880,6 +8398,12 @@
7880
  "node": ">=10.0.0"
7881
  }
7882
  },
 
 
 
 
 
 
7883
  "node_modules/string.prototype.includes": {
7884
  "version": "2.0.1",
7885
  "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
@@ -8015,6 +8539,12 @@
8015
  "url": "https://github.com/sponsors/sindresorhus"
8016
  }
8017
  },
 
 
 
 
 
 
8018
  "node_modules/styled-jsx": {
8019
  "version": "5.1.6",
8020
  "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
@@ -8362,6 +8892,12 @@
8362
  "url": "https://github.com/sponsors/Wombosvideo"
8363
  }
8364
  },
 
 
 
 
 
 
8365
  "node_modules/type-check": {
8366
  "version": "0.4.0",
8367
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -8645,6 +9181,12 @@
8645
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
8646
  }
8647
  },
 
 
 
 
 
 
8648
  "node_modules/watchpack": {
8649
  "version": "2.4.4",
8650
  "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
 
8
  "name": "deepsite-v2",
9
  "version": "0.1.0",
10
  "dependencies": {
11
+ "@codesandbox/sandpack-react": "^2.20.0",
12
  "@huggingface/hub": "^2.2.0",
13
  "@huggingface/inference": "^4.0.3",
14
  "@monaco-editor/react": "^4.7.0-rc.0",
 
98
  "node": ">=6.9.0"
99
  }
100
  },
101
+ "node_modules/@codemirror/autocomplete": {
102
+ "version": "6.18.6",
103
+ "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz",
104
+ "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==",
105
+ "license": "MIT",
106
+ "dependencies": {
107
+ "@codemirror/language": "^6.0.0",
108
+ "@codemirror/state": "^6.0.0",
109
+ "@codemirror/view": "^6.17.0",
110
+ "@lezer/common": "^1.0.0"
111
+ }
112
+ },
113
+ "node_modules/@codemirror/commands": {
114
+ "version": "6.8.1",
115
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz",
116
+ "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==",
117
+ "license": "MIT",
118
+ "dependencies": {
119
+ "@codemirror/language": "^6.0.0",
120
+ "@codemirror/state": "^6.4.0",
121
+ "@codemirror/view": "^6.27.0",
122
+ "@lezer/common": "^1.1.0"
123
+ }
124
+ },
125
+ "node_modules/@codemirror/lang-css": {
126
+ "version": "6.3.1",
127
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz",
128
+ "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==",
129
+ "license": "MIT",
130
+ "dependencies": {
131
+ "@codemirror/autocomplete": "^6.0.0",
132
+ "@codemirror/language": "^6.0.0",
133
+ "@codemirror/state": "^6.0.0",
134
+ "@lezer/common": "^1.0.2",
135
+ "@lezer/css": "^1.1.7"
136
+ }
137
+ },
138
+ "node_modules/@codemirror/lang-html": {
139
+ "version": "6.4.9",
140
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz",
141
+ "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==",
142
+ "license": "MIT",
143
+ "dependencies": {
144
+ "@codemirror/autocomplete": "^6.0.0",
145
+ "@codemirror/lang-css": "^6.0.0",
146
+ "@codemirror/lang-javascript": "^6.0.0",
147
+ "@codemirror/language": "^6.4.0",
148
+ "@codemirror/state": "^6.0.0",
149
+ "@codemirror/view": "^6.17.0",
150
+ "@lezer/common": "^1.0.0",
151
+ "@lezer/css": "^1.1.0",
152
+ "@lezer/html": "^1.3.0"
153
+ }
154
+ },
155
+ "node_modules/@codemirror/lang-javascript": {
156
+ "version": "6.2.4",
157
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz",
158
+ "integrity": "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==",
159
+ "license": "MIT",
160
+ "dependencies": {
161
+ "@codemirror/autocomplete": "^6.0.0",
162
+ "@codemirror/language": "^6.6.0",
163
+ "@codemirror/lint": "^6.0.0",
164
+ "@codemirror/state": "^6.0.0",
165
+ "@codemirror/view": "^6.17.0",
166
+ "@lezer/common": "^1.0.0",
167
+ "@lezer/javascript": "^1.0.0"
168
+ }
169
+ },
170
+ "node_modules/@codemirror/language": {
171
+ "version": "6.11.3",
172
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.3.tgz",
173
+ "integrity": "sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==",
174
+ "license": "MIT",
175
+ "dependencies": {
176
+ "@codemirror/state": "^6.0.0",
177
+ "@codemirror/view": "^6.23.0",
178
+ "@lezer/common": "^1.1.0",
179
+ "@lezer/highlight": "^1.0.0",
180
+ "@lezer/lr": "^1.0.0",
181
+ "style-mod": "^4.0.0"
182
+ }
183
+ },
184
+ "node_modules/@codemirror/lint": {
185
+ "version": "6.8.5",
186
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz",
187
+ "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==",
188
+ "license": "MIT",
189
+ "dependencies": {
190
+ "@codemirror/state": "^6.0.0",
191
+ "@codemirror/view": "^6.35.0",
192
+ "crelt": "^1.0.5"
193
+ }
194
+ },
195
+ "node_modules/@codemirror/state": {
196
+ "version": "6.5.2",
197
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz",
198
+ "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==",
199
+ "license": "MIT",
200
+ "dependencies": {
201
+ "@marijn/find-cluster-break": "^1.0.0"
202
+ }
203
+ },
204
+ "node_modules/@codemirror/view": {
205
+ "version": "6.38.1",
206
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.1.tgz",
207
+ "integrity": "sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==",
208
+ "license": "MIT",
209
+ "dependencies": {
210
+ "@codemirror/state": "^6.5.0",
211
+ "crelt": "^1.0.6",
212
+ "style-mod": "^4.1.0",
213
+ "w3c-keyname": "^2.2.4"
214
+ }
215
+ },
216
+ "node_modules/@codesandbox/nodebox": {
217
+ "version": "0.1.8",
218
+ "resolved": "https://registry.npmjs.org/@codesandbox/nodebox/-/nodebox-0.1.8.tgz",
219
+ "integrity": "sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==",
220
+ "license": "SEE LICENSE IN ./LICENSE",
221
+ "dependencies": {
222
+ "outvariant": "^1.4.0",
223
+ "strict-event-emitter": "^0.4.3"
224
+ }
225
+ },
226
+ "node_modules/@codesandbox/sandpack-client": {
227
+ "version": "2.19.8",
228
+ "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-client/-/sandpack-client-2.19.8.tgz",
229
+ "integrity": "sha512-CMV4nr1zgKzVpx4I3FYvGRM5YT0VaQhALMW9vy4wZRhEyWAtJITQIqZzrTGWqB1JvV7V72dVEUCUPLfYz5hgJQ==",
230
+ "license": "Apache-2.0",
231
+ "dependencies": {
232
+ "@codesandbox/nodebox": "0.1.8",
233
+ "buffer": "^6.0.3",
234
+ "dequal": "^2.0.2",
235
+ "mime-db": "^1.52.0",
236
+ "outvariant": "1.4.0",
237
+ "static-browser-server": "1.0.3"
238
+ }
239
+ },
240
+ "node_modules/@codesandbox/sandpack-react": {
241
+ "version": "2.20.0",
242
+ "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-react/-/sandpack-react-2.20.0.tgz",
243
+ "integrity": "sha512-takd1YpW/PMQ6KPQfvseWLHWklJovGY8QYj8MtWnskGKbjOGJ6uZfyZbcJ6aCFLQMpNyjTqz9AKNbvhCOZ1TUQ==",
244
+ "license": "Apache-2.0",
245
+ "dependencies": {
246
+ "@codemirror/autocomplete": "^6.4.0",
247
+ "@codemirror/commands": "^6.1.3",
248
+ "@codemirror/lang-css": "^6.0.1",
249
+ "@codemirror/lang-html": "^6.4.0",
250
+ "@codemirror/lang-javascript": "^6.1.2",
251
+ "@codemirror/language": "^6.3.2",
252
+ "@codemirror/state": "^6.2.0",
253
+ "@codemirror/view": "^6.7.1",
254
+ "@codesandbox/sandpack-client": "^2.19.8",
255
+ "@lezer/highlight": "^1.1.3",
256
+ "@react-hook/intersection-observer": "^3.1.1",
257
+ "@stitches/core": "^1.2.6",
258
+ "anser": "^2.1.1",
259
+ "clean-set": "^1.1.2",
260
+ "dequal": "^2.0.2",
261
+ "escape-carriage": "^1.3.1",
262
+ "lz-string": "^1.4.4",
263
+ "react-devtools-inline": "4.4.0",
264
+ "react-is": "^17.0.2"
265
+ },
266
+ "peerDependencies": {
267
+ "react": "^16.8.0 || ^17 || ^18 || ^19",
268
+ "react-dom": "^16.8.0 || ^17 || ^18 || ^19"
269
+ }
270
+ },
271
+ "node_modules/@codesandbox/sandpack-react/node_modules/react-is": {
272
+ "version": "17.0.2",
273
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
274
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
275
+ "license": "MIT"
276
+ },
277
  "node_modules/@emnapi/core": {
278
  "version": "1.4.3",
279
  "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz",
 
1053
  "@jridgewell/sourcemap-codec": "^1.4.14"
1054
  }
1055
  },
1056
+ "node_modules/@lezer/common": {
1057
+ "version": "1.2.3",
1058
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz",
1059
+ "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==",
1060
+ "license": "MIT"
1061
+ },
1062
+ "node_modules/@lezer/css": {
1063
+ "version": "1.3.0",
1064
+ "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.0.tgz",
1065
+ "integrity": "sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==",
1066
+ "license": "MIT",
1067
+ "dependencies": {
1068
+ "@lezer/common": "^1.2.0",
1069
+ "@lezer/highlight": "^1.0.0",
1070
+ "@lezer/lr": "^1.3.0"
1071
+ }
1072
+ },
1073
+ "node_modules/@lezer/highlight": {
1074
+ "version": "1.2.1",
1075
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz",
1076
+ "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==",
1077
+ "license": "MIT",
1078
+ "dependencies": {
1079
+ "@lezer/common": "^1.0.0"
1080
+ }
1081
+ },
1082
+ "node_modules/@lezer/html": {
1083
+ "version": "1.3.10",
1084
+ "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz",
1085
+ "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==",
1086
+ "license": "MIT",
1087
+ "dependencies": {
1088
+ "@lezer/common": "^1.2.0",
1089
+ "@lezer/highlight": "^1.0.0",
1090
+ "@lezer/lr": "^1.0.0"
1091
+ }
1092
+ },
1093
+ "node_modules/@lezer/javascript": {
1094
+ "version": "1.5.1",
1095
+ "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.1.tgz",
1096
+ "integrity": "sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==",
1097
+ "license": "MIT",
1098
+ "dependencies": {
1099
+ "@lezer/common": "^1.2.0",
1100
+ "@lezer/highlight": "^1.1.3",
1101
+ "@lezer/lr": "^1.3.0"
1102
+ }
1103
+ },
1104
+ "node_modules/@lezer/lr": {
1105
+ "version": "1.4.2",
1106
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz",
1107
+ "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==",
1108
+ "license": "MIT",
1109
+ "dependencies": {
1110
+ "@lezer/common": "^1.0.0"
1111
+ }
1112
+ },
1113
+ "node_modules/@marijn/find-cluster-break": {
1114
+ "version": "1.0.2",
1115
+ "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
1116
+ "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
1117
+ "license": "MIT"
1118
+ },
1119
  "node_modules/@monaco-editor/loader": {
1120
  "version": "1.5.0",
1121
  "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz",
 
1350
  "node": ">=12.4.0"
1351
  }
1352
  },
1353
+ "node_modules/@open-draft/deferred-promise": {
1354
+ "version": "2.2.0",
1355
+ "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
1356
+ "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
1357
+ "license": "MIT"
1358
+ },
1359
  "node_modules/@radix-ui/number": {
1360
  "version": "1.1.1",
1361
  "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
 
2301
  "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
2302
  "license": "MIT"
2303
  },
2304
+ "node_modules/@react-hook/intersection-observer": {
2305
+ "version": "3.1.2",
2306
+ "resolved": "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz",
2307
+ "integrity": "sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ==",
2308
+ "license": "MIT",
2309
+ "dependencies": {
2310
+ "@react-hook/passive-layout-effect": "^1.2.0",
2311
+ "intersection-observer": "^0.10.0"
2312
+ },
2313
+ "peerDependencies": {
2314
+ "react": ">=16.8"
2315
+ }
2316
+ },
2317
+ "node_modules/@react-hook/passive-layout-effect": {
2318
+ "version": "1.2.1",
2319
+ "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
2320
+ "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
2321
+ "license": "MIT",
2322
+ "peerDependencies": {
2323
+ "react": ">=16.8"
2324
+ }
2325
+ },
2326
  "node_modules/@rtsao/scc": {
2327
  "version": "1.1.0",
2328
  "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
 
2337
  "dev": true,
2338
  "license": "MIT"
2339
  },
2340
+ "node_modules/@stitches/core": {
2341
+ "version": "1.2.8",
2342
+ "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz",
2343
+ "integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==",
2344
+ "license": "MIT"
2345
+ },
2346
  "node_modules/@swc/counter": {
2347
  "version": "0.1.3",
2348
  "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
 
3615
  "ajv": "^6.9.1"
3616
  }
3617
  },
3618
+ "node_modules/anser": {
3619
+ "version": "2.3.2",
3620
+ "resolved": "https://registry.npmjs.org/anser/-/anser-2.3.2.tgz",
3621
+ "integrity": "sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw==",
3622
+ "license": "MIT"
3623
+ },
3624
  "node_modules/ansi-styles": {
3625
  "version": "4.3.0",
3626
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 
3900
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
3901
  "license": "MIT"
3902
  },
3903
+ "node_modules/base64-js": {
3904
+ "version": "1.5.1",
3905
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
3906
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
3907
+ "funding": [
3908
+ {
3909
+ "type": "github",
3910
+ "url": "https://github.com/sponsors/feross"
3911
+ },
3912
+ {
3913
+ "type": "patreon",
3914
+ "url": "https://www.patreon.com/feross"
3915
+ },
3916
+ {
3917
+ "type": "consulting",
3918
+ "url": "https://feross.org/support"
3919
+ }
3920
+ ],
3921
+ "license": "MIT"
3922
+ },
3923
  "node_modules/big.js": {
3924
  "version": "5.2.2",
3925
  "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
 
3995
  "node": ">=16.20.1"
3996
  }
3997
  },
3998
+ "node_modules/buffer": {
3999
+ "version": "6.0.3",
4000
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
4001
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
4002
+ "funding": [
4003
+ {
4004
+ "type": "github",
4005
+ "url": "https://github.com/sponsors/feross"
4006
+ },
4007
+ {
4008
+ "type": "patreon",
4009
+ "url": "https://www.patreon.com/feross"
4010
+ },
4011
+ {
4012
+ "type": "consulting",
4013
+ "url": "https://feross.org/support"
4014
+ }
4015
+ ],
4016
+ "license": "MIT",
4017
+ "dependencies": {
4018
+ "base64-js": "^1.3.1",
4019
+ "ieee754": "^1.2.1"
4020
+ }
4021
+ },
4022
  "node_modules/buffer-from": {
4023
  "version": "1.1.2",
4024
  "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 
4171
  "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==",
4172
  "license": "MIT"
4173
  },
4174
+ "node_modules/clean-set": {
4175
+ "version": "1.1.2",
4176
+ "resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz",
4177
+ "integrity": "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==",
4178
+ "license": "MIT"
4179
+ },
4180
  "node_modules/client-only": {
4181
  "version": "0.0.1",
4182
  "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
 
4270
  "toggle-selection": "^1.0.6"
4271
  }
4272
  },
4273
+ "node_modules/crelt": {
4274
+ "version": "1.0.6",
4275
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
4276
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==",
4277
+ "license": "MIT"
4278
+ },
4279
  "node_modules/cross-spawn": {
4280
  "version": "7.0.6",
4281
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
 
4318
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
4319
  "license": "MIT"
4320
  },
4321
+ "node_modules/d": {
4322
+ "version": "1.0.2",
4323
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
4324
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
4325
+ "license": "ISC",
4326
+ "dependencies": {
4327
+ "es5-ext": "^0.10.64",
4328
+ "type": "^2.7.2"
4329
+ },
4330
+ "engines": {
4331
+ "node": ">=0.12"
4332
+ }
4333
+ },
4334
  "node_modules/damerau-levenshtein": {
4335
  "version": "1.0.8",
4336
  "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
 
4470
  "node": ">=0.4.0"
4471
  }
4472
  },
4473
+ "node_modules/dequal": {
4474
+ "version": "2.0.3",
4475
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
4476
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
4477
+ "license": "MIT",
4478
+ "engines": {
4479
+ "node": ">=6"
4480
+ }
4481
+ },
4482
  "node_modules/detect-libc": {
4483
  "version": "2.0.4",
4484
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
 
4508
  "node": ">=0.10.0"
4509
  }
4510
  },
4511
+ "node_modules/dotenv": {
4512
+ "version": "16.6.1",
4513
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
4514
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
4515
+ "license": "BSD-2-Clause",
4516
+ "engines": {
4517
+ "node": ">=12"
4518
+ },
4519
+ "funding": {
4520
+ "url": "https://dotenvx.com"
4521
+ }
4522
+ },
4523
  "node_modules/dunder-proto": {
4524
  "version": "1.0.1",
4525
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
 
4763
  "url": "https://github.com/sponsors/ljharb"
4764
  }
4765
  },
4766
+ "node_modules/es5-ext": {
4767
+ "version": "0.10.64",
4768
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
4769
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
4770
+ "hasInstallScript": true,
4771
+ "license": "ISC",
4772
+ "dependencies": {
4773
+ "es6-iterator": "^2.0.3",
4774
+ "es6-symbol": "^3.1.3",
4775
+ "esniff": "^2.0.1",
4776
+ "next-tick": "^1.1.0"
4777
+ },
4778
+ "engines": {
4779
+ "node": ">=0.10"
4780
+ }
4781
+ },
4782
+ "node_modules/es6-iterator": {
4783
+ "version": "2.0.3",
4784
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
4785
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
4786
+ "license": "MIT",
4787
+ "dependencies": {
4788
+ "d": "1",
4789
+ "es5-ext": "^0.10.35",
4790
+ "es6-symbol": "^3.1.1"
4791
+ }
4792
+ },
4793
+ "node_modules/es6-symbol": {
4794
+ "version": "3.1.4",
4795
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
4796
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
4797
+ "license": "ISC",
4798
+ "dependencies": {
4799
+ "d": "^1.0.2",
4800
+ "ext": "^1.7.0"
4801
+ },
4802
+ "engines": {
4803
+ "node": ">=0.12"
4804
+ }
4805
+ },
4806
  "node_modules/escalade": {
4807
  "version": "3.2.0",
4808
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
 
4814
  "node": ">=6"
4815
  }
4816
  },
4817
+ "node_modules/escape-carriage": {
4818
+ "version": "1.3.1",
4819
+ "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.1.tgz",
4820
+ "integrity": "sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==",
4821
+ "license": "MIT"
4822
+ },
4823
  "node_modules/escape-string-regexp": {
4824
  "version": "4.0.0",
4825
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
 
5191
  "url": "https://opencollective.com/eslint"
5192
  }
5193
  },
5194
+ "node_modules/esniff": {
5195
+ "version": "2.0.1",
5196
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
5197
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
5198
+ "license": "ISC",
5199
+ "dependencies": {
5200
+ "d": "^1.0.1",
5201
+ "es5-ext": "^0.10.62",
5202
+ "event-emitter": "^0.3.5",
5203
+ "type": "^2.7.2"
5204
+ },
5205
+ "engines": {
5206
+ "node": ">=0.10"
5207
+ }
5208
+ },
5209
  "node_modules/espree": {
5210
  "version": "10.3.0",
5211
  "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
 
5265
  "node": ">=0.10.0"
5266
  }
5267
  },
5268
+ "node_modules/event-emitter": {
5269
+ "version": "0.3.5",
5270
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
5271
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
5272
+ "license": "MIT",
5273
+ "dependencies": {
5274
+ "d": "1",
5275
+ "es5-ext": "~0.10.14"
5276
+ }
5277
+ },
5278
  "node_modules/events": {
5279
  "version": "3.3.0",
5280
  "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
 
5286
  "node": ">=0.8.x"
5287
  }
5288
  },
5289
+ "node_modules/ext": {
5290
+ "version": "1.7.0",
5291
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
5292
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
5293
+ "license": "ISC",
5294
+ "dependencies": {
5295
+ "type": "^2.7.2"
5296
+ }
5297
+ },
5298
  "node_modules/fast-deep-equal": {
5299
  "version": "3.1.3",
5300
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 
5801
  "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==",
5802
  "license": "BSD-3-Clause"
5803
  },
5804
+ "node_modules/ieee754": {
5805
+ "version": "1.2.1",
5806
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
5807
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
5808
+ "funding": [
5809
+ {
5810
+ "type": "github",
5811
+ "url": "https://github.com/sponsors/feross"
5812
+ },
5813
+ {
5814
+ "type": "patreon",
5815
+ "url": "https://www.patreon.com/feross"
5816
+ },
5817
+ {
5818
+ "type": "consulting",
5819
+ "url": "https://feross.org/support"
5820
+ }
5821
+ ],
5822
+ "license": "BSD-3-Clause"
5823
+ },
5824
  "node_modules/ignore": {
5825
  "version": "5.3.2",
5826
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
 
5879
  "node": ">= 0.4"
5880
  }
5881
  },
5882
+ "node_modules/intersection-observer": {
5883
+ "version": "0.10.0",
5884
+ "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz",
5885
+ "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==",
5886
+ "license": "W3C-20150513"
5887
+ },
5888
  "node_modules/is-array-buffer": {
5889
  "version": "3.0.5",
5890
  "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
 
6816
  "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
6817
  }
6818
  },
6819
+ "node_modules/lz-string": {
6820
+ "version": "1.5.0",
6821
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
6822
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
6823
+ "license": "MIT",
6824
+ "bin": {
6825
+ "lz-string": "bin/bin.js"
6826
+ }
6827
+ },
6828
  "node_modules/magic-string": {
6829
  "version": "0.30.17",
6830
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
 
7211
  "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
7212
  }
7213
  },
7214
+ "node_modules/next-tick": {
7215
+ "version": "1.1.0",
7216
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
7217
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
7218
+ "license": "ISC"
7219
+ },
7220
  "node_modules/next/node_modules/postcss": {
7221
  "version": "8.4.31",
7222
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
 
7393
  "node": ">= 0.8.0"
7394
  }
7395
  },
7396
+ "node_modules/outvariant": {
7397
+ "version": "1.4.0",
7398
+ "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz",
7399
+ "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==",
7400
+ "license": "MIT"
7401
+ },
7402
  "node_modules/own-keys": {
7403
  "version": "1.0.1",
7404
  "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
 
7617
  "node": ">=0.10.0"
7618
  }
7619
  },
7620
+ "node_modules/react-devtools-inline": {
7621
+ "version": "4.4.0",
7622
+ "resolved": "https://registry.npmjs.org/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz",
7623
+ "integrity": "sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ==",
7624
+ "license": "MIT",
7625
+ "dependencies": {
7626
+ "es6-symbol": "^3"
7627
+ }
7628
+ },
7629
  "node_modules/react-dom": {
7630
  "version": "19.1.0",
7631
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
 
8364
  "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==",
8365
  "license": "MIT"
8366
  },
8367
+ "node_modules/static-browser-server": {
8368
+ "version": "1.0.3",
8369
+ "resolved": "https://registry.npmjs.org/static-browser-server/-/static-browser-server-1.0.3.tgz",
8370
+ "integrity": "sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==",
8371
+ "license": "Apache-2.0",
8372
+ "dependencies": {
8373
+ "@open-draft/deferred-promise": "^2.1.0",
8374
+ "dotenv": "^16.0.3",
8375
+ "mime-db": "^1.52.0",
8376
+ "outvariant": "^1.3.0"
8377
+ }
8378
+ },
8379
  "node_modules/stop-iteration-iterator": {
8380
  "version": "1.1.0",
8381
  "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
 
8398
  "node": ">=10.0.0"
8399
  }
8400
  },
8401
+ "node_modules/strict-event-emitter": {
8402
+ "version": "0.4.6",
8403
+ "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz",
8404
+ "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==",
8405
+ "license": "MIT"
8406
+ },
8407
  "node_modules/string.prototype.includes": {
8408
  "version": "2.0.1",
8409
  "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
 
8539
  "url": "https://github.com/sponsors/sindresorhus"
8540
  }
8541
  },
8542
+ "node_modules/style-mod": {
8543
+ "version": "4.1.2",
8544
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
8545
+ "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==",
8546
+ "license": "MIT"
8547
+ },
8548
  "node_modules/styled-jsx": {
8549
  "version": "5.1.6",
8550
  "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
 
8892
  "url": "https://github.com/sponsors/Wombosvideo"
8893
  }
8894
  },
8895
+ "node_modules/type": {
8896
+ "version": "2.7.3",
8897
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
8898
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
8899
+ "license": "ISC"
8900
+ },
8901
  "node_modules/type-check": {
8902
  "version": "0.4.0",
8903
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
 
9181
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
9182
  }
9183
  },
9184
+ "node_modules/w3c-keyname": {
9185
+ "version": "2.2.8",
9186
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
9187
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
9188
+ "license": "MIT"
9189
+ },
9190
  "node_modules/watchpack": {
9191
  "version": "2.4.4",
9192
  "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
package.json CHANGED
@@ -9,6 +9,7 @@
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
 
12
  "@huggingface/hub": "^2.2.0",
13
  "@huggingface/inference": "^4.0.3",
14
  "@monaco-editor/react": "^4.7.0-rc.0",
 
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
12
+ "@codesandbox/sandpack-react": "^2.20.0",
13
  "@huggingface/hub": "^2.2.0",
14
  "@huggingface/inference": "^4.0.3",
15
  "@monaco-editor/react": "^4.7.0-rc.0",