@buley/hexgrid-3d 3.0.1 → 3.2.0

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 (209) hide show
  1. package/dist/HexGridEnhanced.d.ts +15 -0
  2. package/dist/HexGridEnhanced.d.ts.map +1 -0
  3. package/dist/HexGridEnhanced.js +1 -0
  4. package/dist/Snapshot.d.ts +594 -0
  5. package/dist/Snapshot.d.ts.map +1 -0
  6. package/dist/Snapshot.js +757 -0
  7. package/dist/adapters/DashAdapter.d.ts +18 -0
  8. package/dist/adapters/DashAdapter.d.ts.map +1 -0
  9. package/dist/adapters/DashAdapter.js +42 -0
  10. package/dist/adapters.d.ts +53 -0
  11. package/dist/adapters.d.ts.map +1 -0
  12. package/dist/adapters.js +14 -0
  13. package/dist/algorithms/AdvancedStatistics.d.ts +52 -0
  14. package/dist/algorithms/AdvancedStatistics.d.ts.map +1 -0
  15. package/dist/algorithms/AdvancedStatistics.js +307 -0
  16. package/dist/algorithms/BayesianStatistics.d.ts +86 -0
  17. package/dist/algorithms/BayesianStatistics.d.ts.map +1 -0
  18. package/dist/algorithms/BayesianStatistics.js +263 -0
  19. package/dist/algorithms/FlowField.d.ts +55 -0
  20. package/dist/algorithms/FlowField.d.ts.map +1 -0
  21. package/dist/algorithms/FlowField.js +80 -0
  22. package/dist/algorithms/FlowField3D.d.ts +166 -0
  23. package/dist/algorithms/FlowField3D.d.ts.map +1 -0
  24. package/dist/algorithms/FlowField3D.js +327 -0
  25. package/dist/algorithms/FluidEngineFactory.d.ts +15 -0
  26. package/dist/algorithms/FluidEngineFactory.d.ts.map +1 -0
  27. package/dist/algorithms/FluidEngineFactory.js +41 -0
  28. package/dist/algorithms/FluidSimulation.d.ts +41 -0
  29. package/dist/algorithms/FluidSimulation.d.ts.map +1 -0
  30. package/dist/algorithms/FluidSimulation.js +74 -0
  31. package/dist/algorithms/FluidSimulation3D.d.ts +137 -0
  32. package/dist/algorithms/FluidSimulation3D.d.ts.map +1 -0
  33. package/dist/algorithms/FluidSimulation3D.js +464 -0
  34. package/dist/algorithms/FluidSimulation3DGPU.d.ts +41 -0
  35. package/dist/algorithms/FluidSimulation3DGPU.d.ts.map +1 -0
  36. package/dist/algorithms/FluidSimulation3DGPU.js +328 -0
  37. package/dist/algorithms/FluidSimulationWebNN.d.ts +56 -0
  38. package/dist/algorithms/FluidSimulationWebNN.d.ts.map +1 -0
  39. package/dist/algorithms/FluidSimulationWebNN.js +84 -0
  40. package/dist/algorithms/GraphAlgorithms.d.ts +48 -0
  41. package/dist/algorithms/GraphAlgorithms.d.ts.map +1 -0
  42. package/dist/algorithms/GraphAlgorithms.js +122 -0
  43. package/dist/algorithms/OutlierDetection.d.ts +49 -0
  44. package/dist/algorithms/OutlierDetection.d.ts.map +1 -0
  45. package/dist/algorithms/OutlierDetection.js +284 -0
  46. package/dist/algorithms/ParticleSystem.d.ts +36 -0
  47. package/dist/algorithms/ParticleSystem.d.ts.map +1 -0
  48. package/dist/algorithms/ParticleSystem.js +59 -0
  49. package/dist/algorithms/ParticleSystem3D.d.ts +206 -0
  50. package/dist/algorithms/ParticleSystem3D.d.ts.map +1 -0
  51. package/dist/algorithms/ParticleSystem3D.js +371 -0
  52. package/dist/algorithms/index.d.ts +16 -0
  53. package/dist/algorithms/index.d.ts.map +1 -0
  54. package/{src/algorithms/index.ts → dist/algorithms/index.js} +0 -2
  55. package/dist/compat.d.ts +24 -0
  56. package/dist/compat.d.ts.map +1 -0
  57. package/dist/compat.js +88 -0
  58. package/dist/components/HexGrid.d.ts +5 -0
  59. package/dist/components/HexGrid.d.ts.map +1 -0
  60. package/dist/components/HexGrid.js +39 -0
  61. package/dist/components/NarrationOverlay.d.ts +16 -0
  62. package/dist/components/NarrationOverlay.d.ts.map +1 -0
  63. package/dist/components/NarrationOverlay.js +132 -0
  64. package/{src/components/index.ts → dist/components/index.d.ts} +1 -1
  65. package/dist/components/index.d.ts.map +1 -0
  66. package/dist/components/index.js +1 -0
  67. package/dist/features.d.ts +54 -0
  68. package/dist/features.d.ts.map +1 -0
  69. package/dist/features.js +74 -0
  70. package/dist/index.d.ts +12 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +17 -0
  73. package/dist/lib/narration.d.ts +12 -0
  74. package/dist/lib/narration.d.ts.map +1 -0
  75. package/dist/lib/narration.js +8 -0
  76. package/dist/lib/stats-tracker.d.ts +7 -0
  77. package/dist/lib/stats-tracker.d.ts.map +1 -0
  78. package/dist/lib/stats-tracker.js +22 -0
  79. package/dist/lib/theme-colors.d.ts +7 -0
  80. package/dist/lib/theme-colors.d.ts.map +1 -0
  81. package/dist/lib/theme-colors.js +10 -0
  82. package/dist/math/HexCoordinates.d.ts +140 -0
  83. package/dist/math/HexCoordinates.d.ts.map +1 -0
  84. package/dist/math/HexCoordinates.js +741 -0
  85. package/dist/math/Matrix4.d.ts +9 -0
  86. package/dist/math/Matrix4.d.ts.map +1 -0
  87. package/dist/math/Matrix4.js +19 -0
  88. package/dist/math/Quaternion.d.ts +11 -0
  89. package/dist/math/Quaternion.d.ts.map +1 -0
  90. package/dist/math/Quaternion.js +23 -0
  91. package/dist/math/SpatialIndex.d.ts +34 -0
  92. package/dist/math/SpatialIndex.d.ts.map +1 -0
  93. package/dist/math/SpatialIndex.js +75 -0
  94. package/dist/math/Vector3.d.ts +110 -0
  95. package/dist/math/Vector3.d.ts.map +1 -0
  96. package/dist/math/Vector3.js +426 -0
  97. package/dist/math/index.d.ts +11 -0
  98. package/dist/math/index.d.ts.map +1 -0
  99. package/{src/math/index.ts → dist/math/index.js} +0 -1
  100. package/dist/note-adapter.d.ts +44 -0
  101. package/dist/note-adapter.d.ts.map +1 -0
  102. package/dist/note-adapter.js +86 -0
  103. package/dist/ontology-adapter.d.ts +13 -0
  104. package/dist/ontology-adapter.d.ts.map +1 -0
  105. package/dist/ontology-adapter.js +65 -0
  106. package/dist/stores/index.d.ts +2 -0
  107. package/dist/stores/index.d.ts.map +1 -0
  108. package/dist/stores/uiStore.d.ts +18 -0
  109. package/dist/stores/uiStore.d.ts.map +1 -0
  110. package/dist/stores/uiStore.js +77 -0
  111. package/dist/types/index.d.ts +4 -0
  112. package/dist/types/index.d.ts.map +1 -0
  113. package/dist/types/index.js +1 -0
  114. package/dist/types.d.ts +126 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +4 -0
  117. package/dist/utils/image-utils.d.ts +13 -0
  118. package/dist/utils/image-utils.d.ts.map +1 -0
  119. package/dist/utils/image-utils.js +23 -0
  120. package/dist/wasm/HexGridWasmWrapper.d.ts +131 -0
  121. package/dist/wasm/HexGridWasmWrapper.d.ts.map +1 -0
  122. package/dist/wasm/HexGridWasmWrapper.js +610 -0
  123. package/dist/wasm/index.d.ts +7 -0
  124. package/dist/wasm/index.d.ts.map +1 -0
  125. package/{src/wasm/index.ts → dist/wasm/index.js} +0 -1
  126. package/dist/webgpu/WebGPUContext.d.ts +20 -0
  127. package/dist/webgpu/WebGPUContext.d.ts.map +1 -0
  128. package/dist/webgpu/WebGPUContext.js +60 -0
  129. package/dist/webnn/WebNNContext.d.ts +38 -0
  130. package/dist/webnn/WebNNContext.d.ts.map +1 -0
  131. package/dist/webnn/WebNNContext.js +66 -0
  132. package/dist/workers/hexgrid-math.d.ts +79 -0
  133. package/dist/workers/hexgrid-math.d.ts.map +1 -0
  134. package/dist/workers/hexgrid-math.js +136 -0
  135. package/dist/workers/hexgrid-worker.worker.d.ts +35 -0
  136. package/dist/workers/hexgrid-worker.worker.d.ts.map +1 -0
  137. package/dist/workers/hexgrid-worker.worker.js +2014 -0
  138. package/package.json +20 -7
  139. package/.eslintrc.json +0 -28
  140. package/build_log.txt +0 -500
  141. package/build_src_log.txt +0 -8
  142. package/examples/basic-usage.tsx +0 -52
  143. package/public/hexgrid-worker.js +0 -2475
  144. package/rust/Cargo.toml +0 -41
  145. package/rust/src/lib.rs +0 -740
  146. package/rust/src/math.rs +0 -574
  147. package/rust/src/spatial.rs +0 -245
  148. package/rust/src/statistics.rs +0 -496
  149. package/site/.eslintrc.json +0 -3
  150. package/site/DEPLOYMENT.md +0 -196
  151. package/site/INDEX.md +0 -127
  152. package/site/QUICK_START.md +0 -86
  153. package/site/README.md +0 -85
  154. package/site/SITE_SUMMARY.md +0 -180
  155. package/site/next.config.js +0 -12
  156. package/site/package.json +0 -26
  157. package/site/src/app/docs/page.tsx +0 -272
  158. package/site/src/app/examples/page.tsx +0 -151
  159. package/site/src/app/globals.css +0 -160
  160. package/site/src/app/layout.tsx +0 -39
  161. package/site/src/app/page.tsx +0 -235
  162. package/site/tsconfig.json +0 -29
  163. package/site/vercel.json +0 -6
  164. package/src/HexGridEnhanced.ts +0 -16
  165. package/src/Snapshot.ts +0 -1607
  166. package/src/adapters/DashAdapter.ts +0 -57
  167. package/src/adapters.ts +0 -63
  168. package/src/algorithms/AdvancedStatistics.ts +0 -362
  169. package/src/algorithms/BayesianStatistics.ts +0 -348
  170. package/src/algorithms/FlowField.ts +0 -150
  171. package/src/algorithms/FlowField3D.ts +0 -573
  172. package/src/algorithms/FluidEngineFactory.ts +0 -44
  173. package/src/algorithms/FluidSimulation.ts +0 -115
  174. package/src/algorithms/FluidSimulation3D.ts +0 -664
  175. package/src/algorithms/FluidSimulation3DGPU.ts +0 -402
  176. package/src/algorithms/FluidSimulationWebNN.ts +0 -141
  177. package/src/algorithms/GraphAlgorithms.ts +0 -191
  178. package/src/algorithms/OutlierDetection.ts +0 -425
  179. package/src/algorithms/ParticleSystem.ts +0 -95
  180. package/src/algorithms/ParticleSystem3D.ts +0 -567
  181. package/src/compat.ts +0 -96
  182. package/src/components/HexGrid.tsx +0 -61
  183. package/src/components/NarrationOverlay.tsx +0 -309
  184. package/src/features.ts +0 -125
  185. package/src/index.ts +0 -30
  186. package/src/lib/narration.ts +0 -17
  187. package/src/lib/stats-tracker.ts +0 -25
  188. package/src/lib/theme-colors.ts +0 -12
  189. package/src/math/HexCoordinates.ts +0 -863
  190. package/src/math/Matrix4.ts +0 -25
  191. package/src/math/Quaternion.ts +0 -37
  192. package/src/math/SpatialIndex.ts +0 -114
  193. package/src/math/Vector3.ts +0 -540
  194. package/src/note-adapter.ts +0 -132
  195. package/src/ontology-adapter.ts +0 -84
  196. package/src/stores/uiStore.ts +0 -85
  197. package/src/types/index.ts +0 -3
  198. package/src/types/shared-utils.d.ts +0 -10
  199. package/src/types/wgsl.d.ts +0 -4
  200. package/src/types.ts +0 -164
  201. package/src/utils/image-utils.ts +0 -28
  202. package/src/wasm/HexGridWasmWrapper.ts +0 -801
  203. package/src/webgpu/WebGPUContext.ts +0 -71
  204. package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
  205. package/src/webnn/WebNNContext.ts +0 -99
  206. package/src/workers/hexgrid-math.ts +0 -182
  207. package/src/workers/hexgrid-worker.worker.ts +0 -2781
  208. package/tsconfig.json +0 -26
  209. /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
