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.
Files changed (149) hide show
  1. package/dist/audio/index.d.ts +8 -0
  2. package/dist/audio/index.d.ts.map +1 -0
  3. package/dist/audio/index.js +8 -0
  4. package/dist/audio/index.js.map +1 -0
  5. package/dist/audio/sound-effects.d.ts +78 -0
  6. package/dist/audio/sound-effects.d.ts.map +1 -0
  7. package/dist/audio/sound-effects.js +660 -0
  8. package/dist/audio/sound-effects.js.map +1 -0
  9. package/dist/audio/useGalaxySound.d.ts +70 -0
  10. package/dist/audio/useGalaxySound.d.ts.map +1 -0
  11. package/dist/audio/useGalaxySound.js +127 -0
  12. package/dist/audio/useGalaxySound.js.map +1 -0
  13. package/dist/components/canvas/GalaxyCamera.d.ts +16 -0
  14. package/dist/components/canvas/GalaxyCamera.d.ts.map +1 -0
  15. package/dist/components/canvas/GalaxyCamera.js +74 -0
  16. package/dist/components/canvas/GalaxyCamera.js.map +1 -0
  17. package/dist/components/canvas/GalaxyCanvas.d.ts +16 -0
  18. package/dist/components/canvas/GalaxyCanvas.d.ts.map +1 -0
  19. package/dist/components/canvas/GalaxyCanvas.js +104 -0
  20. package/dist/components/canvas/GalaxyCanvas.js.map +1 -0
  21. package/dist/components/canvas/GalaxyLighting.d.ts +8 -0
  22. package/dist/components/canvas/GalaxyLighting.d.ts.map +1 -0
  23. package/dist/components/canvas/GalaxyLighting.js +36 -0
  24. package/dist/components/canvas/GalaxyLighting.js.map +1 -0
  25. package/dist/components/canvas/index.d.ts +11 -0
  26. package/dist/components/canvas/index.d.ts.map +1 -0
  27. package/dist/components/canvas/index.js +9 -0
  28. package/dist/components/canvas/index.js.map +1 -0
  29. package/dist/components/connections/DataPathLane.d.ts +26 -0
  30. package/dist/components/connections/DataPathLane.d.ts.map +1 -0
  31. package/dist/components/connections/DataPathLane.js +71 -0
  32. package/dist/components/connections/DataPathLane.js.map +1 -0
  33. package/dist/components/connections/TableRelationship.d.ts +19 -0
  34. package/dist/components/connections/TableRelationship.d.ts.map +1 -0
  35. package/dist/components/connections/TableRelationship.js +46 -0
  36. package/dist/components/connections/TableRelationship.js.map +1 -0
  37. package/dist/components/connections/index.d.ts +10 -0
  38. package/dist/components/connections/index.d.ts.map +1 -0
  39. package/dist/components/connections/index.js +8 -0
  40. package/dist/components/connections/index.js.map +1 -0
  41. package/dist/components/effects/AccessPulse.d.ts +23 -0
  42. package/dist/components/effects/AccessPulse.d.ts.map +1 -0
  43. package/dist/components/effects/AccessPulse.js +72 -0
  44. package/dist/components/effects/AccessPulse.js.map +1 -0
  45. package/dist/components/effects/GalaxyBloom.d.ts +8 -0
  46. package/dist/components/effects/GalaxyBloom.d.ts.map +1 -0
  47. package/dist/components/effects/GalaxyBloom.js +23 -0
  48. package/dist/components/effects/GalaxyBloom.js.map +1 -0
  49. package/dist/components/effects/StarField.d.ts +18 -0
  50. package/dist/components/effects/StarField.d.ts.map +1 -0
  51. package/dist/components/effects/StarField.js +86 -0
  52. package/dist/components/effects/StarField.js.map +1 -0
  53. package/dist/components/effects/index.d.ts +11 -0
  54. package/dist/components/effects/index.d.ts.map +1 -0
  55. package/dist/components/effects/index.js +9 -0
  56. package/dist/components/effects/index.js.map +1 -0
  57. package/dist/components/index.d.ts +11 -0
  58. package/dist/components/index.d.ts.map +1 -0
  59. package/dist/components/index.js +16 -0
  60. package/dist/components/index.js.map +1 -0
  61. package/dist/components/nodes/EntryPointStation.d.ts +22 -0
  62. package/dist/components/nodes/EntryPointStation.d.ts.map +1 -0
  63. package/dist/components/nodes/EntryPointStation.js +120 -0
  64. package/dist/components/nodes/EntryPointStation.js.map +1 -0
  65. package/dist/components/nodes/FieldMoon.d.ts +30 -0
  66. package/dist/components/nodes/FieldMoon.d.ts.map +1 -0
  67. package/dist/components/nodes/FieldMoon.js +92 -0
  68. package/dist/components/nodes/FieldMoon.js.map +1 -0
  69. package/dist/components/nodes/TablePlanet.d.ts +22 -0
  70. package/dist/components/nodes/TablePlanet.d.ts.map +1 -0
  71. package/dist/components/nodes/TablePlanet.js +101 -0
  72. package/dist/components/nodes/TablePlanet.js.map +1 -0
  73. package/dist/components/nodes/index.d.ts +12 -0
  74. package/dist/components/nodes/index.d.ts.map +1 -0
  75. package/dist/components/nodes/index.js +9 -0
  76. package/dist/components/nodes/index.js.map +1 -0
  77. package/dist/components/ui/ControlsPanel.d.ts +7 -0
  78. package/dist/components/ui/ControlsPanel.d.ts.map +1 -0
  79. package/dist/components/ui/ControlsPanel.js +59 -0
  80. package/dist/components/ui/ControlsPanel.js.map +1 -0
  81. package/dist/components/ui/DetailsPanel.d.ts +8 -0
  82. package/dist/components/ui/DetailsPanel.d.ts.map +1 -0
  83. package/dist/components/ui/DetailsPanel.js +44 -0
  84. package/dist/components/ui/DetailsPanel.js.map +1 -0
  85. package/dist/components/ui/SearchOverlay.d.ts +7 -0
  86. package/dist/components/ui/SearchOverlay.d.ts.map +1 -0
  87. package/dist/components/ui/SearchOverlay.js +68 -0
  88. package/dist/components/ui/SearchOverlay.js.map +1 -0
  89. package/dist/components/ui/SecurityPanel.d.ts +8 -0
  90. package/dist/components/ui/SecurityPanel.d.ts.map +1 -0
  91. package/dist/components/ui/SecurityPanel.js +65 -0
  92. package/dist/components/ui/SecurityPanel.js.map +1 -0
  93. package/dist/components/ui/StatsOverlay.d.ts +7 -0
  94. package/dist/components/ui/StatsOverlay.d.ts.map +1 -0
  95. package/dist/components/ui/StatsOverlay.js +29 -0
  96. package/dist/components/ui/StatsOverlay.js.map +1 -0
  97. package/dist/components/ui/index.d.ts +11 -0
  98. package/dist/components/ui/index.d.ts.map +1 -0
  99. package/dist/components/ui/index.js +11 -0
  100. package/dist/components/ui/index.js.map +1 -0
  101. package/dist/constants/index.d.ts +244 -0
  102. package/dist/constants/index.d.ts.map +1 -0
  103. package/dist/constants/index.js +289 -0
  104. package/dist/constants/index.js.map +1 -0
  105. package/dist/hooks/index.d.ts +10 -0
  106. package/dist/hooks/index.d.ts.map +1 -0
  107. package/dist/hooks/index.js +8 -0
  108. package/dist/hooks/index.js.map +1 -0
  109. package/dist/hooks/useAccessStream.d.ts +23 -0
  110. package/dist/hooks/useAccessStream.d.ts.map +1 -0
  111. package/dist/hooks/useAccessStream.js +86 -0
  112. package/dist/hooks/useAccessStream.js.map +1 -0
  113. package/dist/hooks/useGalaxyData.d.ts +83 -0
  114. package/dist/hooks/useGalaxyData.d.ts.map +1 -0
  115. package/dist/hooks/useGalaxyData.js +176 -0
  116. package/dist/hooks/useGalaxyData.js.map +1 -0
  117. package/dist/index.d.ts +28 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +38 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/store/galaxy-store.d.ts +85 -0
  122. package/dist/store/galaxy-store.d.ts.map +1 -0
  123. package/dist/store/galaxy-store.js +254 -0
  124. package/dist/store/galaxy-store.js.map +1 -0
  125. package/dist/store/index.d.ts +5 -0
  126. package/dist/store/index.d.ts.map +1 -0
  127. package/dist/store/index.js +5 -0
  128. package/dist/store/index.js.map +1 -0
  129. package/dist/types/index.d.ts +337 -0
  130. package/dist/types/index.d.ts.map +1 -0
  131. package/dist/types/index.js +8 -0
  132. package/dist/types/index.js.map +1 -0
  133. package/dist/utils/color-utils.d.ts +100 -0
  134. package/dist/utils/color-utils.d.ts.map +1 -0
  135. package/dist/utils/color-utils.js +217 -0
  136. package/dist/utils/color-utils.js.map +1 -0
  137. package/dist/utils/geometry-utils.d.ts +97 -0
  138. package/dist/utils/geometry-utils.d.ts.map +1 -0
  139. package/dist/utils/geometry-utils.js +245 -0
  140. package/dist/utils/geometry-utils.js.map +1 -0
  141. package/dist/utils/index.d.ts +7 -0
  142. package/dist/utils/index.d.ts.map +1 -0
  143. package/dist/utils/index.js +7 -0
  144. package/dist/utils/index.js.map +1 -0
  145. package/dist/utils/layout-engine.d.ts +40 -0
  146. package/dist/utils/layout-engine.d.ts.map +1 -0
  147. package/dist/utils/layout-engine.js +343 -0
  148. package/dist/utils/layout-engine.js.map +1 -0
  149. 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":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAqB3D,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,UAAU,WAAW,CAAC,EAC1B,EAAE,EACF,cAAc,EACd,cAAc,EACd,SAAS,EACT,QAAQ,GAAG,eAAe,CAAC,cAAc,EACzC,UAAU,GACO;IACjB,MAAM,OAAO,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,sBAAsB;IACtB,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAEjE,+BAA+B;IAC/B,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAEhD,yBAAyB;IACzB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,YAAY;IACZ,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAE3C,kBAAkB;QAClB,MAAM,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;QAC9B,WAAW,CAAC,OAAO,IAAI,KAAK,GAAG,KAAK,CAAC;QAErC,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,UAAU,EAAE,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,eAAe;QACf,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC;YACzC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACpE,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACzB,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAC7B,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAC7B,UAAU,CAAC,OAAO,EAAE,CAAC;YAErB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAA0B,CAAC;YAC3E,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAClE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,yCAAyC;QAC3C,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IAE5B,OAAO,CACL,4BAEE,gBAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,aACzD,yBAAgB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,EACvC,4BACE,KAAK,EAAE,KAAK,EACZ,WAAW,QACX,OAAO,EAAE,GAAG,GACZ,IACG,EAGP,gBAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,aACzD,yBAAgB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAI,EACrC,4BACE,KAAK,EAAE,KAAK,EACZ,WAAW,QACX,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,GACpB,IACG,EAGP,kBAAQ,GAAG,EAAE,QAAQ,aACnB,mCACE,0BACE,MAAM,EAAC,qBAAqB,EAC5B,KAAK,EAAE,eAAe,CAAC,YAAY,EACnC,KAAK,EAAE,cAAc,CAAC,OAAO,EAC7B,QAAQ,EAAE,CAAC,GACX,GACa,EACjB,yBACE,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EACT,WAAW,QACX,OAAO,EAAE,GAAG,EACZ,eAAe,SACf,IACK,IACH,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
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
+ export declare function GalaxyBloom(): null;
8
+ //# sourceMappingURL=GalaxyBloom.d.ts.map
@@ -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"}