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,71 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* DataPathLane Component
|
|
4
|
+
*
|
|
5
|
+
* Renders a data access path as a curved "hyperspace lane" between
|
|
6
|
+
* entry points and tables. Animated particles flow along the path.
|
|
7
|
+
*/
|
|
8
|
+
import { useRef, useMemo } from 'react';
|
|
9
|
+
import { useFrame } from '@react-three/fiber';
|
|
10
|
+
import { Line } from '@react-three/drei';
|
|
11
|
+
import * as THREE from 'three';
|
|
12
|
+
import { useGalaxyStore } from '../../store/index.js';
|
|
13
|
+
import { getOperationThreeColor, getSensitivityThreeColor } from '../../utils/color-utils.js';
|
|
14
|
+
import { generateCurvedPath, calculatePathWidth, toThreeVector } from '../../utils/geometry-utils.js';
|
|
15
|
+
import { PATH_CONFIG, ANIMATION_CONFIG } from '../../constants/index.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Component
|
|
18
|
+
// ============================================================================
|
|
19
|
+
export function DataPathLane({ path, sourcePosition, targetPosition, isSelected = false, isHovered = false, onClick, onPointerOver, onPointerOut, }) {
|
|
20
|
+
const lineRef = useRef(null);
|
|
21
|
+
const dashOffsetRef = useRef(0);
|
|
22
|
+
const { display, viewMode } = useGalaxyStore();
|
|
23
|
+
// Generate curved path
|
|
24
|
+
const curve = useMemo(() => {
|
|
25
|
+
return generateCurvedPath(sourcePosition, targetPosition, PATH_CONFIG.CURVE_SEGMENTS);
|
|
26
|
+
}, [sourcePosition, targetPosition]);
|
|
27
|
+
// Get points along curve
|
|
28
|
+
const points = useMemo(() => {
|
|
29
|
+
return curve.getPoints(PATH_CONFIG.CURVE_SEGMENTS);
|
|
30
|
+
}, [curve]);
|
|
31
|
+
// Calculate width based on frequency
|
|
32
|
+
const lineWidth = useMemo(() => {
|
|
33
|
+
return calculatePathWidth(path.frequency, PATH_CONFIG.BASE_WIDTH, PATH_CONFIG.MAX_WIDTH);
|
|
34
|
+
}, [path.frequency]);
|
|
35
|
+
// Get color based on operation or sensitivity
|
|
36
|
+
const color = useMemo(() => {
|
|
37
|
+
if (viewMode === 'security') {
|
|
38
|
+
return getSensitivityThreeColor(path.sensitivity);
|
|
39
|
+
}
|
|
40
|
+
return getOperationThreeColor(path.operation);
|
|
41
|
+
}, [path.operation, path.sensitivity, viewMode]);
|
|
42
|
+
// Determine opacity
|
|
43
|
+
const opacity = useMemo(() => {
|
|
44
|
+
let base = display.pathOpacity;
|
|
45
|
+
// Highlight untested paths in coverage mode
|
|
46
|
+
if (viewMode === 'coverage' && !path.isTested) {
|
|
47
|
+
base = Math.min(1, base * 1.5);
|
|
48
|
+
}
|
|
49
|
+
// Dim if not selected/hovered and something else is
|
|
50
|
+
if (isSelected)
|
|
51
|
+
return 1;
|
|
52
|
+
if (isHovered)
|
|
53
|
+
return Math.min(1, base * 1.3);
|
|
54
|
+
return base;
|
|
55
|
+
}, [display.pathOpacity, viewMode, path.isTested, isSelected, isHovered]);
|
|
56
|
+
// Animation - flowing dashes
|
|
57
|
+
useFrame((_, delta) => {
|
|
58
|
+
if (!lineRef.current)
|
|
59
|
+
return;
|
|
60
|
+
dashOffsetRef.current -= PATH_CONFIG.FLOW_SPEED * delta * display.animationSpeed;
|
|
61
|
+
const material = lineRef.current.material;
|
|
62
|
+
if (material && 'dashOffset' in material) {
|
|
63
|
+
material.dashOffset = dashOffsetRef.current;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// Don't render if paths are hidden
|
|
67
|
+
if (!display.showPaths)
|
|
68
|
+
return null;
|
|
69
|
+
return (_jsxs("group", { onClick: onClick, onPointerOver: onPointerOver, onPointerOut: onPointerOut, children: [_jsx(Line, { ref: lineRef, points: points, color: color, lineWidth: isSelected ? lineWidth * 2 : lineWidth, transparent: true, opacity: opacity, dashed: true, dashSize: PATH_CONFIG.DASH_SIZE, gapSize: PATH_CONFIG.GAP_SIZE }), (isSelected || isHovered) && (_jsx(Line, { points: points, color: color, lineWidth: lineWidth * 3, transparent: true, opacity: opacity * 0.3 })), !path.isTested && viewMode === 'coverage' && (_jsx(Line, { points: points, color: "#ef4444", lineWidth: lineWidth * 0.5, transparent: true, opacity: 0.5, dashed: true, dashSize: 0.2, gapSize: 0.8 }))] }));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=DataPathLane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataPathLane.js","sourceRoot":"","sources":["../../../src/components/connections/DataPathLane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableRelationship Component
|
|
3
|
+
*
|
|
4
|
+
* Renders a foreign key relationship between tables as a subtle
|
|
5
|
+
* gravitational link line.
|
|
6
|
+
*/
|
|
7
|
+
import type { TableRelationship as TableRelationshipType, Vector3D } from '../../types/index.js';
|
|
8
|
+
export interface TableRelationshipProps {
|
|
9
|
+
/** Relationship data */
|
|
10
|
+
relationship: TableRelationshipType;
|
|
11
|
+
/** Source table position */
|
|
12
|
+
sourcePosition: Vector3D;
|
|
13
|
+
/** Target table position */
|
|
14
|
+
targetPosition: Vector3D;
|
|
15
|
+
/** Whether either table is selected */
|
|
16
|
+
isHighlighted?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function TableRelationship({ relationship, sourcePosition, targetPosition, isHighlighted, }: TableRelationshipProps): import("react/jsx-runtime").JSX.Element | null;
|
|
19
|
+
//# sourceMappingURL=TableRelationship.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableRelationship.d.ts","sourceRoot":"","sources":["../../../src/components/connections/TableRelationship.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQjG,MAAM,WAAW,sBAAsB;IACrC,wBAAwB;IACxB,YAAY,EAAE,qBAAqB,CAAC;IACpC,4BAA4B;IAC5B,cAAc,EAAE,QAAQ,CAAC;IACzB,4BAA4B;IAC5B,cAAc,EAAE,QAAQ,CAAC;IACzB,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgBD,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAqB,GACtB,EAAE,sBAAsB,kDA6DxB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* TableRelationship Component
|
|
4
|
+
*
|
|
5
|
+
* Renders a foreign key relationship between tables as a subtle
|
|
6
|
+
* gravitational link line.
|
|
7
|
+
*/
|
|
8
|
+
import { useMemo } from 'react';
|
|
9
|
+
import { Line } from '@react-three/drei';
|
|
10
|
+
import * as THREE from 'three';
|
|
11
|
+
import { useGalaxyStore } from '../../store/index.js';
|
|
12
|
+
import { toThreeVector, midpoint } from '../../utils/geometry-utils.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Relationship Type Colors
|
|
15
|
+
// ============================================================================
|
|
16
|
+
const RELATIONSHIP_COLORS = {
|
|
17
|
+
'one-to-one': '#60a5fa', // Blue
|
|
18
|
+
'one-to-many': '#34d399', // Green
|
|
19
|
+
'many-to-many': '#a78bfa', // Purple
|
|
20
|
+
};
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Component
|
|
23
|
+
// ============================================================================
|
|
24
|
+
export function TableRelationship({ relationship, sourcePosition, targetPosition, isHighlighted = false, }) {
|
|
25
|
+
const { display } = useGalaxyStore();
|
|
26
|
+
// Calculate curve points (slight arc)
|
|
27
|
+
const points = useMemo(() => {
|
|
28
|
+
const start = toThreeVector(sourcePosition);
|
|
29
|
+
const end = toThreeVector(targetPosition);
|
|
30
|
+
const mid = toThreeVector(midpoint(sourcePosition, targetPosition));
|
|
31
|
+
// Add slight vertical offset to midpoint for arc effect
|
|
32
|
+
mid.y += 1;
|
|
33
|
+
// Create quadratic bezier curve
|
|
34
|
+
const curve = new THREE.QuadraticBezierCurve3(start, mid, end);
|
|
35
|
+
return curve.getPoints(20);
|
|
36
|
+
}, [sourcePosition, targetPosition]);
|
|
37
|
+
// Get color based on relationship type
|
|
38
|
+
const color = useMemo(() => {
|
|
39
|
+
return RELATIONSHIP_COLORS[relationship.type] || '#6b7280';
|
|
40
|
+
}, [relationship.type]);
|
|
41
|
+
// Don't render if relationships are hidden
|
|
42
|
+
if (!display.showRelationships)
|
|
43
|
+
return null;
|
|
44
|
+
return (_jsxs("group", { children: [_jsx(Line, { points: points, color: color, lineWidth: isHighlighted ? 2 : 1, transparent: true, opacity: isHighlighted ? 0.8 : 0.3, dashed: !isHighlighted, dashSize: 0.3, gapSize: 0.2 }), isHighlighted && (_jsxs(_Fragment, { children: [_jsxs("mesh", { position: toThreeVector(sourcePosition), children: [_jsx("sphereGeometry", { args: [0.15, 8, 8] }), _jsx("meshBasicMaterial", { color: color, transparent: true, opacity: 0.8 })] }), _jsxs("mesh", { position: toThreeVector(targetPosition), children: [relationship.type.endsWith('many') ? (_jsx("coneGeometry", { args: [0.2, 0.3, 8] })) : (_jsx("sphereGeometry", { args: [0.15, 8, 8] })), _jsx("meshBasicMaterial", { color: color, transparent: true, opacity: 0.8 })] })] }))] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=TableRelationship.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableRelationship.js","sourceRoot":"","sources":["../../../src/components/connections/TableRelationship.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all connection/path components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { DataPathLane } from './DataPathLane.js';
|
|
7
|
+
export type { DataPathLaneProps } from './DataPathLane.js';
|
|
8
|
+
export { TableRelationship } from './TableRelationship.js';
|
|
9
|
+
export type { TableRelationshipProps } from './TableRelationship.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/connections/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,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all connection/path components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { DataPathLane } from './DataPathLane.js';
|
|
7
|
+
export { TableRelationship } from './TableRelationship.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/connections/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AccessPulse Component
|
|
3
|
+
*
|
|
4
|
+
* Renders an animated pulse effect when data is accessed.
|
|
5
|
+
* Shows a particle traveling from entry point to table.
|
|
6
|
+
*/
|
|
7
|
+
import type { Vector3D, DataOperation } from '../../types/index.js';
|
|
8
|
+
export interface AccessPulseProps {
|
|
9
|
+
/** Unique ID for this pulse */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Source position (entry point) */
|
|
12
|
+
sourcePosition: Vector3D;
|
|
13
|
+
/** Target position (table) */
|
|
14
|
+
targetPosition: Vector3D;
|
|
15
|
+
/** Operation type */
|
|
16
|
+
operation: DataOperation;
|
|
17
|
+
/** Duration in milliseconds */
|
|
18
|
+
duration?: number;
|
|
19
|
+
/** Callback when animation completes */
|
|
20
|
+
onComplete?: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function AccessPulse({ id, sourcePosition, targetPosition, operation, duration, onComplete, }: AccessPulseProps): import("react/jsx-runtime").JSX.Element | null;
|
|
23
|
+
//# sourceMappingURL=AccessPulse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessPulse.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AccessPulse.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASpE,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,cAAc,EAAE,QAAQ,CAAC;IACzB,8BAA8B;IAC9B,cAAc,EAAE,QAAQ,CAAC;IACzB,qBAAqB;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,EAAE,EACF,cAAc,EACd,cAAc,EACd,SAAS,EACT,QAAyC,EACzC,UAAU,GACX,EAAE,gBAAgB,kDA2GlB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* AccessPulse Component
|
|
4
|
+
*
|
|
5
|
+
* Renders an animated pulse effect when data is accessed.
|
|
6
|
+
* Shows a particle traveling from entry point to table.
|
|
7
|
+
*/
|
|
8
|
+
import { useRef, useState, useEffect } from 'react';
|
|
9
|
+
import { useFrame } from '@react-three/fiber';
|
|
10
|
+
import * as THREE from 'three';
|
|
11
|
+
import { getOperationThreeColor } from '../../utils/color-utils.js';
|
|
12
|
+
import { generateCurvedPath, toThreeVector } from '../../utils/geometry-utils.js';
|
|
13
|
+
import { PARTICLE_CONFIG } from '../../constants/index.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Component
|
|
16
|
+
// ============================================================================
|
|
17
|
+
export function AccessPulse({ id, sourcePosition, targetPosition, operation, duration = PARTICLE_CONFIG.PULSE_DURATION, onComplete, }) {
|
|
18
|
+
const meshRef = useRef(null);
|
|
19
|
+
const trailRef = useRef(null);
|
|
20
|
+
const progressRef = useRef(0);
|
|
21
|
+
const [isComplete, setIsComplete] = useState(false);
|
|
22
|
+
// Generate path curve
|
|
23
|
+
const curve = generateCurvedPath(sourcePosition, targetPosition);
|
|
24
|
+
// Get color based on operation
|
|
25
|
+
const color = getOperationThreeColor(operation);
|
|
26
|
+
// Trail positions buffer
|
|
27
|
+
const trailPositions = useRef(new Float32Array(PARTICLE_CONFIG.TRAIL_LENGTH * 3));
|
|
28
|
+
const trailIndex = useRef(0);
|
|
29
|
+
// Animation
|
|
30
|
+
useFrame((_, delta) => {
|
|
31
|
+
if (isComplete || !meshRef.current)
|
|
32
|
+
return;
|
|
33
|
+
// Update progress
|
|
34
|
+
const speed = 1000 / duration;
|
|
35
|
+
progressRef.current += delta * speed;
|
|
36
|
+
if (progressRef.current >= 1) {
|
|
37
|
+
setIsComplete(true);
|
|
38
|
+
onComplete?.();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Get position on curve
|
|
42
|
+
const point = curve.getPoint(progressRef.current);
|
|
43
|
+
meshRef.current.position.copy(point);
|
|
44
|
+
// Update trail
|
|
45
|
+
if (trailRef.current) {
|
|
46
|
+
const positions = trailPositions.current;
|
|
47
|
+
const idx = (trailIndex.current % PARTICLE_CONFIG.TRAIL_LENGTH) * 3;
|
|
48
|
+
positions[idx] = point.x;
|
|
49
|
+
positions[idx + 1] = point.y;
|
|
50
|
+
positions[idx + 2] = point.z;
|
|
51
|
+
trailIndex.current++;
|
|
52
|
+
const geometry = trailRef.current.geometry;
|
|
53
|
+
const posAttr = geometry.getAttribute('position');
|
|
54
|
+
if (posAttr) {
|
|
55
|
+
posAttr.needsUpdate = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Scale pulse based on progress (grow then shrink)
|
|
59
|
+
const scale = Math.sin(progressRef.current * Math.PI) * 0.5 + 0.5;
|
|
60
|
+
meshRef.current.scale.setScalar(scale);
|
|
61
|
+
});
|
|
62
|
+
// Cleanup effect
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
return () => {
|
|
65
|
+
// Cleanup if unmounted before completion
|
|
66
|
+
};
|
|
67
|
+
}, []);
|
|
68
|
+
if (isComplete)
|
|
69
|
+
return null;
|
|
70
|
+
return (_jsxs("group", { children: [_jsxs("mesh", { ref: meshRef, position: toThreeVector(sourcePosition), children: [_jsx("sphereGeometry", { args: [0.3, 16, 16] }), _jsx("meshBasicMaterial", { color: color, transparent: true, opacity: 0.9 })] }), _jsxs("mesh", { ref: meshRef, position: toThreeVector(sourcePosition), children: [_jsx("sphereGeometry", { args: [0.5, 8, 8] }), _jsx("meshBasicMaterial", { color: color, transparent: true, opacity: 0.3, side: THREE.BackSide })] }), _jsxs("points", { ref: trailRef, children: [_jsx("bufferGeometry", { children: _jsx("bufferAttribute", { attach: "attributes-position", count: PARTICLE_CONFIG.TRAIL_LENGTH, array: trailPositions.current, itemSize: 3 }) }), _jsx("pointsMaterial", { color: color, size: 0.1, transparent: true, opacity: 0.5, sizeAttenuation: true })] })] }));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=AccessPulse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessPulse.js","sourceRoot":"","sources":["../../../src/components/effects/AccessPulse.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyBloom.d.ts","sourceRoot":"","sources":["../../../src/components/effects/GalaxyBloom.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,wBAAgB,WAAW,SAS1B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GalaxyBloom Component
|
|
3
|
+
*
|
|
4
|
+
* Post-processing bloom effect for the galaxy visualization.
|
|
5
|
+
* Makes sensitive data glow and creates the space atmosphere.
|
|
6
|
+
*/
|
|
7
|
+
// Note: @react-three/postprocessing exports may vary by version
|
|
8
|
+
// Using dynamic import pattern for compatibility
|
|
9
|
+
import { useGalaxyStore } from '../../store/index.js';
|
|
10
|
+
import { BLOOM_CONFIG } from '../../constants/index.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Component
|
|
13
|
+
// ============================================================================
|
|
14
|
+
export function GalaxyBloom() {
|
|
15
|
+
const { display } = useGalaxyStore();
|
|
16
|
+
// Bloom effect is handled by the parent canvas for now
|
|
17
|
+
// This component serves as a placeholder for future post-processing
|
|
18
|
+
if (!display.enableBloom)
|
|
19
|
+
return null;
|
|
20
|
+
// Return null - bloom will be configured at canvas level
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=GalaxyBloom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalaxyBloom.js","sourceRoot":"","sources":["../../../src/components/effects/GalaxyBloom.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gEAAgE;AAChE,iDAAiD;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAErC,uDAAuD;IACvD,oEAAoE;IACpE,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAEtC,yDAAyD;IACzD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StarField Component
|
|
3
|
+
*
|
|
4
|
+
* Renders a background of twinkling stars using instanced points.
|
|
5
|
+
* Creates the space atmosphere for the galaxy visualization.
|
|
6
|
+
*/
|
|
7
|
+
export interface StarFieldProps {
|
|
8
|
+
/** Number of stars */
|
|
9
|
+
count?: number;
|
|
10
|
+
/** Radius of star field */
|
|
11
|
+
radius?: number;
|
|
12
|
+
/** Base star size */
|
|
13
|
+
size?: number;
|
|
14
|
+
/** Enable twinkling animation */
|
|
15
|
+
twinkle?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function StarField({ count, radius, size, twinkle, }: StarFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=StarField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarField.d.ts","sourceRoot":"","sources":["../../../src/components/effects/StarField.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,cAAc;IAC7B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAgB,SAAS,CAAC,EACxB,KAAkC,EAClC,MAAiC,EACjC,IAAgC,EAChC,OAAc,GACf,EAAE,cAAc,2CA2GhB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* StarField Component
|
|
4
|
+
*
|
|
5
|
+
* Renders a background of twinkling stars using instanced points.
|
|
6
|
+
* Creates the space atmosphere for the galaxy visualization.
|
|
7
|
+
*/
|
|
8
|
+
import { useRef, useMemo } from 'react';
|
|
9
|
+
import { useFrame } from '@react-three/fiber';
|
|
10
|
+
import { Points, PointMaterial } from '@react-three/drei';
|
|
11
|
+
import * as THREE from 'three';
|
|
12
|
+
import { PARTICLE_CONFIG, GALAXY_LAYOUT } from '../../constants/index.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Component
|
|
15
|
+
// ============================================================================
|
|
16
|
+
export function StarField({ count = PARTICLE_CONFIG.STAR_COUNT, radius = GALAXY_LAYOUT.RADIUS * 3, size = PARTICLE_CONFIG.STAR_SIZE, twinkle = true, }) {
|
|
17
|
+
const pointsRef = useRef(null);
|
|
18
|
+
// Generate random star positions
|
|
19
|
+
const positions = useMemo(() => {
|
|
20
|
+
const pos = new Float32Array(count * 3);
|
|
21
|
+
for (let i = 0; i < count; i++) {
|
|
22
|
+
// Spherical distribution
|
|
23
|
+
const theta = Math.random() * Math.PI * 2;
|
|
24
|
+
const phi = Math.acos(2 * Math.random() - 1);
|
|
25
|
+
const r = radius * (0.5 + Math.random() * 0.5);
|
|
26
|
+
pos[i * 3] = r * Math.sin(phi) * Math.cos(theta);
|
|
27
|
+
pos[i * 3 + 1] = r * Math.sin(phi) * Math.sin(theta);
|
|
28
|
+
pos[i * 3 + 2] = r * Math.cos(phi);
|
|
29
|
+
}
|
|
30
|
+
return pos;
|
|
31
|
+
}, [count, radius]);
|
|
32
|
+
// Generate random sizes for variation
|
|
33
|
+
const sizes = useMemo(() => {
|
|
34
|
+
const s = new Float32Array(count);
|
|
35
|
+
for (let i = 0; i < count; i++) {
|
|
36
|
+
s[i] = size * (0.5 + Math.random() * 1.5);
|
|
37
|
+
}
|
|
38
|
+
return s;
|
|
39
|
+
}, [count, size]);
|
|
40
|
+
// Generate random colors (slight color variation)
|
|
41
|
+
const colors = useMemo(() => {
|
|
42
|
+
const c = new Float32Array(count * 3);
|
|
43
|
+
for (let i = 0; i < count; i++) {
|
|
44
|
+
// Mostly white with slight blue/yellow tint
|
|
45
|
+
const tint = Math.random();
|
|
46
|
+
if (tint < 0.1) {
|
|
47
|
+
// Blue star
|
|
48
|
+
c[i * 3] = 0.7;
|
|
49
|
+
c[i * 3 + 1] = 0.8;
|
|
50
|
+
c[i * 3 + 2] = 1;
|
|
51
|
+
}
|
|
52
|
+
else if (tint < 0.2) {
|
|
53
|
+
// Yellow star
|
|
54
|
+
c[i * 3] = 1;
|
|
55
|
+
c[i * 3 + 1] = 0.95;
|
|
56
|
+
c[i * 3 + 2] = 0.8;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// White star
|
|
60
|
+
c[i * 3] = 1;
|
|
61
|
+
c[i * 3 + 1] = 1;
|
|
62
|
+
c[i * 3 + 2] = 1;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return c;
|
|
66
|
+
}, [count]);
|
|
67
|
+
// Twinkling animation
|
|
68
|
+
useFrame((state) => {
|
|
69
|
+
if (!twinkle || !pointsRef.current)
|
|
70
|
+
return;
|
|
71
|
+
const geometry = pointsRef.current.geometry;
|
|
72
|
+
const sizeAttr = geometry.getAttribute('size');
|
|
73
|
+
if (sizeAttr) {
|
|
74
|
+
const time = state.clock.elapsedTime;
|
|
75
|
+
for (let i = 0; i < count; i++) {
|
|
76
|
+
// Each star twinkles at different rate
|
|
77
|
+
const twinkleSpeed = 0.5 + (i % 10) * 0.1;
|
|
78
|
+
const twinkleAmount = Math.sin(time * twinkleSpeed + i) * 0.3 + 0.7;
|
|
79
|
+
sizeAttr.array[i] = sizes[i] * twinkleAmount;
|
|
80
|
+
}
|
|
81
|
+
sizeAttr.needsUpdate = true;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return (_jsxs(Points, { ref: pointsRef, limit: count, children: [_jsxs("bufferGeometry", { children: [_jsx("bufferAttribute", { attach: "attributes-position", count: count, array: positions, itemSize: 3 }), _jsx("bufferAttribute", { attach: "attributes-color", count: count, array: colors, itemSize: 3 }), _jsx("bufferAttribute", { attach: "attributes-size", count: count, array: sizes, itemSize: 1 })] }), _jsx(PointMaterial, { transparent: true, vertexColors: true, size: size, sizeAttenuation: true, depthWrite: false, opacity: 0.8 })] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=StarField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarField.js","sourceRoot":"","sources":["../../../src/components/effects/StarField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effects Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all visual effect components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { StarField } from './StarField.js';
|
|
7
|
+
export type { StarFieldProps } from './StarField.js';
|
|
8
|
+
export { AccessPulse } from './AccessPulse.js';
|
|
9
|
+
export type { AccessPulseProps } from './AccessPulse.js';
|
|
10
|
+
export { GalaxyBloom } from './GalaxyBloom.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/effects/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effects Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all visual effect components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export { StarField } from './StarField.js';
|
|
7
|
+
export { AccessPulse } from './AccessPulse.js';
|
|
8
|
+
export { GalaxyBloom } from './GalaxyBloom.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/effects/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
export * from './nodes/index.js';
|
|
7
|
+
export * from './connections/index.js';
|
|
8
|
+
export * from './effects/index.js';
|
|
9
|
+
export * from './canvas/index.js';
|
|
10
|
+
export * from './ui/index.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Components Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all components for the galaxy visualization.
|
|
5
|
+
*/
|
|
6
|
+
// Node components
|
|
7
|
+
export * from './nodes/index.js';
|
|
8
|
+
// Connection components
|
|
9
|
+
export * from './connections/index.js';
|
|
10
|
+
// Effect components
|
|
11
|
+
export * from './effects/index.js';
|
|
12
|
+
// Canvas components
|
|
13
|
+
export * from './canvas/index.js';
|
|
14
|
+
// UI components
|
|
15
|
+
export * from './ui/index.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,wBAAwB;AACxB,cAAc,wBAAwB,CAAC;AAEvC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AAEnC,oBAAoB;AACpB,cAAc,mBAAmB,CAAC;AAElC,gBAAgB;AAChB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EntryPointStation Component
|
|
3
|
+
*
|
|
4
|
+
* Renders an API entry point as a space station at the galaxy edge.
|
|
5
|
+
* Color indicates authentication level (red = public, green = protected).
|
|
6
|
+
*/
|
|
7
|
+
import type { EntryPointNode } from '../../types/index.js';
|
|
8
|
+
export interface EntryPointStationProps {
|
|
9
|
+
/** Entry point data */
|
|
10
|
+
entryPoint: EntryPointNode;
|
|
11
|
+
/** Whether this entry point is selected */
|
|
12
|
+
isSelected?: boolean;
|
|
13
|
+
/** Whether this entry point is hovered */
|
|
14
|
+
isHovered?: boolean;
|
|
15
|
+
/** Click handler */
|
|
16
|
+
onClick?: () => void;
|
|
17
|
+
/** Hover handlers */
|
|
18
|
+
onPointerOver?: () => void;
|
|
19
|
+
onPointerOut?: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function EntryPointStation({ entryPoint, isSelected, isHovered, onClick, onPointerOver, onPointerOut, }: EntryPointStationProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=EntryPointStation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntryPointStation.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/EntryPointStation.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAc3D,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,UAAU,EAAE,cAAc,CAAC;IAC3B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,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;AAmBD,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,UAAkB,EAClB,SAAiB,EACjB,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,sBAAsB,2CAuMxB"}
|