@@ -0,0 +1,132 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Narration Overlay Component
4
+ *
5
+ * Displays play-by-play narration messages with sparklines in a NOC dashboard style.
6
+ */
7
+ import { useEffect, useRef } from 'react';
8
+ import { getAccentRgba, getAccentHex } from '@/lib/theme-colors';
9
+ export const NarrationOverlay = ({ messages, statsTracker, isVisible, onClose, }) => {
10
+ const messagesEndRef = useRef(null);
11
+ const scrollContainerRef = useRef(null);
12
+ // Auto-scroll to latest message
13
+ useEffect(() => {
14
+ if (messagesEndRef.current && scrollContainerRef.current) {
15
+ scrollContainerRef.current.scrollTop =
16
+ scrollContainerRef.current.scrollHeight;
17
+ }
18
+ }, [messages]);
19
+ // Always render the overlay so fade-out can animate smoothly.
20
+ // Toggle visibility via styles.
21
+ const currentStats = statsTracker?.getCurrentStats();
22
+ const allTimeRecords = statsTracker?.getAllTimeRecords();
23
+ const leaderboard = statsTracker?.getLeaderboard(10);
24
+ return (_jsxs("div", { style: {
25
+ position: 'fixed',
26
+ right: 12,
27
+ top: 80,
28
+ width: 400,
29
+ maxHeight: 'calc(100vh - 100px)',
30
+ background: 'rgba(0, 0, 0, 0.85)',
31
+ border: `1px solid ${getAccentRgba(0.3)}`,
32
+ borderRadius: 8,
33
+ padding: '12px',
34
+ zIndex: 10000,
35
+ display: 'flex',
36
+ flexDirection: 'column',
37
+ fontFamily: "'Courier New', monospace",
38
+ fontSize: 12,
39
+ color: getAccentHex(),
40
+ boxShadow: `0 0 20px ${getAccentRgba(0.2)}`,
41
+ // Fade transition
42
+ transition: 'opacity 220ms ease, transform 220ms ease',
43
+ opacity: isVisible ? 1 : 0,
44
+ transform: isVisible ? 'translateY(0px)' : 'translateY(-6px)',
45
+ pointerEvents: isVisible ? 'auto' : 'none',
46
+ }, children: [_jsxs("div", { style: {
47
+ display: 'flex',
48
+ justifyContent: 'space-between',
49
+ alignItems: 'center',
50
+ marginBottom: 8,
51
+ }, children: [_jsx("div", { style: { fontWeight: 'bold', fontSize: 14 }, children: "Play-by-Play Narration" }), _jsx("button", { onClick: onClose, style: {
52
+ background: 'transparent',
53
+ border: '1px solid rgba(0, 255, 255, 0.3)',
54
+ color: '#00ffff',
55
+ cursor: 'pointer',
56
+ padding: '4px 8px',
57
+ borderRadius: 4,
58
+ fontSize: 11,
59
+ }, children: "\u00D7" })] }), currentStats && (_jsxs("details", { style: { marginBottom: 8, fontSize: 11 }, children: [_jsx("summary", { style: { cursor: 'pointer', color: '#00ffff', marginBottom: 4 }, children: "Stats Dashboard" }), _jsxs("div", { style: {
60
+ padding: '8px',
61
+ background: 'rgba(0, 255, 255, 0.05)',
62
+ borderRadius: 4,
63
+ }, children: [_jsxs("div", { style: {
64
+ display: 'flex',
65
+ justifyContent: 'space-between',
66
+ marginBottom: 4,
67
+ }, children: [_jsx("span", { children: "Generation:" }), _jsx("span", { style: { fontVariantNumeric: 'tabular-nums' }, children: currentStats.generation })] }), _jsxs("div", { style: {
68
+ display: 'flex',
69
+ justifyContent: 'space-between',
70
+ marginBottom: 4,
71
+ }, children: [_jsx("span", { children: "Active Memes:" }), _jsx("span", { style: { fontVariantNumeric: 'tabular-nums' }, children: currentStats.activeMemesCount })] }), _jsxs("div", { style: {
72
+ display: 'flex',
73
+ justifyContent: 'space-between',
74
+ marginBottom: 4,
75
+ }, children: [_jsx("span", { children: "Total Hexes:" }), _jsx("span", { style: { fontVariantNumeric: 'tabular-nums' }, children: currentStats.totalHexesInfected })] }), _jsxs("div", { style: {
76
+ display: 'flex',
77
+ justifyContent: 'space-between',
78
+ marginBottom: 4,
79
+ }, children: [_jsx("span", { children: "Birth/Death Ratio:" }), _jsx("span", { style: { fontVariantNumeric: 'tabular-nums' }, children: currentStats.populationStability.toFixed(2) })] }), allTimeRecords && (_jsxs("div", { style: {
80
+ marginTop: 8,
81
+ paddingTop: 8,
82
+ borderTop: '1px solid rgba(0, 255, 255, 0.2)',
83
+ }, children: [_jsx("div", { style: { fontSize: 10, color: '#00ffff', marginBottom: 4 }, children: "All-Time Records:" }), _jsxs("div", { style: { fontSize: 10, marginBottom: 2 }, children: ["Highest Territory: ", allTimeRecords.highestTerritory.value] }), _jsxs("div", { style: { fontSize: 10, marginBottom: 2 }, children: ["Longest Streak: ", allTimeRecords.longestSurvivalStreak.value] })] }))] })] })), leaderboard && leaderboard.length > 0 && (_jsxs("details", { style: { marginBottom: 8, fontSize: 11 }, children: [_jsx("summary", { style: { cursor: 'pointer', color: '#00ffff', marginBottom: 4 }, children: "Top 10 Leaderboard" }), _jsx("div", { style: {
84
+ padding: '8px',
85
+ background: 'rgba(0, 255, 255, 0.05)',
86
+ borderRadius: 4,
87
+ }, children: leaderboard.map((entry, i) => (_jsxs("div", { style: {
88
+ display: 'flex',
89
+ justifyContent: 'space-between',
90
+ marginBottom: 2,
91
+ fontSize: 10,
92
+ color: i < 3 ? '#00ff00' : '#00ffff',
93
+ }, children: [_jsxs("span", { children: [i + 1, ". ", entry.photoId.slice(0, 20), "..."] }), _jsxs("span", { style: { fontVariantNumeric: 'tabular-nums' }, children: [entry.territory, " hexes"] })] }, entry.photoId))) })] })), _jsxs("div", { ref: scrollContainerRef, style: {
94
+ flex: 1,
95
+ overflowY: 'auto',
96
+ maxHeight: '400px',
97
+ padding: '8px',
98
+ background: 'rgba(0, 0, 0, 0.3)',
99
+ borderRadius: 4,
100
+ }, children: [messages.length === 0 ? (_jsx("div", { style: {
101
+ color: 'rgba(0, 255, 255, 0.5)',
102
+ fontStyle: 'italic',
103
+ textAlign: 'center',
104
+ padding: '20px',
105
+ }, children: "No narration yet. Evolution in progress..." })) : (messages.map((msg, index) => (_jsxs("div", { style: {
106
+ marginBottom: 8,
107
+ padding: '6px',
108
+ background: msg.priority >= 8
109
+ ? 'rgba(255, 165, 0, 0.1)'
110
+ : 'rgba(0, 255, 255, 0.05)',
111
+ borderRadius: 4,
112
+ borderLeft: `2px solid ${msg.priority >= 8 ? '#ffaa00' : '#00ffff'}`,
113
+ fontSize: 11,
114
+ lineHeight: 1.4,
115
+ }, children: [_jsxs("div", { style: {
116
+ display: 'flex',
117
+ justifyContent: 'space-between',
118
+ marginBottom: 2,
119
+ }, children: [_jsxs("span", { style: { color: 'rgba(0, 255, 255, 0.7)', fontSize: 10 }, children: ["Gen ", msg.generation] }), _jsx("span", { style: { color: 'rgba(0, 255, 255, 0.5)', fontSize: 9 }, children: new Date(msg.timestamp).toLocaleTimeString() })] }), _jsxs("div", { style: { fontFamily: "'Courier New', monospace" }, children: [msg.text, msg.sparkline && (_jsx("div", { style: {
120
+ marginTop: 4,
121
+ fontFamily: "'Courier New', monospace",
122
+ fontSize: 14,
123
+ color: msg.eventType === 'slam_dunk' ||
124
+ msg.eventType === 'on_fire'
125
+ ? '#00ff00'
126
+ : msg.eventType === 'decline' ||
127
+ msg.eventType === 'missed_shot'
128
+ ? '#ff4444'
129
+ : '#00ffff',
130
+ letterSpacing: '2px',
131
+ }, children: msg.sparkline }))] })] }, `${msg.generation}-${index}`)))), _jsx("div", { ref: messagesEndRef })] })] }));
132
+ };
@@ -1,3 +1,3 @@
1
1
  export { HexGrid } from './HexGrid';
