Merge Conflicts (#41)
Co-authored-by: Sayan Datta <sayan@Sayans-MacBook-Air.local> Reviewed-on: #41
This commit was merged in pull request #41.
This commit is contained in:
29
app/dist/index.html
vendored
29
app/dist/index.html
vendored
@@ -1,13 +1,16 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Velocity WebOS</title>
|
||||
<script type="module" crossorigin src="./assets/index-BbE_azx6.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-CILgAuxv.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
</body>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Velocity WebOS</title>
|
||||
<script type="module" crossorigin src="./assets/index-C0KOan5Q.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-CrH2wIGN.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
124
app/node_modules/.tmp/tsconfig.app.tsbuildinfo
generated
vendored
124
app/node_modules/.tmp/tsconfig.app.tsbuildinfo
generated
vendored
@@ -1 +1,123 @@
|
||||
{"root":["../../src/app.tsx","../../src/main.tsx","../../src/app/admin/page.tsx","../../src/app/oracle/page.tsx","../../src/components/layout/loginscreen.tsx","../../src/components/layout/notificationcenter.tsx","../../src/components/layout/sidebar.tsx","../../src/components/modules/crm.tsx","../../src/components/modules/catalyst.tsx","../../src/components/modules/catalystmarketingtab.tsx","../../src/components/modules/dashboard.tsx","../../src/components/modules/groundtruthpicker.tsx","../../src/components/modules/inventory.tsx","../../src/components/modules/oracle.tsx","../../src/components/modules/sentinel.tsx","../../src/components/modules/settings.tsx","../../src/components/modules/sentinel/perceptionplayer.tsx","../../src/components/modules/sentinel/sentinellivesession.tsx","../../src/components/oracle/leadinspector.tsx","../../src/components/oracle/pipelineview.tsx","../../src/components/sentinel/journeyriver/inspectorpanel.tsx","../../src/components/sentinel/journeyriver/riverpath.tsx","../../src/components/sentinel/journeyriver/index.tsx","../../src/components/ui/accordion.tsx","../../src/components/ui/alert-dialog.tsx","../../src/components/ui/alert.tsx","../../src/components/ui/aspect-ratio.tsx","../../src/components/ui/avatar.tsx","../../src/components/ui/badge.tsx","../../src/components/ui/breadcrumb.tsx","../../src/components/ui/button-group.tsx","../../src/components/ui/button.tsx","../../src/components/ui/calendar.tsx","../../src/components/ui/card.tsx","../../src/components/ui/carousel.tsx","../../src/components/ui/chart.tsx","../../src/components/ui/checkbox.tsx","../../src/components/ui/collapsible.tsx","../../src/components/ui/command.tsx","../../src/components/ui/context-menu.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/drawer.tsx","../../src/components/ui/dropdown-menu.tsx","../../src/components/ui/empty.tsx","../../src/components/ui/field.tsx","../../src/components/ui/form.tsx","../../src/components/ui/hover-card.tsx","../../src/components/ui/input-group.tsx","../../src/components/ui/input-otp.tsx","../../src/components/ui/input.tsx","../../src/components/ui/item.tsx","../../src/components/ui/kbd.tsx","../../src/components/ui/label.tsx","../../src/components/ui/menubar.tsx","../../src/components/ui/navigation-menu.tsx","../../src/components/ui/pagination.tsx","../../src/components/ui/popover.tsx","../../src/components/ui/progress.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/resizable.tsx","../../src/components/ui/scroll-area.tsx","../../src/components/ui/select.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/sheet.tsx","../../src/components/ui/sidebar.tsx","../../src/components/ui/skeleton.tsx","../../src/components/ui/slider.tsx","../../src/components/ui/sonner.tsx","../../src/components/ui/spinner.tsx","../../src/components/ui/switch.tsx","../../src/components/ui/table.tsx","../../src/components/ui/tabs.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/toggle-group.tsx","../../src/components/ui/toggle.tsx","../../src/components/ui/tooltip.tsx","../../src/hooks/use-mobile.ts","../../src/hooks/usecrmbootstrap.ts","../../src/hooks/usemediapipefacelandmarker.ts","../../src/hooks/usevelocitysocket.ts","../../src/lib/api.ts","../../src/lib/crmapi.ts","../../src/lib/crmmappers.ts","../../src/lib/platformmappers.ts","../../src/lib/utils.ts","../../src/lib/velocityplatformclient.ts","../../src/oracle/components/branchbar.tsx","../../src/oracle/components/canvasviewport.tsx","../../src/oracle/components/componentregistry.tsx","../../src/oracle/components/promptrail.tsx","../../src/oracle/components/rollbackconfirmmodal.tsx","../../src/oracle/components/sharemodal.tsx","../../src/oracle/components/renderers/activitystreamrenderer.tsx","../../src/oracle/components/renderers/barchartrenderer.tsx","../../src/oracle/components/renderers/errornoticerenderer.tsx","../../src/oracle/components/renderers/geomaprenderer.tsx","../../src/oracle/components/renderers/kpitilerenderer.tsx","../../src/oracle/components/renderers/linechartrenderer.tsx","../../src/oracle/components/renderers/pipelineboardrenderer.tsx","../../src/oracle/components/renderers/rendererwrapper.tsx","../../src/oracle/components/renderers/tablerenderer.tsx","../../src/oracle/components/renderers/textcanvasrenderer.tsx","../../src/oracle/components/renderers/timelinerenderer.tsx","../../src/oracle/components/review/mergereviewdrawer.tsx","../../src/oracle/hooks/useoracleexecution.ts","../../src/oracle/hooks/useoraclepage.ts","../../src/oracle/lib/oracleapiclient.ts","../../src/oracle/types/canvas.ts","../../src/store/usecurrencystore.ts","../../src/store/usemarketingstore.ts","../../src/store/usestore.ts","../../src/types/crm.ts","../../src/types/crmtypes.ts","../../src/types/index.ts","../../src/utils/curvegenerator.ts","../../src/utils/landmarkpacketencoder.ts"],"version":"5.9.3"}
|
||||
{
|
||||
"root": [
|
||||
"../../src/app.tsx",
|
||||
"../../src/main.tsx",
|
||||
"../../src/app/admin/page.tsx",
|
||||
"../../src/app/oracle/page.tsx",
|
||||
"../../src/components/layout/loginscreen.tsx",
|
||||
"../../src/components/layout/notificationcenter.tsx",
|
||||
"../../src/components/layout/sidebar.tsx",
|
||||
"../../src/components/modules/crm.tsx",
|
||||
"../../src/components/modules/catalyst.tsx",
|
||||
"../../src/components/modules/catalystdreamweavertab.tsx",
|
||||
"../../src/components/modules/catalystmarketingtab.tsx",
|
||||
"../../src/components/modules/dashboard.tsx",
|
||||
"../../src/components/modules/groundtruthpicker.tsx",
|
||||
"../../src/components/modules/inventory.tsx",
|
||||
"../../src/components/modules/oracle.tsx",
|
||||
"../../src/components/modules/sentinel.tsx",
|
||||
"../../src/components/modules/settings.tsx",
|
||||
"../../src/components/modules/sentinel/perceptionplayer.tsx",
|
||||
"../../src/components/modules/sentinel/sentinellivesession.tsx",
|
||||
"../../src/components/oracle/leadinspector.tsx",
|
||||
"../../src/components/oracle/pipelineview.tsx",
|
||||
"../../src/components/sentinel/journeyriver/inspectorpanel.tsx",
|
||||
"../../src/components/sentinel/journeyriver/riverpath.tsx",
|
||||
"../../src/components/sentinel/journeyriver/index.tsx",
|
||||
"../../src/components/ui/accordion.tsx",
|
||||
"../../src/components/ui/alert-dialog.tsx",
|
||||
"../../src/components/ui/alert.tsx",
|
||||
"../../src/components/ui/aspect-ratio.tsx",
|
||||
"../../src/components/ui/avatar.tsx",
|
||||
"../../src/components/ui/badge.tsx",
|
||||
"../../src/components/ui/breadcrumb.tsx",
|
||||
"../../src/components/ui/button-group.tsx",
|
||||
"../../src/components/ui/button.tsx",
|
||||
"../../src/components/ui/calendar.tsx",
|
||||
"../../src/components/ui/card.tsx",
|
||||
"../../src/components/ui/carousel.tsx",
|
||||
"../../src/components/ui/chart.tsx",
|
||||
"../../src/components/ui/checkbox.tsx",
|
||||
"../../src/components/ui/collapsible.tsx",
|
||||
"../../src/components/ui/command.tsx",
|
||||
"../../src/components/ui/context-menu.tsx",
|
||||
"../../src/components/ui/dialog.tsx",
|
||||
"../../src/components/ui/drawer.tsx",
|
||||
"../../src/components/ui/dropdown-menu.tsx",
|
||||
"../../src/components/ui/empty.tsx",
|
||||
"../../src/components/ui/field.tsx",
|
||||
"../../src/components/ui/form.tsx",
|
||||
"../../src/components/ui/hover-card.tsx",
|
||||
"../../src/components/ui/input-group.tsx",
|
||||
"../../src/components/ui/input-otp.tsx",
|
||||
"../../src/components/ui/input.tsx",
|
||||
"../../src/components/ui/item.tsx",
|
||||
"../../src/components/ui/kbd.tsx",
|
||||
"../../src/components/ui/label.tsx",
|
||||
"../../src/components/ui/menubar.tsx",
|
||||
"../../src/components/ui/navigation-menu.tsx",
|
||||
"../../src/components/ui/pagination.tsx",
|
||||
"../../src/components/ui/popover.tsx",
|
||||
"../../src/components/ui/progress.tsx",
|
||||
"../../src/components/ui/radio-group.tsx",
|
||||
"../../src/components/ui/resizable.tsx",
|
||||
"../../src/components/ui/scroll-area.tsx",
|
||||
"../../src/components/ui/select.tsx",
|
||||
"../../src/components/ui/separator.tsx",
|
||||
"../../src/components/ui/sheet.tsx",
|
||||
"../../src/components/ui/sidebar.tsx",
|
||||
"../../src/components/ui/skeleton.tsx",
|
||||
"../../src/components/ui/slider.tsx",
|
||||
"../../src/components/ui/sonner.tsx",
|
||||
"../../src/components/ui/spinner.tsx",
|
||||
"../../src/components/ui/switch.tsx",
|
||||
"../../src/components/ui/table.tsx",
|
||||
"../../src/components/ui/tabs.tsx",
|
||||
"../../src/components/ui/textarea.tsx",
|
||||
"../../src/components/ui/toggle-group.tsx",
|
||||
"../../src/components/ui/toggle.tsx",
|
||||
"../../src/components/ui/tooltip.tsx",
|
||||
"../../src/hooks/use-mobile.ts",
|
||||
"../../src/hooks/usecrmbootstrap.ts",
|
||||
"../../src/hooks/usemediapipefacelandmarker.ts",
|
||||
"../../src/hooks/usevelocitysocket.ts",
|
||||
"../../src/lib/api.ts",
|
||||
"../../src/lib/crmapi.ts",
|
||||
"../../src/lib/crmmappers.ts",
|
||||
"../../src/lib/dreamweaverapi.ts",
|
||||
"../../src/lib/platformmappers.ts",
|
||||
"../../src/lib/utils.ts",
|
||||
"../../src/lib/velocityplatformclient.ts",
|
||||
"../../src/lib/velocitysession.ts",
|
||||
"../../src/oracle/components/branchbar.tsx",
|
||||
"../../src/oracle/components/canvasviewport.tsx",
|
||||
"../../src/oracle/components/componentregistry.tsx",
|
||||
"../../src/oracle/components/promptrail.tsx",
|
||||
"../../src/oracle/components/rollbackconfirmmodal.tsx",
|
||||
"../../src/oracle/components/sharemodal.tsx",
|
||||
"../../src/oracle/components/renderers/activitystreamrenderer.tsx",
|
||||
"../../src/oracle/components/renderers/barchartrenderer.tsx",
|
||||
"../../src/oracle/components/renderers/errornoticerenderer.tsx",
|
||||
"../../src/oracle/components/renderers/geomaprenderer.tsx",
|
||||
"../../src/oracle/components/renderers/kpitilerenderer.tsx",
|
||||
"../../src/oracle/components/renderers/linechartrenderer.tsx",
|
||||
"../../src/oracle/components/renderers/pipelineboardrenderer.tsx",
|
||||
"../../src/oracle/components/renderers/rendererwrapper.tsx",
|
||||
"../../src/oracle/components/renderers/tablerenderer.tsx",
|
||||
"../../src/oracle/components/renderers/timelinerenderer.tsx",
|
||||
"../../src/oracle/components/review/mergereviewdrawer.tsx",
|
||||
"../../src/oracle/hooks/useoracleexecution.ts",
|
||||
"../../src/oracle/hooks/useoraclepage.ts",
|
||||
"../../src/oracle/lib/oracleapiclient.ts",
|
||||
"../../src/oracle/types/canvas.ts",
|
||||
"../../src/store/usecurrencystore.ts",
|
||||
"../../src/store/usemarketingstore.ts",
|
||||
"../../src/store/usestore.ts",
|
||||
"../../src/types/crm.ts",
|
||||
"../../src/types/crmtypes.ts",
|
||||
"../../src/types/index.ts",
|
||||
"../../src/utils/curvegenerator.ts",
|
||||
"../../src/utils/landmarkpacketencoder.ts"
|
||||
],
|
||||
"version": "5.9.3"
|
||||
}
|
||||
14
app/node_modules/.vite/deps/@radix-ui_react-avatar.js
generated
vendored
14
app/node_modules/.vite/deps/@radix-ui_react-avatar.js
generated
vendored
@@ -1,18 +1,18 @@
|
||||
"use client";
|
||||
import {
|
||||
require_shim
|
||||
} from "./chunk-TXHHHGR3.js";
|
||||
import {
|
||||
useCallbackRef,
|
||||
useLayoutEffect2
|
||||
} from "./chunk-GRXJTWBV.js";
|
||||
} from "./chunk-J4JAFMOP.js";
|
||||
import {
|
||||
require_react_dom
|
||||
} from "./chunk-YLZ34CCM.js";
|
||||
import {
|
||||
require_shim
|
||||
} from "./chunk-642Z5WD3.js";
|
||||
} from "./chunk-YF4B4G2L.js";
|
||||
import {
|
||||
createSlot
|
||||
} from "./chunk-5HUACAZ7.js";
|
||||
import "./chunk-HPBHRBIF.js";
|
||||
} from "./chunk-YWBEB5PG.js";
|
||||
import "./chunk-2VUH7NEY.js";
|
||||
import {
|
||||
require_jsx_runtime
|
||||
} from "./chunk-USXRE7Q2.js";
|
||||
|
||||
7
app/node_modules/.vite/deps/@radix-ui_react-avatar.js.map
generated
vendored
7
app/node_modules/.vite/deps/@radix-ui_react-avatar.js.map
generated
vendored
File diff suppressed because one or more lines are too long
908
app/node_modules/.vite/deps/@radix-ui_react-dropdown-menu.js
generated
vendored
908
app/node_modules/.vite/deps/@radix-ui_react-dropdown-menu.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/@radix-ui_react-dropdown-menu.js.map
generated
vendored
7
app/node_modules/.vite/deps/@radix-ui_react-dropdown-menu.js.map
generated
vendored
File diff suppressed because one or more lines are too long
17
app/node_modules/.vite/deps/@radix-ui_react-slot.js
generated
vendored
17
app/node_modules/.vite/deps/@radix-ui_react-slot.js
generated
vendored
@@ -1,17 +0,0 @@
|
||||
import {
|
||||
Slot,
|
||||
Slottable,
|
||||
createSlot,
|
||||
createSlottable
|
||||
} from "./chunk-5HUACAZ7.js";
|
||||
import "./chunk-HPBHRBIF.js";
|
||||
import "./chunk-USXRE7Q2.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
Slot as Root,
|
||||
Slot,
|
||||
Slottable,
|
||||
createSlot,
|
||||
createSlottable
|
||||
};
|
||||
7
app/node_modules/.vite/deps/@radix-ui_react-slot.js.map
generated
vendored
7
app/node_modules/.vite/deps/@radix-ui_react-slot.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
3704
app/node_modules/.vite/deps/@react-three_drei.js
generated
vendored
3704
app/node_modules/.vite/deps/@react-three_drei.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/@react-three_drei.js.map
generated
vendored
7
app/node_modules/.vite/deps/@react-three_drei.js.map
generated
vendored
File diff suppressed because one or more lines are too long
69
app/node_modules/.vite/deps/@react-three_fiber.js
generated
vendored
69
app/node_modules/.vite/deps/@react-three_fiber.js
generated
vendored
@@ -1,69 +0,0 @@
|
||||
import {
|
||||
Canvas,
|
||||
_roots,
|
||||
act,
|
||||
addAfterEffect,
|
||||
addEffect,
|
||||
addTail,
|
||||
advance,
|
||||
applyProps,
|
||||
buildGraph,
|
||||
context,
|
||||
createEvents,
|
||||
createPointerEvents,
|
||||
createPortal,
|
||||
createRoot,
|
||||
dispose,
|
||||
extend,
|
||||
flushGlobalEffects,
|
||||
flushSync,
|
||||
getRootState,
|
||||
invalidate,
|
||||
reconciler,
|
||||
threeTypes,
|
||||
unmountComponentAtNode,
|
||||
useFrame,
|
||||
useGraph,
|
||||
useInstanceHandle,
|
||||
useLoader,
|
||||
useStore,
|
||||
useThree
|
||||
} from "./chunk-CSHY5MMV.js";
|
||||
import "./chunk-LTNRPUSL.js";
|
||||
import "./chunk-INS7YHTD.js";
|
||||
import "./chunk-QURGMCZB.js";
|
||||
import "./chunk-642Z5WD3.js";
|
||||
import "./chunk-USXRE7Q2.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
Canvas,
|
||||
threeTypes as ReactThreeFiber,
|
||||
_roots,
|
||||
act,
|
||||
addAfterEffect,
|
||||
addEffect,
|
||||
addTail,
|
||||
advance,
|
||||
applyProps,
|
||||
buildGraph,
|
||||
context,
|
||||
createEvents,
|
||||
createPortal,
|
||||
createRoot,
|
||||
dispose,
|
||||
createPointerEvents as events,
|
||||
extend,
|
||||
flushGlobalEffects,
|
||||
flushSync,
|
||||
getRootState,
|
||||
invalidate,
|
||||
reconciler,
|
||||
unmountComponentAtNode,
|
||||
useFrame,
|
||||
useGraph,
|
||||
useInstanceHandle,
|
||||
useLoader,
|
||||
useStore,
|
||||
useThree
|
||||
};
|
||||
7
app/node_modules/.vite/deps/@react-three_fiber.js.map
generated
vendored
7
app/node_modules/.vite/deps/@react-three_fiber.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
385
app/node_modules/.vite/deps/_metadata.json
generated
vendored
385
app/node_modules/.vite/deps/_metadata.json
generated
vendored
@@ -1,193 +1,196 @@
|
||||
{
|
||||
"hash": "9ed426b5",
|
||||
"configHash": "6a55a817",
|
||||
"lockfileHash": "cbf147e9",
|
||||
"browserHash": "a13f5201",
|
||||
"optimized": {
|
||||
"react": {
|
||||
"src": "../../react/index.js",
|
||||
"file": "react.js",
|
||||
"fileHash": "c178e920",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-dom": {
|
||||
"src": "../../react-dom/index.js",
|
||||
"file": "react-dom.js",
|
||||
"fileHash": "071b9320",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-dev-runtime": {
|
||||
"src": "../../react/jsx-dev-runtime.js",
|
||||
"file": "react_jsx-dev-runtime.js",
|
||||
"fileHash": "72ddf78c",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-runtime": {
|
||||
"src": "../../react/jsx-runtime.js",
|
||||
"file": "react_jsx-runtime.js",
|
||||
"fileHash": "14b8d385",
|
||||
"needsInterop": true
|
||||
},
|
||||
"@radix-ui/react-avatar": {
|
||||
"src": "../../@radix-ui/react-avatar/dist/index.mjs",
|
||||
"file": "@radix-ui_react-avatar.js",
|
||||
"fileHash": "590b7679",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@radix-ui/react-dropdown-menu": {
|
||||
"src": "../../@radix-ui/react-dropdown-menu/dist/index.mjs",
|
||||
"file": "@radix-ui_react-dropdown-menu.js",
|
||||
"fileHash": "087b631e",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@radix-ui/react-slot": {
|
||||
"src": "../../@radix-ui/react-slot/dist/index.mjs",
|
||||
"file": "@radix-ui_react-slot.js",
|
||||
"fileHash": "4e55412b",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@react-three/drei": {
|
||||
"src": "../../@react-three/drei/index.js",
|
||||
"file": "@react-three_drei.js",
|
||||
"fileHash": "ba800aca",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@react-three/fiber": {
|
||||
"src": "../../@react-three/fiber/dist/react-three-fiber.esm.js",
|
||||
"file": "@react-three_fiber.js",
|
||||
"fileHash": "12f23541",
|
||||
"needsInterop": false
|
||||
},
|
||||
"class-variance-authority": {
|
||||
"src": "../../class-variance-authority/dist/index.mjs",
|
||||
"file": "class-variance-authority.js",
|
||||
"fileHash": "0153428f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"clsx": {
|
||||
"src": "../../clsx/dist/clsx.mjs",
|
||||
"file": "clsx.js",
|
||||
"fileHash": "99f068f1",
|
||||
"needsInterop": false
|
||||
},
|
||||
"framer-motion": {
|
||||
"src": "../../framer-motion/dist/es/index.mjs",
|
||||
"file": "framer-motion.js",
|
||||
"fileHash": "c1fc1ac2",
|
||||
"needsInterop": false
|
||||
},
|
||||
"lucide-react": {
|
||||
"src": "../../lucide-react/dist/esm/lucide-react.js",
|
||||
"file": "lucide-react.js",
|
||||
"fileHash": "4418176c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"react-dom/client": {
|
||||
"src": "../../react-dom/client.js",
|
||||
"file": "react-dom_client.js",
|
||||
"fileHash": "8029f031",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-router-dom": {
|
||||
"src": "../../react-router-dom/dist/index.mjs",
|
||||
"file": "react-router-dom.js",
|
||||
"fileHash": "c673e5a0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"recharts": {
|
||||
"src": "../../recharts/es6/index.js",
|
||||
"file": "recharts.js",
|
||||
"fileHash": "41235262",
|
||||
"needsInterop": false
|
||||
},
|
||||
"sonner": {
|
||||
"src": "../../sonner/dist/index.mjs",
|
||||
"file": "sonner.js",
|
||||
"fileHash": "c99e6320",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-merge": {
|
||||
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
|
||||
"file": "tailwind-merge.js",
|
||||
"fileHash": "017ed736",
|
||||
"needsInterop": false
|
||||
},
|
||||
"three": {
|
||||
"src": "../../three/build/three.module.js",
|
||||
"file": "three.js",
|
||||
"fileHash": "8d6b5e64",
|
||||
"needsInterop": false
|
||||
},
|
||||
"zustand": {
|
||||
"src": "../../zustand/esm/index.mjs",
|
||||
"file": "zustand.js",
|
||||
"fileHash": "bcef7203",
|
||||
"needsInterop": false
|
||||
},
|
||||
"zustand/middleware": {
|
||||
"src": "../../zustand/esm/middleware.mjs",
|
||||
"file": "zustand_middleware.js",
|
||||
"fileHash": "1afe1817",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"hls-Q6LDPZPT": {
|
||||
"file": "hls-Q6LDPZPT.js"
|
||||
},
|
||||
"chunk-QJTQF54Q": {
|
||||
"file": "chunk-QJTQF54Q.js"
|
||||
},
|
||||
"chunk-XGWIEMTH": {
|
||||
"file": "chunk-XGWIEMTH.js"
|
||||
},
|
||||
"chunk-OAEA5FZL": {
|
||||
"file": "chunk-OAEA5FZL.js"
|
||||
},
|
||||
"chunk-2NWYL6R2": {
|
||||
"file": "chunk-2NWYL6R2.js"
|
||||
},
|
||||
"chunk-H4GSM2WL": {
|
||||
"file": "chunk-H4GSM2WL.js"
|
||||
},
|
||||
"chunk-U7P2NEEE": {
|
||||
"file": "chunk-U7P2NEEE.js"
|
||||
},
|
||||
"chunk-GRXJTWBV": {
|
||||
"file": "chunk-GRXJTWBV.js"
|
||||
},
|
||||
"chunk-YLZ34CCM": {
|
||||
"file": "chunk-YLZ34CCM.js"
|
||||
},
|
||||
"chunk-CSHY5MMV": {
|
||||
"file": "chunk-CSHY5MMV.js"
|
||||
},
|
||||
"chunk-LTNRPUSL": {
|
||||
"file": "chunk-LTNRPUSL.js"
|
||||
},
|
||||
"chunk-INS7YHTD": {
|
||||
"file": "chunk-INS7YHTD.js"
|
||||
},
|
||||
"chunk-QURGMCZB": {
|
||||
"file": "chunk-QURGMCZB.js"
|
||||
},
|
||||
"chunk-642Z5WD3": {
|
||||
"file": "chunk-642Z5WD3.js"
|
||||
},
|
||||
"chunk-5HUACAZ7": {
|
||||
"file": "chunk-5HUACAZ7.js"
|
||||
},
|
||||
"chunk-HPBHRBIF": {
|
||||
"file": "chunk-HPBHRBIF.js"
|
||||
},
|
||||
"chunk-USXRE7Q2": {
|
||||
"file": "chunk-USXRE7Q2.js"
|
||||
},
|
||||
"chunk-ZNKPWGXJ": {
|
||||
"file": "chunk-ZNKPWGXJ.js"
|
||||
},
|
||||
"chunk-G3PMV62Z": {
|
||||
"file": "chunk-G3PMV62Z.js"
|
||||
}
|
||||
}
|
||||
"hash": "d63ca5ca",
|
||||
"configHash": "1dd3b956",
|
||||
"lockfileHash": "db47663b",
|
||||
"browserHash": "b8dcfecc",
|
||||
"optimized": {
|
||||
"react": {
|
||||
"src": "../../react/index.js",
|
||||
"file": "react.js",
|
||||
"fileHash": "0c4ff044",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-dom": {
|
||||
"src": "../../react-dom/index.js",
|
||||
"file": "react-dom.js",
|
||||
"fileHash": "d9b3477a",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-dev-runtime": {
|
||||
"src": "../../react/jsx-dev-runtime.js",
|
||||
"file": "react_jsx-dev-runtime.js",
|
||||
"fileHash": "60584ffa",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react/jsx-runtime": {
|
||||
"src": "../../react/jsx-runtime.js",
|
||||
"file": "react_jsx-runtime.js",
|
||||
"fileHash": "0909256b",
|
||||
"needsInterop": true
|
||||
},
|
||||
"@radix-ui/react-avatar": {
|
||||
"src": "../../@radix-ui/react-avatar/dist/index.mjs",
|
||||
"file": "@radix-ui_react-avatar.js",
|
||||
"fileHash": "3fc2fdda",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@radix-ui/react-dropdown-menu": {
|
||||
"src": "../../@radix-ui/react-dropdown-menu/dist/index.mjs",
|
||||
"file": "@radix-ui_react-dropdown-menu.js",
|
||||
"fileHash": "eef7ef00",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@radix-ui/react-slot": {
|
||||
"src": "../../@radix-ui/react-slot/dist/index.mjs",
|
||||
"file": "@radix-ui_react-slot.js",
|
||||
"fileHash": "6745f8b7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@react-three/drei": {
|
||||
"src": "../../@react-three/drei/index.js",
|
||||
"file": "@react-three_drei.js",
|
||||
"fileHash": "62f4e280",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@react-three/fiber": {
|
||||
"src": "../../@react-three/fiber/dist/react-three-fiber.esm.js",
|
||||
"file": "@react-three_fiber.js",
|
||||
"fileHash": "c4b868b0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"class-variance-authority": {
|
||||
"src": "../../class-variance-authority/dist/index.mjs",
|
||||
"file": "class-variance-authority.js",
|
||||
"fileHash": "db4ee666",
|
||||
"needsInterop": false
|
||||
},
|
||||
"clsx": {
|
||||
"src": "../../clsx/dist/clsx.mjs",
|
||||
"file": "clsx.js",
|
||||
"fileHash": "0a67ca45",
|
||||
"needsInterop": false
|
||||
},
|
||||
"framer-motion": {
|
||||
"src": "../../framer-motion/dist/es/index.mjs",
|
||||
"file": "framer-motion.js",
|
||||
"fileHash": "9694d550",
|
||||
"needsInterop": false
|
||||
},
|
||||
"lucide-react": {
|
||||
"src": "../../lucide-react/dist/esm/lucide-react.js",
|
||||
"file": "lucide-react.js",
|
||||
"fileHash": "15d2dc31",
|
||||
"needsInterop": false
|
||||
},
|
||||
"react-dom/client": {
|
||||
"src": "../../react-dom/client.js",
|
||||
"file": "react-dom_client.js",
|
||||
"fileHash": "a8f9db58",
|
||||
"needsInterop": true
|
||||
},
|
||||
"react-router-dom": {
|
||||
"src": "../../react-router-dom/dist/index.mjs",
|
||||
"file": "react-router-dom.js",
|
||||
"fileHash": "3a519f93",
|
||||
"needsInterop": false
|
||||
},
|
||||
"recharts": {
|
||||
"src": "../../recharts/es6/index.js",
|
||||
"file": "recharts.js",
|
||||
"fileHash": "1cac0e9f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"sonner": {
|
||||
"src": "../../sonner/dist/index.mjs",
|
||||
"file": "sonner.js",
|
||||
"fileHash": "1ad92981",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-merge": {
|
||||
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
|
||||
"file": "tailwind-merge.js",
|
||||
"fileHash": "e2d07b44",
|
||||
"needsInterop": false
|
||||
},
|
||||
"three": {
|
||||
"src": "../../three/build/three.module.js",
|
||||
"file": "three.js",
|
||||
"fileHash": "09fb4882",
|
||||
"needsInterop": false
|
||||
},
|
||||
"zustand": {
|
||||
"src": "../../zustand/esm/index.mjs",
|
||||
"file": "zustand.js",
|
||||
"fileHash": "4607d0bf",
|
||||
"needsInterop": false
|
||||
},
|
||||
"zustand/middleware": {
|
||||
"src": "../../zustand/esm/middleware.mjs",
|
||||
"file": "zustand_middleware.js",
|
||||
"fileHash": "e4fd4342",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"hls-Q6LDPZPT": {
|
||||
"file": "hls-Q6LDPZPT.js"
|
||||
},
|
||||
"chunk-EQCCHGRT": {
|
||||
"file": "chunk-EQCCHGRT.js"
|
||||
},
|
||||
"chunk-7GZ4CI6Q": {
|
||||
"file": "chunk-7GZ4CI6Q.js"
|
||||
},
|
||||
"chunk-5ESDTKMP": {
|
||||
"file": "chunk-5ESDTKMP.js"
|
||||
},
|
||||
"chunk-U7P2NEEE": {
|
||||
"file": "chunk-U7P2NEEE.js"
|
||||
},
|
||||
"chunk-GRXJTWBV": {
|
||||
"file": "chunk-GRXJTWBV.js"
|
||||
},
|
||||
"chunk-O4L7C4YS": {
|
||||
"file": "chunk-O4L7C4YS.js"
|
||||
},
|
||||
"chunk-L3Z576C2": {
|
||||
"file": "chunk-L3Z576C2.js"
|
||||
},
|
||||
"chunk-OAEA5FZL": {
|
||||
"file": "chunk-OAEA5FZL.js"
|
||||
},
|
||||
"chunk-6MXH2QM6": {
|
||||
"file": "chunk-6MXH2QM6.js"
|
||||
},
|
||||
"chunk-LTNRPUSL": {
|
||||
"file": "chunk-LTNRPUSL.js"
|
||||
},
|
||||
"chunk-TXHHHGR3": {
|
||||
"file": "chunk-TXHHHGR3.js"
|
||||
},
|
||||
"chunk-J4JAFMOP": {
|
||||
"file": "chunk-J4JAFMOP.js"
|
||||
},
|
||||
"chunk-YF4B4G2L": {
|
||||
"file": "chunk-YF4B4G2L.js"
|
||||
},
|
||||
"chunk-YWBEB5PG": {
|
||||
"file": "chunk-YWBEB5PG.js"
|
||||
},
|
||||
"chunk-2VUH7NEY": {
|
||||
"file": "chunk-2VUH7NEY.js"
|
||||
},
|
||||
"chunk-2YVA4HRZ": {
|
||||
"file": "chunk-2YVA4HRZ.js"
|
||||
},
|
||||
"chunk-WUR7D6NS": {
|
||||
"file": "chunk-WUR7D6NS.js"
|
||||
},
|
||||
"chunk-U7P2NEEE": {
|
||||
"file": "chunk-U7P2NEEE.js"
|
||||
},
|
||||
"chunk-G3PMV62Z": {
|
||||
"file": "chunk-G3PMV62Z.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
35
app/node_modules/.vite/deps/chunk-G3PMV62Z.js
generated
vendored
35
app/node_modules/.vite/deps/chunk-G3PMV62Z.js
generated
vendored
@@ -1,35 +0,0 @@
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||
// If the importer is in node compatibility mode or this is not an ESM
|
||||
// file that has been converted to a CommonJS file using a Babel-
|
||||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||
mod
|
||||
));
|
||||
|
||||
export {
|
||||
__commonJS,
|
||||
__export,
|
||||
__toESM
|
||||
};
|
||||
7
app/node_modules/.vite/deps/chunk-G3PMV62Z.js.map
generated
vendored
7
app/node_modules/.vite/deps/chunk-G3PMV62Z.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
32999
app/node_modules/.vite/deps/chunk-OAEA5FZL.js
generated
vendored
32999
app/node_modules/.vite/deps/chunk-OAEA5FZL.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/chunk-OAEA5FZL.js.map
generated
vendored
7
app/node_modules/.vite/deps/chunk-OAEA5FZL.js.map
generated
vendored
File diff suppressed because one or more lines are too long
21
app/node_modules/.vite/deps/chunk-U7P2NEEE.js
generated
vendored
21
app/node_modules/.vite/deps/chunk-U7P2NEEE.js
generated
vendored
@@ -1,21 +0,0 @@
|
||||
// node_modules/clsx/dist/clsx.mjs
|
||||
function r(e) {
|
||||
var t, f, n = "";
|
||||
if ("string" == typeof e || "number" == typeof e) n += e;
|
||||
else if ("object" == typeof e) if (Array.isArray(e)) {
|
||||
var o = e.length;
|
||||
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
||||
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
||||
return n;
|
||||
}
|
||||
function clsx() {
|
||||
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
||||
return n;
|
||||
}
|
||||
var clsx_default = clsx;
|
||||
|
||||
export {
|
||||
clsx,
|
||||
clsx_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-U7P2NEEE.js.map
|
||||
7
app/node_modules/.vite/deps/chunk-U7P2NEEE.js.map
generated
vendored
7
app/node_modules/.vite/deps/chunk-U7P2NEEE.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../clsx/dist/clsx.mjs"],
|
||||
"sourcesContent": ["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],
|
||||
"mappings": ";AAAA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAC,IAAO,eAAQ;",
|
||||
"names": []
|
||||
}
|
||||
51
app/node_modules/.vite/deps/class-variance-authority.js
generated
vendored
51
app/node_modules/.vite/deps/class-variance-authority.js
generated
vendored
@@ -1,51 +0,0 @@
|
||||
import {
|
||||
clsx
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
|
||||
// node_modules/class-variance-authority/dist/index.mjs
|
||||
var falsyToString = (value) => typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value;
|
||||
var cx = clsx;
|
||||
var cva = (base, config) => (props) => {
|
||||
var _config_compoundVariants;
|
||||
if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
|
||||
const { variants, defaultVariants } = config;
|
||||
const getVariantClassNames = Object.keys(variants).map((variant) => {
|
||||
const variantProp = props === null || props === void 0 ? void 0 : props[variant];
|
||||
const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
|
||||
if (variantProp === null) return null;
|
||||
const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
|
||||
return variants[variant][variantKey];
|
||||
});
|
||||
const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param) => {
|
||||
let [key, value] = param;
|
||||
if (value === void 0) {
|
||||
return acc;
|
||||
}
|
||||
acc[key] = value;
|
||||
return acc;
|
||||
}, {});
|
||||
const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param) => {
|
||||
let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;
|
||||
return Object.entries(compoundVariantOptions).every((param2) => {
|
||||
let [key, value] = param2;
|
||||
return Array.isArray(value) ? value.includes({
|
||||
...defaultVariants,
|
||||
...propsWithoutUndefined
|
||||
}[key]) : {
|
||||
...defaultVariants,
|
||||
...propsWithoutUndefined
|
||||
}[key] === value;
|
||||
}) ? [
|
||||
...acc,
|
||||
cvClass,
|
||||
cvClassName
|
||||
] : acc;
|
||||
}, []);
|
||||
return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
|
||||
};
|
||||
export {
|
||||
cva,
|
||||
cx
|
||||
};
|
||||
//# sourceMappingURL=class-variance-authority.js.map
|
||||
7
app/node_modules/.vite/deps/class-variance-authority.js.map
generated
vendored
7
app/node_modules/.vite/deps/class-variance-authority.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../class-variance-authority/dist/index.mjs"],
|
||||
"sourcesContent": ["/**\r\n * Copyright 2022 Joe Bell. All rights reserved.\r\n *\r\n * This file is licensed to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with the\r\n * License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\r\n * License for the specific language governing permissions and limitations under\r\n * the License.\r\n */ import { clsx } from \"clsx\";\r\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\r\nexport const cx = clsx;\r\nexport const cva = (base, config)=>(props)=>{\r\n var _config_compoundVariants;\r\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\r\n const { variants, defaultVariants } = config;\r\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\r\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\r\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\r\n if (variantProp === null) return null;\r\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\r\n return variants[variant][variantKey];\r\n });\r\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\r\n let [key, value] = param;\r\n if (value === undefined) {\r\n return acc;\r\n }\r\n acc[key] = value;\r\n return acc;\r\n }, {});\r\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\r\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\r\n return Object.entries(compoundVariantOptions).every((param)=>{\r\n let [key, value] = param;\r\n return Array.isArray(value) ? value.includes({\r\n ...defaultVariants,\r\n ...propsWithoutUndefined\r\n }[key]) : ({\r\n ...defaultVariants,\r\n ...propsWithoutUndefined\r\n })[key] === value;\r\n }) ? [\r\n ...acc,\r\n cvClass,\r\n cvClassName\r\n ] : acc;\r\n }, []);\r\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\r\n };\r\n\r\n"],
|
||||
"mappings": ";;;;;;AAeA,IAAM,gBAAgB,CAAC,UAAQ,OAAO,UAAU,YAAY,GAAG,KAAK,KAAK,UAAU,IAAI,MAAM;AACtF,IAAM,KAAK;AACX,IAAM,MAAM,CAAC,MAAM,WAAS,CAAC,UAAQ;AACpC,MAAI;AACJ,OAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,KAAM,QAAO,GAAG,MAAM,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AACvN,QAAM,EAAE,UAAU,gBAAgB,IAAI;AACtC,QAAM,uBAAuB,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,YAAU;AAC9D,UAAM,cAAc,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO;AAC/E,UAAM,qBAAqB,oBAAoB,QAAQ,oBAAoB,SAAS,SAAS,gBAAgB,OAAO;AACpH,QAAI,gBAAgB,KAAM,QAAO;AACjC,UAAM,aAAa,cAAc,WAAW,KAAK,cAAc,kBAAkB;AACjF,WAAO,SAAS,OAAO,EAAE,UAAU;AAAA,EACvC,CAAC;AACD,QAAM,wBAAwB,SAAS,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,UAAQ;AAC9E,QAAI,CAAC,KAAK,KAAK,IAAI;AACnB,QAAI,UAAU,QAAW;AACrB,aAAO;AAAA,IACX;AACA,QAAI,GAAG,IAAI;AACX,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACL,QAAM,+BAA+B,WAAW,QAAQ,WAAW,SAAS,UAAU,2BAA2B,OAAO,sBAAsB,QAAQ,6BAA6B,SAAS,SAAS,yBAAyB,OAAO,CAAC,KAAK,UAAQ;AAC/O,QAAI,EAAE,OAAO,SAAS,WAAW,aAAa,GAAG,uBAAuB,IAAI;AAC5E,WAAO,OAAO,QAAQ,sBAAsB,EAAE,MAAM,CAACA,WAAQ;AACzD,UAAI,CAAC,KAAK,KAAK,IAAIA;AACnB,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS;AAAA,QACzC,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAE,GAAG,CAAC,IAAK;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAG,GAAG,MAAM;AAAA,IAChB,CAAC,IAAI;AAAA,MACD,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ,IAAI;AAAA,EACR,GAAG,CAAC,CAAC;AACL,SAAO,GAAG,MAAM,sBAAsB,8BAA8B,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AAChM;",
|
||||
"names": ["param"]
|
||||
}
|
||||
9
app/node_modules/.vite/deps/clsx.js
generated
vendored
9
app/node_modules/.vite/deps/clsx.js
generated
vendored
@@ -1,9 +0,0 @@
|
||||
import {
|
||||
clsx,
|
||||
clsx_default
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
clsx,
|
||||
clsx_default as default
|
||||
};
|
||||
7
app/node_modules/.vite/deps/clsx.js.map
generated
vendored
7
app/node_modules/.vite/deps/clsx.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
12319
app/node_modules/.vite/deps/framer-motion.js
generated
vendored
12319
app/node_modules/.vite/deps/framer-motion.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/framer-motion.js.map
generated
vendored
7
app/node_modules/.vite/deps/framer-motion.js.map
generated
vendored
File diff suppressed because one or more lines are too long
98
app/node_modules/.vite/deps/hls-Q6LDPZPT.js
generated
vendored
98
app/node_modules/.vite/deps/hls-Q6LDPZPT.js
generated
vendored
@@ -1,98 +0,0 @@
|
||||
import {
|
||||
AbrController,
|
||||
AttrList,
|
||||
AudioStreamController,
|
||||
AudioTrackController,
|
||||
BasePlaylistController,
|
||||
BaseSegment,
|
||||
BaseStreamController,
|
||||
BufferController,
|
||||
CMCDController,
|
||||
CapLevelController,
|
||||
ChunkMetadata,
|
||||
ContentSteeringController,
|
||||
Cues,
|
||||
DateRange,
|
||||
EMEController,
|
||||
ErrorActionFlags,
|
||||
ErrorController,
|
||||
ErrorDetails,
|
||||
ErrorTypes,
|
||||
Events,
|
||||
FPSController,
|
||||
FetchLoader,
|
||||
Fragment,
|
||||
Hls,
|
||||
HlsSkip,
|
||||
HlsUrlParameters,
|
||||
KeySystemFormats,
|
||||
KeySystems,
|
||||
Level,
|
||||
LevelDetails,
|
||||
LevelKey,
|
||||
LoadStats,
|
||||
M3U8Parser,
|
||||
MetadataSchema,
|
||||
NetworkErrorAction,
|
||||
Part,
|
||||
PlaylistLevelType,
|
||||
SubtitleStreamController,
|
||||
SubtitleTrackController,
|
||||
TimelineController,
|
||||
XhrLoader,
|
||||
fetchSupported,
|
||||
getMediaSource,
|
||||
isMSESupported,
|
||||
isSupported,
|
||||
requestMediaKeySystemAccess
|
||||
} from "./chunk-OAEA5FZL.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
AbrController,
|
||||
AttrList,
|
||||
AudioStreamController,
|
||||
AudioTrackController,
|
||||
BasePlaylistController,
|
||||
BaseSegment,
|
||||
BaseStreamController,
|
||||
BufferController,
|
||||
CMCDController,
|
||||
CapLevelController,
|
||||
ChunkMetadata,
|
||||
ContentSteeringController,
|
||||
Cues,
|
||||
DateRange,
|
||||
EMEController,
|
||||
ErrorActionFlags,
|
||||
ErrorController,
|
||||
ErrorDetails,
|
||||
ErrorTypes,
|
||||
Events,
|
||||
FPSController,
|
||||
FetchLoader,
|
||||
Fragment,
|
||||
Hls,
|
||||
HlsSkip,
|
||||
HlsUrlParameters,
|
||||
KeySystemFormats,
|
||||
KeySystems,
|
||||
Level,
|
||||
LevelDetails,
|
||||
LevelKey,
|
||||
LoadStats,
|
||||
M3U8Parser,
|
||||
MetadataSchema,
|
||||
NetworkErrorAction,
|
||||
Part,
|
||||
PlaylistLevelType,
|
||||
SubtitleStreamController,
|
||||
SubtitleTrackController,
|
||||
TimelineController,
|
||||
XhrLoader,
|
||||
Hls as default,
|
||||
fetchSupported,
|
||||
getMediaSource,
|
||||
isMSESupported,
|
||||
isSupported,
|
||||
requestMediaKeySystemAccess
|
||||
};
|
||||
7
app/node_modules/.vite/deps/hls-Q6LDPZPT.js.map
generated
vendored
7
app/node_modules/.vite/deps/hls-Q6LDPZPT.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
27351
app/node_modules/.vite/deps/lucide-react.js
generated
vendored
27351
app/node_modules/.vite/deps/lucide-react.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/lucide-react.js.map
generated
vendored
7
app/node_modules/.vite/deps/lucide-react.js.map
generated
vendored
File diff suppressed because one or more lines are too long
264
app/node_modules/.vite/deps/react-dom.js
generated
vendored
264
app/node_modules/.vite/deps/react-dom.js
generated
vendored
@@ -1,6 +1,262 @@
|
||||
import {
|
||||
require_react_dom
|
||||
} from "./chunk-YLZ34CCM.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
__commonJS,
|
||||
require_react
|
||||
} from "./chunk-E7O7WYRO.js";
|
||||
|
||||
// node_modules/react-dom/cjs/react-dom.development.js
|
||||
var require_react_dom_development = __commonJS({
|
||||
"node_modules/react-dom/cjs/react-dom.development.js"(exports) {
|
||||
"use strict";
|
||||
(function() {
|
||||
function noop() {
|
||||
}
|
||||
function testStringCoercion(value) {
|
||||
return "" + value;
|
||||
}
|
||||
function createPortal$1(children, containerInfo, implementation) {
|
||||
var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
|
||||
try {
|
||||
testStringCoercion(key);
|
||||
var JSCompiler_inline_result = false;
|
||||
} catch (e) {
|
||||
JSCompiler_inline_result = true;
|
||||
}
|
||||
JSCompiler_inline_result && (console.error(
|
||||
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
||||
"function" === typeof Symbol && Symbol.toStringTag && key[Symbol.toStringTag] || key.constructor.name || "Object"
|
||||
), testStringCoercion(key));
|
||||
return {
|
||||
$$typeof: REACT_PORTAL_TYPE,
|
||||
key: null == key ? null : "" + key,
|
||||
children,
|
||||
containerInfo,
|
||||
implementation
|
||||
};
|
||||
}
|
||||
function getCrossOriginStringAs(as, input) {
|
||||
if ("font" === as) return "";
|
||||
if ("string" === typeof input)
|
||||
return "use-credentials" === input ? input : "";
|
||||
}
|
||||
function getValueDescriptorExpectingObjectForWarning(thing) {
|
||||
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : 'something with type "' + typeof thing + '"';
|
||||
}
|
||||
function getValueDescriptorExpectingEnumForWarning(thing) {
|
||||
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "string" === typeof thing ? JSON.stringify(thing) : "number" === typeof thing ? "`" + thing + "`" : 'something with type "' + typeof thing + '"';
|
||||
}
|
||||
function resolveDispatcher() {
|
||||
var dispatcher = ReactSharedInternals.H;
|
||||
null === dispatcher && console.error(
|
||||
"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
|
||||
);
|
||||
return dispatcher;
|
||||
}
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
||||
var React = require_react(), Internals = {
|
||||
d: {
|
||||
f: noop,
|
||||
r: function() {
|
||||
throw Error(
|
||||
"Invalid form element. requestFormReset must be passed a form that was rendered by React."
|
||||
);
|
||||
},
|
||||
D: noop,
|
||||
C: noop,
|
||||
L: noop,
|
||||
m: noop,
|
||||
X: noop,
|
||||
S: noop,
|
||||
M: noop
|
||||
},
|
||||
p: 0,
|
||||
findDOMNode: null
|
||||
}, REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
||||
"function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error(
|
||||
"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"
|
||||
);
|
||||
exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;
|
||||
exports.createPortal = function(children, container) {
|
||||
var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
|
||||
if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)
|
||||
throw Error("Target container is not a DOM element.");
|
||||
return createPortal$1(children, container, null, key);
|
||||
};
|
||||
exports.flushSync = function(fn) {
|
||||
var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;
|
||||
try {
|
||||
if (ReactSharedInternals.T = null, Internals.p = 2, fn)
|
||||
return fn();
|
||||
} finally {
|
||||
ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f() && console.error(
|
||||
"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task."
|
||||
);
|
||||
}
|
||||
};
|
||||
exports.preconnect = function(href, options) {
|
||||
"string" === typeof href && href ? null != options && "object" !== typeof options ? console.error(
|
||||
"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : null != options && "string" !== typeof options.crossOrigin && console.error(
|
||||
"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(options.crossOrigin)
|
||||
) : console.error(
|
||||
"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
"string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options));
|
||||
};
|
||||
exports.prefetchDNS = function(href) {
|
||||
if ("string" !== typeof href || !href)
|
||||
console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
else if (1 < arguments.length) {
|
||||
var options = arguments[1];
|
||||
"object" === typeof options && options.hasOwnProperty("crossOrigin") ? console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : console.error(
|
||||
"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
);
|
||||
}
|
||||
"string" === typeof href && Internals.d.D(href);
|
||||
};
|
||||
exports.preinit = function(href, options) {
|
||||
"string" === typeof href && href ? null == options || "object" !== typeof options ? console.error(
|
||||
"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",
|
||||
getValueDescriptorExpectingEnumForWarning(options)
|
||||
) : "style" !== options.as && "script" !== options.as && console.error(
|
||||
'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',
|
||||
getValueDescriptorExpectingEnumForWarning(options.as)
|
||||
) : console.error(
|
||||
"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
|
||||
getValueDescriptorExpectingObjectForWarning(href)
|
||||
);
|
||||
if ("string" === typeof href && options && "string" === typeof options.as) {
|
||||
var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0;
|
||||
"style" === as ? Internals.d.S(
|
||||
href,
|
||||
"string" === typeof options.precedence ? options.precedence : void 0,
|
||||
{
|
||||
crossOrigin,
|
||||
integrity,
|
||||
fetchPriority
|
||||
}
|
||||
) : "script" === as && Internals.d.X(href, {
|
||||
crossOrigin,
|
||||
integrity,
|
||||
fetchPriority,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.preinitModule = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "script" !== options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingEnumForWarning(options.as) + ".");
|
||||
if (encountered)
|
||||
console.error(
|
||||
"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",
|
||||
encountered
|
||||
);
|
||||
else
|
||||
switch (encountered = options && "string" === typeof options.as ? options.as : "script", encountered) {
|
||||
case "script":
|
||||
break;
|
||||
default:
|
||||
encountered = getValueDescriptorExpectingEnumForWarning(encountered), console.error(
|
||||
'ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',
|
||||
encountered,
|
||||
href
|
||||
);
|
||||
}
|
||||
if ("string" === typeof href)
|
||||
if ("object" === typeof options && null !== options) {
|
||||
if (null == options.as || "script" === options.as)
|
||||
encountered = getCrossOriginStringAs(
|
||||
options.as,
|
||||
options.crossOrigin
|
||||
), Internals.d.M(href, {
|
||||
crossOrigin: encountered,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||
});
|
||||
} else null == options && Internals.d.M(href);
|
||||
};
|
||||
exports.preload = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
null == options || "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : "string" === typeof options.as && options.as || (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||
encountered && console.error(
|
||||
'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',
|
||||
encountered
|
||||
);
|
||||
if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) {
|
||||
encountered = options.as;
|
||||
var crossOrigin = getCrossOriginStringAs(
|
||||
encountered,
|
||||
options.crossOrigin
|
||||
);
|
||||
Internals.d.L(href, encountered, {
|
||||
crossOrigin,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||
nonce: "string" === typeof options.nonce ? options.nonce : void 0,
|
||||
type: "string" === typeof options.type ? options.type : void 0,
|
||||
fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0,
|
||||
referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0,
|
||||
imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
|
||||
imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0,
|
||||
media: "string" === typeof options.media ? options.media : void 0
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.preloadModule = function(href, options) {
|
||||
var encountered = "";
|
||||
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "string" !== typeof options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||
encountered && console.error(
|
||||
'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',
|
||||
encountered
|
||||
);
|
||||
"string" === typeof href && (options ? (encountered = getCrossOriginStringAs(
|
||||
options.as,
|
||||
options.crossOrigin
|
||||
), Internals.d.m(href, {
|
||||
as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0,
|
||||
crossOrigin: encountered,
|
||||
integrity: "string" === typeof options.integrity ? options.integrity : void 0
|
||||
})) : Internals.d.m(href));
|
||||
};
|
||||
exports.requestFormReset = function(form) {
|
||||
Internals.d.r(form);
|
||||
};
|
||||
exports.unstable_batchedUpdates = function(fn, a) {
|
||||
return fn(a);
|
||||
};
|
||||
exports.useFormState = function(action, initialState, permalink) {
|
||||
return resolveDispatcher().useFormState(action, initialState, permalink);
|
||||
};
|
||||
exports.useFormStatus = function() {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.3";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
||||
})();
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/react-dom/index.js
|
||||
var require_react_dom = __commonJS({
|
||||
"node_modules/react-dom/index.js"(exports, module) {
|
||||
if (false) {
|
||||
checkDCE();
|
||||
module.exports = null;
|
||||
} else {
|
||||
module.exports = require_react_dom_development();
|
||||
}
|
||||
}
|
||||
});
|
||||
export default require_react_dom();
|
||||
//# sourceMappingURL=react-dom.js.map
|
||||
|
||||
6
app/node_modules/.vite/deps/react-dom.js.map
generated
vendored
6
app/node_modules/.vite/deps/react-dom.js.map
generated
vendored
File diff suppressed because one or more lines are too long
8
app/node_modules/.vite/deps/react-dom_client.js
generated
vendored
8
app/node_modules/.vite/deps/react-dom_client.js
generated
vendored
@@ -1,8 +0,0 @@
|
||||
import {
|
||||
require_client
|
||||
} from "./chunk-2NWYL6R2.js";
|
||||
import "./chunk-YLZ34CCM.js";
|
||||
import "./chunk-QURGMCZB.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export default require_client();
|
||||
7
app/node_modules/.vite/deps/react-dom_client.js.map
generated
vendored
7
app/node_modules/.vite/deps/react-dom_client.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
3
app/node_modules/.vite/deps/react.js
generated
vendored
3
app/node_modules/.vite/deps/react.js
generated
vendored
@@ -1,5 +1,4 @@
|
||||
import {
|
||||
require_react
|
||||
} from "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
} from "./chunk-E7O7WYRO.js";
|
||||
export default require_react();
|
||||
|
||||
6
app/node_modules/.vite/deps/react_jsx-dev-runtime.js
generated
vendored
6
app/node_modules/.vite/deps/react_jsx-dev-runtime.js
generated
vendored
@@ -1,9 +1,7 @@
|
||||
import {
|
||||
__commonJS,
|
||||
require_react
|
||||
} from "./chunk-ZNKPWGXJ.js";
|
||||
import {
|
||||
__commonJS
|
||||
} from "./chunk-G3PMV62Z.js";
|
||||
} from "./chunk-E7O7WYRO.js";
|
||||
|
||||
// node_modules/react/cjs/react-jsx-dev-runtime.development.js
|
||||
var require_react_jsx_dev_runtime_development = __commonJS({
|
||||
|
||||
4
app/node_modules/.vite/deps/react_jsx-dev-runtime.js.map
generated
vendored
4
app/node_modules/.vite/deps/react_jsx-dev-runtime.js.map
generated
vendored
File diff suppressed because one or more lines are too long
276
app/node_modules/.vite/deps/react_jsx-runtime.js
generated
vendored
276
app/node_modules/.vite/deps/react_jsx-runtime.js
generated
vendored
@@ -1,6 +1,274 @@
|
||||
import {
|
||||
require_jsx_runtime
|
||||
} from "./chunk-USXRE7Q2.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
__commonJS,
|
||||
require_react
|
||||
} from "./chunk-E7O7WYRO.js";
|
||||
|
||||
// node_modules/react/cjs/react-jsx-runtime.development.js
|
||||
var require_react_jsx_runtime_development = __commonJS({
|
||||
"node_modules/react/cjs/react-jsx-runtime.development.js"(exports) {
|
||||
"use strict";
|
||||
(function() {
|
||||
function getComponentNameFromType(type) {
|
||||
if (null == type) return null;
|
||||
if ("function" === typeof type)
|
||||
return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
||||
if ("string" === typeof type) return type;
|
||||
switch (type) {
|
||||
case REACT_FRAGMENT_TYPE:
|
||||
return "Fragment";
|
||||
case REACT_PROFILER_TYPE:
|
||||
return "Profiler";
|
||||
case REACT_STRICT_MODE_TYPE:
|
||||
return "StrictMode";
|
||||
case REACT_SUSPENSE_TYPE:
|
||||
return "Suspense";
|
||||
case REACT_SUSPENSE_LIST_TYPE:
|
||||
return "SuspenseList";
|
||||
case REACT_ACTIVITY_TYPE:
|
||||
return "Activity";
|
||||
}
|
||||
if ("object" === typeof type)
|
||||
switch ("number" === typeof type.tag && console.error(
|
||||
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
|
||||
), type.$$typeof) {
|
||||
case REACT_PORTAL_TYPE:
|
||||
return "Portal";
|
||||
case REACT_CONTEXT_TYPE:
|
||||
return type.displayName || "Context";
|
||||
case REACT_CONSUMER_TYPE:
|
||||
return (type._context.displayName || "Context") + ".Consumer";
|
||||
case REACT_FORWARD_REF_TYPE:
|
||||
var innerType = type.render;
|
||||
type = type.displayName;
|
||||
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
|
||||
return type;
|
||||
case REACT_MEMO_TYPE:
|
||||
return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
|
||||
case REACT_LAZY_TYPE:
|
||||
innerType = type._payload;
|
||||
type = type._init;
|
||||
try {
|
||||
return getComponentNameFromType(type(innerType));
|
||||
} catch (x) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function testStringCoercion(value) {
|
||||
return "" + value;
|
||||
}
|
||||
function checkKeyStringCoercion(value) {
|
||||
try {
|
||||
testStringCoercion(value);
|
||||
var JSCompiler_inline_result = false;
|
||||
} catch (e) {
|
||||
JSCompiler_inline_result = true;
|
||||
}
|
||||
if (JSCompiler_inline_result) {
|
||||
JSCompiler_inline_result = console;
|
||||
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
||||
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
||||
JSCompiler_temp_const.call(
|
||||
JSCompiler_inline_result,
|
||||
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
||||
JSCompiler_inline_result$jscomp$0
|
||||
);
|
||||
return testStringCoercion(value);
|
||||
}
|
||||
}
|
||||
function getTaskName(type) {
|
||||
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
||||
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE)
|
||||
return "<...>";
|
||||
try {
|
||||
var name = getComponentNameFromType(type);
|
||||
return name ? "<" + name + ">" : "<...>";
|
||||
} catch (x) {
|
||||
return "<...>";
|
||||
}
|
||||
}
|
||||
function getOwner() {
|
||||
var dispatcher = ReactSharedInternals.A;
|
||||
return null === dispatcher ? null : dispatcher.getOwner();
|
||||
}
|
||||
function UnknownOwner() {
|
||||
return Error("react-stack-top-frame");
|
||||
}
|
||||
function hasValidKey(config) {
|
||||
if (hasOwnProperty.call(config, "key")) {
|
||||
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
||||
if (getter && getter.isReactWarning) return false;
|
||||
}
|
||||
return void 0 !== config.key;
|
||||
}
|
||||
function defineKeyPropWarningGetter(props, displayName) {
|
||||
function warnAboutAccessingKey() {
|
||||
specialPropKeyWarningShown || (specialPropKeyWarningShown = true, console.error(
|
||||
"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
|
||||
displayName
|
||||
));
|
||||
}
|
||||
warnAboutAccessingKey.isReactWarning = true;
|
||||
Object.defineProperty(props, "key", {
|
||||
get: warnAboutAccessingKey,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
function elementRefGetterWithDeprecationWarning() {
|
||||
var componentName = getComponentNameFromType(this.type);
|
||||
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = true, console.error(
|
||||
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
|
||||
));
|
||||
componentName = this.props.ref;
|
||||
return void 0 !== componentName ? componentName : null;
|
||||
}
|
||||
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
||||
var refProp = props.ref;
|
||||
type = {
|
||||
$$typeof: REACT_ELEMENT_TYPE,
|
||||
type,
|
||||
key,
|
||||
props,
|
||||
_owner: owner
|
||||
};
|
||||
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
|
||||
enumerable: false,
|
||||
get: elementRefGetterWithDeprecationWarning
|
||||
}) : Object.defineProperty(type, "ref", { enumerable: false, value: null });
|
||||
type._store = {};
|
||||
Object.defineProperty(type._store, "validated", {
|
||||
configurable: false,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
value: 0
|
||||
});
|
||||
Object.defineProperty(type, "_debugInfo", {
|
||||
configurable: false,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
value: null
|
||||
});
|
||||
Object.defineProperty(type, "_debugStack", {
|
||||
configurable: false,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
value: debugStack
|
||||
});
|
||||
Object.defineProperty(type, "_debugTask", {
|
||||
configurable: false,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
value: debugTask
|
||||
});
|
||||
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
||||
return type;
|
||||
}
|
||||
function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
|
||||
var children = config.children;
|
||||
if (void 0 !== children)
|
||||
if (isStaticChildren)
|
||||
if (isArrayImpl(children)) {
|
||||
for (isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++)
|
||||
validateChildKeys(children[isStaticChildren]);
|
||||
Object.freeze && Object.freeze(children);
|
||||
} else
|
||||
console.error(
|
||||
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
|
||||
);
|
||||
else validateChildKeys(children);
|
||||
if (hasOwnProperty.call(config, "key")) {
|
||||
children = getComponentNameFromType(type);
|
||||
var keys = Object.keys(config).filter(function(k) {
|
||||
return "key" !== k;
|
||||
});
|
||||
isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
|
||||
didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error(
|
||||
'A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',
|
||||
isStaticChildren,
|
||||
children,
|
||||
keys,
|
||||
children
|
||||
), didWarnAboutKeySpread[children + isStaticChildren] = true);
|
||||
}
|
||||
children = null;
|
||||
void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
|
||||
hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
|
||||
if ("key" in config) {
|
||||
maybeKey = {};
|
||||
for (var propName in config)
|
||||
"key" !== propName && (maybeKey[propName] = config[propName]);
|
||||
} else maybeKey = config;
|
||||
children && defineKeyPropWarningGetter(
|
||||
maybeKey,
|
||||
"function" === typeof type ? type.displayName || type.name || "Unknown" : type
|
||||
);
|
||||
return ReactElement(
|
||||
type,
|
||||
children,
|
||||
maybeKey,
|
||||
getOwner(),
|
||||
debugStack,
|
||||
debugTask
|
||||
);
|
||||
}
|
||||
function validateChildKeys(node) {
|
||||
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
||||
}
|
||||
function isValidElement(object) {
|
||||
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
||||
}
|
||||
var React = require_react(), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
|
||||
return null;
|
||||
};
|
||||
React = {
|
||||
react_stack_bottom_frame: function(callStackForError) {
|
||||
return callStackForError();
|
||||
}
|
||||
};
|
||||
var specialPropKeyWarningShown;
|
||||
var didWarnAboutElementRef = {};
|
||||
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(
|
||||
React,
|
||||
UnknownOwner
|
||||
)();
|
||||
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
||||
var didWarnAboutKeySpread = {};
|
||||
exports.Fragment = REACT_FRAGMENT_TYPE;
|
||||
exports.jsx = function(type, config, maybeKey) {
|
||||
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||
return jsxDEVImpl(
|
||||
type,
|
||||
config,
|
||||
maybeKey,
|
||||
false,
|
||||
trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
|
||||
trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
|
||||
);
|
||||
};
|
||||
exports.jsxs = function(type, config, maybeKey) {
|
||||
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||
return jsxDEVImpl(
|
||||
type,
|
||||
config,
|
||||
maybeKey,
|
||||
true,
|
||||
trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
|
||||
trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
|
||||
);
|
||||
};
|
||||
})();
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/react/jsx-runtime.js
|
||||
var require_jsx_runtime = __commonJS({
|
||||
"node_modules/react/jsx-runtime.js"(exports, module) {
|
||||
if (false) {
|
||||
module.exports = null;
|
||||
} else {
|
||||
module.exports = require_react_jsx_runtime_development();
|
||||
}
|
||||
}
|
||||
});
|
||||
export default require_jsx_runtime();
|
||||
//# sourceMappingURL=react_jsx-runtime.js.map
|
||||
|
||||
6
app/node_modules/.vite/deps/react_jsx-runtime.js.map
generated
vendored
6
app/node_modules/.vite/deps/react_jsx-runtime.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2506
app/node_modules/.vite/deps/recharts.js
generated
vendored
2506
app/node_modules/.vite/deps/recharts.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/recharts.js.map
generated
vendored
7
app/node_modules/.vite/deps/recharts.js.map
generated
vendored
File diff suppressed because one or more lines are too long
3095
app/node_modules/.vite/deps/tailwind-merge.js
generated
vendored
3095
app/node_modules/.vite/deps/tailwind-merge.js
generated
vendored
File diff suppressed because it is too large
Load Diff
7
app/node_modules/.vite/deps/tailwind-merge.js.map
generated
vendored
7
app/node_modules/.vite/deps/tailwind-merge.js.map
generated
vendored
File diff suppressed because one or more lines are too long
877
app/node_modules/.vite/deps/three.js
generated
vendored
877
app/node_modules/.vite/deps/three.js
generated
vendored
@@ -1,877 +0,0 @@
|
||||
import {
|
||||
ACESFilmicToneMapping,
|
||||
AddEquation,
|
||||
AddOperation,
|
||||
AdditiveAnimationBlendMode,
|
||||
AdditiveBlending,
|
||||
AgXToneMapping,
|
||||
AlphaFormat,
|
||||
AlwaysCompare,
|
||||
AlwaysDepth,
|
||||
AlwaysStencilFunc,
|
||||
AmbientLight,
|
||||
AnimationAction,
|
||||
AnimationClip,
|
||||
AnimationLoader,
|
||||
AnimationMixer,
|
||||
AnimationObjectGroup,
|
||||
AnimationUtils,
|
||||
ArcCurve,
|
||||
ArrayCamera,
|
||||
ArrowHelper,
|
||||
AttachedBindMode,
|
||||
Audio,
|
||||
AudioAnalyser,
|
||||
AudioContext,
|
||||
AudioListener,
|
||||
AudioLoader,
|
||||
AxesHelper,
|
||||
BackSide,
|
||||
BasicDepthPacking,
|
||||
BasicShadowMap,
|
||||
BatchedMesh,
|
||||
Bone,
|
||||
BooleanKeyframeTrack,
|
||||
Box2,
|
||||
Box3,
|
||||
Box3Helper,
|
||||
BoxGeometry,
|
||||
BoxHelper,
|
||||
BufferAttribute,
|
||||
BufferGeometry,
|
||||
BufferGeometryLoader,
|
||||
ByteType,
|
||||
Cache,
|
||||
Camera,
|
||||
CameraHelper,
|
||||
CanvasTexture,
|
||||
CapsuleGeometry,
|
||||
CatmullRomCurve3,
|
||||
CineonToneMapping,
|
||||
CircleGeometry,
|
||||
ClampToEdgeWrapping,
|
||||
Clock,
|
||||
Color,
|
||||
ColorKeyframeTrack,
|
||||
ColorManagement,
|
||||
CompressedArrayTexture,
|
||||
CompressedCubeTexture,
|
||||
CompressedTexture,
|
||||
CompressedTextureLoader,
|
||||
ConeGeometry,
|
||||
ConstantAlphaFactor,
|
||||
ConstantColorFactor,
|
||||
Controls,
|
||||
CubeCamera,
|
||||
CubeDepthTexture,
|
||||
CubeReflectionMapping,
|
||||
CubeRefractionMapping,
|
||||
CubeTexture,
|
||||
CubeTextureLoader,
|
||||
CubeUVReflectionMapping,
|
||||
CubicBezierCurve,
|
||||
CubicBezierCurve3,
|
||||
CubicInterpolant,
|
||||
CullFaceBack,
|
||||
CullFaceFront,
|
||||
CullFaceFrontBack,
|
||||
CullFaceNone,
|
||||
Curve,
|
||||
CurvePath,
|
||||
CustomBlending,
|
||||
CustomToneMapping,
|
||||
CylinderGeometry,
|
||||
Cylindrical,
|
||||
Data3DTexture,
|
||||
DataArrayTexture,
|
||||
DataTexture,
|
||||
DataTextureLoader,
|
||||
DataUtils,
|
||||
DecrementStencilOp,
|
||||
DecrementWrapStencilOp,
|
||||
DefaultLoadingManager,
|
||||
DepthFormat,
|
||||
DepthStencilFormat,
|
||||
DepthTexture,
|
||||
DetachedBindMode,
|
||||
DirectionalLight,
|
||||
DirectionalLightHelper,
|
||||
DiscreteInterpolant,
|
||||
DodecahedronGeometry,
|
||||
DoubleSide,
|
||||
DstAlphaFactor,
|
||||
DstColorFactor,
|
||||
DynamicCopyUsage,
|
||||
DynamicDrawUsage,
|
||||
DynamicReadUsage,
|
||||
EdgesGeometry,
|
||||
EllipseCurve,
|
||||
EqualCompare,
|
||||
EqualDepth,
|
||||
EqualStencilFunc,
|
||||
EquirectangularReflectionMapping,
|
||||
EquirectangularRefractionMapping,
|
||||
Euler,
|
||||
EventDispatcher,
|
||||
ExternalTexture,
|
||||
ExtrudeGeometry,
|
||||
FileLoader,
|
||||
Float16BufferAttribute,
|
||||
Float32BufferAttribute,
|
||||
FloatType,
|
||||
Fog,
|
||||
FogExp2,
|
||||
FramebufferTexture,
|
||||
FrontSide,
|
||||
Frustum,
|
||||
FrustumArray,
|
||||
GLBufferAttribute,
|
||||
GLSL1,
|
||||
GLSL3,
|
||||
GreaterCompare,
|
||||
GreaterDepth,
|
||||
GreaterEqualCompare,
|
||||
GreaterEqualDepth,
|
||||
GreaterEqualStencilFunc,
|
||||
GreaterStencilFunc,
|
||||
GridHelper,
|
||||
Group,
|
||||
HalfFloatType,
|
||||
HemisphereLight,
|
||||
HemisphereLightHelper,
|
||||
IcosahedronGeometry,
|
||||
ImageBitmapLoader,
|
||||
ImageLoader,
|
||||
ImageUtils,
|
||||
IncrementStencilOp,
|
||||
IncrementWrapStencilOp,
|
||||
InstancedBufferAttribute,
|
||||
InstancedBufferGeometry,
|
||||
InstancedInterleavedBuffer,
|
||||
InstancedMesh,
|
||||
Int16BufferAttribute,
|
||||
Int32BufferAttribute,
|
||||
Int8BufferAttribute,
|
||||
IntType,
|
||||
InterleavedBuffer,
|
||||
InterleavedBufferAttribute,
|
||||
Interpolant,
|
||||
InterpolateDiscrete,
|
||||
InterpolateLinear,
|
||||
InterpolateSmooth,
|
||||
InterpolationSamplingMode,
|
||||
InterpolationSamplingType,
|
||||
InvertStencilOp,
|
||||
KeepStencilOp,
|
||||
KeyframeTrack,
|
||||
LOD,
|
||||
LatheGeometry,
|
||||
Layers,
|
||||
LessCompare,
|
||||
LessDepth,
|
||||
LessEqualCompare,
|
||||
LessEqualDepth,
|
||||
LessEqualStencilFunc,
|
||||
LessStencilFunc,
|
||||
Light,
|
||||
LightProbe,
|
||||
Line,
|
||||
Line3,
|
||||
LineBasicMaterial,
|
||||
LineCurve,
|
||||
LineCurve3,
|
||||
LineDashedMaterial,
|
||||
LineLoop,
|
||||
LineSegments,
|
||||
LinearFilter,
|
||||
LinearInterpolant,
|
||||
LinearMipMapLinearFilter,
|
||||
LinearMipMapNearestFilter,
|
||||
LinearMipmapLinearFilter,
|
||||
LinearMipmapNearestFilter,
|
||||
LinearSRGBColorSpace,
|
||||
LinearToneMapping,
|
||||
LinearTransfer,
|
||||
Loader,
|
||||
LoaderUtils,
|
||||
LoadingManager,
|
||||
LoopOnce,
|
||||
LoopPingPong,
|
||||
LoopRepeat,
|
||||
MOUSE,
|
||||
Material,
|
||||
MaterialLoader,
|
||||
MathUtils,
|
||||
Matrix2,
|
||||
Matrix3,
|
||||
Matrix4,
|
||||
MaxEquation,
|
||||
Mesh,
|
||||
MeshBasicMaterial,
|
||||
MeshDepthMaterial,
|
||||
MeshDistanceMaterial,
|
||||
MeshLambertMaterial,
|
||||
MeshMatcapMaterial,
|
||||
MeshNormalMaterial,
|
||||
MeshPhongMaterial,
|
||||
MeshPhysicalMaterial,
|
||||
MeshStandardMaterial,
|
||||
MeshToonMaterial,
|
||||
MinEquation,
|
||||
MirroredRepeatWrapping,
|
||||
MixOperation,
|
||||
MultiplyBlending,
|
||||
MultiplyOperation,
|
||||
NearestFilter,
|
||||
NearestMipMapLinearFilter,
|
||||
NearestMipMapNearestFilter,
|
||||
NearestMipmapLinearFilter,
|
||||
NearestMipmapNearestFilter,
|
||||
NeutralToneMapping,
|
||||
NeverCompare,
|
||||
NeverDepth,
|
||||
NeverStencilFunc,
|
||||
NoBlending,
|
||||
NoColorSpace,
|
||||
NoNormalPacking,
|
||||
NoToneMapping,
|
||||
NormalAnimationBlendMode,
|
||||
NormalBlending,
|
||||
NormalGAPacking,
|
||||
NormalRGPacking,
|
||||
NotEqualCompare,
|
||||
NotEqualDepth,
|
||||
NotEqualStencilFunc,
|
||||
NumberKeyframeTrack,
|
||||
Object3D,
|
||||
ObjectLoader,
|
||||
ObjectSpaceNormalMap,
|
||||
OctahedronGeometry,
|
||||
OneFactor,
|
||||
OneMinusConstantAlphaFactor,
|
||||
OneMinusConstantColorFactor,
|
||||
OneMinusDstAlphaFactor,
|
||||
OneMinusDstColorFactor,
|
||||
OneMinusSrcAlphaFactor,
|
||||
OneMinusSrcColorFactor,
|
||||
OrthographicCamera,
|
||||
PCFShadowMap,
|
||||
PCFSoftShadowMap,
|
||||
PMREMGenerator,
|
||||
Path,
|
||||
PerspectiveCamera,
|
||||
Plane,
|
||||
PlaneGeometry,
|
||||
PlaneHelper,
|
||||
PointLight,
|
||||
PointLightHelper,
|
||||
Points,
|
||||
PointsMaterial,
|
||||
PolarGridHelper,
|
||||
PolyhedronGeometry,
|
||||
PositionalAudio,
|
||||
PropertyBinding,
|
||||
PropertyMixer,
|
||||
QuadraticBezierCurve,
|
||||
QuadraticBezierCurve3,
|
||||
Quaternion,
|
||||
QuaternionKeyframeTrack,
|
||||
QuaternionLinearInterpolant,
|
||||
R11_EAC_Format,
|
||||
RED_GREEN_RGTC2_Format,
|
||||
RED_RGTC1_Format,
|
||||
REVISION,
|
||||
RG11_EAC_Format,
|
||||
RGBADepthPacking,
|
||||
RGBAFormat,
|
||||
RGBAIntegerFormat,
|
||||
RGBA_ASTC_10x10_Format,
|
||||
RGBA_ASTC_10x5_Format,
|
||||
RGBA_ASTC_10x6_Format,
|
||||
RGBA_ASTC_10x8_Format,
|
||||
RGBA_ASTC_12x10_Format,
|
||||
RGBA_ASTC_12x12_Format,
|
||||
RGBA_ASTC_4x4_Format,
|
||||
RGBA_ASTC_5x4_Format,
|
||||
RGBA_ASTC_5x5_Format,
|
||||
RGBA_ASTC_6x5_Format,
|
||||
RGBA_ASTC_6x6_Format,
|
||||
RGBA_ASTC_8x5_Format,
|
||||
RGBA_ASTC_8x6_Format,
|
||||
RGBA_ASTC_8x8_Format,
|
||||
RGBA_BPTC_Format,
|
||||
RGBA_ETC2_EAC_Format,
|
||||
RGBA_PVRTC_2BPPV1_Format,
|
||||
RGBA_PVRTC_4BPPV1_Format,
|
||||
RGBA_S3TC_DXT1_Format,
|
||||
RGBA_S3TC_DXT3_Format,
|
||||
RGBA_S3TC_DXT5_Format,
|
||||
RGBDepthPacking,
|
||||
RGBFormat,
|
||||
RGBIntegerFormat,
|
||||
RGB_BPTC_SIGNED_Format,
|
||||
RGB_BPTC_UNSIGNED_Format,
|
||||
RGB_ETC1_Format,
|
||||
RGB_ETC2_Format,
|
||||
RGB_PVRTC_2BPPV1_Format,
|
||||
RGB_PVRTC_4BPPV1_Format,
|
||||
RGB_S3TC_DXT1_Format,
|
||||
RGDepthPacking,
|
||||
RGFormat,
|
||||
RGIntegerFormat,
|
||||
RawShaderMaterial,
|
||||
Ray,
|
||||
Raycaster,
|
||||
RectAreaLight,
|
||||
RedFormat,
|
||||
RedIntegerFormat,
|
||||
ReinhardToneMapping,
|
||||
RenderTarget,
|
||||
RenderTarget3D,
|
||||
RepeatWrapping,
|
||||
ReplaceStencilOp,
|
||||
ReverseSubtractEquation,
|
||||
RingGeometry,
|
||||
SIGNED_R11_EAC_Format,
|
||||
SIGNED_RED_GREEN_RGTC2_Format,
|
||||
SIGNED_RED_RGTC1_Format,
|
||||
SIGNED_RG11_EAC_Format,
|
||||
SRGBColorSpace,
|
||||
SRGBTransfer,
|
||||
Scene,
|
||||
ShaderChunk,
|
||||
ShaderLib,
|
||||
ShaderMaterial,
|
||||
ShadowMaterial,
|
||||
Shape,
|
||||
ShapeGeometry,
|
||||
ShapePath,
|
||||
ShapeUtils,
|
||||
ShortType,
|
||||
Skeleton,
|
||||
SkeletonHelper,
|
||||
SkinnedMesh,
|
||||
Source,
|
||||
Sphere,
|
||||
SphereGeometry,
|
||||
Spherical,
|
||||
SphericalHarmonics3,
|
||||
SplineCurve,
|
||||
SpotLight,
|
||||
SpotLightHelper,
|
||||
Sprite,
|
||||
SpriteMaterial,
|
||||
SrcAlphaFactor,
|
||||
SrcAlphaSaturateFactor,
|
||||
SrcColorFactor,
|
||||
StaticCopyUsage,
|
||||
StaticDrawUsage,
|
||||
StaticReadUsage,
|
||||
StereoCamera,
|
||||
StreamCopyUsage,
|
||||
StreamDrawUsage,
|
||||
StreamReadUsage,
|
||||
StringKeyframeTrack,
|
||||
SubtractEquation,
|
||||
SubtractiveBlending,
|
||||
TOUCH,
|
||||
TangentSpaceNormalMap,
|
||||
TetrahedronGeometry,
|
||||
Texture,
|
||||
TextureLoader,
|
||||
TextureUtils,
|
||||
Timer,
|
||||
TimestampQuery,
|
||||
TorusGeometry,
|
||||
TorusKnotGeometry,
|
||||
Triangle,
|
||||
TriangleFanDrawMode,
|
||||
TriangleStripDrawMode,
|
||||
TrianglesDrawMode,
|
||||
TubeGeometry,
|
||||
UVMapping,
|
||||
Uint16BufferAttribute,
|
||||
Uint32BufferAttribute,
|
||||
Uint8BufferAttribute,
|
||||
Uint8ClampedBufferAttribute,
|
||||
Uniform,
|
||||
UniformsGroup,
|
||||
UniformsLib,
|
||||
UniformsUtils,
|
||||
UnsignedByteType,
|
||||
UnsignedInt101111Type,
|
||||
UnsignedInt248Type,
|
||||
UnsignedInt5999Type,
|
||||
UnsignedIntType,
|
||||
UnsignedShort4444Type,
|
||||
UnsignedShort5551Type,
|
||||
UnsignedShortType,
|
||||
VSMShadowMap,
|
||||
Vector2,
|
||||
Vector3,
|
||||
Vector4,
|
||||
VectorKeyframeTrack,
|
||||
VideoFrameTexture,
|
||||
VideoTexture,
|
||||
WebGL3DRenderTarget,
|
||||
WebGLArrayRenderTarget,
|
||||
WebGLCoordinateSystem,
|
||||
WebGLCubeRenderTarget,
|
||||
WebGLRenderTarget,
|
||||
WebGLRenderer,
|
||||
WebGLUtils,
|
||||
WebGPUCoordinateSystem,
|
||||
WebXRController,
|
||||
WireframeGeometry,
|
||||
WrapAroundEnding,
|
||||
ZeroCurvatureEnding,
|
||||
ZeroFactor,
|
||||
ZeroSlopeEnding,
|
||||
ZeroStencilOp,
|
||||
createCanvasElement,
|
||||
error,
|
||||
getConsoleFunction,
|
||||
log,
|
||||
setConsoleFunction,
|
||||
warn,
|
||||
warnOnce
|
||||
} from "./chunk-INS7YHTD.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
ACESFilmicToneMapping,
|
||||
AddEquation,
|
||||
AddOperation,
|
||||
AdditiveAnimationBlendMode,
|
||||
AdditiveBlending,
|
||||
AgXToneMapping,
|
||||
AlphaFormat,
|
||||
AlwaysCompare,
|
||||
AlwaysDepth,
|
||||
AlwaysStencilFunc,
|
||||
AmbientLight,
|
||||
AnimationAction,
|
||||
AnimationClip,
|
||||
AnimationLoader,
|
||||
AnimationMixer,
|
||||
AnimationObjectGroup,
|
||||
AnimationUtils,
|
||||
ArcCurve,
|
||||
ArrayCamera,
|
||||
ArrowHelper,
|
||||
AttachedBindMode,
|
||||
Audio,
|
||||
AudioAnalyser,
|
||||
AudioContext,
|
||||
AudioListener,
|
||||
AudioLoader,
|
||||
AxesHelper,
|
||||
BackSide,
|
||||
BasicDepthPacking,
|
||||
BasicShadowMap,
|
||||
BatchedMesh,
|
||||
Bone,
|
||||
BooleanKeyframeTrack,
|
||||
Box2,
|
||||
Box3,
|
||||
Box3Helper,
|
||||
BoxGeometry,
|
||||
BoxHelper,
|
||||
BufferAttribute,
|
||||
BufferGeometry,
|
||||
BufferGeometryLoader,
|
||||
ByteType,
|
||||
Cache,
|
||||
Camera,
|
||||
CameraHelper,
|
||||
CanvasTexture,
|
||||
CapsuleGeometry,
|
||||
CatmullRomCurve3,
|
||||
CineonToneMapping,
|
||||
CircleGeometry,
|
||||
ClampToEdgeWrapping,
|
||||
Clock,
|
||||
Color,
|
||||
ColorKeyframeTrack,
|
||||
ColorManagement,
|
||||
CompressedArrayTexture,
|
||||
CompressedCubeTexture,
|
||||
CompressedTexture,
|
||||
CompressedTextureLoader,
|
||||
ConeGeometry,
|
||||
ConstantAlphaFactor,
|
||||
ConstantColorFactor,
|
||||
Controls,
|
||||
CubeCamera,
|
||||
CubeDepthTexture,
|
||||
CubeReflectionMapping,
|
||||
CubeRefractionMapping,
|
||||
CubeTexture,
|
||||
CubeTextureLoader,
|
||||
CubeUVReflectionMapping,
|
||||
CubicBezierCurve,
|
||||
CubicBezierCurve3,
|
||||
CubicInterpolant,
|
||||
CullFaceBack,
|
||||
CullFaceFront,
|
||||
CullFaceFrontBack,
|
||||
CullFaceNone,
|
||||
Curve,
|
||||
CurvePath,
|
||||
CustomBlending,
|
||||
CustomToneMapping,
|
||||
CylinderGeometry,
|
||||
Cylindrical,
|
||||
Data3DTexture,
|
||||
DataArrayTexture,
|
||||
DataTexture,
|
||||
DataTextureLoader,
|
||||
DataUtils,
|
||||
DecrementStencilOp,
|
||||
DecrementWrapStencilOp,
|
||||
DefaultLoadingManager,
|
||||
DepthFormat,
|
||||
DepthStencilFormat,
|
||||
DepthTexture,
|
||||
DetachedBindMode,
|
||||
DirectionalLight,
|
||||
DirectionalLightHelper,
|
||||
DiscreteInterpolant,
|
||||
DodecahedronGeometry,
|
||||
DoubleSide,
|
||||
DstAlphaFactor,
|
||||
DstColorFactor,
|
||||
DynamicCopyUsage,
|
||||
DynamicDrawUsage,
|
||||
DynamicReadUsage,
|
||||
EdgesGeometry,
|
||||
EllipseCurve,
|
||||
EqualCompare,
|
||||
EqualDepth,
|
||||
EqualStencilFunc,
|
||||
EquirectangularReflectionMapping,
|
||||
EquirectangularRefractionMapping,
|
||||
Euler,
|
||||
EventDispatcher,
|
||||
ExternalTexture,
|
||||
ExtrudeGeometry,
|
||||
FileLoader,
|
||||
Float16BufferAttribute,
|
||||
Float32BufferAttribute,
|
||||
FloatType,
|
||||
Fog,
|
||||
FogExp2,
|
||||
FramebufferTexture,
|
||||
FrontSide,
|
||||
Frustum,
|
||||
FrustumArray,
|
||||
GLBufferAttribute,
|
||||
GLSL1,
|
||||
GLSL3,
|
||||
GreaterCompare,
|
||||
GreaterDepth,
|
||||
GreaterEqualCompare,
|
||||
GreaterEqualDepth,
|
||||
GreaterEqualStencilFunc,
|
||||
GreaterStencilFunc,
|
||||
GridHelper,
|
||||
Group,
|
||||
HalfFloatType,
|
||||
HemisphereLight,
|
||||
HemisphereLightHelper,
|
||||
IcosahedronGeometry,
|
||||
ImageBitmapLoader,
|
||||
ImageLoader,
|
||||
ImageUtils,
|
||||
IncrementStencilOp,
|
||||
IncrementWrapStencilOp,
|
||||
InstancedBufferAttribute,
|
||||
InstancedBufferGeometry,
|
||||
InstancedInterleavedBuffer,
|
||||
InstancedMesh,
|
||||
Int16BufferAttribute,
|
||||
Int32BufferAttribute,
|
||||
Int8BufferAttribute,
|
||||
IntType,
|
||||
InterleavedBuffer,
|
||||
InterleavedBufferAttribute,
|
||||
Interpolant,
|
||||
InterpolateDiscrete,
|
||||
InterpolateLinear,
|
||||
InterpolateSmooth,
|
||||
InterpolationSamplingMode,
|
||||
InterpolationSamplingType,
|
||||
InvertStencilOp,
|
||||
KeepStencilOp,
|
||||
KeyframeTrack,
|
||||
LOD,
|
||||
LatheGeometry,
|
||||
Layers,
|
||||
LessCompare,
|
||||
LessDepth,
|
||||
LessEqualCompare,
|
||||
LessEqualDepth,
|
||||
LessEqualStencilFunc,
|
||||
LessStencilFunc,
|
||||
Light,
|
||||
LightProbe,
|
||||
Line,
|
||||
Line3,
|
||||
LineBasicMaterial,
|
||||
LineCurve,
|
||||
LineCurve3,
|
||||
LineDashedMaterial,
|
||||
LineLoop,
|
||||
LineSegments,
|
||||
LinearFilter,
|
||||
LinearInterpolant,
|
||||
LinearMipMapLinearFilter,
|
||||
LinearMipMapNearestFilter,
|
||||
LinearMipmapLinearFilter,
|
||||
LinearMipmapNearestFilter,
|
||||
LinearSRGBColorSpace,
|
||||
LinearToneMapping,
|
||||
LinearTransfer,
|
||||
Loader,
|
||||
LoaderUtils,
|
||||
LoadingManager,
|
||||
LoopOnce,
|
||||
LoopPingPong,
|
||||
LoopRepeat,
|
||||
MOUSE,
|
||||
Material,
|
||||
MaterialLoader,
|
||||
MathUtils,
|
||||
Matrix2,
|
||||
Matrix3,
|
||||
Matrix4,
|
||||
MaxEquation,
|
||||
Mesh,
|
||||
MeshBasicMaterial,
|
||||
MeshDepthMaterial,
|
||||
MeshDistanceMaterial,
|
||||
MeshLambertMaterial,
|
||||
MeshMatcapMaterial,
|
||||
MeshNormalMaterial,
|
||||
MeshPhongMaterial,
|
||||
MeshPhysicalMaterial,
|
||||
MeshStandardMaterial,
|
||||
MeshToonMaterial,
|
||||
MinEquation,
|
||||
MirroredRepeatWrapping,
|
||||
MixOperation,
|
||||
MultiplyBlending,
|
||||
MultiplyOperation,
|
||||
NearestFilter,
|
||||
NearestMipMapLinearFilter,
|
||||
NearestMipMapNearestFilter,
|
||||
NearestMipmapLinearFilter,
|
||||
NearestMipmapNearestFilter,
|
||||
NeutralToneMapping,
|
||||
NeverCompare,
|
||||
NeverDepth,
|
||||
NeverStencilFunc,
|
||||
NoBlending,
|
||||
NoColorSpace,
|
||||
NoNormalPacking,
|
||||
NoToneMapping,
|
||||
NormalAnimationBlendMode,
|
||||
NormalBlending,
|
||||
NormalGAPacking,
|
||||
NormalRGPacking,
|
||||
NotEqualCompare,
|
||||
NotEqualDepth,
|
||||
NotEqualStencilFunc,
|
||||
NumberKeyframeTrack,
|
||||
Object3D,
|
||||
ObjectLoader,
|
||||
ObjectSpaceNormalMap,
|
||||
OctahedronGeometry,
|
||||
OneFactor,
|
||||
OneMinusConstantAlphaFactor,
|
||||
OneMinusConstantColorFactor,
|
||||
OneMinusDstAlphaFactor,
|
||||
OneMinusDstColorFactor,
|
||||
OneMinusSrcAlphaFactor,
|
||||
OneMinusSrcColorFactor,
|
||||
OrthographicCamera,
|
||||
PCFShadowMap,
|
||||
PCFSoftShadowMap,
|
||||
PMREMGenerator,
|
||||
Path,
|
||||
PerspectiveCamera,
|
||||
Plane,
|
||||
PlaneGeometry,
|
||||
PlaneHelper,
|
||||
PointLight,
|
||||
PointLightHelper,
|
||||
Points,
|
||||
PointsMaterial,
|
||||
PolarGridHelper,
|
||||
PolyhedronGeometry,
|
||||
PositionalAudio,
|
||||
PropertyBinding,
|
||||
PropertyMixer,
|
||||
QuadraticBezierCurve,
|
||||
QuadraticBezierCurve3,
|
||||
Quaternion,
|
||||
QuaternionKeyframeTrack,
|
||||
QuaternionLinearInterpolant,
|
||||
R11_EAC_Format,
|
||||
RED_GREEN_RGTC2_Format,
|
||||
RED_RGTC1_Format,
|
||||
REVISION,
|
||||
RG11_EAC_Format,
|
||||
RGBADepthPacking,
|
||||
RGBAFormat,
|
||||
RGBAIntegerFormat,
|
||||
RGBA_ASTC_10x10_Format,
|
||||
RGBA_ASTC_10x5_Format,
|
||||
RGBA_ASTC_10x6_Format,
|
||||
RGBA_ASTC_10x8_Format,
|
||||
RGBA_ASTC_12x10_Format,
|
||||
RGBA_ASTC_12x12_Format,
|
||||
RGBA_ASTC_4x4_Format,
|
||||
RGBA_ASTC_5x4_Format,
|
||||
RGBA_ASTC_5x5_Format,
|
||||
RGBA_ASTC_6x5_Format,
|
||||
RGBA_ASTC_6x6_Format,
|
||||
RGBA_ASTC_8x5_Format,
|
||||
RGBA_ASTC_8x6_Format,
|
||||
RGBA_ASTC_8x8_Format,
|
||||
RGBA_BPTC_Format,
|
||||
RGBA_ETC2_EAC_Format,
|
||||
RGBA_PVRTC_2BPPV1_Format,
|
||||
RGBA_PVRTC_4BPPV1_Format,
|
||||
RGBA_S3TC_DXT1_Format,
|
||||
RGBA_S3TC_DXT3_Format,
|
||||
RGBA_S3TC_DXT5_Format,
|
||||
RGBDepthPacking,
|
||||
RGBFormat,
|
||||
RGBIntegerFormat,
|
||||
RGB_BPTC_SIGNED_Format,
|
||||
RGB_BPTC_UNSIGNED_Format,
|
||||
RGB_ETC1_Format,
|
||||
RGB_ETC2_Format,
|
||||
RGB_PVRTC_2BPPV1_Format,
|
||||
RGB_PVRTC_4BPPV1_Format,
|
||||
RGB_S3TC_DXT1_Format,
|
||||
RGDepthPacking,
|
||||
RGFormat,
|
||||
RGIntegerFormat,
|
||||
RawShaderMaterial,
|
||||
Ray,
|
||||
Raycaster,
|
||||
RectAreaLight,
|
||||
RedFormat,
|
||||
RedIntegerFormat,
|
||||
ReinhardToneMapping,
|
||||
RenderTarget,
|
||||
RenderTarget3D,
|
||||
RepeatWrapping,
|
||||
ReplaceStencilOp,
|
||||
ReverseSubtractEquation,
|
||||
RingGeometry,
|
||||
SIGNED_R11_EAC_Format,
|
||||
SIGNED_RED_GREEN_RGTC2_Format,
|
||||
SIGNED_RED_RGTC1_Format,
|
||||
SIGNED_RG11_EAC_Format,
|
||||
SRGBColorSpace,
|
||||
SRGBTransfer,
|
||||
Scene,
|
||||
ShaderChunk,
|
||||
ShaderLib,
|
||||
ShaderMaterial,
|
||||
ShadowMaterial,
|
||||
Shape,
|
||||
ShapeGeometry,
|
||||
ShapePath,
|
||||
ShapeUtils,
|
||||
ShortType,
|
||||
Skeleton,
|
||||
SkeletonHelper,
|
||||
SkinnedMesh,
|
||||
Source,
|
||||
Sphere,
|
||||
SphereGeometry,
|
||||
Spherical,
|
||||
SphericalHarmonics3,
|
||||
SplineCurve,
|
||||
SpotLight,
|
||||
SpotLightHelper,
|
||||
Sprite,
|
||||
SpriteMaterial,
|
||||
SrcAlphaFactor,
|
||||
SrcAlphaSaturateFactor,
|
||||
SrcColorFactor,
|
||||
StaticCopyUsage,
|
||||
StaticDrawUsage,
|
||||
StaticReadUsage,
|
||||
StereoCamera,
|
||||
StreamCopyUsage,
|
||||
StreamDrawUsage,
|
||||
StreamReadUsage,
|
||||
StringKeyframeTrack,
|
||||
SubtractEquation,
|
||||
SubtractiveBlending,
|
||||
TOUCH,
|
||||
TangentSpaceNormalMap,
|
||||
TetrahedronGeometry,
|
||||
Texture,
|
||||
TextureLoader,
|
||||
TextureUtils,
|
||||
Timer,
|
||||
TimestampQuery,
|
||||
TorusGeometry,
|
||||
TorusKnotGeometry,
|
||||
Triangle,
|
||||
TriangleFanDrawMode,
|
||||
TriangleStripDrawMode,
|
||||
TrianglesDrawMode,
|
||||
TubeGeometry,
|
||||
UVMapping,
|
||||
Uint16BufferAttribute,
|
||||
Uint32BufferAttribute,
|
||||
Uint8BufferAttribute,
|
||||
Uint8ClampedBufferAttribute,
|
||||
Uniform,
|
||||
UniformsGroup,
|
||||
UniformsLib,
|
||||
UniformsUtils,
|
||||
UnsignedByteType,
|
||||
UnsignedInt101111Type,
|
||||
UnsignedInt248Type,
|
||||
UnsignedInt5999Type,
|
||||
UnsignedIntType,
|
||||
UnsignedShort4444Type,
|
||||
UnsignedShort5551Type,
|
||||
UnsignedShortType,
|
||||
VSMShadowMap,
|
||||
Vector2,
|
||||
Vector3,
|
||||
Vector4,
|
||||
VectorKeyframeTrack,
|
||||
VideoFrameTexture,
|
||||
VideoTexture,
|
||||
WebGL3DRenderTarget,
|
||||
WebGLArrayRenderTarget,
|
||||
WebGLCoordinateSystem,
|
||||
WebGLCubeRenderTarget,
|
||||
WebGLRenderTarget,
|
||||
WebGLRenderer,
|
||||
WebGLUtils,
|
||||
WebGPUCoordinateSystem,
|
||||
WebXRController,
|
||||
WireframeGeometry,
|
||||
WrapAroundEnding,
|
||||
ZeroCurvatureEnding,
|
||||
ZeroFactor,
|
||||
ZeroSlopeEnding,
|
||||
ZeroStencilOp,
|
||||
createCanvasElement,
|
||||
error,
|
||||
getConsoleFunction,
|
||||
log,
|
||||
setConsoleFunction,
|
||||
warn,
|
||||
warnOnce
|
||||
};
|
||||
7
app/node_modules/.vite/deps/three.js.map
generated
vendored
7
app/node_modules/.vite/deps/three.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
14
app/node_modules/.vite/deps/zustand.js
generated
vendored
14
app/node_modules/.vite/deps/zustand.js
generated
vendored
@@ -1,14 +0,0 @@
|
||||
import {
|
||||
create,
|
||||
useStore
|
||||
} from "./chunk-QJTQF54Q.js";
|
||||
import {
|
||||
createStore
|
||||
} from "./chunk-LTNRPUSL.js";
|
||||
import "./chunk-ZNKPWGXJ.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
create,
|
||||
createStore,
|
||||
useStore
|
||||
};
|
||||
7
app/node_modules/.vite/deps/zustand.js.map
generated
vendored
7
app/node_modules/.vite/deps/zustand.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
19
app/node_modules/.vite/deps/zustand_middleware.js
generated
vendored
19
app/node_modules/.vite/deps/zustand_middleware.js
generated
vendored
@@ -1,19 +0,0 @@
|
||||
import {
|
||||
combine,
|
||||
createJSONStorage,
|
||||
devtools,
|
||||
persist,
|
||||
redux,
|
||||
ssrSafe,
|
||||
subscribeWithSelector
|
||||
} from "./chunk-XGWIEMTH.js";
|
||||
import "./chunk-G3PMV62Z.js";
|
||||
export {
|
||||
combine,
|
||||
createJSONStorage,
|
||||
devtools,
|
||||
persist,
|
||||
redux,
|
||||
subscribeWithSelector,
|
||||
ssrSafe as unstable_ssrSafe
|
||||
};
|
||||
7
app/node_modules/.vite/deps/zustand_middleware.js.map
generated
vendored
7
app/node_modules/.vite/deps/zustand_middleware.js.map
generated
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
Zap, TrendingUp, Eye, MousePointerClick, DollarSign,
|
||||
Upload, Play, Image, Film, RefreshCw, ArrowRight, Plus, X,
|
||||
AlertTriangle, ArrowRightLeft, PlusCircle, SlidersHorizontal,
|
||||
Activity, Check, Link2,
|
||||
Activity, Check, Link2, WandSparkles,
|
||||
type LucideIcon,
|
||||
} from 'lucide-react';
|
||||
import {
|
||||
@@ -17,6 +17,7 @@ import { useCurrency } from '@/store/useCurrencyStore';
|
||||
import type { Campaign, MarketingAsset, LiveOptimizationEvent, LiveEventType } from '@/types';
|
||||
import { GroundTruthPicker } from './GroundTruthPicker';
|
||||
import { CatalystMarketingTab } from './CatalystMarketingTab';
|
||||
import { CatalystDreamWeaverTab } from './CatalystDreamWeaverTab';
|
||||
import type { GroundTruthSelection } from './GroundTruthPicker';
|
||||
|
||||
// ── Design tokens ─────────────────────────────────────────────────────────────
|
||||
@@ -917,7 +918,7 @@ function WarRoom() {
|
||||
// Tab Bar
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
type TabId = 'studio' | 'command' | 'intelligence' | 'war-room' | 'marketing';
|
||||
type TabId = 'studio' | 'command' | 'intelligence' | 'war-room' | 'marketing' | 'dream-weaver';
|
||||
|
||||
const TABS: Array<{ id: TabId; label: string; icon: LucideIcon }> = [
|
||||
{ id: 'studio', label: 'The Studio', icon: Clapperboard },
|
||||
@@ -925,6 +926,7 @@ const TABS: Array<{ id: TabId; label: string; icon: LucideIcon }> = [
|
||||
{ id: 'intelligence', label: 'Intelligence & ROI', icon: BarChart3 },
|
||||
{ id: 'war-room', label: 'War Room', icon: Globe },
|
||||
{ id: 'marketing', label: 'Marketing', icon: TrendingUp },
|
||||
{ id: 'dream-weaver', label: 'Dream Weaver', icon: WandSparkles },
|
||||
];
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
@@ -940,6 +942,7 @@ export function Catalyst() {
|
||||
'intelligence': <IntelligenceROI />,
|
||||
'war-room': <WarRoom />,
|
||||
'marketing': <CatalystMarketingTab />,
|
||||
'dream-weaver': <CatalystDreamWeaverTab />,
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -998,8 +1001,8 @@ export function Catalyst() {
|
||||
</motion.div>
|
||||
</AnimatePresence>
|
||||
|
||||
{/* Live Optimization Feed — always visible */}
|
||||
<LiveOptimizationFeed />
|
||||
{/* Live Optimization Feed — hidden on Dream Weaver because generation has its own status surface. */}
|
||||
{activeTab !== 'dream-weaver' && <LiveOptimizationFeed />}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
524
app/src/components/modules/CatalystDreamWeaverTab.tsx
Normal file
524
app/src/components/modules/CatalystDreamWeaverTab.tsx
Normal file
@@ -0,0 +1,524 @@
|
||||
import { useEffect, useRef, useState, type ChangeEvent, type CSSProperties } from 'react';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import {
|
||||
AlertTriangle,
|
||||
Check,
|
||||
Download,
|
||||
ExternalLink,
|
||||
Home,
|
||||
Image as ImageIcon,
|
||||
Loader2,
|
||||
RefreshCw,
|
||||
Server,
|
||||
Sparkles,
|
||||
Upload,
|
||||
WandSparkles,
|
||||
} from 'lucide-react';
|
||||
import { useMarketingStore } from '@/store/useMarketingStore';
|
||||
import {
|
||||
DREAM_WEAVER_URL,
|
||||
checkDreamWeaverHealth,
|
||||
fetchDreamWeaverResult,
|
||||
getDreamWeaverStatus,
|
||||
submitDreamWeaverJob,
|
||||
type DreamWeaverHealth,
|
||||
type DreamWeaverJobResponse,
|
||||
type DreamWeaverStatusResponse,
|
||||
} from '@/lib/dreamWeaverApi';
|
||||
|
||||
const GLASS: CSSProperties = {
|
||||
background: 'rgba(8, 10, 18, 0.82)',
|
||||
border: '1px solid rgba(59,130,246,0.14)',
|
||||
backdropFilter: 'blur(24px)',
|
||||
WebkitBackdropFilter: 'blur(24px)',
|
||||
boxShadow: '0 0 0 1px rgba(255,255,255,0.04), 0 4px 32px rgba(0,0,0,0.55)',
|
||||
};
|
||||
|
||||
const INNER: CSSProperties = {
|
||||
background: 'rgba(255,255,255,0.04)',
|
||||
border: '1px solid rgba(255,255,255,0.07)',
|
||||
};
|
||||
|
||||
const ROOM_TYPES = [
|
||||
{ id: 'bedroom', label: 'Bedroom' },
|
||||
{ id: 'living_room', label: 'Living Room' },
|
||||
{ id: 'bathroom', label: 'Bathroom' },
|
||||
{ id: 'kitchen', label: 'Kitchen' },
|
||||
{ id: 'dining_room', label: 'Dining Room' },
|
||||
{ id: 'home_office', label: 'Office' },
|
||||
{ id: 'hallway', label: 'Hallway' },
|
||||
{ id: 'balcony', label: 'Balcony' },
|
||||
] as const;
|
||||
|
||||
type ProcessingState = 'idle' | 'checking' | 'submitting' | 'rendering' | 'downloading';
|
||||
|
||||
interface DreamWeaverOutput {
|
||||
id: string;
|
||||
roomLabel: string;
|
||||
keywords: string;
|
||||
imageUrl: string;
|
||||
createdAt: Date;
|
||||
}
|
||||
|
||||
function sleep(ms: number) {
|
||||
return new Promise((resolve) => window.setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
function isReadyStatus(status: DreamWeaverStatusResponse) {
|
||||
const normalized = status.status?.toLowerCase() ?? '';
|
||||
return Boolean(status.ready) || ['ready', 'completed', 'complete', 'succeeded', 'success', 'finished'].includes(normalized);
|
||||
}
|
||||
|
||||
function isFailedStatus(status: DreamWeaverStatusResponse) {
|
||||
const normalized = status.status?.toLowerCase() ?? '';
|
||||
return ['failed', 'error', 'cancelled', 'canceled'].includes(normalized);
|
||||
}
|
||||
|
||||
function statusLabel(state: ProcessingState, health: DreamWeaverHealth | null) {
|
||||
if (state === 'checking') return 'Checking gateway';
|
||||
if (state === 'submitting') return 'Submitting render';
|
||||
if (state === 'rendering') return 'ComfyUI rendering';
|
||||
if (state === 'downloading') return 'Fetching result';
|
||||
if (!health) return 'Gateway unknown';
|
||||
if (health.online && health.routeMounted && health.comfyuiOnline === false) return 'Gateway online · ComfyUI offline';
|
||||
if (health.online && health.routeMounted && health.comfyuiOnline && health.checkpointReady === false) return 'Gateway online · Model missing';
|
||||
return health.online && health.routeMounted ? 'Gateway online' : 'Gateway offline';
|
||||
}
|
||||
|
||||
function ResultActions({ output }: { output: DreamWeaverOutput }) {
|
||||
function downloadResult() {
|
||||
const anchor = document.createElement('a');
|
||||
anchor.href = output.imageUrl;
|
||||
anchor.download = `dream-weaver-${output.id}.png`;
|
||||
anchor.click();
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-2">
|
||||
<button
|
||||
type="button"
|
||||
onClick={downloadResult}
|
||||
className="h-9 w-9 rounded-xl flex items-center justify-center transition-colors hover:bg-white/10"
|
||||
style={INNER}
|
||||
title="Download generated image"
|
||||
>
|
||||
<Download className="w-4 h-4 text-white/75" />
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => window.open(output.imageUrl, '_blank', 'noopener,noreferrer')}
|
||||
className="h-9 w-9 rounded-xl flex items-center justify-center transition-colors hover:bg-white/10"
|
||||
style={INNER}
|
||||
title="Open generated image"
|
||||
>
|
||||
<ExternalLink className="w-4 h-4 text-white/75" />
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function CatalystDreamWeaverTab() {
|
||||
const { pushLiveEvent } = useMarketingStore();
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
const objectUrlsRef = useRef<Set<string>>(new Set());
|
||||
|
||||
const [sourceFile, setSourceFile] = useState<File | null>(null);
|
||||
const [sourcePreview, setSourcePreview] = useState<string | null>(null);
|
||||
const [selectedRoomType, setSelectedRoomType] = useState<(typeof ROOM_TYPES)[number]['id']>('bedroom');
|
||||
const [keywords, setKeywords] = useState('');
|
||||
const [health, setHealth] = useState<DreamWeaverHealth | null>(null);
|
||||
const [processingState, setProcessingState] = useState<ProcessingState>('checking');
|
||||
const [progress, setProgress] = useState('Checking Dream Weaver gateway...');
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [currentOutput, setCurrentOutput] = useState<DreamWeaverOutput | null>(null);
|
||||
const [history, setHistory] = useState<DreamWeaverOutput[]>([]);
|
||||
|
||||
const isProcessing = processingState !== 'idle' && processingState !== 'checking';
|
||||
const roomLabel = ROOM_TYPES.find((room) => room.id === selectedRoomType)?.label ?? 'Bedroom';
|
||||
|
||||
useEffect(() => {
|
||||
void refreshHealth();
|
||||
return () => {
|
||||
objectUrlsRef.current.forEach((url) => URL.revokeObjectURL(url));
|
||||
objectUrlsRef.current.clear();
|
||||
};
|
||||
}, []);
|
||||
|
||||
function rememberObjectUrl(blobOrFile: Blob) {
|
||||
const url = URL.createObjectURL(blobOrFile);
|
||||
objectUrlsRef.current.add(url);
|
||||
return url;
|
||||
}
|
||||
|
||||
function setSourceFromFile(file: File) {
|
||||
if (!file.type.startsWith('image/')) {
|
||||
setError('Dream Weaver needs a source room image.');
|
||||
return;
|
||||
}
|
||||
const previewUrl = rememberObjectUrl(file);
|
||||
setSourceFile(file);
|
||||
setSourcePreview(previewUrl);
|
||||
setCurrentOutput(null);
|
||||
setError(null);
|
||||
}
|
||||
|
||||
function handleFileChange(event: ChangeEvent<HTMLInputElement>) {
|
||||
const file = event.target.files?.[0];
|
||||
if (file) {
|
||||
setSourceFromFile(file);
|
||||
}
|
||||
event.target.value = '';
|
||||
}
|
||||
|
||||
async function refreshHealth() {
|
||||
setProcessingState('checking');
|
||||
setProgress('Checking Dream Weaver gateway...');
|
||||
const nextHealth = await checkDreamWeaverHealth();
|
||||
setHealth(nextHealth);
|
||||
setProcessingState('idle');
|
||||
setProgress(nextHealth.online && nextHealth.routeMounted
|
||||
? nextHealth.comfyuiOnline === false
|
||||
? `Gateway is online and the Dream Weaver route is mounted. ComfyUI is offline${nextHealth.comfyuiUrl ? ` at ${nextHealth.comfyuiUrl}` : ''}.`
|
||||
: nextHealth.checkpointReady === false
|
||||
? `ComfyUI is online${nextHealth.comfyuiUrl ? ` at ${nextHealth.comfyuiUrl}` : ''}, but no checkpoint model is installed. Hydrate RealVisXL into ComfyUI/models/checkpoints.`
|
||||
: 'Gateway is online and the Dream Weaver route is mounted.'
|
||||
: nextHealth.detail ?? 'Dream Weaver gateway is not reachable.');
|
||||
}
|
||||
|
||||
async function pollUntilReady(job: DreamWeaverJobResponse) {
|
||||
let latestResultUrl = job.result_url;
|
||||
for (let attempt = 1; attempt <= 150; attempt += 1) {
|
||||
const status = await getDreamWeaverStatus(job);
|
||||
latestResultUrl = status.result_url ?? latestResultUrl;
|
||||
setProgress(status.status ? `Render ${status.status} · poll ${attempt}/150` : `Render queued · poll ${attempt}/150`);
|
||||
|
||||
if (isReadyStatus(status)) {
|
||||
return latestResultUrl;
|
||||
}
|
||||
if (isFailedStatus(status) || status.error) {
|
||||
throw new Error(status.error ?? `Dream Weaver render ${status.status ?? 'failed'}.`);
|
||||
}
|
||||
await sleep(2000);
|
||||
}
|
||||
throw new Error('Dream Weaver timed out after 5 minutes.');
|
||||
}
|
||||
|
||||
async function generate() {
|
||||
if (!sourceFile || isProcessing) return;
|
||||
setError(null);
|
||||
setCurrentOutput(null);
|
||||
|
||||
try {
|
||||
setProcessingState('submitting');
|
||||
setProgress(`Submitting ${roomLabel.toLowerCase()} staging request...`);
|
||||
const job = await submitDreamWeaverJob({
|
||||
image: sourceFile,
|
||||
roomType: selectedRoomType,
|
||||
keywords,
|
||||
});
|
||||
|
||||
setProcessingState('rendering');
|
||||
setProgress(`Job ${job.job_id} accepted. Waiting for ComfyUI output...`);
|
||||
const resultUrl = await pollUntilReady(job);
|
||||
|
||||
setProcessingState('downloading');
|
||||
setProgress('Fetching generated image...');
|
||||
const resultBlob = await fetchDreamWeaverResult(job.job_id, resultUrl);
|
||||
const imageUrl = rememberObjectUrl(resultBlob);
|
||||
const output: DreamWeaverOutput = {
|
||||
id: job.job_id,
|
||||
roomLabel,
|
||||
keywords: keywords.trim(),
|
||||
imageUrl,
|
||||
createdAt: new Date(),
|
||||
};
|
||||
|
||||
setCurrentOutput(output);
|
||||
setHistory((items) => [output, ...items].slice(0, 6));
|
||||
setProgress('Dream Weaver render complete.');
|
||||
pushLiveEvent({
|
||||
id: `dw-${job.job_id}-${Date.now()}`,
|
||||
type: 'create',
|
||||
campaignName: 'Dream Weaver',
|
||||
message: `${roomLabel} staging render completed.`,
|
||||
timestamp: new Date(),
|
||||
});
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : 'Dream Weaver render failed.';
|
||||
setError(message);
|
||||
setProgress(message);
|
||||
pushLiveEvent({
|
||||
id: `dw-error-${Date.now()}`,
|
||||
type: 'alert',
|
||||
campaignName: 'Dream Weaver',
|
||||
message,
|
||||
timestamp: new Date(),
|
||||
});
|
||||
} finally {
|
||||
setProcessingState('idle');
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="space-y-5">
|
||||
<motion.div
|
||||
className="relative rounded-2xl p-5 overflow-hidden"
|
||||
style={GLASS}
|
||||
initial={{ opacity: 0, y: 16, scale: 0.97 }}
|
||||
animate={{ opacity: 1, y: 0, scale: 1 }}
|
||||
transition={{ duration: 0.35, ease: [0.4, 0, 0.2, 1] }}
|
||||
>
|
||||
<div className="absolute inset-x-0 top-0 h-px pointer-events-none"
|
||||
style={{ background: 'linear-gradient(90deg, transparent, rgba(255,255,255,0.10), transparent)' }} />
|
||||
<div className="flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between">
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-white mb-0.5 flex items-center gap-2">
|
||||
<WandSparkles className="w-4 h-4 text-blue-400" /> Dream Weaver
|
||||
</h3>
|
||||
<p className="text-xs" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
Room image transformation pipeline using the same Dream Weaver gateway as the iPad app.
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="flex items-center gap-2 rounded-xl px-3 py-2 text-xs" style={INNER}>
|
||||
<span className={`h-2 w-2 rounded-full ${health?.online && health.routeMounted ? 'bg-green-400' : 'bg-red-400'}`} />
|
||||
<span className="text-white/75">{statusLabel(processingState, health)}</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => void refreshHealth()}
|
||||
className="h-9 w-9 rounded-xl flex items-center justify-center transition-colors hover:bg-white/10"
|
||||
style={INNER}
|
||||
title="Check Dream Weaver gateway"
|
||||
>
|
||||
<RefreshCw className={`w-4 h-4 text-white/75 ${processingState === 'checking' ? 'animate-spin' : ''}`} />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
<div className="grid grid-cols-1 xl:grid-cols-[0.95fr_1.05fr] gap-5">
|
||||
<motion.div
|
||||
className="relative rounded-2xl p-5 overflow-hidden"
|
||||
style={GLASS}
|
||||
initial={{ opacity: 0, y: 16, scale: 0.97 }}
|
||||
animate={{ opacity: 1, y: 0, scale: 1 }}
|
||||
transition={{ duration: 0.35, delay: 0.05, ease: [0.4, 0, 0.2, 1] }}
|
||||
>
|
||||
<div className="space-y-5">
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-white flex items-center gap-2">
|
||||
<ImageIcon className="w-4 h-4 text-blue-400" /> Source Room
|
||||
</h3>
|
||||
<p className="text-xs mt-1" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
Upload a ground-truth room photograph, choose the target room type, then add optional styling keywords.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => fileInputRef.current?.click()}
|
||||
onDragOver={(event) => event.preventDefault()}
|
||||
onDrop={(event) => {
|
||||
event.preventDefault();
|
||||
const file = event.dataTransfer.files?.[0];
|
||||
if (file) setSourceFromFile(file);
|
||||
}}
|
||||
className="relative w-full min-h-[300px] rounded-2xl overflow-hidden flex items-center justify-center text-left transition-colors hover:border-blue-400/40"
|
||||
style={{ ...INNER, background: sourcePreview ? 'rgba(255,255,255,0.02)' : 'rgba(255,255,255,0.025)' }}
|
||||
>
|
||||
{sourcePreview ? (
|
||||
<img src={sourcePreview} alt="Selected source room" className="absolute inset-0 h-full w-full object-cover" />
|
||||
) : (
|
||||
<div className="flex flex-col items-center gap-3 text-center px-6">
|
||||
<div className="h-12 w-12 rounded-2xl flex items-center justify-center" style={INNER}>
|
||||
<Upload className="h-5 w-5 text-blue-400" />
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-sm font-semibold text-white">Upload room image</p>
|
||||
<p className="text-xs mt-1" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
Click to browse or drop a photo here.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<input ref={fileInputRef} type="file" accept="image/*" className="hidden" onChange={handleFileChange} />
|
||||
</button>
|
||||
|
||||
<div>
|
||||
<p className="text-xs font-medium uppercase tracking-widest mb-2" style={{ color: 'rgba(148,163,184,0.65)' }}>
|
||||
Room type
|
||||
</p>
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-2">
|
||||
{ROOM_TYPES.map((room) => {
|
||||
const selected = selectedRoomType === room.id;
|
||||
return (
|
||||
<button
|
||||
key={room.id}
|
||||
type="button"
|
||||
onClick={() => setSelectedRoomType(room.id)}
|
||||
className="rounded-xl px-3 py-2 text-sm font-medium flex items-center gap-2 transition-colors"
|
||||
style={{
|
||||
background: selected ? 'rgba(59,130,246,0.18)' : 'rgba(255,255,255,0.04)',
|
||||
border: selected ? '1px solid rgba(59,130,246,0.38)' : '1px solid rgba(255,255,255,0.07)',
|
||||
color: selected ? '#fff' : 'rgba(226,232,240,0.72)',
|
||||
}}
|
||||
>
|
||||
<Home className="w-3.5 h-3.5 text-blue-400" />
|
||||
<span>{room.label}</span>
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="text-xs font-medium uppercase tracking-widest mb-2 block" style={{ color: 'rgba(148,163,184,0.65)' }}>
|
||||
Keywords
|
||||
</label>
|
||||
<textarea
|
||||
value={keywords}
|
||||
onChange={(event) => setKeywords(event.target.value)}
|
||||
placeholder="gold, marble, luxury, soft daylight"
|
||||
rows={3}
|
||||
className="w-full resize-none rounded-xl px-3 py-2 text-sm text-white placeholder-white/20 outline-none focus:border-blue-400/50"
|
||||
style={INNER}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<AnimatePresence>
|
||||
{error && (
|
||||
<motion.div
|
||||
className="rounded-xl p-3 flex items-start gap-2"
|
||||
style={{ background: 'rgba(239,68,68,0.12)', border: '1px solid rgba(239,68,68,0.25)' }}
|
||||
initial={{ opacity: 0, y: -6 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
exit={{ opacity: 0, y: -6 }}
|
||||
>
|
||||
<AlertTriangle className="w-4 h-4 text-red-400 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-sm text-red-200 leading-relaxed">{error}</p>
|
||||
</motion.div>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
|
||||
<div className="flex items-center justify-between gap-3 rounded-2xl p-3" style={INNER}>
|
||||
<div className="min-w-0">
|
||||
<p className="text-xs font-medium text-white truncate">{progress}</p>
|
||||
<p className="text-[11px] mt-1 truncate" style={{ color: 'rgba(148,163,184,0.5)' }}>
|
||||
Gateway: {DREAM_WEAVER_URL}
|
||||
</p>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => void generate()}
|
||||
disabled={!sourceFile || isProcessing || health?.routeMounted === false || health?.comfyuiOnline === false || health?.checkpointReady === false}
|
||||
className="h-11 px-5 rounded-xl text-sm font-semibold flex items-center justify-center gap-2 disabled:opacity-45 disabled:cursor-not-allowed transition-colors"
|
||||
style={{ background: 'hsl(var(--accent))', color: 'hsl(var(--accent-fg))' }}
|
||||
>
|
||||
{isProcessing ? <Loader2 className="w-4 h-4 animate-spin" /> : <Sparkles className="w-4 h-4" />}
|
||||
Generate
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
<motion.div
|
||||
className="relative rounded-2xl p-5 overflow-hidden"
|
||||
style={GLASS}
|
||||
initial={{ opacity: 0, y: 16, scale: 0.97 }}
|
||||
animate={{ opacity: 1, y: 0, scale: 1 }}
|
||||
transition={{ duration: 0.35, delay: 0.1, ease: [0.4, 0, 0.2, 1] }}
|
||||
>
|
||||
<div className="flex items-center justify-between gap-3 mb-4">
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-white flex items-center gap-2">
|
||||
<WandSparkles className="w-4 h-4 text-blue-400" /> Generated Staging
|
||||
</h3>
|
||||
<p className="text-xs mt-1" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
The result appears here as soon as the gateway marks the job ready.
|
||||
</p>
|
||||
</div>
|
||||
{currentOutput && <ResultActions output={currentOutput} />}
|
||||
</div>
|
||||
|
||||
<div className="relative min-h-[460px] rounded-2xl overflow-hidden flex items-center justify-center" style={INNER}>
|
||||
{currentOutput ? (
|
||||
<img src={currentOutput.imageUrl} alt={`${currentOutput.roomLabel} Dream Weaver result`} className="absolute inset-0 h-full w-full object-contain bg-black" />
|
||||
) : (
|
||||
<div className="flex flex-col items-center gap-3 text-center px-8">
|
||||
<div className="h-14 w-14 rounded-2xl flex items-center justify-center" style={INNER}>
|
||||
{isProcessing ? <Loader2 className="h-6 w-6 text-blue-400 animate-spin" /> : <WandSparkles className="h-6 w-6 text-blue-400" />}
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-sm font-semibold text-white">{isProcessing ? 'Dream Weaver is rendering' : 'No generated image yet'}</p>
|
||||
<p className="text-xs mt-1 max-w-md" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
Upload a source image and generate a staging render to populate this canvas.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{history.length > 0 && (
|
||||
<div className="mt-5">
|
||||
<div className="flex items-center justify-between mb-3">
|
||||
<p className="text-xs font-medium uppercase tracking-widest" style={{ color: 'rgba(148,163,184,0.65)' }}>
|
||||
Recent renders
|
||||
</p>
|
||||
<span className="text-[11px]" style={{ color: 'rgba(148,163,184,0.45)' }}>{history.length}/6</span>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 md:grid-cols-3 gap-3">
|
||||
{history.map((item) => (
|
||||
<button
|
||||
key={item.id}
|
||||
type="button"
|
||||
onClick={() => setCurrentOutput(item)}
|
||||
className="group rounded-xl overflow-hidden text-left transition-colors hover:border-blue-400/40"
|
||||
style={INNER}
|
||||
>
|
||||
<div className="aspect-[4/3] bg-black overflow-hidden">
|
||||
<img src={item.imageUrl} alt={item.roomLabel} className="h-full w-full object-cover group-hover:scale-105 transition-transform duration-300" />
|
||||
</div>
|
||||
<div className="p-3">
|
||||
<div className="flex items-center gap-1.5 text-xs font-semibold text-white">
|
||||
<Check className="w-3.5 h-3.5 text-green-400" />
|
||||
{item.roomLabel}
|
||||
</div>
|
||||
<p className="text-[11px] mt-1 truncate" style={{ color: 'rgba(148,163,184,0.55)' }}>
|
||||
{item.keywords || item.createdAt.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
|
||||
</p>
|
||||
</div>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</motion.div>
|
||||
</div>
|
||||
|
||||
<motion.div
|
||||
className="relative rounded-2xl p-5 overflow-hidden"
|
||||
style={GLASS}
|
||||
initial={{ opacity: 0, y: 16, scale: 0.97 }}
|
||||
animate={{ opacity: 1, y: 0, scale: 1 }}
|
||||
transition={{ duration: 0.35, delay: 0.15, ease: [0.4, 0, 0.2, 1] }}
|
||||
>
|
||||
<div className="flex items-center justify-between gap-3">
|
||||
<h3 className="text-sm font-semibold text-white flex items-center gap-2">
|
||||
<Server className="w-4 h-4 text-blue-400" /> Gateway Contract
|
||||
</h3>
|
||||
<span className="text-xs font-medium" style={{ color: health?.routeMounted ? '#4ade80' : '#f87171' }}>
|
||||
{health?.routeMounted ? 'Route mounted' : 'Route not verified'}
|
||||
</span>
|
||||
</div>
|
||||
<div className="mt-4 grid grid-cols-1 md:grid-cols-3 gap-3">
|
||||
{['POST /dream-weaver', 'GET /dream-weaver/status/{job_id}', 'GET /dream-weaver/result/{job_id}'].map((endpoint) => (
|
||||
<div key={endpoint} className="rounded-xl p-3" style={INNER}>
|
||||
<p className="text-xs font-mono text-blue-200">{endpoint}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</motion.div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
import { buildVelocityHeaders } from '@/lib/velocitySession';
|
||||
|
||||
const rawApiBase = import.meta.env.VITE_API_URL?.trim();
|
||||
const DEPLOYED_BACKEND_ORIGIN = 'https://velocity.desineuron.in';
|
||||
|
||||
@@ -75,10 +77,17 @@ export interface MarketingCampaignSummary {
|
||||
|
||||
async function requestJson<T>(path: string): Promise<T> {
|
||||
const response = await fetch(`${API_URL}${path}`, {
|
||||
headers: { Accept: 'application/json' },
|
||||
headers: buildVelocityHeaders(undefined, false),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(`Request failed: ${response.status}`);
|
||||
const body = await response.json().catch(() => ({}));
|
||||
throw new Error(
|
||||
typeof body?.detail === 'string'
|
||||
? body.detail
|
||||
: typeof body?.message === 'string'
|
||||
? body.message
|
||||
: `Request failed: ${response.status}`,
|
||||
);
|
||||
}
|
||||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import type {
|
||||
Client360Snapshot,
|
||||
CrmOpportunityCard,
|
||||
CrmTask,
|
||||
CrmLeadStageUpdate,
|
||||
KanbanColumn,
|
||||
ImportBatchSummary,
|
||||
ImportProposal,
|
||||
@@ -17,13 +18,12 @@ import type {
|
||||
OracleClientDataDetail,
|
||||
OracleClientTimelineItem,
|
||||
} from '@/types/crmTypes';
|
||||
import { VELOCITY_TOKEN_KEY } from '@/lib/velocityPlatformClient';
|
||||
import { buildVelocityHeaders } from '@/lib/velocitySession';
|
||||
|
||||
const API_BASE = import.meta.env.VITE_API_BASE_URL ?? '';
|
||||
|
||||
function getAuthHeaders(): Record<string, string> {
|
||||
const token = localStorage.getItem(VELOCITY_TOKEN_KEY);
|
||||
return token ? { Authorization: `Bearer ${token}` } : {};
|
||||
return Object.fromEntries(buildVelocityHeaders(undefined, false).entries());
|
||||
}
|
||||
|
||||
async function apiFetch<T>(path: string, options?: RequestInit): Promise<T> {
|
||||
@@ -90,6 +90,23 @@ export async function fetchOpportunities(params?: {
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function updateOpportunity(body: {
|
||||
opportunity_id: string;
|
||||
stage?: string;
|
||||
value?: number | null;
|
||||
probability?: number | null;
|
||||
expected_close_date?: string | null;
|
||||
next_action?: string | null;
|
||||
notes?: string | null;
|
||||
}): Promise<CrmOpportunityCard> {
|
||||
const { opportunity_id, ...payload } = body;
|
||||
const res = await apiFetch<{ status: string; data: CrmOpportunityCard }>(`/api/crm/opportunities/${opportunity_id}`, {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(payload),
|
||||
});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
// ── Tasks ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
export async function fetchTasks(params?: {
|
||||
@@ -121,6 +138,23 @@ export async function createTask(body: {
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function updateTask(body: {
|
||||
reminder_id: string;
|
||||
status: 'pending' | 'done' | 'snoozed' | 'cancelled';
|
||||
due_at?: string;
|
||||
notes?: string;
|
||||
}): Promise<CrmTask> {
|
||||
const res = await apiFetch<{ status: string; data: CrmTask }>(`/api/crm/tasks/${body.reminder_id}`, {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify({
|
||||
status: body.status,
|
||||
due_at: body.due_at,
|
||||
notes: body.notes,
|
||||
}),
|
||||
});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
// ── Kanban ────────────────────────────────────────────────────────────────────
|
||||
|
||||
export async function fetchKanbanBoard(): Promise<KanbanColumn[]> {
|
||||
@@ -128,6 +162,21 @@ export async function fetchKanbanBoard(): Promise<KanbanColumn[]> {
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function updateLeadStage(body: {
|
||||
lead_id: string;
|
||||
status: string;
|
||||
notes?: string;
|
||||
}): Promise<CrmLeadStageUpdate> {
|
||||
const res = await apiFetch<{ status: string; data: CrmLeadStageUpdate }>(`/api/crm/leads/${body.lead_id}/stage`, {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify({
|
||||
status: body.status,
|
||||
notes: body.notes,
|
||||
}),
|
||||
});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
// ── QD Scores ─────────────────────────────────────────────────────────────────
|
||||
|
||||
export async function fetchQdScore(personId: string): Promise<{
|
||||
|
||||
197
app/src/lib/dreamWeaverApi.ts
Normal file
197
app/src/lib/dreamWeaverApi.ts
Normal file
@@ -0,0 +1,197 @@
|
||||
import { API_URL } from '@/lib/api';
|
||||
import { buildVelocityHeaders } from '@/lib/velocitySession';
|
||||
|
||||
const rawDreamWeaverBase = import.meta.env.VITE_DREAM_WEAVER_URL?.trim();
|
||||
const rawDreamWeaverApiKey = import.meta.env.VITE_DREAM_WEAVER_API_KEY?.trim();
|
||||
const LOCAL_DREAM_WEAVER_GATEWAY = 'http://127.0.0.1:8082';
|
||||
|
||||
export const DREAM_WEAVER_URL = (rawDreamWeaverBase && rawDreamWeaverBase.length > 0
|
||||
? rawDreamWeaverBase
|
||||
: import.meta.env.DEV
|
||||
? LOCAL_DREAM_WEAVER_GATEWAY
|
||||
: API_URL
|
||||
).replace(/\/$/, '');
|
||||
|
||||
export interface DreamWeaverHealth {
|
||||
online: boolean;
|
||||
routeMounted: boolean;
|
||||
status: string;
|
||||
comfyuiOnline?: boolean;
|
||||
comfyuiUrl?: string;
|
||||
checkpointReady?: boolean;
|
||||
checkpointCount?: number;
|
||||
availableCheckpoints?: string[];
|
||||
preferredCheckpoints?: string[];
|
||||
detail?: string;
|
||||
}
|
||||
|
||||
export interface DreamWeaverJobResponse {
|
||||
job_id: string;
|
||||
status?: string;
|
||||
poll_url?: string;
|
||||
result_url?: string;
|
||||
}
|
||||
|
||||
export interface DreamWeaverStatusResponse {
|
||||
status?: string;
|
||||
ready?: boolean;
|
||||
result_url?: string;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
export interface SubmitDreamWeaverJobInput {
|
||||
image: File;
|
||||
roomType: string;
|
||||
keywords: string;
|
||||
}
|
||||
|
||||
function buildDreamWeaverHeaders(init?: HeadersInit): Headers {
|
||||
const headers = buildVelocityHeaders(init, false);
|
||||
if (rawDreamWeaverApiKey && !headers.has('X-Dream-Weaver-API-Key')) {
|
||||
headers.set('X-Dream-Weaver-API-Key', rawDreamWeaverApiKey);
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
|
||||
function resolveDreamWeaverUrl(candidate: string | undefined, fallbackPath: string): string {
|
||||
const path = candidate && candidate.trim().length > 0 ? candidate.trim() : fallbackPath;
|
||||
if (/^https?:\/\//i.test(path)) {
|
||||
return path;
|
||||
}
|
||||
return `${DREAM_WEAVER_URL}${path.startsWith('/') ? path : `/${path}`}`;
|
||||
}
|
||||
|
||||
async function readErrorMessage(response: Response, fallback: string): Promise<string> {
|
||||
const body = await response.json().catch(() => null) as { detail?: unknown; message?: unknown; error?: unknown } | null;
|
||||
if (typeof body?.detail === 'string') return body.detail;
|
||||
if (typeof body?.message === 'string') return body.message;
|
||||
if (typeof body?.error === 'string') return body.error;
|
||||
const text = await response.text().catch(() => '');
|
||||
return text.trim() || fallback;
|
||||
}
|
||||
|
||||
async function requestDreamWeaverJson<T>(url: string, init?: RequestInit): Promise<T> {
|
||||
const response = await fetch(url, {
|
||||
...init,
|
||||
headers: buildDreamWeaverHeaders(init?.headers),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(await readErrorMessage(response, `Dream Weaver request failed: ${response.status}`));
|
||||
}
|
||||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
export async function checkDreamWeaverHealth(): Promise<DreamWeaverHealth> {
|
||||
let status = 'offline';
|
||||
let detail: string | undefined;
|
||||
let comfyuiOnline: boolean | undefined;
|
||||
let comfyuiUrl: string | undefined;
|
||||
let checkpointReady: boolean | undefined;
|
||||
let checkpointCount: number | undefined;
|
||||
let availableCheckpoints: string[] | undefined;
|
||||
let preferredCheckpoints: string[] | undefined;
|
||||
let healthOk = false;
|
||||
|
||||
try {
|
||||
const response = await fetch(resolveDreamWeaverUrl(undefined, '/health'), {
|
||||
headers: buildDreamWeaverHeaders(),
|
||||
});
|
||||
const body = await response.json().catch(() => null) as {
|
||||
status?: unknown;
|
||||
detail?: unknown;
|
||||
comfyui?: unknown;
|
||||
comfyui_url?: unknown;
|
||||
comfyuiUrl?: unknown;
|
||||
checkpoint_ready?: unknown;
|
||||
checkpoint_count?: unknown;
|
||||
available_checkpoints?: unknown;
|
||||
preferred_checkpoints?: unknown;
|
||||
} | null;
|
||||
status = typeof body?.status === 'string' ? body.status : response.ok ? 'ok' : `HTTP ${response.status}`;
|
||||
detail = typeof body?.detail === 'string' ? body.detail : undefined;
|
||||
comfyuiOnline = typeof body?.comfyui === 'boolean' ? body.comfyui : undefined;
|
||||
comfyuiUrl = typeof body?.comfyui_url === 'string'
|
||||
? body.comfyui_url
|
||||
: typeof body?.comfyuiUrl === 'string'
|
||||
? body.comfyuiUrl
|
||||
: undefined;
|
||||
checkpointReady = typeof body?.checkpoint_ready === 'boolean' ? body.checkpoint_ready : undefined;
|
||||
checkpointCount = typeof body?.checkpoint_count === 'number' ? body.checkpoint_count : undefined;
|
||||
availableCheckpoints = Array.isArray(body?.available_checkpoints)
|
||||
? body.available_checkpoints.filter((item): item is string => typeof item === 'string')
|
||||
: undefined;
|
||||
preferredCheckpoints = Array.isArray(body?.preferred_checkpoints)
|
||||
? body.preferred_checkpoints.filter((item): item is string => typeof item === 'string')
|
||||
: undefined;
|
||||
healthOk = response.ok && ['ok', 'healthy', 'online'].includes(status.toLowerCase());
|
||||
} catch (error) {
|
||||
detail = error instanceof Error ? error.message : 'Unable to reach Dream Weaver gateway.';
|
||||
}
|
||||
|
||||
try {
|
||||
const probe = await fetch(resolveDreamWeaverUrl(undefined, '/dream-weaver/status/velocity-route-probe'), {
|
||||
headers: buildDreamWeaverHeaders(),
|
||||
});
|
||||
if (probe.ok) {
|
||||
return { online: healthOk, routeMounted: true, status, comfyuiOnline, comfyuiUrl, checkpointReady, checkpointCount, availableCheckpoints, preferredCheckpoints, detail };
|
||||
}
|
||||
const probeMessage = await readErrorMessage(probe, '');
|
||||
const expectedMissingJob = probe.status === 404 && /job|not found|missing/i.test(probeMessage);
|
||||
return {
|
||||
online: healthOk && expectedMissingJob,
|
||||
routeMounted: expectedMissingJob,
|
||||
status,
|
||||
comfyuiOnline,
|
||||
comfyuiUrl,
|
||||
checkpointReady,
|
||||
checkpointCount,
|
||||
availableCheckpoints,
|
||||
preferredCheckpoints,
|
||||
detail: detail ?? probeMessage,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
online: false,
|
||||
routeMounted: false,
|
||||
status,
|
||||
comfyuiOnline,
|
||||
comfyuiUrl,
|
||||
checkpointReady,
|
||||
checkpointCount,
|
||||
availableCheckpoints,
|
||||
preferredCheckpoints,
|
||||
detail: error instanceof Error ? error.message : detail,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export async function submitDreamWeaverJob(input: SubmitDreamWeaverJobInput): Promise<DreamWeaverJobResponse> {
|
||||
const formData = new FormData();
|
||||
formData.append('image', input.image, input.image.name || 'room-source.jpg');
|
||||
formData.append('room_type', input.roomType);
|
||||
const trimmedKeywords = input.keywords.trim();
|
||||
if (trimmedKeywords.length > 0) {
|
||||
formData.append('keywords', trimmedKeywords);
|
||||
}
|
||||
|
||||
return requestDreamWeaverJson<DreamWeaverJobResponse>(resolveDreamWeaverUrl(undefined, '/dream-weaver'), {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
});
|
||||
}
|
||||
|
||||
export async function getDreamWeaverStatus(job: Pick<DreamWeaverJobResponse, 'job_id' | 'poll_url'>): Promise<DreamWeaverStatusResponse> {
|
||||
return requestDreamWeaverJson<DreamWeaverStatusResponse>(
|
||||
resolveDreamWeaverUrl(job.poll_url, `/dream-weaver/status/${encodeURIComponent(job.job_id)}`),
|
||||
);
|
||||
}
|
||||
|
||||
export async function fetchDreamWeaverResult(jobId: string, resultUrl?: string): Promise<Blob> {
|
||||
const response = await fetch(resolveDreamWeaverUrl(resultUrl, `/dream-weaver/result/${encodeURIComponent(jobId)}`), {
|
||||
headers: buildDreamWeaverHeaders({ Accept: 'image/png,image/*,*/*' }),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(await readErrorMessage(response, `Dream Weaver result failed: ${response.status}`));
|
||||
}
|
||||
return response.blob();
|
||||
}
|
||||
@@ -1,10 +1,19 @@
|
||||
import { API_URL } from '@/lib/api';
|
||||
|
||||
export const VELOCITY_TOKEN_KEY = 'velocity-api-token';
|
||||
import {
|
||||
buildVelocityHeaders,
|
||||
setVelocityToken,
|
||||
} from '@/lib/velocitySession';
|
||||
export {
|
||||
VELOCITY_TOKEN_KEY,
|
||||
clearVelocityToken,
|
||||
getVelocityToken,
|
||||
setVelocityToken,
|
||||
} from '@/lib/velocitySession';
|
||||
|
||||
export interface VelocityUserProfile {
|
||||
user_id: string;
|
||||
role: string;
|
||||
tenant_id?: string;
|
||||
full_name?: string | null;
|
||||
email?: string | null;
|
||||
avatar_url?: string | null;
|
||||
@@ -13,6 +22,7 @@ export interface VelocityUserProfile {
|
||||
export interface VelocityActiveUser {
|
||||
user_id: string;
|
||||
role: string;
|
||||
tenant_id?: string;
|
||||
full_name?: string | null;
|
||||
email?: string | null;
|
||||
avatar_url?: string | null;
|
||||
@@ -148,18 +158,7 @@ export interface InventoryPropertySummary {
|
||||
}
|
||||
|
||||
function buildHeaders(init?: HeadersInit, includeJson = true): Headers {
|
||||
const headers = new Headers(init);
|
||||
if (includeJson && !headers.has('Content-Type')) {
|
||||
headers.set('Content-Type', 'application/json');
|
||||
}
|
||||
if (!headers.has('Accept')) {
|
||||
headers.set('Accept', 'application/json');
|
||||
}
|
||||
const token = getVelocityToken();
|
||||
if (token && !headers.has('Authorization')) {
|
||||
headers.set('Authorization', `Bearer ${token}`);
|
||||
}
|
||||
return headers;
|
||||
return buildVelocityHeaders(init, includeJson);
|
||||
}
|
||||
|
||||
async function platformFetch<T>(path: string, init?: RequestInit): Promise<T> {
|
||||
@@ -182,18 +181,6 @@ async function platformFetch<T>(path: string, init?: RequestInit): Promise<T> {
|
||||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
export function setVelocityToken(token: string) {
|
||||
localStorage.setItem(VELOCITY_TOKEN_KEY, token);
|
||||
}
|
||||
|
||||
export function getVelocityToken(): string | null {
|
||||
return localStorage.getItem(VELOCITY_TOKEN_KEY);
|
||||
}
|
||||
|
||||
export function clearVelocityToken() {
|
||||
localStorage.removeItem(VELOCITY_TOKEN_KEY);
|
||||
}
|
||||
|
||||
export function normalizeVelocityRole(role: string | null | undefined): string {
|
||||
return (role ?? '').trim().toUpperCase();
|
||||
}
|
||||
|
||||
37
app/src/lib/velocitySession.ts
Normal file
37
app/src/lib/velocitySession.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
export const VELOCITY_TOKEN_KEY = 'velocity-api-token';
|
||||
|
||||
export function getVelocityToken(): string | null {
|
||||
if (typeof window === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
return window.localStorage.getItem(VELOCITY_TOKEN_KEY);
|
||||
}
|
||||
|
||||
export function setVelocityToken(token: string) {
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
window.localStorage.setItem(VELOCITY_TOKEN_KEY, token);
|
||||
}
|
||||
|
||||
export function clearVelocityToken() {
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
window.localStorage.removeItem(VELOCITY_TOKEN_KEY);
|
||||
}
|
||||
|
||||
export function buildVelocityHeaders(init?: HeadersInit, includeJson = true): Headers {
|
||||
const headers = new Headers(init);
|
||||
if (includeJson && !headers.has('Content-Type')) {
|
||||
headers.set('Content-Type', 'application/json');
|
||||
}
|
||||
if (!headers.has('Accept')) {
|
||||
headers.set('Accept', 'application/json');
|
||||
}
|
||||
const token = getVelocityToken();
|
||||
if (token && !headers.has('Authorization')) {
|
||||
headers.set('Authorization', `Bearer ${token}`);
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import type {
|
||||
OracleEnvelope,
|
||||
CanvasPageRevision,
|
||||
} from '../types/canvas';
|
||||
import { VELOCITY_TOKEN_KEY } from '@/lib/velocityPlatformClient';
|
||||
import { VELOCITY_TOKEN_KEY } from '@/lib/velocitySession';
|
||||
|
||||
function getBrowserOrigin(): string {
|
||||
return typeof window !== 'undefined' ? window.location.origin : '';
|
||||
|
||||
@@ -15,7 +15,7 @@ interface MarketingState {
|
||||
adInsights: AdInsight[];
|
||||
liveEvents: LiveOptimizationEvent[];
|
||||
settings: CatalystSettings;
|
||||
activeTab: 'studio' | 'command' | 'intelligence' | 'war-room' | 'marketing';
|
||||
activeTab: 'studio' | 'command' | 'intelligence' | 'war-room' | 'marketing' | 'dream-weaver';
|
||||
|
||||
// Actions
|
||||
addCampaign: (campaign: Campaign) => void;
|
||||
|
||||
@@ -69,6 +69,7 @@ export interface CrmOpportunityCard {
|
||||
probability: number | null;
|
||||
expected_close_date: string | null;
|
||||
next_action: string | null;
|
||||
notes?: string | null;
|
||||
project_id: string | null;
|
||||
unit_id: string | null;
|
||||
// When fetched from list endpoint, person-level fields are included
|
||||
@@ -109,6 +110,16 @@ export interface CrmTask {
|
||||
client_phone?: string;
|
||||
}
|
||||
|
||||
export interface CrmLeadStageUpdate {
|
||||
lead_id: string;
|
||||
person_id: string;
|
||||
status: CrmLeadStatus;
|
||||
budget_band: string | null;
|
||||
urgency: string | null;
|
||||
client_name?: string;
|
||||
client_phone?: string;
|
||||
}
|
||||
|
||||
// ── Property Interest ─────────────────────────────────────────────────────────
|
||||
|
||||
export interface PropertyInterest {
|
||||
|
||||
Reference in New Issue
Block a user