diff --git a/Iniciar_FitzStudio.ps1 b/Iniciar_FitzStudio.ps1 new file mode 100644 index 0000000..7874591 --- /dev/null +++ b/Iniciar_FitzStudio.ps1 @@ -0,0 +1,4 @@ +cd ./frontend +npm run dev +cd .. + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fd557ee..88fc65f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "mantine-vite-template", "version": "0.0.0", "dependencies": { + "@cycjimmy/jsmpeg-player": "^6.1.2", "@mantine/core": "^8.0.1", "@mantine/hooks": "^8.0.1", "@mantine/tiptap": "^8.0.1", @@ -548,6 +549,12 @@ "@csstools/css-tokenizer": "^3.0.3" } }, + "node_modules/@cycjimmy/jsmpeg-player": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@cycjimmy/jsmpeg-player/-/jsmpeg-player-6.1.2.tgz", + "integrity": "sha512-U9DBDe5fxHmbwQww9rFxMLNI2Wlg7DhPzI7AVFpq8GehiUP7+NwuMPXpP4zAd52sgkxtOqOeMjgE5g0ZLnQZ0w==", + "license": "MIT" + }, "node_modules/@dimforge/rapier3d-compat": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 530707c..6e8af4a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,6 +20,7 @@ "storybook:build": "storybook build" }, "dependencies": { + "@cycjimmy/jsmpeg-player": "^6.1.2", "@mantine/core": "^8.0.1", "@mantine/hooks": "^8.0.1", "@mantine/tiptap": "^8.0.1", diff --git a/frontend/src/Router.tsx b/frontend/src/Router.tsx index c986e43..e7a3bb3 100644 --- a/frontend/src/Router.tsx +++ b/frontend/src/Router.tsx @@ -1,12 +1,12 @@ import { createBrowserRouter, RouterProvider } from 'react-router-dom'; -import { HomePage } from './pages/Home.page'; -import { Consulta_API } from './pages/Consulta_api'; -import { Error_404 } from './pages/404'; // Ajusta si está en otra carpeta -import { Grid_Dashboard } from './pages/Grid_dashboard'; // Ajusta si está en otra carpeta -import { Biblioteca } from './pages/Biblioteca'; -import { VisualizacionesRandom } from './pages/Visualizaciones_Random'; -import { Camara_noir } from './pages/Camaras_noir'; -import EditorTest from "./pages/Editor_Test" +import { HomePage } from './domains/Home/Home.page'; +import { Consulta_API } from './domains/Experiments/Consulta_api'; +import { Error_404 } from './domains/FitzStudio/404/404'; // Ajusta si está en otra carpeta +import { Grid_Dashboard } from './domains/Experiments/Grid_dashboard'; // Ajusta si está en otra carpeta +import { Biblioteca } from './domains/TextEditor/Biblioteca'; +import { VisualizacionesRandom } from './domains/Experiments/Visualizaciones_Random'; +import { Camara_noir } from './domains/CamaraNoir/Camaras_noir'; +import EditorTest from "./domains/TextEditor/Editor_Test" const router = createBrowserRouter([ @@ -33,7 +33,7 @@ const router = createBrowserRouter([ }, - // Camara + // CamaraNoir { path: '/camara/principal', @@ -60,7 +60,7 @@ const router = createBrowserRouter([ - + // FitzStudio Pages ------------------------------------------------------- // Error 404 { diff --git a/frontend/src/components/Camara_noir/CanvasDisplay.tsx b/frontend/src/components/Camara_noir/CanvasDisplay.tsx deleted file mode 100644 index d505065..0000000 --- a/frontend/src/components/Camara_noir/CanvasDisplay.tsx +++ /dev/null @@ -1,26 +0,0 @@ -// Archivo: components/CanvasDisplay.tsx -import { Box } from '@mantine/core'; -import { RefObject } from 'react'; - -interface CanvasDisplayProps { - canvasRef: RefObject; -} - -export function CanvasDisplay({ canvasRef }: CanvasDisplayProps) { - return ( - - - - ); -} diff --git a/frontend/src/components/Camara_noir/CaptureGrid.tsx b/frontend/src/components/Camara_noir/CaptureGrid.tsx deleted file mode 100644 index 2971fbb..0000000 --- a/frontend/src/components/Camara_noir/CaptureGrid.tsx +++ /dev/null @@ -1,74 +0,0 @@ -// Archivo: components/CaptureGrid.tsx -import { useCallback } from 'react'; -import { SimpleGrid } from '@mantine/core'; -import { FrameCard } from './FrameCard'; - -interface CaptureGridProps { - totalSlots: number; - capturas: string[][]; - setCapturas: (value: string[][]) => void; - frameIndices: number[]; - setFrameIndices: (value: number[]) => void; - fijados: boolean[]; - setFijados: (value: boolean[]) => void; - frameTemporal: number | null; - onScroll: (e: React.WheelEvent, index: number) => void; - onSliderChange: (val: number) => void; - onSliderEnd: (index: number, val: number) => void; - numColumnas: number; -} - -export function CaptureGrid({ - totalSlots, - capturas, - setCapturas, - frameIndices, - setFrameIndices, - fijados, - setFijados, - frameTemporal, - onScroll, - onSliderChange, - onSliderEnd, - numColumnas, -}: CaptureGridProps) { - const handleImageClick = useCallback((index: number, dataUrl: string) => { - const nuevasCapturas = [...capturas]; - nuevasCapturas[index] = [dataUrl]; - setCapturas(nuevasCapturas); - - const nuevosFijados = [...fijados]; - nuevosFijados[index] = true; - setFijados(nuevosFijados); - - const nuevosIndices = [...frameIndices]; - nuevosIndices[index] = 0; - setFrameIndices(nuevosIndices); - }, [capturas, fijados, frameIndices, setCapturas, setFijados, setFrameIndices]); - - return ( - - {Array.from({ length: totalSlots }).map((_, i) => { - const frames = capturas[i] ?? []; - const currentIndex = - !fijados[i] && frameTemporal !== null && frames.length > 0 - ? Math.max(0, Math.min(frames.length - 1, frameTemporal)) - : frameIndices[i]; - - return ( - - ); - })} - - ); -} diff --git a/frontend/src/components/Camara_noir/ControlPanel.tsx b/frontend/src/components/Camara_noir/ControlPanel.tsx deleted file mode 100644 index ef6386c..0000000 --- a/frontend/src/components/Camara_noir/ControlPanel.tsx +++ /dev/null @@ -1,25 +0,0 @@ -// Archivo: components/ControlPanel.tsx -import { Button, Group } from '@mantine/core'; - -interface ControlPanelProps { - grabando: boolean; - onAlternar: () => void; - onLimpiar: () => void; - onDesfijar: () => void; -} - -export function ControlPanel({ grabando, onAlternar, onLimpiar, onDesfijar }: ControlPanelProps) { - return ( - - - - - - ); -} diff --git a/frontend/src/components/Camara_noir/FrameCard.tsx b/frontend/src/components/Camara_noir/FrameCard.tsx deleted file mode 100644 index e8ce685..0000000 --- a/frontend/src/components/Camara_noir/FrameCard.tsx +++ /dev/null @@ -1,125 +0,0 @@ -// Archivo: components/FrameCard.tsx -import { Box, HoverCard, Image, Slider, Stack, Text } from '@mantine/core'; - -interface FrameCardProps { - index: number; - frames: string[]; - currentIndex: number; - fijado: boolean; - onScroll: (e: React.WheelEvent, index: number) => void; - onSliderChange: (val: number) => void; - onSliderEnd: (index: number, val: number) => void; - onImageClick?: (index: number, dataUrl: string) => void; -} - -export function FrameCard({ - index, - frames, - currentIndex, - fijado, - onScroll, - onSliderChange, - onSliderEnd, - onImageClick, -}: FrameCardProps) { - const borderColor = fijado ? '#4caf50' : '#ccc'; - - return ( - - - - {frames.length > 0 && currentIndex < frames.length && ( - <> - {`Captura - - {currentIndex + 1} / {frames.length} - - - )} - - - - onScroll(e, index)}> - {frames.length > 0 && currentIndex < frames.length && ( - - {`Vista { - const imgElement = e.currentTarget; - const img = document.createElement('img'); - img.src = frames[currentIndex]; - await img.decode(); - - const rect = imgElement.getBoundingClientRect(); - const clickX = e.clientX - rect.left; - const clickY = e.clientY - rect.top; - const ratioX = clickX / rect.width; - const ratioY = clickY / rect.height; - - const zoomFactor = 2; - const cropWidth = img.width / zoomFactor; - const cropHeight = img.height / zoomFactor; - - const centerX = img.width * ratioX; - const centerY = img.height * ratioY; - - const x = Math.max(0, Math.min(img.width - cropWidth, centerX - cropWidth / 2)); - const y = Math.max(0, Math.min(img.height - cropHeight, centerY - cropHeight / 2)); - - const canvas = document.createElement('canvas'); - canvas.width = cropWidth; - canvas.height = cropHeight; - - const ctx = canvas.getContext('2d'); - if (ctx) { - ctx.drawImage(img, x, y, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); - const dataUrl = canvas.toDataURL('image/jpeg'); - onImageClick?.(index, dataUrl); - } - }} - /> - onSliderChange(val)} - onChangeEnd={(val) => onSliderEnd(index, val)} - min={0} - max={frames.length - 1} - /> - - )} - - - ); -} \ No newline at end of file diff --git a/frontend/src/components/Camara_noir/GridConfigPanel.tsx b/frontend/src/components/Camara_noir/GridConfigPanel.tsx deleted file mode 100644 index 82701ef..0000000 --- a/frontend/src/components/Camara_noir/GridConfigPanel.tsx +++ /dev/null @@ -1,36 +0,0 @@ -// Archivo: components/GridConfigPanel.tsx -import { NumberInput, Stack, Text } from '@mantine/core'; - -interface GridConfigPanelProps { - numFilas: number; - setNumFilas: (val: number) => void; - numColumnas: number; - setNumColumnas: (val: number) => void; -} - -export function GridConfigPanel({ numFilas, setNumFilas, numColumnas, setNumColumnas }: GridConfigPanelProps) { - return ( - - Cartas - setNumFilas(Number(val))} - min={1} - max={5} - step={1} - size="xs" - style={{ width: 60 }} - /> - Jugadores - setNumColumnas(Number(val))} - min={1} - max={11} - step={1} - size="xs" - style={{ width: 60 }} - /> - - ); -} \ No newline at end of file diff --git a/frontend/src/components/Camara_noir/index.ts b/frontend/src/components/Camara_noir/index.ts deleted file mode 100644 index 7a6c889..0000000 --- a/frontend/src/components/Camara_noir/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './CanvasDisplay'; -export * from './ControlPanel'; -export * from './GridConfigPanel'; -export * from './CaptureGrid'; -export * from './FrameCard'; -export * from './useCamaraNoir'; \ No newline at end of file diff --git a/frontend/src/components/Camara_noir/useCamaraNoir.tsx b/frontend/src/components/Camara_noir/useCamaraNoir.tsx deleted file mode 100644 index f16af73..0000000 --- a/frontend/src/components/Camara_noir/useCamaraNoir.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import { useEffect, useRef, useState } from 'react'; - -export function useCamaraNoir() { - const canvasRef = useRef(null); - const bufferPrevioRef = useRef([]); - const bufferGrabacionRef = useRef([]); - const bufferAcumuladoRef = useRef([]); - const pregrabacionActivaRef = useRef(true); - const primeraGrabacionRealizadaRef = useRef(false); - - const [bufferGlobal, setBufferGlobal] = useState([]); - const [intervaloId, setIntervaloId] = useState | null>(null); - const [grabando, setGrabando] = useState(false); - - const [capturas, setCapturas] = useState([]); - const [frameIndices, setFrameIndices] = useState([]); - const [fijados, setFijados] = useState([]); - const [frameTemporal, setFrameTemporal] = useState(null); - - const [numFilas, setNumFilas] = useState(2); - const [numColumnas, setNumColumnas] = useState(10); - - const DELAY_ENTRE_FRAMES_MS = 10; - const SEGUNDOS_PRE_GRABACION = 5; - const FPS = 1000 / DELAY_ENTRE_FRAMES_MS; - const FRAMES_PRE_GRABACION = Math.floor(FPS * SEGUNDOS_PRE_GRABACION); - const totalSlots = numFilas * numColumnas; - - useEffect(() => { - const id = setInterval(() => { - if (!pregrabacionActivaRef.current) return; - const canvas = canvasRef.current; - if (!canvas) return; - const frame = canvas.toDataURL('image/jpeg'); - bufferPrevioRef.current.push(frame); - if (bufferPrevioRef.current.length > FRAMES_PRE_GRABACION) { - bufferPrevioRef.current.shift(); - } - }, DELAY_ENTRE_FRAMES_MS); - - return () => clearInterval(id); - }, []); - - const desfijarTodos = () => { - setFijados(Array(totalSlots).fill(false)); - }; - - useEffect(() => { - const canvas = canvasRef.current; - if (!canvas) return; - const ctx = canvas.getContext('2d'); - if (!ctx) return; - - const socket = new WebSocket('ws://10.8.0.9:8000/ws'); - socket.binaryType = 'blob'; - - socket.onmessage = async (event) => { - if (event.data instanceof Blob) { - const imgBitmap = await createImageBitmap(event.data); - ctx.drawImage(imgBitmap, 0, 0, canvas.width, canvas.height); - } - }; - - socket.onerror = (e) => console.error('WebSocket error:', e); - socket.onclose = () => console.warn('WebSocket cerrado'); - - return () => socket.close(); - }, []); - - useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if (event.code === 'Space') { - event.preventDefault(); - alternarGrabacion(); - } else if (event.key.toLowerCase() === 'f') { - event.preventDefault(); - limpiarCapturas(); - } else if (event.key.toLowerCase() === 'd') { - event.preventDefault(); - desfijarTodos(); - } - }; - window.addEventListener('keydown', handleKeyDown); - return () => window.removeEventListener('keydown', handleKeyDown); - }, [grabando, bufferGlobal, totalSlots]); - - useEffect(() => { - const total = numFilas * numColumnas; - const nuevoCapturas = Array(total) - .fill(null) - .map((_, i) => capturas[i] ?? bufferGlobal); - const nuevoIndices = Array(total) - .fill(null) - .map((_, i) => frameIndices[i] ?? (frameTemporal ?? Math.floor(bufferGlobal.length / 2))); - const nuevosFijados = Array(total) - .fill(null) - .map((_, i) => fijados[i] ?? false); - - setCapturas(nuevoCapturas); - setFrameIndices(nuevoIndices); - setFijados(nuevosFijados); - }, [numFilas, numColumnas]); - - const iniciarGrabacion = () => { - if (grabando) return; - setGrabando(true); - bufferGrabacionRef.current = []; - - if (!primeraGrabacionRealizadaRef.current) { - pregrabacionActivaRef.current = false; - } - - const id = setInterval(() => { - const frame = capturarFrame(); - if (frame) { - bufferGrabacionRef.current.push(frame); - } - }, DELAY_ENTRE_FRAMES_MS); - - setIntervaloId(id); - }; - - const capturarFrame = (): string | null => { - const canvas = canvasRef.current; - if (!canvas) return null; - return canvas.toDataURL('image/jpeg'); - }; - - const detenerGrabacion = () => { - if (!grabando) return; - setGrabando(false); - if (intervaloId) clearInterval(intervaloId); - - const nuevaSesion = primeraGrabacionRealizadaRef.current - ? [...bufferGrabacionRef.current] // solo frames nuevos - : [...bufferPrevioRef.current, ...bufferGrabacionRef.current]; - - bufferAcumuladoRef.current.push(...nuevaSesion); - primeraGrabacionRealizadaRef.current = true; - - setBufferGlobal([...bufferAcumuladoRef.current]); - setCapturas(Array(totalSlots).fill([...bufferAcumuladoRef.current])); - const frameInicial = Math.floor(bufferAcumuladoRef.current.length / 2); - setFrameIndices(Array(totalSlots).fill(frameInicial)); - setFijados(Array(totalSlots).fill(false)); - setFrameTemporal(frameInicial); - }; - - const alternarGrabacion = () => { - grabando ? detenerGrabacion() : iniciarGrabacion(); - }; - - const limpiarCapturas = () => { - setCapturas([]); - setFrameIndices([]); - setFijados([]); - setBufferGlobal([]); - bufferGrabacionRef.current = []; - bufferPrevioRef.current = []; - bufferAcumuladoRef.current = []; - primeraGrabacionRealizadaRef.current = false; - pregrabacionActivaRef.current = true; - setFrameTemporal(null); - if (intervaloId) clearInterval(intervaloId); - setGrabando(false); - }; - - const moverFrame = (capturaIndex: number, nuevoIndice: number) => { - setFrameIndices((prev) => { - const nuevos = [...prev]; - const max = capturas[capturaIndex]?.length - 1 ?? 0; - nuevos[capturaIndex] = Math.max(0, Math.min(max, nuevoIndice)); - return nuevos; - }); - }; - - const moverFrameYFijar = (capturaIndex: number, nuevoIndice: number) => { - moverFrame(capturaIndex, nuevoIndice); - setFijados((prev) => { - const actualizados = [...prev]; - actualizados[capturaIndex] = true; - return actualizados; - }); - setFrameTemporal(nuevoIndice); - }; - - const manejarScrollEnSlider = (e: React.WheelEvent, index: number) => { - e.preventDefault(); - if (!fijados[index]) return; - moverFrame(index, frameIndices[index] + (e.deltaY > 0 ? 1 : -1)); - }; - - return { - canvasRef, - bufferGlobal, - grabando, - capturas, - frameIndices, - fijados, - frameTemporal, - numFilas, - setNumFilas, - numColumnas, - setNumColumnas, - alternarGrabacion, - limpiarCapturas, - desfijarTodos, - manejarScrollEnSlider, - moverFrameYFijar, - setFrameTemporal, - }; -} \ No newline at end of file diff --git a/frontend/src/domains/CamaraNoir/Camaras_noir.tsx b/frontend/src/domains/CamaraNoir/Camaras_noir.tsx new file mode 100644 index 0000000..44d0fb3 --- /dev/null +++ b/frontend/src/domains/CamaraNoir/Camaras_noir.tsx @@ -0,0 +1,27 @@ +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; +import { Card, Text, Center, Container } from '@mantine/core'; + +export function Camara_noir() { + return ( + + + + + Aquí irá la cámara Noir + + + Este espacio está reservado para la funcionalidad de la cámara Noir. + + + + + ); +} diff --git a/frontend/src/pages/Consulta_api.tsx b/frontend/src/domains/Experiments/Consulta_api.tsx similarity index 51% rename from frontend/src/pages/Consulta_api.tsx rename to frontend/src/domains/Experiments/Consulta_api.tsx index 5241ec7..d8d3ab8 100644 --- a/frontend/src/pages/Consulta_api.tsx +++ b/frontend/src/domains/Experiments/Consulta_api.tsx @@ -1,6 +1,6 @@ -import { LlamadorAPI } from '../components/LlamadorAPI'; -import { AppShellWithMenu } from '../components/Appshell/Appshell'; +import { LlamadorAPI } from './LlamadorAPI'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; export function Consulta_API() { diff --git a/frontend/src/pages/Grid_dashboard.tsx b/frontend/src/domains/Experiments/Grid_dashboard.tsx similarity index 60% rename from frontend/src/pages/Grid_dashboard.tsx rename to frontend/src/domains/Experiments/Grid_dashboard.tsx index ceae3ad..91e5925 100644 --- a/frontend/src/pages/Grid_dashboard.tsx +++ b/frontend/src/domains/Experiments/Grid_dashboard.tsx @@ -1,6 +1,6 @@ import { Grid } from '@mantine/core'; -import { AppShellWithMenu } from '../components/Appshell/Appshell'; -import { GridDashboard } from '../components/Grid_dashboard'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; +import { GridDashboard } from './Grid_dashboard_component'; export function Grid_Dashboard() { return ( diff --git a/frontend/src/components/Grid_dashboard.tsx b/frontend/src/domains/Experiments/Grid_dashboard_component.tsx similarity index 100% rename from frontend/src/components/Grid_dashboard.tsx rename to frontend/src/domains/Experiments/Grid_dashboard_component.tsx diff --git a/frontend/src/components/LlamadorAPI.tsx b/frontend/src/domains/Experiments/LlamadorAPI.tsx similarity index 100% rename from frontend/src/components/LlamadorAPI.tsx rename to frontend/src/domains/Experiments/LlamadorAPI.tsx diff --git a/frontend/src/components/MetodoSelect.tsx b/frontend/src/domains/Experiments/MetodoSelect.tsx similarity index 96% rename from frontend/src/components/MetodoSelect.tsx rename to frontend/src/domains/Experiments/MetodoSelect.tsx index 3c8b1ec..7b085b8 100644 --- a/frontend/src/components/MetodoSelect.tsx +++ b/frontend/src/domains/Experiments/MetodoSelect.tsx @@ -1,5 +1,5 @@ import { Select, Group } from '@mantine/core'; -import { IconCheck } from '../assets/icons'; +import { IconCheck } from '../../assets/icons'; interface MetodoSelectProps { metodo: string; diff --git a/frontend/src/pages/Visualizaciones_Random.tsx b/frontend/src/domains/Experiments/Visualizaciones_Random.tsx similarity index 96% rename from frontend/src/pages/Visualizaciones_Random.tsx rename to frontend/src/domains/Experiments/Visualizaciones_Random.tsx index 8e27e9a..a2c827b 100644 --- a/frontend/src/pages/Visualizaciones_Random.tsx +++ b/frontend/src/domains/Experiments/Visualizaciones_Random.tsx @@ -1,4 +1,4 @@ -import { AppShellWithMenu } from '../components/Appshell/Appshell'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; import { Card, Grid, Title, Loader } from '@mantine/core'; import { useEffect, useState } from 'react'; import ReactECharts from 'echarts-for-react'; diff --git a/frontend/src/pages/404.tsx b/frontend/src/domains/FitzStudio/404/404.tsx similarity index 88% rename from frontend/src/pages/404.tsx rename to frontend/src/domains/FitzStudio/404/404.tsx index 95c9efd..ab75bcf 100644 --- a/frontend/src/pages/404.tsx +++ b/frontend/src/domains/FitzStudio/404/404.tsx @@ -1,9 +1,10 @@ import { Box, Title, Text, Button, Group, Stack, Image, Center } from '@mantine/core'; import { useMantineTheme } from '@mantine/core'; -import { IconArrowLeft } from '../assets/icons'; +import { IconArrowLeft } from '../../../assets/icons'; import { Link } from 'react-router-dom'; -import { MantineCardWithShader } from '../components/HoloShader'; // Ajusta ruta si es necesario -import { AppShellWithMenu } from '../components/Appshell/Appshell'; +import { MantineCardWithShader } from './HoloShader_404'; // Ajusta ruta si es necesario +import { AppShellWithMenu } from '../../FitzStudio/Appshell/Appshell'; + export function Error_404() { diff --git a/frontend/src/components/HoloShader.tsx b/frontend/src/domains/FitzStudio/404/HoloShader_404.tsx similarity index 100% rename from frontend/src/components/HoloShader.tsx rename to frontend/src/domains/FitzStudio/404/HoloShader_404.tsx diff --git a/frontend/src/components/Appshell/Appshell.module.css b/frontend/src/domains/FitzStudio/Appshell/Appshell.module.css similarity index 100% rename from frontend/src/components/Appshell/Appshell.module.css rename to frontend/src/domains/FitzStudio/Appshell/Appshell.module.css diff --git a/frontend/src/components/Appshell/Appshell.tsx b/frontend/src/domains/FitzStudio/Appshell/Appshell.tsx similarity index 96% rename from frontend/src/components/Appshell/Appshell.tsx rename to frontend/src/domains/FitzStudio/Appshell/Appshell.tsx index b5776c9..4d76360 100644 --- a/frontend/src/components/Appshell/Appshell.tsx +++ b/frontend/src/domains/FitzStudio/Appshell/Appshell.tsx @@ -11,9 +11,9 @@ import { useDisclosure, useMediaQuery } from '@mantine/hooks'; import { useEffect, useMemo, useRef, useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; -import { default as LogoIcon } from '../../assets/icons/favicon'; -import { mainLinksdata } from '../../data/navigationsLinks_1'; -import { submenuLinks } from '../../data/submenuLinks_1'; +import { default as LogoIcon } from '../../../assets/icons/favicon'; +import { mainLinksdata } from '../../../data/navigationsLinks_1'; +import { submenuLinks } from '../../../data/submenuLinks_1'; import classes from './Appshell.module.css'; diff --git a/frontend/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx b/frontend/src/domains/FitzStudio/ColorSchemeToggle/ColorSchemeToggle.tsx similarity index 100% rename from frontend/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx rename to frontend/src/domains/FitzStudio/ColorSchemeToggle/ColorSchemeToggle.tsx diff --git a/frontend/src/pages/Plantilla.tsx b/frontend/src/domains/FitzStudio/Plantilla.tsx similarity index 61% rename from frontend/src/pages/Plantilla.tsx rename to frontend/src/domains/FitzStudio/Plantilla.tsx index 002894d..4794959 100644 --- a/frontend/src/pages/Plantilla.tsx +++ b/frontend/src/domains/FitzStudio/Plantilla.tsx @@ -1,4 +1,4 @@ -import { AppShellWithMenu } from '../components/Appshell/Appshell'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; export function Plantilla() { diff --git a/frontend/src/components/Welcome/Welcome.module.css b/frontend/src/domains/FitzStudio/Welcome/Welcome.module.css similarity index 100% rename from frontend/src/components/Welcome/Welcome.module.css rename to frontend/src/domains/FitzStudio/Welcome/Welcome.module.css diff --git a/frontend/src/components/Welcome/Welcome.story.tsx b/frontend/src/domains/FitzStudio/Welcome/Welcome.story.tsx similarity index 100% rename from frontend/src/components/Welcome/Welcome.story.tsx rename to frontend/src/domains/FitzStudio/Welcome/Welcome.story.tsx diff --git a/frontend/src/components/Welcome/Welcome.test.tsx b/frontend/src/domains/FitzStudio/Welcome/Welcome.test.tsx similarity index 100% rename from frontend/src/components/Welcome/Welcome.test.tsx rename to frontend/src/domains/FitzStudio/Welcome/Welcome.test.tsx diff --git a/frontend/src/components/Welcome/Welcome.tsx b/frontend/src/domains/FitzStudio/Welcome/Welcome.tsx similarity index 100% rename from frontend/src/components/Welcome/Welcome.tsx rename to frontend/src/domains/FitzStudio/Welcome/Welcome.tsx diff --git a/frontend/src/pages/Home.page.tsx b/frontend/src/domains/Home/Home.page.tsx similarity index 59% rename from frontend/src/pages/Home.page.tsx rename to frontend/src/domains/Home/Home.page.tsx index 6bf014f..05220dc 100644 --- a/frontend/src/pages/Home.page.tsx +++ b/frontend/src/domains/Home/Home.page.tsx @@ -1,6 +1,6 @@ -import { AppShellWithMenu } from '../components/Appshell/Appshell'; -import { Welcome } from '@/components/Welcome/Welcome'; -import { ColorSchemeToggle } from '@/components/ColorSchemeToggle/ColorSchemeToggle'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; +import { Welcome } from '@/domains/FitzStudio/Welcome/Welcome'; +import { ColorSchemeToggle } from '@/domains/FitzStudio/ColorSchemeToggle/ColorSchemeToggle'; export function HomePage() { diff --git a/frontend/src/pages/Biblioteca.tsx b/frontend/src/domains/TextEditor/Biblioteca.tsx similarity index 98% rename from frontend/src/pages/Biblioteca.tsx rename to frontend/src/domains/TextEditor/Biblioteca.tsx index 5e89767..36b5a40 100644 --- a/frontend/src/pages/Biblioteca.tsx +++ b/frontend/src/domains/TextEditor/Biblioteca.tsx @@ -10,7 +10,7 @@ import { Modal, Box } from '@mantine/core'; -import { AppShellWithMenu } from '../components/Appshell/Appshell'; +import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; import axios from 'axios'; import { RichTextEditor } from '@mantine/tiptap'; @@ -21,7 +21,7 @@ import '@mantine/tiptap/styles.css'; import TurndownService from 'turndown'; import { marked } from 'marked'; -import '../components/Editor_biblioteca.css'; +import './Editor_biblioteca.css'; type Nota = { id: string; diff --git a/frontend/src/pages/Editor_Test.tsx b/frontend/src/domains/TextEditor/Editor_Test.tsx similarity index 100% rename from frontend/src/pages/Editor_Test.tsx rename to frontend/src/domains/TextEditor/Editor_Test.tsx diff --git a/frontend/src/components/Editor_biblioteca.css b/frontend/src/domains/TextEditor/Editor_biblioteca.css similarity index 100% rename from frontend/src/components/Editor_biblioteca.css rename to frontend/src/domains/TextEditor/Editor_biblioteca.css diff --git a/frontend/src/pages/Analitica.tsx b/frontend/src/pages/Analitica.tsx deleted file mode 100644 index b5d14e2..0000000 --- a/frontend/src/pages/Analitica.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { AppShellWithMenu } from '../components/Appshell/Appshell'; - - - -export function Prueba_1() { - return ( - - - - ); -} \ No newline at end of file diff --git a/frontend/src/pages/Camaras_noir.tsx b/frontend/src/pages/Camaras_noir.tsx deleted file mode 100644 index 1ed3bb2..0000000 --- a/frontend/src/pages/Camaras_noir.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { AppShellWithMenu } from '../components/Appshell/Appshell'; -import { Stack, Box } from '@mantine/core'; - -import { - CanvasDisplay, - ControlPanel, - CaptureGrid, - GridConfigPanel, - useCamaraNoir -} from '../components/Camara_noir'; - -export function Camara_noir() { - const camara = useCamaraNoir(); - const totalSlots = camara.numFilas * camara.numColumnas; - - return ( - - - - {/* Contenedor para botones encima del video */} - - - - - - - - {/* Grilla de capturas + configurador lateral */} - - - - - - - - ); -} \ No newline at end of file diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ca34dc3..55da88e 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -222,6 +222,11 @@ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz" integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw== +"@cycjimmy/jsmpeg-player@^6.1.2": + version "6.1.2" + resolved "https://registry.npmjs.org/@cycjimmy/jsmpeg-player/-/jsmpeg-player-6.1.2.tgz" + integrity sha512-U9DBDe5fxHmbwQww9rFxMLNI2Wlg7DhPzI7AVFpq8GehiUP7+NwuMPXpP4zAd52sgkxtOqOeMjgE5g0ZLnQZ0w== + "@dimforge/rapier3d-compat@^0.12.0": version "0.12.0" resolved "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz"