driftdetect-galaxy 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.d.ts +8 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +8 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/audio/sound-effects.d.ts +78 -0
- package/dist/audio/sound-effects.d.ts.map +1 -0
- package/dist/audio/sound-effects.js +660 -0
- package/dist/audio/sound-effects.js.map +1 -0
- package/dist/audio/useGalaxySound.d.ts +70 -0
- package/dist/audio/useGalaxySound.d.ts.map +1 -0
- package/dist/audio/useGalaxySound.js +127 -0
- package/dist/audio/useGalaxySound.js.map +1 -0
- package/dist/components/canvas/GalaxyCamera.d.ts +16 -0
- package/dist/components/canvas/GalaxyCamera.d.ts.map +1 -0
- package/dist/components/canvas/GalaxyCamera.js +74 -0
- package/dist/components/canvas/GalaxyCamera.js.map +1 -0
- package/dist/components/canvas/GalaxyCanvas.d.ts +16 -0
- package/dist/components/canvas/GalaxyCanvas.d.ts.map +1 -0
- package/dist/components/canvas/GalaxyCanvas.js +104 -0
- package/dist/components/canvas/GalaxyCanvas.js.map +1 -0
- package/dist/components/canvas/GalaxyLighting.d.ts +8 -0
- package/dist/components/canvas/GalaxyLighting.d.ts.map +1 -0
- package/dist/components/canvas/GalaxyLighting.js +36 -0
- package/dist/components/canvas/GalaxyLighting.js.map +1 -0
- package/dist/components/canvas/index.d.ts +11 -0
- package/dist/components/canvas/index.d.ts.map +1 -0
- package/dist/components/canvas/index.js +9 -0
- package/dist/components/canvas/index.js.map +1 -0
- package/dist/components/connections/DataPathLane.d.ts +26 -0
- package/dist/components/connections/DataPathLane.d.ts.map +1 -0
- package/dist/components/connections/DataPathLane.js +71 -0
- package/dist/components/connections/DataPathLane.js.map +1 -0
- package/dist/components/connections/TableRelationship.d.ts +19 -0
- package/dist/components/connections/TableRelationship.d.ts.map +1 -0
- package/dist/components/connections/TableRelationship.js +46 -0
- package/dist/components/connections/TableRelationship.js.map +1 -0
- package/dist/components/connections/index.d.ts +10 -0
- package/dist/components/connections/index.d.ts.map +1 -0
- package/dist/components/connections/index.js +8 -0
- package/dist/components/connections/index.js.map +1 -0
- package/dist/components/effects/AccessPulse.d.ts +23 -0
- package/dist/components/effects/AccessPulse.d.ts.map +1 -0
- package/dist/components/effects/AccessPulse.js +72 -0
- package/dist/components/effects/AccessPulse.js.map +1 -0
- package/dist/components/effects/GalaxyBloom.d.ts +8 -0
- package/dist/components/effects/GalaxyBloom.d.ts.map +1 -0
- package/dist/components/effects/GalaxyBloom.js +23 -0
- package/dist/components/effects/GalaxyBloom.js.map +1 -0
- package/dist/components/effects/StarField.d.ts +18 -0
- package/dist/components/effects/StarField.d.ts.map +1 -0
- package/dist/components/effects/StarField.js +86 -0
- package/dist/components/effects/StarField.js.map +1 -0
- package/dist/components/effects/index.d.ts +11 -0
- package/dist/components/effects/index.d.ts.map +1 -0
- package/dist/components/effects/index.js +9 -0
- package/dist/components/effects/index.js.map +1 -0
- package/dist/components/index.d.ts +11 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +16 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/nodes/EntryPointStation.d.ts +22 -0
- package/dist/components/nodes/EntryPointStation.d.ts.map +1 -0
- package/dist/components/nodes/EntryPointStation.js +120 -0
- package/dist/components/nodes/EntryPointStation.js.map +1 -0
- package/dist/components/nodes/FieldMoon.d.ts +30 -0
- package/dist/components/nodes/FieldMoon.d.ts.map +1 -0
- package/dist/components/nodes/FieldMoon.js +92 -0
- package/dist/components/nodes/FieldMoon.js.map +1 -0
- package/dist/components/nodes/TablePlanet.d.ts +22 -0
- package/dist/components/nodes/TablePlanet.d.ts.map +1 -0
- package/dist/components/nodes/TablePlanet.js +101 -0
- package/dist/components/nodes/TablePlanet.js.map +1 -0
- package/dist/components/nodes/index.d.ts +12 -0
- package/dist/components/nodes/index.d.ts.map +1 -0
- package/dist/components/nodes/index.js +9 -0
- package/dist/components/nodes/index.js.map +1 -0
- package/dist/components/ui/ControlsPanel.d.ts +7 -0
- package/dist/components/ui/ControlsPanel.d.ts.map +1 -0
- package/dist/components/ui/ControlsPanel.js +59 -0
- package/dist/components/ui/ControlsPanel.js.map +1 -0
- package/dist/components/ui/DetailsPanel.d.ts +8 -0
- package/dist/components/ui/DetailsPanel.d.ts.map +1 -0
- package/dist/components/ui/DetailsPanel.js +44 -0
- package/dist/components/ui/DetailsPanel.js.map +1 -0
- package/dist/components/ui/SearchOverlay.d.ts +7 -0
- package/dist/components/ui/SearchOverlay.d.ts.map +1 -0
- package/dist/components/ui/SearchOverlay.js +68 -0
- package/dist/components/ui/SearchOverlay.js.map +1 -0
- package/dist/components/ui/SecurityPanel.d.ts +8 -0
- package/dist/components/ui/SecurityPanel.d.ts.map +1 -0
- package/dist/components/ui/SecurityPanel.js +65 -0
- package/dist/components/ui/SecurityPanel.js.map +1 -0
- package/dist/components/ui/StatsOverlay.d.ts +7 -0
- package/dist/components/ui/StatsOverlay.d.ts.map +1 -0
- package/dist/components/ui/StatsOverlay.js +29 -0
- package/dist/components/ui/StatsOverlay.js.map +1 -0
- package/dist/components/ui/index.d.ts +11 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +11 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/constants/index.d.ts +244 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +289 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAccessStream.d.ts +23 -0
- package/dist/hooks/useAccessStream.d.ts.map +1 -0
- package/dist/hooks/useAccessStream.js +86 -0
- package/dist/hooks/useAccessStream.js.map +1 -0
- package/dist/hooks/useGalaxyData.d.ts +83 -0
- package/dist/hooks/useGalaxyData.d.ts.map +1 -0
- package/dist/hooks/useGalaxyData.js +176 -0
- package/dist/hooks/useGalaxyData.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/store/galaxy-store.d.ts +85 -0
- package/dist/store/galaxy-store.d.ts.map +1 -0
- package/dist/store/galaxy-store.js +254 -0
- package/dist/store/galaxy-store.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -0
- package/dist/store/index.js.map +1 -0
- package/dist/types/index.d.ts +337 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/color-utils.d.ts +100 -0
- package/dist/utils/color-utils.d.ts.map +1 -0
- package/dist/utils/color-utils.js +217 -0
- package/dist/utils/color-utils.js.map +1 -0
- package/dist/utils/geometry-utils.d.ts +97 -0
- package/dist/utils/geometry-utils.d.ts.map +1 -0
- package/dist/utils/geometry-utils.js +245 -0
- package/dist/utils/geometry-utils.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/layout-engine.d.ts +40 -0
- package/dist/utils/layout-engine.d.ts.map +1 -0
- package/dist/utils/layout-engine.js +343 -0
- package/dist/utils/layout-engine.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useGalaxySound Hook
|
|
3
|
+
*
|
|
4
|
+
* React hook for playing Galaxy sound effects.
|
|
5
|
+
* Provides easy integration with components and respects user preferences.
|
|
6
|
+
*/
|
|
7
|
+
import { type SoundType, type SoundConfig } from './sound-effects.js';
|
|
8
|
+
export interface UseGalaxySoundOptions {
|
|
9
|
+
/** Enable sounds (default: true) */
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
/** Master volume 0-1 (default: 0.5) */
|
|
12
|
+
volume?: number;
|
|
13
|
+
/** Debounce time in ms for rapid sounds (default: 50) */
|
|
14
|
+
debounceMs?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface UseGalaxySoundReturn {
|
|
17
|
+
/** Play a sound effect */
|
|
18
|
+
play: (type: SoundType) => void;
|
|
19
|
+
/** Play with pitch variation */
|
|
20
|
+
playVaried: (type: SoundType, variation?: number) => void;
|
|
21
|
+
/** Play alert by severity */
|
|
22
|
+
playAlert: (severity: 'low' | 'medium' | 'high' | 'critical') => void;
|
|
23
|
+
/** Toggle mute state */
|
|
24
|
+
toggleMute: () => boolean;
|
|
25
|
+
/** Set volume (0-1) */
|
|
26
|
+
setVolume: (volume: number) => void;
|
|
27
|
+
/** Get current config */
|
|
28
|
+
getConfig: () => SoundConfig;
|
|
29
|
+
/** Update config */
|
|
30
|
+
setConfig: (config: Partial<SoundConfig>) => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Hook for playing Galaxy sound effects
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* function TablePlanet({ table }) {
|
|
38
|
+
* const { play } = useGalaxySound();
|
|
39
|
+
*
|
|
40
|
+
* return (
|
|
41
|
+
* <mesh
|
|
42
|
+
* onPointerEnter={() => play('hover')}
|
|
43
|
+
* onClick={() => play('select')}
|
|
44
|
+
* >
|
|
45
|
+
* ...
|
|
46
|
+
* </mesh>
|
|
47
|
+
* );
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function useGalaxySound(options?: UseGalaxySoundOptions): UseGalaxySoundReturn;
|
|
52
|
+
/**
|
|
53
|
+
* Hook for hover sound effects
|
|
54
|
+
*/
|
|
55
|
+
export declare function useHoverSound(): () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Hook for selection sound effects
|
|
58
|
+
*/
|
|
59
|
+
export declare function useSelectionSound(): {
|
|
60
|
+
onSelect: () => void;
|
|
61
|
+
onDeselect: () => void;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Hook for path activation sounds
|
|
65
|
+
*/
|
|
66
|
+
export declare function usePathSound(): {
|
|
67
|
+
onActivate: () => void;
|
|
68
|
+
onDataFlow: () => void;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=useGalaxySound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGalaxySound.d.ts","sourceRoot":"","sources":["../../src/audio/useGalaxySound.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAM5F,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC,gCAAgC;IAChC,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC;IACtE,wBAAwB;IACxB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,uBAAuB;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,yBAAyB;IACzB,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,oBAAoB;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACnD;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAuExF;AAMD;;GAEG;AACH,wBAAgB,aAAa,eAM5B;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;EAYhC;AAED;;GAEG;AACH,wBAAgB,YAAY;;;EAY3B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useGalaxySound Hook
|
|
3
|
+
*
|
|
4
|
+
* React hook for playing Galaxy sound effects.
|
|
5
|
+
* Provides easy integration with components and respects user preferences.
|
|
6
|
+
*/
|
|
7
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
8
|
+
import { getGalaxySoundEngine } from './sound-effects.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Hook Implementation
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Hook for playing Galaxy sound effects
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* function TablePlanet({ table }) {
|
|
18
|
+
* const { play } = useGalaxySound();
|
|
19
|
+
*
|
|
20
|
+
* return (
|
|
21
|
+
* <mesh
|
|
22
|
+
* onPointerEnter={() => play('hover')}
|
|
23
|
+
* onClick={() => play('select')}
|
|
24
|
+
* >
|
|
25
|
+
* ...
|
|
26
|
+
* </mesh>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function useGalaxySound(options = {}) {
|
|
32
|
+
const { enabled = true, volume = 0.5, debounceMs = 50 } = options;
|
|
33
|
+
const engine = getGalaxySoundEngine();
|
|
34
|
+
const lastPlayTime = useRef(new Map());
|
|
35
|
+
// Update engine config when options change
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
engine.setConfig({ enabled, volume });
|
|
38
|
+
}, [enabled, volume, engine]);
|
|
39
|
+
// Debounced play function
|
|
40
|
+
const play = useCallback((type) => {
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
const lastTime = lastPlayTime.current.get(type) ?? 0;
|
|
43
|
+
if (now - lastTime < debounceMs) {
|
|
44
|
+
return; // Skip if too soon
|
|
45
|
+
}
|
|
46
|
+
lastPlayTime.current.set(type, now);
|
|
47
|
+
engine.play(type);
|
|
48
|
+
}, [engine, debounceMs]);
|
|
49
|
+
// Play with variation
|
|
50
|
+
const playVaried = useCallback((type, variation = 0.1) => {
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
const lastTime = lastPlayTime.current.get(type) ?? 0;
|
|
53
|
+
if (now - lastTime < debounceMs) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
lastPlayTime.current.set(type, now);
|
|
57
|
+
engine.playWithVariation(type, variation);
|
|
58
|
+
}, [engine, debounceMs]);
|
|
59
|
+
// Play alert
|
|
60
|
+
const playAlert = useCallback((severity) => {
|
|
61
|
+
engine.playAlert(severity);
|
|
62
|
+
}, [engine]);
|
|
63
|
+
// Toggle mute
|
|
64
|
+
const toggleMute = useCallback(() => {
|
|
65
|
+
return engine.toggleMute();
|
|
66
|
+
}, [engine]);
|
|
67
|
+
// Set volume
|
|
68
|
+
const setVolume = useCallback((vol) => {
|
|
69
|
+
engine.setVolume(vol);
|
|
70
|
+
}, [engine]);
|
|
71
|
+
// Get config
|
|
72
|
+
const getConfig = useCallback(() => {
|
|
73
|
+
return engine.getConfig();
|
|
74
|
+
}, [engine]);
|
|
75
|
+
// Set config
|
|
76
|
+
const setConfig = useCallback((config) => {
|
|
77
|
+
engine.setConfig(config);
|
|
78
|
+
}, [engine]);
|
|
79
|
+
return {
|
|
80
|
+
play,
|
|
81
|
+
playVaried,
|
|
82
|
+
playAlert,
|
|
83
|
+
toggleMute,
|
|
84
|
+
setVolume,
|
|
85
|
+
getConfig,
|
|
86
|
+
setConfig,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Convenience Hooks
|
|
91
|
+
// ============================================================================
|
|
92
|
+
/**
|
|
93
|
+
* Hook for hover sound effects
|
|
94
|
+
*/
|
|
95
|
+
export function useHoverSound() {
|
|
96
|
+
const { play } = useGalaxySound({ debounceMs: 100 });
|
|
97
|
+
return useCallback(() => {
|
|
98
|
+
play('hover');
|
|
99
|
+
}, [play]);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Hook for selection sound effects
|
|
103
|
+
*/
|
|
104
|
+
export function useSelectionSound() {
|
|
105
|
+
const { play } = useGalaxySound();
|
|
106
|
+
const onSelect = useCallback(() => {
|
|
107
|
+
play('select');
|
|
108
|
+
}, [play]);
|
|
109
|
+
const onDeselect = useCallback(() => {
|
|
110
|
+
play('deselect');
|
|
111
|
+
}, [play]);
|
|
112
|
+
return { onSelect, onDeselect };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Hook for path activation sounds
|
|
116
|
+
*/
|
|
117
|
+
export function usePathSound() {
|
|
118
|
+
const { play, playVaried } = useGalaxySound({ debounceMs: 100 });
|
|
119
|
+
const onActivate = useCallback(() => {
|
|
120
|
+
play('pathActivate');
|
|
121
|
+
}, [play]);
|
|
122
|
+
const onDataFlow = useCallback(() => {
|
|
123
|
+
playVaried('dataFlow', 0.2);
|
|
124
|
+
}, [playVaried]);
|
|
125
|
+
return { onActivate, onDataFlow };
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=useGalaxySound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGalaxySound.js","sourceRoot":"","sources":["../../src/audio/useGalaxySound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GalaxyCamera Component
|
|
3
|
+
*
|
|
4
|
+
* Camera controls for the galaxy visualization.
|
|
5
|
+
* Handles orbit controls, zoom, and animated transitions.
|
|
6
|
+
*/
|
|
7
|
+
export interface GalaxyCameraProps {
|
|
8
|
+
/** Enable orbit controls (unused - controls always enabled) */
|
|
9
|
+
enableControls?: boolean;
|
|
10
|
+
/** Enable auto-rotation */
|
|
11
|
+
autoRotate?: boolean;
|
|
12
|
+
/** Auto-rotation speed */
|
|
13
|
+
autoRotateSpeed?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function GalaxyCamera({ enableControls: _enableControls, autoRotate, autoRotateSpeed, }: GalaxyCameraProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=GalaxyCamera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyCamera.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyCamera.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAgB,YAAY,CAAC,EAC3B,cAAc,EAAE,eAAsB,EACtC,UAAkB,EAClB,eAAqB,GACtB,EAAE,iBAAiB,2CAuEnB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* GalaxyCamera Component
|
|
4
|
+
*
|
|
5
|
+
* Camera controls for the galaxy visualization.
|
|
6
|
+
* Handles orbit controls, zoom, and animated transitions.
|
|
7
|
+
*/
|
|
8
|
+
import { useRef, useEffect } from 'react';
|
|
9
|
+
import { useThree, useFrame } from '@react-three/fiber';
|
|
10
|
+
import { OrbitControls } from '@react-three/drei';
|
|
11
|
+
import * as THREE from 'three';
|
|
12
|
+
import { useGalaxyStore } from '../../store/index.js';
|
|
13
|
+
import { CAMERA_CONFIG } from '../../constants/index.js';
|
|
14
|
+
import { toThreeVector } from '../../utils/geometry-utils.js';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Component
|
|
17
|
+
// ============================================================================
|
|
18
|
+
export function GalaxyCamera({ enableControls: _enableControls = true, autoRotate = false, autoRotateSpeed = 0.5, }) {
|
|
19
|
+
const controlsRef = useRef(null);
|
|
20
|
+
const { camera } = useThree();
|
|
21
|
+
const { camera: cameraState, setCameraPosition, setCameraTarget } = useGalaxyStore();
|
|
22
|
+
// Sync camera position from store
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (cameraState.position) {
|
|
25
|
+
const pos = toThreeVector(cameraState.position);
|
|
26
|
+
camera.position.copy(pos);
|
|
27
|
+
}
|
|
28
|
+
}, [cameraState.position, camera]);
|
|
29
|
+
// Sync target from store
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (controlsRef.current && cameraState.target) {
|
|
32
|
+
const target = toThreeVector(cameraState.target);
|
|
33
|
+
controlsRef.current.target.copy(target);
|
|
34
|
+
controlsRef.current.update();
|
|
35
|
+
}
|
|
36
|
+
}, [cameraState.target]);
|
|
37
|
+
// Apply zoom
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
camera.zoom = cameraState.zoom;
|
|
40
|
+
camera.updateProjectionMatrix();
|
|
41
|
+
}, [cameraState.zoom, camera]);
|
|
42
|
+
// Smooth camera transitions
|
|
43
|
+
useFrame(() => {
|
|
44
|
+
if (!controlsRef.current)
|
|
45
|
+
return;
|
|
46
|
+
// Update store with current camera position (for persistence)
|
|
47
|
+
const pos = camera.position;
|
|
48
|
+
const target = controlsRef.current.target;
|
|
49
|
+
// Only update if significantly changed (avoid infinite loops)
|
|
50
|
+
const posDiff = Math.abs(pos.x - cameraState.position.x) +
|
|
51
|
+
Math.abs(pos.y - cameraState.position.y) +
|
|
52
|
+
Math.abs(pos.z - cameraState.position.z);
|
|
53
|
+
if (posDiff > 0.1) {
|
|
54
|
+
setCameraPosition({ x: pos.x, y: pos.y, z: pos.z });
|
|
55
|
+
}
|
|
56
|
+
const targetDiff = Math.abs(target.x - cameraState.target.x) +
|
|
57
|
+
Math.abs(target.y - cameraState.target.y) +
|
|
58
|
+
Math.abs(target.z - cameraState.target.z);
|
|
59
|
+
if (targetDiff > 0.1) {
|
|
60
|
+
setCameraTarget({ x: target.x, y: target.y, z: target.z });
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// OrbitControls props vary by version, use spread with type assertion
|
|
64
|
+
const controlsProps = {
|
|
65
|
+
autoRotate,
|
|
66
|
+
autoRotateSpeed,
|
|
67
|
+
minDistance: CAMERA_CONFIG.MIN_ZOOM * 20,
|
|
68
|
+
maxDistance: CAMERA_CONFIG.MAX_ZOOM * 100,
|
|
69
|
+
maxPolarAngle: Math.PI * 0.85,
|
|
70
|
+
minPolarAngle: Math.PI * 0.15,
|
|
71
|
+
};
|
|
72
|
+
return (_jsx(OrbitControls, { ref: controlsRef, ...controlsProps }));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=GalaxyCamera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyCamera.js","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyCamera.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GalaxyCanvas Component
|
|
3
|
+
*
|
|
4
|
+
* Main Three.js canvas orchestrator for the galaxy visualization.
|
|
5
|
+
* Renders all nodes, connections, and effects.
|
|
6
|
+
*/
|
|
7
|
+
export interface GalaxyCanvasProps {
|
|
8
|
+
/** Custom class name */
|
|
9
|
+
className?: string;
|
|
10
|
+
/** Enable controls */
|
|
11
|
+
enableControls?: boolean;
|
|
12
|
+
/** Enable auto-rotation */
|
|
13
|
+
autoRotate?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function GalaxyCanvas({ className, enableControls, autoRotate, }: GalaxyCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=GalaxyCanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyCanvas.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAwLD,wBAAgB,YAAY,CAAC,EAC3B,SAAc,EACd,cAAqB,EACrB,UAAkB,GACnB,EAAE,iBAAiB,2CA8BnB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* GalaxyCanvas Component
|
|
4
|
+
*
|
|
5
|
+
* Main Three.js canvas orchestrator for the galaxy visualization.
|
|
6
|
+
* Renders all nodes, connections, and effects.
|
|
7
|
+
*/
|
|
8
|
+
import { Suspense, useMemo, useCallback } from 'react';
|
|
9
|
+
import { Canvas } from '@react-three/fiber';
|
|
10
|
+
import * as THREE from 'three';
|
|
11
|
+
import { useGalaxyStore, useFilteredTables, useFilteredPaths, useFilteredEntryPoints } from '../../store/index.js';
|
|
12
|
+
import { TablePlanet } from '../nodes/TablePlanet.js';
|
|
13
|
+
import { FieldMoon } from '../nodes/FieldMoon.js';
|
|
14
|
+
import { EntryPointStation } from '../nodes/EntryPointStation.js';
|
|
15
|
+
import { DataPathLane } from '../connections/DataPathLane.js';
|
|
16
|
+
import { TableRelationship } from '../connections/TableRelationship.js';
|
|
17
|
+
import { StarField } from '../effects/StarField.js';
|
|
18
|
+
import { GalaxyBloom } from '../effects/GalaxyBloom.js';
|
|
19
|
+
import { GalaxyCamera } from './GalaxyCamera.js';
|
|
20
|
+
import { GalaxyLighting } from './GalaxyLighting.js';
|
|
21
|
+
import { CAMERA_CONFIG } from '../../constants/index.js';
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Loading Fallback
|
|
24
|
+
// ============================================================================
|
|
25
|
+
function LoadingFallback() {
|
|
26
|
+
return (_jsxs("mesh", { children: [_jsx("sphereGeometry", { args: [1, 16, 16] }), _jsx("meshBasicMaterial", { color: "#4a5568", wireframe: true })] }));
|
|
27
|
+
}
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Galaxy Scene
|
|
30
|
+
// ============================================================================
|
|
31
|
+
function GalaxyScene() {
|
|
32
|
+
const { galaxyData, selection, display, selectTable, selectEntryPoint, selectPath, setHovered, } = useGalaxyStore();
|
|
33
|
+
const filteredTables = useFilteredTables();
|
|
34
|
+
const filteredPaths = useFilteredPaths();
|
|
35
|
+
const filteredEntryPoints = useFilteredEntryPoints();
|
|
36
|
+
// Create position lookup map
|
|
37
|
+
const positionMap = useMemo(() => {
|
|
38
|
+
const map = new Map();
|
|
39
|
+
if (galaxyData) {
|
|
40
|
+
for (const table of galaxyData.tables) {
|
|
41
|
+
if (table.position) {
|
|
42
|
+
map.set(table.id, table.position);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const ep of galaxyData.entryPoints) {
|
|
46
|
+
if (ep.position) {
|
|
47
|
+
map.set(ep.id, ep.position);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return map;
|
|
52
|
+
}, [galaxyData]);
|
|
53
|
+
// Handlers
|
|
54
|
+
const handleTableClick = useCallback((id) => {
|
|
55
|
+
selectTable(id);
|
|
56
|
+
}, [selectTable]);
|
|
57
|
+
const handleEntryPointClick = useCallback((id) => {
|
|
58
|
+
selectEntryPoint(id);
|
|
59
|
+
}, [selectEntryPoint]);
|
|
60
|
+
const handlePathClick = useCallback((id) => {
|
|
61
|
+
selectPath(id);
|
|
62
|
+
}, [selectPath]);
|
|
63
|
+
const handleHover = useCallback((id, type) => {
|
|
64
|
+
setHovered(id, type);
|
|
65
|
+
}, [setHovered]);
|
|
66
|
+
if (!galaxyData) {
|
|
67
|
+
return _jsx(LoadingFallback, {});
|
|
68
|
+
}
|
|
69
|
+
return (_jsxs(_Fragment, { children: [_jsx(StarField, {}), _jsx(GalaxyLighting, {}), _jsx(GalaxyCamera, {}), _jsx(GalaxyBloom, {}), display.showRelationships && galaxyData.relationships.map((rel) => {
|
|
70
|
+
const sourcePos = positionMap.get(rel.sourceTableId);
|
|
71
|
+
const targetPos = positionMap.get(rel.targetTableId);
|
|
72
|
+
if (!sourcePos || !targetPos)
|
|
73
|
+
return null;
|
|
74
|
+
const isHighlighted = selection.selectedTable === rel.sourceTableId ||
|
|
75
|
+
selection.selectedTable === rel.targetTableId;
|
|
76
|
+
return (_jsx(TableRelationship, { relationship: rel, sourcePosition: sourcePos, targetPosition: targetPos, isHighlighted: isHighlighted }, rel.id));
|
|
77
|
+
}), filteredPaths.map((path) => {
|
|
78
|
+
const sourcePos = positionMap.get(path.sourceId);
|
|
79
|
+
const targetPos = positionMap.get(path.targetTableId);
|
|
80
|
+
if (!sourcePos || !targetPos)
|
|
81
|
+
return null;
|
|
82
|
+
return (_jsx(DataPathLane, { path: path, sourcePosition: sourcePos, targetPosition: targetPos, isSelected: selection.selectedPath === path.id, isHovered: selection.hoveredNode === path.id, onClick: () => handlePathClick(path.id), onPointerOver: () => handleHover(path.id, 'path'), onPointerOut: () => handleHover(null, null) }, path.id));
|
|
83
|
+
}), filteredTables.map((table) => (_jsxs("group", { children: [_jsx(TablePlanet, { table: table, isSelected: selection.selectedTable === table.id, isHovered: selection.hoveredNode === table.id, onClick: () => handleTableClick(table.id), onPointerOver: () => handleHover(table.id, 'table'), onPointerOut: () => handleHover(null, null) }), display.showFields && table.position && table.fields.map((field, idx) => (_jsx(FieldMoon, { field: field, parentPosition: table.position, parentRadius: 1, orbitIndex: idx, totalFields: table.fields.length, isSelected: selection.selectedField === field.id, isHovered: selection.hoveredNode === field.id, onClick: () => selectTable(table.id), onPointerOver: () => handleHover(field.id, 'field'), onPointerOut: () => handleHover(null, null) }, field.id)))] }, table.id))), filteredEntryPoints.map((ep) => (_jsx(EntryPointStation, { entryPoint: ep, isSelected: selection.selectedEntryPoint === ep.id, isHovered: selection.hoveredNode === ep.id, onClick: () => handleEntryPointClick(ep.id), onPointerOver: () => handleHover(ep.id, 'entryPoint'), onPointerOut: () => handleHover(null, null) }, ep.id)))] }));
|
|
84
|
+
}
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Main Component
|
|
87
|
+
// ============================================================================
|
|
88
|
+
export function GalaxyCanvas({ className = '', enableControls = true, autoRotate = false, }) {
|
|
89
|
+
return (_jsx("div", { className: `w-full h-full ${className}`, children: _jsxs(Canvas, { camera: {
|
|
90
|
+
position: [
|
|
91
|
+
CAMERA_CONFIG.DEFAULT_POSITION.x,
|
|
92
|
+
CAMERA_CONFIG.DEFAULT_POSITION.y,
|
|
93
|
+
CAMERA_CONFIG.DEFAULT_POSITION.z,
|
|
94
|
+
],
|
|
95
|
+
fov: CAMERA_CONFIG.FOV,
|
|
96
|
+
near: CAMERA_CONFIG.NEAR,
|
|
97
|
+
far: CAMERA_CONFIG.FAR,
|
|
98
|
+
}, gl: {
|
|
99
|
+
antialias: true,
|
|
100
|
+
toneMapping: THREE.ACESFilmicToneMapping,
|
|
101
|
+
toneMappingExposure: 1,
|
|
102
|
+
}, dpr: [1, 2], children: [_jsx("color", { attach: "background", args: ['#0f172a'] }), _jsx("fog", { attach: "fog", args: ['#0f172a', 50, 200] }), _jsx(Suspense, { fallback: _jsx(LoadingFallback, {}), children: _jsx(GalaxyScene, {}) })] }) }));
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=GalaxyCanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyCanvas.js","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyCanvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GalaxyLighting Component
|
|
3
|
+
*
|
|
4
|
+
* Scene lighting setup for the galaxy visualization.
|
|
5
|
+
* Creates ambient space lighting with accent lights for depth.
|
|
6
|
+
*/
|
|
7
|
+
export declare function GalaxyLighting(): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=GalaxyLighting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyLighting.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyLighting.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,wBAAgB,cAAc,4CA8E7B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* GalaxyLighting Component
|
|
4
|
+
*
|
|
5
|
+
* Scene lighting setup for the galaxy visualization.
|
|
6
|
+
* Creates ambient space lighting with accent lights for depth.
|
|
7
|
+
*/
|
|
8
|
+
import { useRef } from 'react';
|
|
9
|
+
import { useFrame } from '@react-three/fiber';
|
|
10
|
+
import * as THREE from 'three';
|
|
11
|
+
import { useGalaxyStore } from '../../store/index.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Component
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export function GalaxyLighting() {
|
|
16
|
+
const pointLight1Ref = useRef(null);
|
|
17
|
+
const pointLight2Ref = useRef(null);
|
|
18
|
+
const { viewMode } = useGalaxyStore();
|
|
19
|
+
// Subtle light movement for atmosphere
|
|
20
|
+
useFrame((state) => {
|
|
21
|
+
const time = state.clock.elapsedTime;
|
|
22
|
+
if (pointLight1Ref.current) {
|
|
23
|
+
pointLight1Ref.current.position.x = Math.sin(time * 0.1) * 30;
|
|
24
|
+
pointLight1Ref.current.position.z = Math.cos(time * 0.1) * 30;
|
|
25
|
+
}
|
|
26
|
+
if (pointLight2Ref.current) {
|
|
27
|
+
pointLight2Ref.current.position.x = Math.cos(time * 0.08) * 25;
|
|
28
|
+
pointLight2Ref.current.position.z = Math.sin(time * 0.08) * 25;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// Adjust lighting based on view mode
|
|
32
|
+
const ambientIntensity = viewMode === 'security' ? 0.2 : 0.3;
|
|
33
|
+
const pointIntensity = viewMode === 'security' ? 0.8 : 0.6;
|
|
34
|
+
return (_jsxs(_Fragment, { children: [_jsx("ambientLight", { intensity: ambientIntensity, color: "#4a5568" }), _jsx("directionalLight", { position: [50, 50, 25], intensity: 0.5, color: "#ffffff", castShadow: false }), _jsx("pointLight", { ref: pointLight1Ref, position: [30, 20, 30], intensity: pointIntensity, color: "#60a5fa", distance: 100, decay: 2 }), _jsx("pointLight", { ref: pointLight2Ref, position: [-25, -10, -25], intensity: pointIntensity * 0.7, color: "#f472b6", distance: 80, decay: 2 }), _jsx("pointLight", { position: [0, 0, 0], intensity: 0.4, color: "#a78bfa", distance: 50, decay: 2 }), viewMode === 'security' && (_jsx("pointLight", { position: [0, 30, 0], intensity: 0.3, color: "#ef4444", distance: 100, decay: 2 }))] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=GalaxyLighting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyLighting.js","sourceRoot":"","sources":["../../../src/components/canvas/GalaxyLighting.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all canvas/scene components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { GalaxyCanvas } from './GalaxyCanvas.js';
|
|
7
|
+
export type { GalaxyCanvasProps } from './GalaxyCanvas.js';
|
|
8
|
+
export { GalaxyCamera } from './GalaxyCamera.js';
|
|
9
|
+
export type { GalaxyCameraProps } from './GalaxyCamera.js';
|
|
10
|
+
export { GalaxyLighting } from './GalaxyLighting.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all canvas/scene components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { GalaxyCanvas } from './GalaxyCanvas.js';
|
|
7
|
+
export { GalaxyCamera } from './GalaxyCamera.js';
|
|
8
|
+
export { GalaxyLighting } from './GalaxyLighting.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataPathLane Component
|
|
3
|
+
*
|
|
4
|
+
* Renders a data access path as a curved "hyperspace lane" between
|
|
5
|
+
* entry points and tables. Animated particles flow along the path.
|
|
6
|
+
*/
|
|
7
|
+
import type { DataPath, Vector3D } from '../../types/index.js';
|
|
8
|
+
export interface DataPathLaneProps {
|
|
9
|
+
/** Path data */
|
|
10
|
+
path: DataPath;
|
|
11
|
+
/** Source position */
|
|
12
|
+
sourcePosition: Vector3D;
|
|
13
|
+
/** Target position */
|
|
14
|
+
targetPosition: Vector3D;
|
|
15
|
+
/** Whether this path is selected */
|
|
16
|
+
isSelected?: boolean;
|
|
17
|
+
/** Whether this path is hovered */
|
|
18
|
+
isHovered?: boolean;
|
|
19
|
+
/** Click handler */
|
|
20
|
+
onClick?: () => void;
|
|
21
|
+
/** Hover handlers */
|
|
22
|
+
onPointerOver?: () => void;
|
|
23
|
+
onPointerOut?: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function DataPathLane({ path, sourcePosition, targetPosition, isSelected, isHovered, onClick, onPointerOver, onPointerOut, }: DataPathLaneProps): import("react/jsx-runtime").JSX.Element | null;
|
|
26
|
+
//# sourceMappingURL=DataPathLane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataPathLane.d.ts","sourceRoot":"","sources":["../../../src/components/connections/DataPathLane.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAU/D,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,sBAAsB;IACtB,cAAc,EAAE,QAAQ,CAAC;IACzB,sBAAsB;IACtB,cAAc,EAAE,QAAQ,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAMD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,cAAc,EACd,cAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,iBAAiB,kDAyGnB"}
|