2
2
  export type { HexGridProps, Photo } from '../types';
3
- export type { Photo as PhotoType } from '../types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export { HexGrid } from './HexGrid';
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Feature flags for HexGrid 3D
3
+ *
4
+ * Allows enabling/disabling features at runtime for different client environments
5
+ */
6
+ export interface HexGridFeatureFlags {
7
+ /** Enable/disable play-by-play narration overlay */
8
+ enableNarration?: boolean;
9
+ /** Enable/disable statistics tracking and display */
10
+ enableStats?: boolean;
11
+ /** Enable/disable debug panel */
12
+ enableDebugPanel?: boolean;
13
+ /** Enable/disable camera controls UI */
14
+ enableCameraControls?: boolean;
15
+ /** Enable/disable worker-based rendering */
16
+ enableWorker?: boolean;
17
+ /** Enable/disable texture/image loading */
18
+ enableTextures?: boolean;
19
+ /** Enable/disable evolution/animation system */
20
+ enableEvolution?: boolean;
21
+ /** Enable/disable autoplay functionality */
22
+ enableAutoplay?: boolean;
23
+ /** Enable/disable user interactions (clicks, drags) */
24
+ enableInteractions?: boolean;
25
+ /** Enable/disable keyboard shortcuts */
26
+ enableKeyboardShortcuts?: boolean;
27
+ /** Enable/disable performance telemetry */
28
+ enableTelemetry?: boolean;
29
+ /** Enable/disable sheen/visual effects */
30
+ enableVisualEffects?: boolean;
31
+ /** Enable/disable leaderboard system */
32
+ enableLeaderboard?: boolean;
33
+ }
34
+ /**
35
+ * Default feature flags - all features enabled
36
+ */
37
+ export declare const DEFAULT_FEATURE_FLAGS: Required<HexGridFeatureFlags>;
38
+ /**
39
+ * Minimal feature flags - only core visualization
40
+ */
41
+ export declare const MINIMAL_FEATURE_FLAGS: Required<HexGridFeatureFlags>;
42
+ /**
43
+ * Performance-focused feature flags
44
+ */
45
+ export declare const PERFORMANCE_FEATURE_FLAGS: Required<HexGridFeatureFlags>;
46
+ /**
47
+ * Merge user-provided flags with defaults
48
+ */
49
+ export declare function mergeFeatureFlags(userFlags?: Partial<HexGridFeatureFlags>): Required<HexGridFeatureFlags>;
50
+ /**
51
+ * Check if a feature is enabled
52
+ */
53
+ export declare function isFeatureEnabled(flags: HexGridFeatureFlags, feature: keyof HexGridFeatureFlags): boolean;
54
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,gDAAgD;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,wCAAwC;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,mBAAmB,CAc/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,mBAAmB,CAc/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,mBAAmB,CAcnE,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,QAAQ,CAAC,mBAAmB,CAAC,CAK/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,mBAAmB,GACjC,OAAO,CAET"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Feature flags for HexGrid 3D
3
+ *
4
+ * Allows enabling/disabling features at runtime for different client environments
5
+ */
6
+ /**
7
+ * Default feature flags - all features enabled
8
+ */
9
+ export const DEFAULT_FEATURE_FLAGS = {
10
+ enableNarration: true,
11
+ enableStats: true,
12
+ enableDebugPanel: true,
13
+ enableCameraControls: true,
14
+ enableWorker: true,
15
+ enableTextures: true,
16
+ enableEvolution: true,
17
+ enableAutoplay: true,
18
+ enableInteractions: true,
19
+ enableKeyboardShortcuts: true,
20
+ enableTelemetry: true,
21
+ enableVisualEffects: true,
22
+ enableLeaderboard: true,
23
+ };
24
+ /**
25
+ * Minimal feature flags - only core visualization
26
+ */
27
+ export const MINIMAL_FEATURE_FLAGS = {
28
+ enableNarration: false,
29
+ enableStats: false,
30
+ enableDebugPanel: false,
31
+ enableCameraControls: false,
32
+ enableWorker: true,
33
+ enableTextures: true,
34
+ enableEvolution: false,
35
+ enableAutoplay: false,
36
+ enableInteractions: true,
37
+ enableKeyboardShortcuts: false,
38
+ enableTelemetry: false,
39
+ enableVisualEffects: false,
40
+ enableLeaderboard: false,
41
+ };
42
+ /**
43
+ * Performance-focused feature flags
44
+ */
45
+ export const PERFORMANCE_FEATURE_FLAGS = {
46
+ enableNarration: false,
47
+ enableStats: true,
48
+ enableDebugPanel: false,
49
+ enableCameraControls: true,
50
+ enableWorker: true,
51
+ enableTextures: true,
52
+ enableEvolution: true,
53
+ enableAutoplay: false,
54
+ enableInteractions: true,
55
+ enableKeyboardShortcuts: true,
56
+ enableTelemetry: false,
57
+ enableVisualEffects: false,
58
+ enableLeaderboard: false,
59
+ };
60
+ /**
61
+ * Merge user-provided flags with defaults
62
+ */
63
+ export function mergeFeatureFlags(userFlags) {
64
+ return {
65
+ ...DEFAULT_FEATURE_FLAGS,
66
+ ...userFlags,
67
+ };
68
+ }
69
+ /**
70
+ * Check if a feature is enabled
71
+ */
72
+ export function isFeatureEnabled(flags, feature) {
73
+ return flags[feature] !== false;
74
+ }
@@ -0,0 +1,12 @@
1
+ export * from './components';
2
+ export * from './stores';
3
+ export * from './features';
4
+ export * from './workers/hexgrid-math';
5
+ export * from './utils/image-utils';
6
+ export type { WorkerDebug, Photo, GridItem } from './types';
7
+ export * from './math';
8
+ export * from './algorithms';
9
+ export * from './HexGridEnhanced';
10
+ export * from './wasm';
11
+ export * from './Snapshot';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAG3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG5D,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ // Main package exports
2
+ export * from './components';
3
+ export * from './stores';
4
+ export * from './features';
5
+ // Export pure mathematical functions
6
+ export * from './workers/hexgrid-math';
7
+ export * from './utils/image-utils';
8
+ // Math library
9
+ export * from './math';
10
+ // Algorithms (graph, clustering, flow, particles, fluid)
11
+ export * from './algorithms';
12
+ // Enhanced HexGrid
13
+ export * from './HexGridEnhanced';
14
+ // WASM acceleration layer
15
+ export * from './wasm';
16
+ // Unified Snapshot API
17
+ export * from './Snapshot';
@@ -0,0 +1,12 @@
1
+ export interface NarrationMessage {
2
+ generation: number;
3
+ timestamp: string;
4
+ priority: number;
5
+ text: string;
6
+ eventType?: string;
7
+ sparkline?: string;
8
+ }
9
+ export declare class NarrationManager {
10
+ static getInstance(): any;
11
+ }
12
+ //# sourceMappingURL=narration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narration.d.ts","sourceRoot":"","sources":["../../src/lib/narration.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,WAAW,IAAI,GAAG;CAM1B"}
@@ -0,0 +1,8 @@
1
+ export class NarrationManager {
2
+ static getInstance() {
3
+ return {
4
+ subscribe: () => () => { },
5
+ getState: () => ({})
6
+ };
7
+ }
8
+ }
@@ -0,0 +1,7 @@
1
+ export declare class StatsTracker {
2
+ static getInstance(): StatsTracker;
3
+ getCurrentStats(): any;
4
+ getAllTimeRecords(): any;
5
+ getLeaderboard(limit: number): any[];
6
+ }
7
+ //# sourceMappingURL=stats-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats-tracker.d.ts","sourceRoot":"","sources":["../../src/lib/stats-tracker.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,MAAM,CAAC,WAAW,IAAI,YAAY;IAIlC,eAAe,IAAI,GAAG;IAStB,iBAAiB,IAAI,GAAG;IAOxB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;CAGrC"}
@@ -0,0 +1,22 @@
1
+ export class StatsTracker {
2
+ static getInstance() {
3
+ return new StatsTracker();
4
+ }
5
+ getCurrentStats() {
6
+ return {
7
+ generation: 1,
8
+ activeMemesCount: 10,
9
+ totalHexesInfected: 100,
10
+ populationStability: 0.5
11
+ };
12
+ }
13
+ getAllTimeRecords() {
14
+ return {
15
+ highestTerritory: { value: 100 },
16
+ longestSurvivalStreak: { value: 50 }
17
+ };
18
+ }
19
+ getLeaderboard(limit) {
20
+ return [];
21
+ }
22
+ }
@@ -0,0 +1,7 @@
1
+ export declare const ThemeColors: {
2
+ primary: string;
3
+ secondary: string;
4
+ };
5
+ export declare function getAccentRgba(alpha?: number): string;
6
+ export declare function getAccentHex(): string;
7
+ //# sourceMappingURL=theme-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-colors.d.ts","sourceRoot":"","sources":["../../src/lib/theme-colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,10 @@
1
+ export const ThemeColors = {
2
+ primary: '#000000',
3
+ secondary: '#ffffff'
4
+ };
5
+ export function getAccentRgba(alpha = 1) {
6
+ return `rgba(0, 255, 255, ${alpha})`;
7
+ }
8
+ export function getAccentHex() {
9
+ return '#00ffff';
10
+ }
@@ -0,0 +1,140 @@
1
+ import { Vector3 } from './Vector3';
2
+ export declare class Axial {
3
+ q: number;
4
+ r: number;
5
+ constructor(q: number, r: number);
6
+ get s(): number;
7
+ static zero(): Axial;
8
+ static fromCube(cube: Cube): Axial;
9
+ static fromOffset(offset: {
10
+ col: number;
11
+ row: number;
12
+ }, isOdd?: boolean): Axial;
13
+ static fromPixel(x: number, y: number, hexSize: number, isFlatTop?: boolean): Axial;
14
+ static round(q: number, r: number): Axial;
15
+ static fromKey(key: string): Axial;
16
+ clone(): Axial;
17
+ equals(other: Axial): boolean;
18
+ add(other: Axial): Axial;
19
+ subtract(other: Axial): Axial;
20
+ scale(factor: number): Axial;
21
+ toCube(): Cube;
22
+ toOffset(isOdd?: boolean): {
23
+ col: number;
24
+ row: number;
25
+ };
26
+ toPixel(hexSize: number, isFlatTop?: boolean): {
27
+ x: number;
28
+ y: number;
29
+ };
30
+ toKey(): string;
31
+ toString(): string;
32
+ distanceTo(other: Axial): number;
33
+ neighbors(): Axial[];
34
+ neighbor(directionIndex: number): Axial;
35
+ range(radius: number): Axial[];
36
+ ring(radius: number): Axial[];
37
+ spiral(radius: number): Axial[];
38
+ lineTo(other: Axial): Axial[];
39
+ rotateCW(): Axial;
40
+ rotateCCW(): Axial;
41
+ rotateAroundCW(center: Axial): Axial;
42
+ rotateAroundCCW(center: Axial): Axial;
43
+ reflectQ(): Axial;
44
+ reflectR(): Axial;
45
+ reflectS(): Axial;
46
+ }
47
+ export declare class Cube {
48
+ x: number;
49
+ y: number;
50
+ z: number;
51
+ constructor(x: number, y: number, z: number);
52
+ static zero(): Cube;
53
+ static fromAxial(axial: Axial): Cube;
54
+ static round(x: number, y: number, z: number): Cube;
55
+ clone(): Cube;
56
+ equals(other: Cube): boolean;
57
+ add(other: Cube): Cube;
58
+ subtract(other: Cube): Cube;
59
+ scale(factor: number): Cube;
60
+ distanceTo(other: Cube): number;
61
+ toAxial(): Axial;
62
+ neighbors(): Cube[];
63
+ neighbor(index: number): Cube;
64
+ lerp(other: Cube, t: number): Cube;
65
+ lineTo(other: Cube): Cube[];
66
+ rotateCW(): Cube;
67
+ rotateCCW(): Cube;
68
+ rotate(steps: number): Cube;
69
+ reflect(): Cube;
70
+ toString(): string;
71
+ toKey(): string;
72
+ }
73
+ export declare const AXIAL_DIRECTIONS: Axial[];
74
+ export declare const CUBE_DIRECTIONS: Cube[];
75
+ export declare class GeodesicHexGrid {
76
+ subdivisions: number;
77
+ vertices: Vector3[];
78
+ hexCenters: Vector3[];
79
+ neighbors: number[][];
80
+ _hexSides: number[];
81
+ _hexIsPentagon: boolean[];
82
+ constructor(subdivisions?: number);
83
+ private generate;
84
+ findHex(point: Vector3): number;
85
+ latLngToHex(lat: number, lng: number): number;
86
+ hexToLatLng(index: number): {
87
+ lat: number;
88
+ lng: number;
89
+ };
90
+ getHexSides(index: number): number;
91
+ isPentagon(index: number): boolean;
92
+ getHexesInRange(index: number, range: number): number[];
93
+ distanceBetweenHexes(a: number, b: number): number;
94
+ }
95
+ export declare class HEALPixGrid {
96
+ nside: number;
97
+ npix: number;
98
+ pixelArea: number;
99
+ constructor(nside?: number);
100
+ pixToAng(pix: number): {
101
+ theta: number;
102
+ phi: number;
103
+ };
104
+ angToPix(theta: number, phi: number): number;
105
+ latLngToPix(lat: number, lng: number): number;
106
+ pixToLatLng(pix: number): {
107
+ lat: number;
108
+ lng: number;
109
+ };
110
+ getNeighbors(pix: number): number[];
111
+ pixToVector(pix: number): Vector3;
112
+ getAllCenters(): Vector3[];
113
+ }
114
+ export declare function generateFlatHexGrid(config: {
115
+ radius: number;
116
+ width: number;
117
+ height: number;
118
+ flatTop?: boolean;
119
+ }): {
120
+ positions: {
121
+ x: number;
122
+ y: number;
123
+ }[];
124
+ axialCoords: Axial[];
125
+ neighbors: number[][];
126
+ };
127
+ export declare function generateSphericalHexGrid(config: {
128
+ hexRadius: number;
129
+ sphereRadius: number;
130
+ latRange?: [number, number];
131
+ lngRange?: [number, number];
132
+ }): {
133
+ positions: Vector3[];
134
+ geoCoords: {
135
+ lat: number;
136
+ lng: number;
137
+ }[];
138
+ neighbors: number[][];
139
+ };
140
+ //# sourceMappingURL=HexCoordinates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HexCoordinates.d.ts","sourceRoot":"","sources":["../../src/math/HexCoordinates.ts"],"names":[],"mappings":"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"}