mirror of
https://github.com/OFFIS-ESC/constellation-analyzer
synced 2026-01-26 23:43:40 +00:00
Implements WebSocket-based TUIO protocol support to connect physical tangibles to presentation mode. When tangibles are placed on/removed from a touch screen, they trigger configured actions (label filtering or state switching). Features: - TUIO 1.1 and 2.0 protocol support with version selection - WebSocket connection management with real-time status - Test connection feature in configuration dialog - Persistent settings (WebSocket URL and protocol version) - Multi-tangible handling: union for filters, last-wins for states - Automatic connection in presentation mode Implementation: - TuioClientManager: Wrapper for tuio-client library with dual protocol support - WebsocketTuioReceiver: Custom OSC/WebSocket transport layer - useTuioIntegration: React hook bridging TUIO events to app stores - TuioConnectionConfig: Settings UI with real-time tangible detection - tuioStore: Zustand store with localStorage persistence Technical details: - TUIO 1.1 uses symbolId for hardware identification - TUIO 2.0 uses token.cId for hardware identification - Filter mode: Activates labels, union of all active tangibles - State mode: Switches timeline state, last tangible wins - Cleanup: Removes only labels no longer in use by any tangible - Unknown hardware IDs are silently ignored Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
60 lines
1.8 KiB
JSON
60 lines
1.8 KiB
JSON
{
|
|
"name": "constellation-analyzer",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
"preview": "vite preview",
|
|
"test": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:run": "vitest run",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:unit": "vitest run src/store",
|
|
"test:integration": "vitest run src/__tests__/integration"
|
|
},
|
|
"dependencies": {
|
|
"@citation-js/core": "^0.7.18",
|
|
"@citation-js/plugin-bibtex": "^0.7.18",
|
|
"@citation-js/plugin-csl": "^0.7.18",
|
|
"@citation-js/plugin-doi": "^0.7.18",
|
|
"@citation-js/plugin-ris": "^0.7.18",
|
|
"@citation-js/plugin-software-formats": "^0.6.1",
|
|
"@emotion/react": "^11.11.3",
|
|
"@emotion/styled": "^11.11.0",
|
|
"@mui/icons-material": "^5.15.10",
|
|
"@mui/material": "^5.15.10",
|
|
"@xyflow/react": "^12.3.5",
|
|
"html-to-image": "^1.11.11",
|
|
"jszip": "^3.10.1",
|
|
"osc-js": "^2.4.1",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"tuio-client": "^0.1.0",
|
|
"zustand": "^4.5.0"
|
|
},
|
|
"devDependencies": {
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.0",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/react": "^18.2.55",
|
|
"@types/react-dom": "^18.2.19",
|
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
"@typescript-eslint/parser": "^6.21.0",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"@vitest/ui": "^3.2.4",
|
|
"autoprefixer": "^10.4.17",
|
|
"eslint": "^8.56.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
"happy-dom": "^20.0.8",
|
|
"jsdom": "^27.0.1",
|
|
"postcss": "^8.4.35",
|
|
"tailwindcss": "^3.4.1",
|
|
"typescript": "^5.2.2",
|
|
"vite": "^5.1.0",
|
|
"vitest": "^3.2.4"
|
|
}
|
|
}
|