@buley/hexgrid-3d 3.1.0 → 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 (208) 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 -0
  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/{src/index.ts → dist/index.js} +0 -9
  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 -408
  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/lib/narration.ts +0 -17
  186. package/src/lib/stats-tracker.ts +0 -25
  187. package/src/lib/theme-colors.ts +0 -12
  188. package/src/math/HexCoordinates.ts +0 -863
  189. package/src/math/Matrix4.ts +0 -25
  190. package/src/math/Quaternion.ts +0 -37
  191. package/src/math/SpatialIndex.ts +0 -114
  192. package/src/math/Vector3.ts +0 -540
  193. package/src/note-adapter.ts +0 -132
  194. package/src/ontology-adapter.ts +0 -84
  195. package/src/stores/uiStore.ts +0 -85
  196. package/src/types/index.ts +0 -3
  197. package/src/types/shared-utils.d.ts +0 -10
  198. package/src/types/wgsl.d.ts +0 -4
  199. package/src/types.ts +0 -164
  200. package/src/utils/image-utils.ts +0 -28
  201. package/src/wasm/HexGridWasmWrapper.ts +0 -801
  202. package/src/webgpu/WebGPUContext.ts +0 -71
  203. package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
  204. package/src/webnn/WebNNContext.ts +0 -99
  205. package/src/workers/hexgrid-math.ts +0 -182
  206. package/src/workers/hexgrid-worker.worker.ts +0 -2781
  207. package/tsconfig.json +0 -26
  208. /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
