@backbay/glia 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +16 -10
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
1
+ {"version":3,"sources":["../../src/vision/index.ts","../../src/vision/adapters/canvasCapture.ts","../../src/vision/adapters/raymondAdapter.ts","../../src/vision/hooks/useVisionCaptureController.ts","../../src/vision/raymond/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export * from \"./types.js\";\nexport * from \"./adapters/canvasCapture.js\";\nexport * from \"./adapters/raymondAdapter.js\";\nexport * from \"./hooks/useVisionCaptureController.js\";\nexport * from \"./raymond/index.js\";\n","import type {\n VisionAdapter,\n VisionCaptureOptions,\n VisionFrame,\n VisionTopology,\n VisionChannel,\n} from \"../types.js\";\n\nexport interface CanvasCaptureAdapterOptions {\n id?: string;\n label?: string;\n getCanvas: () => HTMLCanvasElement | null;\n getTopology?: () => VisionTopology | null;\n channelId?: string;\n format?: \"image/png\" | \"image/jpeg\" | \"image/webp\";\n quality?: number;\n}\n\nexport class CanvasCaptureAdapter implements VisionAdapter {\n id: string;\n label?: string;\n private getCanvas: () => HTMLCanvasElement | null;\n private topologyProvider?: () => VisionTopology | null;\n private channelId: string;\n private format: \"image/png\" | \"image/jpeg\" | \"image/webp\";\n private quality?: number;\n\n constructor(options: CanvasCaptureAdapterOptions) {\n this.id = options.id ?? \"canvas-capture\";\n this.label = options.label;\n this.getCanvas = options.getCanvas;\n this.topologyProvider = options.getTopology;\n this.channelId = options.channelId ?? \"color\";\n this.format = options.format ?? \"image/png\";\n this.quality = options.quality;\n }\n\n getTopology(): VisionTopology | null {\n return this.topologyProvider?.() ?? null;\n }\n\n async capture(options?: VisionCaptureOptions): Promise<VisionFrame> {\n const canvas = this.getCanvas();\n const capturedAt = Date.now();\n\n if (!canvas) {\n return {\n source: this.id,\n capturedAt,\n channels: [],\n topology: options?.includeTopology ? this.topologyProvider?.() ?? undefined : undefined,\n meta: { error: \"canvas_unavailable\" },\n };\n }\n\n const targetSize = options?.size ?? { width: canvas.width, height: canvas.height };\n const outputCanvas =\n targetSize.width === canvas.width && targetSize.height === canvas.height\n ? canvas\n : this.scaleCanvas(canvas, targetSize.width, targetSize.height);\n\n const dataUrl = outputCanvas.toDataURL(this.format, this.quality);\n const channel: VisionChannel<string> = {\n id: this.channelId,\n kind: \"color\",\n data: dataUrl,\n width: targetSize.width,\n height: targetSize.height,\n meta: { format: this.format },\n };\n\n return {\n source: this.id,\n capturedAt,\n size: targetSize,\n channels: [channel],\n topology: options?.includeTopology ? this.topologyProvider?.() ?? undefined : undefined,\n };\n }\n\n private scaleCanvas(\n source: HTMLCanvasElement,\n width: number,\n height: number\n ): HTMLCanvasElement {\n const scaled = document.createElement(\"canvas\");\n scaled.width = width;\n scaled.height = height;\n const ctx = scaled.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(source, 0, 0, width, height);\n }\n return scaled;\n }\n}\n","import type {\n VisionAdapter,\n VisionCaptureOptions,\n VisionFrame,\n VisionTopology,\n VisionTopologyNode,\n VisionChannel,\n} from \"../types.js\";\nimport {\n Circle,\n Quad,\n Eye,\n PointLight,\n PhongTracingModel,\n defaultMaterial,\n fromObjectTransform,\n newVector,\n type Shape,\n type LightingModel,\n type LightingModelParams,\n type Material,\n} from \"@backbay/raymond\";\n\nexport interface RaymondEyeOptions {\n position?: [number, number];\n rotation?: number;\n fov?: number;\n rays?: number;\n}\n\nexport interface RaymondLightOptions {\n position: [number, number];\n color?: string;\n}\n\nexport interface RaymondScene {\n eye: Eye;\n shapes: Shape[];\n lights: PointLight[];\n lightingModel: LightingModel;\n lightingParams: LightingModelParams;\n}\n\nexport interface RaymondVisionAdapterOptions {\n id?: string;\n label?: string;\n topologyProvider?: () => VisionTopology | null;\n sceneProvider?: () => RaymondScene | null;\n eye?: RaymondEyeOptions;\n lights?: RaymondLightOptions[];\n axis?: \"xy\" | \"xz\" | \"yz\";\n scale?: number;\n includeSegments?: boolean;\n includeShadowRays?: boolean;\n lightingModel?: LightingModel;\n lightingParams?: LightingModelParams;\n nodeMaterial?: (node: VisionTopologyNode, fallback: Material) => Material;\n nodeShape?: (node: VisionTopologyNode) => \"circle\" | \"quad\";\n}\n\nexport class RaymondVisionAdapter implements VisionAdapter {\n id: string;\n label?: string;\n private topologyProvider?: () => VisionTopology | null;\n private sceneProvider?: () => RaymondScene | null;\n private eyeOptions: RaymondEyeOptions;\n private lights: RaymondLightOptions[];\n private axis: \"xy\" | \"xz\" | \"yz\";\n private scale: number;\n private includeSegments: boolean;\n private includeShadowRays: boolean;\n private lightingModel?: LightingModel;\n private lightingParams?: LightingModelParams;\n private nodeMaterial?: (node: VisionTopologyNode, fallback: Material) => Material;\n private nodeShape?: (node: VisionTopologyNode) => \"circle\" | \"quad\";\n\n constructor(options: RaymondVisionAdapterOptions = {}) {\n this.id = options.id ?? \"raymond-vision\";\n this.label = options.label;\n this.topologyProvider = options.topologyProvider;\n this.sceneProvider = options.sceneProvider;\n this.eyeOptions = options.eye ?? {};\n this.lights = options.lights ?? [{ position: [-4, 2], color: \"#ffffff\" }];\n this.axis = options.axis ?? \"xz\";\n this.scale = options.scale ?? 1;\n this.includeSegments = options.includeSegments ?? false;\n this.includeShadowRays = options.includeShadowRays ?? false;\n this.lightingModel = options.lightingModel;\n this.lightingParams = options.lightingParams;\n this.nodeMaterial = options.nodeMaterial;\n this.nodeShape = options.nodeShape;\n }\n\n getTopology(): VisionTopology | null {\n return this.topologyProvider?.() ?? null;\n }\n\n async capture(options?: VisionCaptureOptions): Promise<VisionFrame> {\n const capturedAt = Date.now();\n const topology = this.topologyProvider?.() ?? undefined;\n const scene = this.sceneProvider?.() ?? this.buildSceneFromTopology(topology, options);\n\n if (!scene) {\n return {\n source: this.id,\n capturedAt,\n channels: [],\n topology: options?.includeTopology ? topology : undefined,\n meta: { error: \"scene_unavailable\" },\n };\n }\n\n const result = scene.lightingModel.computeSegments(\n scene.eye,\n scene.shapes,\n scene.lights,\n scene.lightingParams\n );\n\n const visionChannel: VisionChannel = {\n id: \"raymond:vision\",\n kind: \"raymond/vision\",\n data: result.vision,\n width: result.vision.length,\n height: 1,\n };\n\n const channels: VisionChannel[] = [visionChannel];\n if (this.includeSegments) {\n channels.push({\n id: \"raymond:segments\",\n kind: \"raymond/segments\",\n data: result.segments,\n });\n }\n if (this.includeShadowRays) {\n channels.push({\n id: \"raymond:shadow-rays\",\n kind: \"raymond/shadow-rays\",\n data: result.shadowRays,\n });\n }\n\n return {\n source: this.id,\n capturedAt,\n size: { width: result.vision.length, height: 1 },\n channels,\n topology: options?.includeTopology ? topology : undefined,\n meta: {\n lightingModel: scene.lightingModel.id,\n },\n };\n }\n\n private buildSceneFromTopology(\n topology: VisionTopology | undefined,\n options?: VisionCaptureOptions\n ): RaymondScene | null {\n const model = this.lightingModel ?? new PhongTracingModel();\n const lightingParams = this.lightingParams ?? defaultLightingParams(model);\n const nodes = topology?.nodes ?? [];\n\n const shapes = nodes\n .map((node) => this.mapNodeToShape(node))\n .filter((shape): shape is Shape => Boolean(shape));\n\n const lights = this.lights.map((light) => {\n const transform = fromObjectTransform({\n translation: newVector(light.position[0], light.position[1]),\n rotation: 0,\n scale: newVector(1, 1),\n });\n return new PointLight(hexToColor(light.color ?? \"#ffffff\"), transform);\n });\n\n const eye = buildEye(nodes, this.eyeOptions, this.axis, options);\n\n return {\n eye,\n shapes,\n lights,\n lightingModel: model,\n lightingParams,\n };\n }\n\n private mapNodeToShape(node: VisionTopologyNode): Shape | null {\n if (!node.position) return null;\n const [x, y] = projectPosition(node.position, this.axis);\n const scale = this.nodeScale(node) * this.scale;\n const transform = fromObjectTransform({\n translation: newVector(x, y),\n rotation: 0,\n scale: newVector(scale, scale),\n });\n\n const baseMaterial = defaultMaterial();\n const material = this.nodeMaterial\n ? this.nodeMaterial(node, baseMaterial)\n : { ...baseMaterial, color: hexToColor(node.color ?? \"#66cc66\") };\n\n const shape = this.nodeShape?.(node) ?? inferShape(node);\n return shape === \"quad\"\n ? new Quad(transform, material)\n : new Circle(transform, material);\n }\n\n private nodeScale(node: VisionTopologyNode): number {\n if (node.radius) return Math.max(node.radius, 0.05);\n if (node.bounds) {\n const dx = Math.abs(node.bounds.max[0] - node.bounds.min[0]);\n const dy = Math.abs(node.bounds.max[1] - node.bounds.min[1]);\n const dz = Math.abs(node.bounds.max[2] - node.bounds.min[2]);\n return Math.max(dx, dy, dz) / 2;\n }\n return 0.5;\n }\n}\n\nfunction defaultLightingParams(model: LightingModel): LightingModelParams {\n const params: LightingModelParams = {};\n for (const param of model.parameters) {\n params[param.id] = param.default;\n }\n return params;\n}\n\nfunction buildEye(\n nodes: VisionTopologyNode[],\n options: RaymondEyeOptions,\n axis: \"xy\" | \"xz\" | \"yz\",\n captureOptions?: VisionCaptureOptions\n): Eye {\n const bounds = computeBounds(nodes, axis);\n const position = options.position ?? [bounds.minX - 4, bounds.centerY];\n const rotation = options.rotation ?? 0;\n const transform = fromObjectTransform({\n translation: newVector(position[0], position[1]),\n rotation,\n scale: newVector(1, 1),\n });\n const eye = new Eye(transform);\n eye.fov = options.fov ?? Math.PI / 3;\n const targetRays = options.rays ?? captureOptions?.size?.width ?? 120;\n eye.numRays = Math.max(1, Math.min(240, Math.round(targetRays)));\n return eye;\n}\n\nfunction inferShape(node: VisionTopologyNode): \"circle\" | \"quad\" {\n const explicit = node.meta?.shape;\n if (explicit === \"quad\" || explicit === \"circle\") return explicit;\n return node.type === \"node\" ? \"quad\" : \"circle\";\n}\n\nfunction projectPosition(\n position: [number, number, number],\n axis: \"xy\" | \"xz\" | \"yz\"\n): [number, number] {\n const [x, y, z] = position;\n switch (axis) {\n case \"xz\":\n return [x, z];\n case \"yz\":\n return [y, z];\n case \"xy\":\n default:\n return [x, y];\n }\n}\n\nfunction computeBounds(nodes: VisionTopologyNode[], axis: \"xy\" | \"xz\" | \"yz\") {\n const initial = {\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n centerY: 0,\n };\n if (nodes.length === 0) return initial;\n\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n nodes.forEach((node) => {\n if (!node.position) return;\n const [x, y] = projectPosition(node.position, axis);\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n });\n\n if (!Number.isFinite(minX)) {\n return initial;\n }\n\n return {\n minX,\n maxX,\n minY,\n maxY,\n centerY: (minY + maxY) / 2,\n };\n}\n\nfunction hexToColor(input: string): { r: number; g: number; b: number } {\n const hex = input.replace(\"#\", \"\");\n if (hex.length !== 6) {\n return { r: 1, g: 1, b: 1 };\n }\n const r = Number.parseInt(hex.slice(0, 2), 16) / 255;\n const g = Number.parseInt(hex.slice(2, 4), 16) / 255;\n const b = Number.parseInt(hex.slice(4, 6), 16) / 255;\n return { r, g, b };\n}\n","import * as React from \"react\";\n\nexport type VisionCaptureMode = \"manual\" | \"interval\" | \"topology\";\n\nexport interface VisionCaptureControllerOptions {\n capture: () => Promise<void>;\n ready?: boolean;\n topology?: unknown;\n initialMode?: VisionCaptureMode;\n initialIntervalMs?: number;\n minIntervalMs?: number;\n}\n\nexport interface VisionCaptureControllerState {\n mode: VisionCaptureMode;\n setMode: React.Dispatch<React.SetStateAction<VisionCaptureMode>>;\n intervalMs: number;\n setIntervalMs: React.Dispatch<React.SetStateAction<number>>;\n busy: boolean;\n captureNow: () => Promise<void>;\n requestCapture: () => void;\n}\n\nexport function useVisionCaptureController(\n options: VisionCaptureControllerOptions\n): VisionCaptureControllerState {\n const {\n capture,\n ready = true,\n topology,\n initialMode = \"manual\",\n initialIntervalMs = 2000,\n minIntervalMs = 500,\n } = options;\n\n const [mode, setMode] = React.useState<VisionCaptureMode>(initialMode);\n const [intervalMs, setIntervalMs] = React.useState(initialIntervalMs);\n const [busy, setBusy] = React.useState(false);\n const busyRef = React.useRef(false);\n const lastCaptureRef = React.useRef(0);\n\n const captureNow = React.useCallback(async () => {\n if (!ready || busyRef.current) return;\n busyRef.current = true;\n setBusy(true);\n try {\n await capture();\n } finally {\n setBusy(false);\n busyRef.current = false;\n }\n }, [capture, ready]);\n\n const requestCapture = React.useCallback(() => {\n if (!ready || busyRef.current) return;\n const now = Date.now();\n if (now - lastCaptureRef.current < minIntervalMs) return;\n lastCaptureRef.current = now;\n void captureNow();\n }, [ready, captureNow, minIntervalMs]);\n\n React.useEffect(() => {\n if (!ready || mode !== \"interval\") return;\n const intervalId = window.setInterval(() => {\n requestCapture();\n }, Math.max(minIntervalMs, intervalMs));\n return () => window.clearInterval(intervalId);\n }, [mode, intervalMs, ready, requestCapture, minIntervalMs]);\n\n React.useEffect(() => {\n if (!ready || mode !== \"topology\") return;\n if (!topology) return;\n requestCapture();\n }, [mode, topology, ready, requestCapture]);\n\n return {\n mode,\n setMode,\n intervalMs,\n setIntervalMs,\n busy,\n captureNow,\n requestCapture,\n };\n}\n","/**\n * Re-exports from @backbay/raymond for backward compatibility.\n * The raymond ray tracer has been extracted to its own package.\n * New code should import directly from '@backbay/raymond'.\n */\nexport * from \"@backbay/raymond\";\n"]}