@@ -0,0 +1,77 @@
1
+ // Safe localStorage helpers that never throw
2
+ const safeGetItem = (key) => {
3
+ // istanbul ignore next
4
+ if (typeof window === 'undefined')
5
+ return null;
6
+ try {
7
+ return window.localStorage.getItem(key);
8
+ }
9
+ catch {
10
+ // istanbul ignore next
11
+ return null;
12
+ }
13
+ };
14
+ const safeSetItem = (key, value) => {
15
+ // istanbul ignore next
16
+ if (typeof window === 'undefined')
17
+ return;
18
+ try {
19
+ window.localStorage.setItem(key, value);
20
+ }
21
+ catch {
22
+ // istanbul ignore next - private browsing, quota exceeded
23
+ }
24
+ };
25
+ // Initialize showNarration from localStorage if available
26
+ const savedNarration = safeGetItem('hexgrid.showNarration');
27
+ const initialShowNarration = savedNarration === 'true';
28
+ const state = {
29
+ debugOpen: false,
30
+ showStats: false,
31
+ cameraOpen: false,
32
+ showNarration: initialShowNarration,
33
+ };
34
+ const listeners = new Set();
35
+ const uiStore = {
36
+ getState() {
37
+ return { ...state };
38
+ },
39
+ set(partial) {
40
+ let changed = false;
41
+ for (const k of Object.keys(partial)) {
42
+ if (partial[k] !== undefined && state[k] !== partial[k]) {
43
+ // @ts-ignore
44
+ state[k] = partial[k];
45
+ changed = true;
46
+ }
47
+ }
48
+ if (changed) {
49
+ // Persist showNarration to localStorage for cross-refresh consistency
50
+ if (partial.showNarration !== undefined) {
51
+ safeSetItem('hexgrid.showNarration', String(!!partial.showNarration));
52
+ }
53
+ for (const cb of Array.from(listeners))
54
+ cb({ ...state });
55
+ }
56
+ },
57
+ subscribe(cb) {
58
+ listeners.add(cb);
59
+ // emit current immediately
60
+ cb({ ...state });
61
+ return () => listeners.delete(cb);
62
+ },
63
+ toggleDebug() {
64
+ this.set({ debugOpen: !state.debugOpen });
65
+ },
66
+ toggleStats() {
67
+ this.set({ showStats: !state.showStats });
68
+ },
69
+ toggleCamera() {
70
+ this.set({ cameraOpen: !state.cameraOpen });
71
+ },
72
+ toggleNarration() {
73
+ this.set({ showNarration: !state.showNarration });
74
+ },
75
+ };
76
+ export { uiStore };
77
+ export default uiStore;
@@ -0,0 +1,4 @@
1
+ export interface WorkerDebug {
2
+ enabled: boolean;
3
+ }
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Type definitions for HexGrid Visualization
3
+ */
4
+ import type { RefObject } from 'react';
5
+ import type { HexGridFeatureFlags } from './features';
6
+ export type { HexGridFeatureFlags } from './features';
7
+ /**
8
+ * Photo type for HexGrid visualization
9
+ *
10
+ * This is the unified Photo type used throughout the hexgrid-3d package.
11
+ * It includes all fields needed for display, media playback, and analytics.
12
+ */
13
+ export interface Photo {
14
+ id: string;
15
+ title: string;
16
+ imageUrl: string;
17
+ url?: string;
18
+ thumbnailUrl?: string;
19
+ alt: string;
20
+ category: string;
21
+ description?: string;
22
+ source: string;
23
+ sourceUrl?: string;
24
+ createdAt?: string;
25
+ shopUrl?: string;
26
+ location?: string;
27
+ isVideo?: boolean;
28
+ videoUrl?: string;
29
+ isTweet?: boolean;
30
+ tweetUrl?: string;
31
+ redditUrl?: string;
32
+ durationSeconds?: number;
33
+ velocity?: number;
34
+ userId?: string;
35
+ username?: string;
36
+ platform?: string;
37
+ author?: string;
38
+ authorUrl?: string;
39
+ views?: number;
40
+ likes?: number;
41
+ comments?: number;
42
+ shares?: number;
43
+ upvotes?: number;
44
+ retweets?: number;
45
+ replies?: number;
46
+ age_in_hours?: number;
47
+ dominantColor?: string;
48
+ }
49
+ /**
50
+ * Generic item that can represent any data object in the grid
51
+ * Extends Photo for backward compatibility while adding generic data support
52
+ */
53
+ export interface GridItem<T = unknown> {
54
+ id: string;
55
+ type: string;
56
+ imageUrl?: string;
57
+ thumbnailUrl?: string;
58
+ videoUrl?: string;
59
+ title?: string;
60
+ alt?: string;
61
+ description?: string;
62
+ category?: string;
63
+ data?: T;
64
+ ontologyMetadata?: {
65
+ entityId?: string;
66
+ entityType?: string | string[];
67
+ properties?: Record<string, unknown>;
68
+ provenance?: {
69
+ source: string;
70
+ extractedAt: string;
71
+ confidence: number;
72
+ };
73
+ };
74
+ velocity?: number;
75
+ source?: string;
76
+ sourceUrl?: string;
77
+ createdAt?: string;
78
+ metrics?: Record<string, number>;
79
+ url?: string;
80
+ userId?: string;
81
+ username?: string;
82
+ platform?: string;
83
+ author?: string;
84
+ authorUrl?: string;
85
+ likes?: number;
86
+ views?: number;
87
+ comments?: number;
88
+ dominantColor?: string;
89
+ }
90
+ export interface HexGridProps {
91
+ photos: Photo[];
92
+ onHexClick?: (photo: Photo) => void;
93
+ spacing?: number;
94
+ canvasRef?: RefObject<HTMLCanvasElement>;
95
+ onLeaderboardUpdate?: (leaderboard: any) => void;
96
+ autoplayQueueLimit?: number;
97
+ onAutoplayQueueLimitChange?: (limit: number) => void;
98
+ modalOpen?: boolean;
99
+ userId?: string;
100
+ username?: string;
101
+ featureFlags?: HexGridFeatureFlags;
102
+ enableEnhanced?: boolean;
103
+ enhancedConfig?: {
104
+ useWasm?: boolean;
105
+ enableParticles?: boolean;
106
+ enableFlowField?: boolean;
107
+ };
108
+ onTerritoryEvent?: (event: {
109
+ type: 'conquest' | 'birth' | 'death';
110
+ toOwner: number;
111
+ fromOwner?: number;
112
+ }) => Promise<void>;
113
+ }
114
+ export interface UIState {
115
+ debugOpen: boolean;
116
+ showStats: boolean;
117
+ cameraOpen: boolean;
118
+ showNarration: boolean;
119
+ }
120
+ export interface WorkerDebug {
121
+ curveUDeg: number;
122
+ curveVDeg: number;
123
+ batchPerFrame: number;
124
+ [key: string]: any;
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Type definitions for HexGrid Visualization
3
+ */
4
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Pure utility functions for HexGrid component.
3
+ * These functions have NO side effects and are deterministic.
4
+ */
5
+ /**
6
+ * Get proxied image URL for preview.redd.it images (CORS issues).
7
+ * External preview URLs work fine without proxying.
8
+ * @pure - No side effects, deterministic
9
+ * @param imageUrl Original image URL
10
+ * @returns Proxied URL if needed, otherwise original URL
11
+ */
12
+ export declare function getProxiedImageUrl(imageUrl: string): string;
13
+ //# sourceMappingURL=image-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-utils.d.ts","sourceRoot":"","sources":["../../src/utils/image-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAe3D"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Pure utility functions for HexGrid component.
3
+ * These functions have NO side effects and are deterministic.
4
+ */
5
+ /**
6
+ * Get proxied image URL for preview.redd.it images (CORS issues).
7
+ * External preview URLs work fine without proxying.
8
+ * @pure - No side effects, deterministic
9
+ * @param imageUrl Original image URL
10
+ * @returns Proxied URL if needed, otherwise original URL
11
+ */
12
+ export function getProxiedImageUrl(imageUrl) {
13
+ if (!imageUrl || typeof imageUrl !== 'string') {
14
+ return imageUrl;
15
+ }
16
+ // Only proxy preview.redd.it URLs (they have CORS issues)
17
+ // external-preview.redd.it URLs work fine, so don't proxy them
18
+ if (imageUrl.includes('preview.redd.it') &&
19
+ !imageUrl.includes('external-preview.redd.it')) {
20
+ return `/api/proxy-image?url=${encodeURIComponent(imageUrl)}`;
21
+ }
22
+ return imageUrl;
23
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * TypeScript wrapper for hexgrid-wasm
3
+ *
4
+ * Provides a seamless interface to the Rust/WASM module with
5
+ * automatic fallback to pure TypeScript implementations.
6
+ *
7
+ * @module wasm/HexGridWasmWrapper
8
+ */
9
+ export interface WasmCellState {
10
+ owner: number;
11
+ population: number;
12
+ infectedBy: number;
13
+ infection: number;
14
+ resistance: number;
15
+ flags: number;
16
+ }
17
+ export interface WasmFluidSource {
18
+ x: number;
19
+ y: number;
20
+ radius: number;
21
+ density: number;
22
+ velocityX: number;
23
+ velocityY: number;
24
+ color?: [number, number, number];
25
+ }
26
+ /**
27
+ * Wrapper class that provides TypeScript interface to WASM
28
+ * with automatic fallback
29
+ */
30
+ export declare class HexGridWasmWrapper {
31
+ private readonly width;
32
+ private readonly height;
33
+ private static module;
34
+ private static loading;
35
+ private static loadFailed;
36
+ private wasmInstance;
37
+ private fallbackData;
38
+ private constructor();
39
+ /**
40
+ * Load the WASM module
41
+ */
42
+ static loadModule(): Promise<boolean>;
43
+ /**
44
+ * Create a new HexGrid wrapper
45
+ */
46
+ static create(width: number, height: number): Promise<HexGridWasmWrapper>;
47
+ /**
48
+ * Check if WASM is being used
49
+ */
50
+ isUsingWasm(): boolean;
51
+ /**
52
+ * Get cell owner
53
+ */
54
+ getOwner(index: number): number;
55
+ /**
56
+ * Set cell owner
57
+ */
58
+ setOwner(index: number, owner: number): void;
59
+ /**
60
+ * Set cell population
61
+ */
62
+ setPopulation(index: number, population: number): void;
63
+ /**
64
+ * Get neighbors of a cell
65
+ */
66
+ getNeighbors(index: number): Int32Array;
67
+ /**
68
+ * Step the infection simulation
69
+ */
70
+ stepInfection(infectionRate?: number, infectionThreshold?: number): number[];
71
+ /**
72
+ * Find connected regions for an owner
73
+ */
74
+ findConnectedRegions(owner: number): number[];
75
+ /**
76
+ * Find border cells for an owner
77
+ */
78
+ findBorderCells(owner: number): number[];
79
+ /**
80
+ * Find path between two cells
81
+ */
82
+ findPath(start: number, end: number, ownerFilter?: number): number[];
83
+ /**
84
+ * Get territory counts
85
+ */
86
+ getTerritoryCounts(): Map<number, number>;
87
+ /**
88
+ * Compute Gini coefficient
89
+ */
90
+ computeGini(): number;
91
+ /**
92
+ * Compute Shannon entropy
93
+ */
94
+ computeEntropy(): number;
95
+ /**
96
+ * K-means clustering
97
+ */
98
+ kmeansCluster(k: number, iterations?: number): number[];
99
+ /**
100
+ * Get size
101
+ */
102
+ size(): number;
103
+ /**
104
+ * Clear all cells
105
+ */
106
+ clear(): void;
107
+ /**
108
+ * Dispose resources
109
+ */
110
+ dispose(): void;
111
+ }
112
+ /**
113
+ * Flow Field WASM Wrapper
114
+ */
115
+ export declare class FlowFieldWasmWrapper {
116
+ private readonly width;
117
+ private readonly height;
118
+ private wasmInstance;
119
+ private fallbackData;
120
+ private constructor();
121
+ static create(width: number, height: number): Promise<FlowFieldWasmWrapper>;
122
+ isUsingWasm(): boolean;
123
+ addSource(x: number, y: number, strength: number): void;
124
+ addVortex(x: number, y: number, strength: number): void;
125
+ sample(x: number, y: number): [number, number];
126
+ computeDivergence(): Float32Array;
127
+ computeCurl(): Float32Array;
128
+ clear(): void;
129
+ dispose(): void;
130
+ }
131
+ //# sourceMappingURL=HexGridWasmWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HexGridWasmWrapper.d.ts","sourceRoot":"","sources":["../../src/wasm/HexGridWasmWrapper.ts"],"names":[],"mappings":"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"}