@agent-native/toolkit 0.201.1 → 0.202.0-nightly-20261006033736

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 (229) hide show
  1. package/agent-native.eject.json +39 -12
  2. package/dist/app/agentkit/react/components.d.ts.map +1 -1
  3. package/dist/app/agentkit/react/components.js +292 -23
  4. package/dist/app/agentkit/react/components.js.map +1 -1
  5. package/dist/app/agentkit/react/context.d.ts +5 -0
  6. package/dist/app/agentkit/react/context.d.ts.map +1 -1
  7. package/dist/app/agentkit/react/context.js +5 -0
  8. package/dist/app/agentkit/react/context.js.map +1 -1
  9. package/dist/app/agentkit/react/styles.css +78 -3
  10. package/dist/app/auth/AuthPage.d.ts.map +1 -1
  11. package/dist/app/auth/AuthPage.js +7 -14
  12. package/dist/app/auth/AuthPage.js.map +1 -1
  13. package/dist/app/auth/server.d.ts +6 -0
  14. package/dist/app/auth/server.d.ts.map +1 -0
  15. package/dist/app/auth/server.js +19 -0
  16. package/dist/app/auth/server.js.map +1 -0
  17. package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
  18. package/dist/app/chat/AgentKitAssistantChat.js +164 -83
  19. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
  20. package/dist/app/chat/AgentSidebar.d.ts +2 -1
  21. package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
  22. package/dist/app/chat/AgentSidebar.js +2 -2
  23. package/dist/app/chat/AgentSidebar.js.map +1 -1
  24. package/dist/app/chat/agentkit-chat/guided-questions.d.ts.map +1 -1
  25. package/dist/app/chat/agentkit-chat/guided-questions.js +13 -3
  26. package/dist/app/chat/agentkit-chat/guided-questions.js.map +1 -1
  27. package/dist/app/chat/chat/surface-types.d.ts +2 -0
  28. package/dist/app/chat/chat/surface-types.d.ts.map +1 -1
  29. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
  30. package/dist/app/i18n/catalogs/ar-SA.js +41 -0
  31. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
  32. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
  33. package/dist/app/i18n/catalogs/de-DE.js +41 -0
  34. package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
  35. package/dist/app/i18n/catalogs/en-US.d.ts +41 -0
  36. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
  37. package/dist/app/i18n/catalogs/en-US.js +41 -0
  38. package/dist/app/i18n/catalogs/en-US.js.map +1 -1
  39. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
  40. package/dist/app/i18n/catalogs/es-ES.js +41 -0
  41. package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
  42. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
  43. package/dist/app/i18n/catalogs/fr-FR.js +41 -0
  44. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
  45. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
  46. package/dist/app/i18n/catalogs/hi-IN.js +41 -0
  47. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
  48. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
  49. package/dist/app/i18n/catalogs/ja-JP.js +41 -0
  50. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
  51. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
  52. package/dist/app/i18n/catalogs/ko-KR.js +41 -0
  53. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
  54. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
  55. package/dist/app/i18n/catalogs/pt-BR.js +41 -0
  56. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
  57. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
  58. package/dist/app/i18n/catalogs/zh-CN.js +41 -0
  59. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
  60. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
  61. package/dist/app/i18n/catalogs/zh-TW.js +41 -0
  62. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
  63. package/dist/app/shared/StarfieldBackground.d.ts +1 -6
  64. package/dist/app/shared/StarfieldBackground.d.ts.map +1 -1
  65. package/dist/app/shared/StarfieldBackground.js +1 -368
  66. package/dist/app/shared/StarfieldBackground.js.map +1 -1
  67. package/dist/app/shared/WaveBackground.d.ts +5 -0
  68. package/dist/app/shared/WaveBackground.d.ts.map +1 -0
  69. package/dist/app/shared/WaveBackground.js +34 -0
  70. package/dist/app/shared/WaveBackground.js.map +1 -0
  71. package/dist/app/shared/WebGlWaveBackground.d.ts +9 -0
  72. package/dist/app/shared/WebGlWaveBackground.d.ts.map +1 -0
  73. package/dist/app/shared/WebGlWaveBackground.js +433 -0
  74. package/dist/app/shared/WebGlWaveBackground.js.map +1 -0
  75. package/dist/app/shared/index.d.ts +1 -0
  76. package/dist/app/shared/index.d.ts.map +1 -1
  77. package/dist/app/shared/index.js +1 -0
  78. package/dist/app/shared/index.js.map +1 -1
  79. package/dist/app/shared/ocean/bloom-blur.wgsl +43 -0
  80. package/dist/app/shared/ocean/bloom-blur.wgsl.js +1 -0
  81. package/dist/app/shared/ocean/bloom-bright.wgsl +21 -0
  82. package/dist/app/shared/ocean/bloom-bright.wgsl.js +1 -0
  83. package/dist/app/shared/ocean/bloom-composite.wgsl +40 -0
  84. package/dist/app/shared/ocean/bloom-composite.wgsl.js +1 -0
  85. package/dist/app/shared/ocean/brand-colors.d.ts +9 -0
  86. package/dist/app/shared/ocean/brand-colors.d.ts.map +1 -0
  87. package/dist/app/shared/ocean/brand-colors.js +45 -0
  88. package/dist/app/shared/ocean/brand-colors.js.map +1 -0
  89. package/dist/app/shared/ocean/camera.d.ts +5 -0
  90. package/dist/app/shared/ocean/camera.d.ts.map +1 -0
  91. package/dist/app/shared/ocean/camera.js +24 -0
  92. package/dist/app/shared/ocean/camera.js.map +1 -0
  93. package/dist/app/shared/ocean/hero-ocean-background.d.ts +8 -0
  94. package/dist/app/shared/ocean/hero-ocean-background.d.ts.map +1 -0
  95. package/dist/app/shared/ocean/hero-ocean-background.js +186 -0
  96. package/dist/app/shared/ocean/hero-ocean-background.js.map +1 -0
  97. package/dist/app/shared/ocean/ifft-stage.wgsl +36 -0
  98. package/dist/app/shared/ocean/ifft-stage.wgsl.js +1 -0
  99. package/dist/app/shared/ocean/initial-spectrum.wgsl +36 -0
  100. package/dist/app/shared/ocean/initial-spectrum.wgsl.js +1 -0
  101. package/dist/app/shared/ocean/noise.wgsl +24 -0
  102. package/dist/app/shared/ocean/noise.wgsl.js +1 -0
  103. package/dist/app/shared/ocean/normal-foam.wgsl +32 -0
  104. package/dist/app/shared/ocean/normal-foam.wgsl.js +1 -0
  105. package/dist/app/shared/ocean/ocean-colors.d.ts +6 -0
  106. package/dist/app/shared/ocean/ocean-colors.d.ts.map +1 -0
  107. package/dist/app/shared/ocean/ocean-colors.js +6 -0
  108. package/dist/app/shared/ocean/ocean-colors.js.map +1 -0
  109. package/dist/app/shared/ocean/ocean-common.wgsl +15 -0
  110. package/dist/app/shared/ocean/ocean-common.wgsl.js +1 -0
  111. package/dist/app/shared/ocean/ocean-graph.d.ts +12 -0
  112. package/dist/app/shared/ocean/ocean-graph.d.ts.map +1 -0
  113. package/dist/app/shared/ocean/ocean-graph.js +16 -0
  114. package/dist/app/shared/ocean/ocean-graph.js.map +1 -0
  115. package/dist/app/shared/ocean/particles.wgsl +139 -0
  116. package/dist/app/shared/ocean/particles.wgsl.js +1 -0
  117. package/dist/app/shared/ocean/present.wgsl +40 -0
  118. package/dist/app/shared/ocean/present.wgsl.js +1 -0
  119. package/dist/app/shared/ocean/renderer.d.ts +66 -0
  120. package/dist/app/shared/ocean/renderer.d.ts.map +1 -0
  121. package/dist/app/shared/ocean/renderer.js +535 -0
  122. package/dist/app/shared/ocean/renderer.js.map +1 -0
  123. package/dist/app/shared/ocean/spectrum.wgsl +35 -0
  124. package/dist/app/shared/ocean/spectrum.wgsl.js +1 -0
  125. package/dist/app/shared/ocean/tuning.d.ts +48 -0
  126. package/dist/app/shared/ocean/tuning.d.ts.map +1 -0
  127. package/dist/app/shared/ocean/tuning.js +74 -0
  128. package/dist/app/shared/ocean/tuning.js.map +1 -0
  129. package/dist/app/shared/ocean/webgpu-support.d.ts +3 -0
  130. package/dist/app/shared/ocean/webgpu-support.d.ts.map +1 -0
  131. package/dist/app/shared/ocean/webgpu-support.js +13 -0
  132. package/dist/app/shared/ocean/webgpu-support.js.map +1 -0
  133. package/dist/app/sharing/AccessRequestApprovalPage.d.ts +23 -0
  134. package/dist/app/sharing/AccessRequestApprovalPage.d.ts.map +1 -0
  135. package/dist/app/sharing/AccessRequestApprovalPage.js +95 -0
  136. package/dist/app/sharing/AccessRequestApprovalPage.js.map +1 -0
  137. package/dist/app/sharing/AccessRequestsSection.d.ts +5 -0
  138. package/dist/app/sharing/AccessRequestsSection.d.ts.map +1 -0
  139. package/dist/app/sharing/AccessRequestsSection.js +47 -0
  140. package/dist/app/sharing/AccessRequestsSection.js.map +1 -0
  141. package/dist/app/sharing/ResourceAccessScreen.d.ts +53 -0
  142. package/dist/app/sharing/ResourceAccessScreen.d.ts.map +1 -0
  143. package/dist/app/sharing/ResourceAccessScreen.js +132 -0
  144. package/dist/app/sharing/ResourceAccessScreen.js.map +1 -0
  145. package/dist/app/sharing/ShareButton.d.ts.map +1 -1
  146. package/dist/app/sharing/ShareButton.js +4 -2
  147. package/dist/app/sharing/ShareButton.js.map +1 -1
  148. package/dist/app/sharing/ShareDialog.d.ts.map +1 -1
  149. package/dist/app/sharing/ShareDialog.js +7 -5
  150. package/dist/app/sharing/ShareDialog.js.map +1 -1
  151. package/dist/app/sharing/index.d.ts +2 -0
  152. package/dist/app/sharing/index.d.ts.map +1 -1
  153. package/dist/app/sharing/index.js +2 -0
  154. package/dist/app/sharing/index.js.map +1 -1
  155. package/dist/app/styles/agent-native.css +21 -1
  156. package/dist/app/styles/tokens/agent-kit.css +3 -1
  157. package/dist/composer/AgentSuggestionBar.d.ts +1 -1
  158. package/dist/composer/AgentSuggestionBar.d.ts.map +1 -1
  159. package/dist/composer/AgentSuggestionBar.js +75 -6
  160. package/dist/composer/AgentSuggestionBar.js.map +1 -1
  161. package/package.json +14 -4
  162. package/src/app/agentkit/react/components.tsx +492 -60
  163. package/src/app/agentkit/react/context.tsx +10 -0
  164. package/src/app/agentkit/react/lifecycle.spec.tsx +487 -1
  165. package/src/app/agentkit/react/styles.css +78 -3
  166. package/src/app/auth/AuthPage.spec.tsx +11 -7
  167. package/src/app/auth/AuthPage.tsx +16 -35
  168. package/src/app/auth/server.spec.ts +68 -0
  169. package/src/app/auth/server.ts +29 -0
  170. package/src/app/chat/AgentKitAssistantChat.spec.tsx +287 -290
  171. package/src/app/chat/AgentKitAssistantChat.tsx +219 -116
  172. package/src/app/chat/AgentSidebar.tsx +3 -0
  173. package/src/app/chat/agentkit-chat/guided-questions.flow.spec.tsx +85 -0
  174. package/src/app/chat/agentkit-chat/guided-questions.tsx +12 -5
  175. package/src/app/chat/chat/surface-types.ts +2 -0
  176. package/src/app/i18n/catalogs/ar-SA.ts +44 -0
  177. package/src/app/i18n/catalogs/de-DE.ts +55 -0
  178. package/src/app/i18n/catalogs/en-US.ts +46 -0
  179. package/src/app/i18n/catalogs/es-ES.ts +53 -0
  180. package/src/app/i18n/catalogs/fr-FR.ts +53 -0
  181. package/src/app/i18n/catalogs/hi-IN.ts +47 -0
  182. package/src/app/i18n/catalogs/ja-JP.ts +54 -0
  183. package/src/app/i18n/catalogs/ko-KR.ts +50 -0
  184. package/src/app/i18n/catalogs/pt-BR.ts +52 -0
  185. package/src/app/i18n/catalogs/zh-CN.ts +42 -0
  186. package/src/app/i18n/catalogs/zh-TW.ts +43 -0
  187. package/src/app/shared/StarfieldBackground.tsx +4 -423
  188. package/src/app/shared/WaveBackground.spec.tsx +104 -0
  189. package/src/app/shared/WaveBackground.tsx +60 -0
  190. package/src/app/shared/WebGlWaveBackground.spec.tsx +106 -0
  191. package/src/app/shared/WebGlWaveBackground.tsx +499 -0
  192. package/src/app/shared/index.ts +1 -0
  193. package/src/app/shared/ocean/bloom-blur.wgsl +43 -0
  194. package/src/app/shared/ocean/bloom-bright.wgsl +21 -0
  195. package/src/app/shared/ocean/bloom-composite.wgsl +40 -0
  196. package/src/app/shared/ocean/brand-colors.ts +49 -0
  197. package/src/app/shared/ocean/camera.ts +28 -0
  198. package/src/app/shared/ocean/hero-ocean-background.spec.tsx +369 -0
  199. package/src/app/shared/ocean/hero-ocean-background.tsx +238 -0
  200. package/src/app/shared/ocean/ifft-stage.wgsl +36 -0
  201. package/src/app/shared/ocean/initial-spectrum.wgsl +36 -0
  202. package/src/app/shared/ocean/noise.wgsl +24 -0
  203. package/src/app/shared/ocean/normal-foam.wgsl +32 -0
  204. package/src/app/shared/ocean/ocean-colors.ts +11 -0
  205. package/src/app/shared/ocean/ocean-common.wgsl +15 -0
  206. package/src/app/shared/ocean/ocean-graph.ts +29 -0
  207. package/src/app/shared/ocean/particles.wgsl +139 -0
  208. package/src/app/shared/ocean/present.wgsl +40 -0
  209. package/src/app/shared/ocean/renderer.spec.ts +100 -0
  210. package/src/app/shared/ocean/renderer.ts +693 -0
  211. package/src/app/shared/ocean/spectrum.wgsl +35 -0
  212. package/src/app/shared/ocean/tuning.ts +131 -0
  213. package/src/app/shared/ocean/webgpu-support.ts +12 -0
  214. package/src/app/sharing/AccessRequestApprovalPage.spec.tsx +276 -0
  215. package/src/app/sharing/AccessRequestApprovalPage.tsx +307 -0
  216. package/src/app/sharing/AccessRequestsSection.tsx +163 -0
  217. package/src/app/sharing/ResourceAccessScreen.spec.tsx +235 -0
  218. package/src/app/sharing/ResourceAccessScreen.tsx +331 -0
  219. package/src/app/sharing/ShareButton.spec.tsx +171 -5
  220. package/src/app/sharing/ShareButton.tsx +15 -2
  221. package/src/app/sharing/ShareDialog.spec.tsx +71 -2
  222. package/src/app/sharing/ShareDialog.tsx +24 -2
  223. package/src/app/sharing/index.ts +2 -0
  224. package/src/app/styles/agent-native.css +21 -1
  225. package/src/app/styles/agent-native.spec.ts +16 -3
  226. package/src/app/styles/tokens/agent-kit.css +3 -1
  227. package/src/composer/AgentSuggestionBar.overflow.spec.tsx +277 -0
  228. package/src/composer/AgentSuggestionBar.tsx +113 -8
  229. package/src/wgsl-env.d.ts +6 -0
@@ -0,0 +1,45 @@
1
+ import { DEFAULT_OCEAN_COLORS } from "./ocean-colors.js";
2
+ // guard:allow-raw-color - These fixed values calibrate the standalone GPU shader to the docs brand.
3
+ const DARK_COLORS = { fg: "#aeadac", bg: "#0a0a0a" };
4
+ // guard:allow-raw-color - These fixed values calibrate the standalone GPU shader to the docs brand.
5
+ const LIGHT_COLORS = { fg: "#00677f", bg: "#faf9f5" };
6
+ /**
7
+ * Returns null for anything that is not a full six-digit hex. Callers fall back
8
+ * to the packaged defaults -- an unreadable token and a legitimately dark token
9
+ * must not produce the same silent black.
10
+ */
11
+ export function hexToLinearRgb(hex) {
12
+ const normalized = hex.trim().replace("#", "");
13
+ if (!/^[0-9a-fA-F]{6}$/.test(normalized))
14
+ return null;
15
+ const value = Number.parseInt(normalized, 16);
16
+ return [
17
+ srgbToLinear(((value >> 16) & 255) / 255),
18
+ srgbToLinear(((value >> 8) & 255) / 255),
19
+ srgbToLinear((value & 255) / 255),
20
+ ];
21
+ }
22
+ function srgbToLinear(channel) {
23
+ return channel <= 0.04045
24
+ ? channel / 12.92
25
+ : ((channel + 0.055) / 1.055) ** 2.4;
26
+ }
27
+ export function readOceanColors(element) {
28
+ const styles = getComputedStyle(element);
29
+ const fg = hexToLinearRgb(styles.getPropertyValue("--b-hero-shader-fg"));
30
+ const bg = hexToLinearRgb(styles.getPropertyValue("--b-bg-page"));
31
+ if (fg && bg)
32
+ return { fg, bg };
33
+ const root = document.documentElement;
34
+ const dark = root.classList.contains("dark")
35
+ ? true
36
+ : root.classList.contains("light")
37
+ ? false
38
+ : root.getAttribute("data-theme") === "dark";
39
+ const colors = dark ? DARK_COLORS : LIGHT_COLORS;
40
+ return {
41
+ fg: hexToLinearRgb(colors.fg) ?? DEFAULT_OCEAN_COLORS.fg,
42
+ bg: hexToLinearRgb(colors.bg) ?? DEFAULT_OCEAN_COLORS.bg,
43
+ };
44
+ }
45
+ //# sourceMappingURL=brand-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-colors.js","sourceRoot":"","sources":["../../../../src/app/shared/ocean/brand-colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,mBAAmB,CAAC;AAE3E,oGAAoG;AACpG,MAAM,WAAW,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;AACrD,oGAAoG;AACpG,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW;IAEX,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO;QACL,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACzC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACxC,YAAY,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,OAAO,IAAI,OAAO;QACvB,CAAC,CAAC,OAAO,GAAG,KAAK;QACjB,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IAClE,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAEhC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE;QACxD,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE;KACzD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function oceanCamera(size: readonly [number, number]): {
2
+ view: Float32Array<ArrayBuffer>;
3
+ projection: Float32Array<ArrayBuffer>;
4
+ };
5
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../../src/app/shared/ocean/camera.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;;;EAyB1D"}
@@ -0,0 +1,24 @@
1
+ import { OCEAN_TUNING } from "./tuning.js";
2
+ export function oceanCamera(size) {
3
+ const { eye, target, pitchDegrees, fovDegrees, near, far } = OCEAN_TUNING.camera;
4
+ const angle = Math.atan2(eye[1] - target[1], eye[2] - target[2]) -
5
+ (pitchDegrees * Math.PI) / 180;
6
+ const c = Math.cos(angle);
7
+ const s = Math.sin(angle);
8
+ const f = 1 / Math.tan((fovDegrees * Math.PI) / 360);
9
+ const view = new Float32Array(16);
10
+ view[0] = view[15] = 1;
11
+ view[5] = view[10] = c;
12
+ view[6] = s;
13
+ view[9] = -s;
14
+ view[13] = -(c * eye[1] - s * eye[2]);
15
+ view[14] = -(s * eye[1] + c * eye[2]);
16
+ const projection = new Float32Array(16);
17
+ projection[0] = f / (size[0] / Math.max(1, size[1]));
18
+ projection[5] = f;
19
+ projection[10] = far / (near - far);
20
+ projection[11] = -1;
21
+ projection[14] = (far * near) / (near - far);
22
+ return { view, projection };
23
+ }
24
+ //# sourceMappingURL=camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../../src/app/shared/ocean/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GACxD,YAAY,CAAC,MAAM,CAAC;IACtB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IACxC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface HeroOceanBackgroundProps {
2
+ onError: (error: unknown) => void;
3
+ onReady: () => void;
4
+ frameRate?: number;
5
+ className?: string;
6
+ }
7
+ export declare function HeroOceanBackground({ onError, onReady, frameRate, className, }: HeroOceanBackgroundProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=hero-ocean-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero-ocean-background.d.ts","sourceRoot":"","sources":["../../../../src/app/shared/ocean/hero-ocean-background.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,SAAc,EACd,SAAqC,GACtC,EAAE,wBAAwB,+BAqN1B"}
@@ -0,0 +1,186 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { readOceanColors } from "./brand-colors.js";
4
+ import { OCEAN_TUNING } from "./tuning.js";
5
+ const FADE_IN_MS = 700;
6
+ const RENDERER_INIT_TIMEOUT_MS = 30_000;
7
+ const FIRST_FRAME_TIMEOUT_MS = 6000;
8
+ export function HeroOceanBackground({ onError, onReady, frameRate = 30, className = "absolute inset-0 z-[-1]", }) {
9
+ const containerRef = useRef(null);
10
+ const canvasRef = useRef(null);
11
+ const [ready, setReady] = useState(false);
12
+ const onErrorRef = useRef(onError);
13
+ const onReadyRef = useRef(onReady);
14
+ onErrorRef.current = onError;
15
+ onReadyRef.current = onReady;
16
+ useEffect(() => {
17
+ const container = containerRef.current;
18
+ const canvas = canvasRef.current;
19
+ if (!container || !canvas)
20
+ return;
21
+ let renderer;
22
+ let cancelled = false;
23
+ let rendererFailed = false;
24
+ const cleanups = [];
25
+ let firstFrameTimeout;
26
+ let firstFrameStartedAt;
27
+ let firstFrameRemainingMs = FIRST_FRAME_TIMEOUT_MS;
28
+ let waitingForFirstFrame = false;
29
+ const pauseFirstFrameDeadline = () => {
30
+ if (firstFrameTimeout === undefined)
31
+ return;
32
+ window.clearTimeout(firstFrameTimeout);
33
+ firstFrameTimeout = undefined;
34
+ firstFrameRemainingMs = Math.max(0, firstFrameRemainingMs -
35
+ (Date.now() - (firstFrameStartedAt ?? Date.now())));
36
+ firstFrameStartedAt = undefined;
37
+ };
38
+ const resumeFirstFrameDeadline = () => {
39
+ if (cancelled ||
40
+ rendererFailed ||
41
+ !waitingForFirstFrame ||
42
+ document.hidden ||
43
+ firstFrameTimeout !== undefined) {
44
+ return;
45
+ }
46
+ firstFrameStartedAt = Date.now();
47
+ firstFrameTimeout = window.setTimeout(() => failRenderer(new Error("The ocean wave did not draw a frame")), firstFrameRemainingMs);
48
+ };
49
+ const stopFirstFrameDeadline = () => {
50
+ waitingForFirstFrame = false;
51
+ pauseFirstFrameDeadline();
52
+ };
53
+ const rendererInitTimeout = window.setTimeout(() => {
54
+ failRenderer(new Error("The ocean wave renderer did not initialize"));
55
+ }, RENDERER_INIT_TIMEOUT_MS);
56
+ cleanups.push(() => {
57
+ window.clearTimeout(rendererInitTimeout);
58
+ stopFirstFrameDeadline();
59
+ });
60
+ const failRenderer = (error) => {
61
+ if (cancelled || rendererFailed)
62
+ return;
63
+ rendererFailed = true;
64
+ window.clearTimeout(rendererInitTimeout);
65
+ stopFirstFrameDeadline();
66
+ renderer?.dispose();
67
+ onErrorRef.current(error);
68
+ };
69
+ const handleDocumentVisibility = () => {
70
+ if (document.hidden)
71
+ pauseFirstFrameDeadline();
72
+ else
73
+ resumeFirstFrameDeadline();
74
+ };
75
+ document.addEventListener("visibilitychange", handleDocumentVisibility);
76
+ cleanups.push(() => document.removeEventListener("visibilitychange", handleDocumentVisibility));
77
+ let pointerTarget = [0, 0, 0];
78
+ let lastPointer;
79
+ const updatePointer = (clientX, clientY) => {
80
+ const rect = container.getBoundingClientRect();
81
+ if (rect.width <= 0 || rect.height <= 0)
82
+ return;
83
+ const x = clientX - rect.left;
84
+ const y = clientY - rect.top;
85
+ const inside = x >= 0 && x <= rect.width && y >= 0 && y <= rect.height;
86
+ pointerTarget = [
87
+ (x / rect.width) * 2 - 1,
88
+ 1 - (y / rect.height) * 2,
89
+ inside ? 1 : 0,
90
+ ];
91
+ renderer?.setPointer(pointerTarget);
92
+ };
93
+ const handleMouseMove = (event) => {
94
+ lastPointer = [event.clientX, event.clientY];
95
+ updatePointer(event.clientX, event.clientY);
96
+ };
97
+ const handleScroll = () => {
98
+ if (!lastPointer)
99
+ return;
100
+ updatePointer(lastPointer[0], lastPointer[1]);
101
+ };
102
+ const fadePointer = () => {
103
+ lastPointer = undefined;
104
+ pointerTarget = [pointerTarget[0], pointerTarget[1], 0];
105
+ renderer?.setPointer(pointerTarget);
106
+ };
107
+ document.body.addEventListener("mousemove", handleMouseMove, {
108
+ passive: true,
109
+ });
110
+ document.body.addEventListener("mouseleave", fadePointer, {
111
+ passive: true,
112
+ });
113
+ window.addEventListener("scroll", handleScroll, { passive: true });
114
+ window.addEventListener("blur", fadePointer);
115
+ cleanups.push(() => {
116
+ document.body.removeEventListener("mousemove", handleMouseMove);
117
+ document.body.removeEventListener("mouseleave", fadePointer);
118
+ window.removeEventListener("scroll", handleScroll);
119
+ window.removeEventListener("blur", fadePointer);
120
+ });
121
+ void import("./renderer.js")
122
+ .then(({ createRenderer }) => {
123
+ if (cancelled || rendererFailed)
124
+ return;
125
+ renderer = createRenderer({
126
+ canvas,
127
+ colors: readOceanColors(container),
128
+ fps: frameRate,
129
+ onError: failRenderer,
130
+ });
131
+ renderer.setPointer(pointerTarget);
132
+ void renderer.ready
133
+ .then(() => {
134
+ if (cancelled || rendererFailed)
135
+ return;
136
+ window.clearTimeout(rendererInitTimeout);
137
+ waitingForFirstFrame = true;
138
+ resumeFirstFrameDeadline();
139
+ return renderer?.firstFrame;
140
+ })
141
+ .then(() => {
142
+ if (cancelled || rendererFailed)
143
+ return;
144
+ stopFirstFrameDeadline();
145
+ setReady(true);
146
+ onReadyRef.current();
147
+ })
148
+ .catch(failRenderer);
149
+ const themeObserver = new MutationObserver(() => {
150
+ renderer?.setColors(readOceanColors(container));
151
+ });
152
+ themeObserver.observe(document.documentElement, {
153
+ attributes: true,
154
+ attributeFilter: ["class", "data-theme"],
155
+ });
156
+ cleanups.push(() => themeObserver.disconnect());
157
+ const visibility = new IntersectionObserver(([entry]) => renderer?.setPaused(!(entry?.isIntersecting ?? true)), { threshold: 0 });
158
+ visibility.observe(container);
159
+ cleanups.push(() => visibility.disconnect());
160
+ })
161
+ .catch((error) => {
162
+ failRenderer(error);
163
+ });
164
+ return () => {
165
+ cancelled = true;
166
+ for (const cleanup of cleanups)
167
+ cleanup();
168
+ renderer?.dispose();
169
+ };
170
+ }, [frameRate]);
171
+ const { bottomFadeStartPercent } = OCEAN_TUNING;
172
+ const mask = bottomFadeStartPercent >= 100
173
+ ? undefined
174
+ : // guard:allow-raw-color - The mask channel requires opaque black, not a theme color.
175
+ `linear-gradient(to bottom, #000 ${bottomFadeStartPercent}%, transparent 100%)`;
176
+ return (_jsx("div", { ref: containerRef, "aria-hidden": "true", "data-agent-native-wave": "true",
177
+ // Opacity is inline rather than a class because it animates between 0
178
+ // and a token value; the page background remains visible until the
179
+ // first wave frame is ready.
180
+ className: className, style: {
181
+ opacity: ready ? 0.3 : 0,
182
+ transition: `opacity ${FADE_IN_MS}ms ease-out`,
183
+ ...(mask ? { maskImage: mask, WebkitMaskImage: mask } : {}),
184
+ }, children: _jsx("canvas", { ref: canvasRef, className: "block h-full w-full", style: { display: "block", height: "100%", width: "100%" } }) }));
185
+ }
186
+ //# sourceMappingURL=hero-ocean-background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero-ocean-background.js","sourceRoot":"","sources":["../../../../src/app/shared/ocean/hero-ocean-background.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ struct IfftStageUniforms {
2
+ resolution: f32,
3
+ subtransformSize: f32,
4
+ horizontal: f32,
5
+ };
6
+ @group(0) @binding(0) var<uniform> u: IfftStageUniforms;
7
+ @group(0) @binding(1) var u_input: texture_2d<f32>;
8
+
9
+ @fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {
10
+ let N = i32(u.resolution);
11
+ let horizontal = u.horizontal > 0.5;
12
+ let index = select(position.y - 0.5, position.x - 0.5, horizontal);
13
+
14
+ let evenIndex = floor(index / u.subtransformSize) * (u.subtransformSize * 0.5)
15
+ + (index % (u.subtransformSize * 0.5));
16
+
17
+ let evenCoord = select(
18
+ vec2i(i32(position.x - 0.5), i32(evenIndex)),
19
+ vec2i(i32(evenIndex), i32(position.y - 0.5)),
20
+ horizontal,
21
+ );
22
+ let oddCoord = select(
23
+ vec2i(i32(position.x - 0.5), i32(evenIndex + u.resolution * 0.5)),
24
+ vec2i(i32(evenIndex + u.resolution * 0.5), i32(position.y - 0.5)),
25
+ horizontal,
26
+ );
27
+ let even = wrapLoad(u_input, evenCoord, N);
28
+ let odd = wrapLoad(u_input, oddCoord, N);
29
+
30
+ let twiddleArg = 2.0 * PI * (index / u.subtransformSize);
31
+ let twiddle = vec2f(cos(twiddleArg), sin(twiddleArg));
32
+
33
+ let outA = even.xy + cmul(twiddle, odd.xy);
34
+ let outB = even.zw + cmul(twiddle, odd.zw);
35
+ return vec4f(outA, outB);
36
+ }
@@ -0,0 +1 @@
1
+ export default "struct IfftStageUniforms {\n resolution: f32,\n subtransformSize: f32,\n horizontal: f32,\n};\n@group(0) @binding(0) var<uniform> u: IfftStageUniforms;\n@group(0) @binding(1) var u_input: texture_2d<f32>;\n\n@fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {\n let N = i32(u.resolution);\n let horizontal = u.horizontal > 0.5;\n let index = select(position.y - 0.5, position.x - 0.5, horizontal);\n\n let evenIndex = floor(index / u.subtransformSize) * (u.subtransformSize * 0.5)\n + (index % (u.subtransformSize * 0.5));\n\n let evenCoord = select(\n vec2i(i32(position.x - 0.5), i32(evenIndex)),\n vec2i(i32(evenIndex), i32(position.y - 0.5)),\n horizontal,\n );\n let oddCoord = select(\n vec2i(i32(position.x - 0.5), i32(evenIndex + u.resolution * 0.5)),\n vec2i(i32(evenIndex + u.resolution * 0.5), i32(position.y - 0.5)),\n horizontal,\n );\n let even = wrapLoad(u_input, evenCoord, N);\n let odd = wrapLoad(u_input, oddCoord, N);\n\n let twiddleArg = 2.0 * PI * (index / u.subtransformSize);\n let twiddle = vec2f(cos(twiddleArg), sin(twiddleArg));\n\n let outA = even.xy + cmul(twiddle, odd.xy);\n let outB = even.zw + cmul(twiddle, odd.zw);\n return vec4f(outA, outB);\n}\n";
@@ -0,0 +1,36 @@
1
+ struct InitialSpectrumUniforms {
2
+ resolution: f32,
3
+ size: f32,
4
+ windSpeed: f32,
5
+ windAngle: f32,
6
+ amplitude: f32,
7
+ };
8
+ @group(0) @binding(0) var<uniform> u: InitialSpectrumUniforms;
9
+ @group(0) @binding(1) var u_noise: texture_2d<f32>;
10
+
11
+ fn phillips(k: vec2f) -> f32 {
12
+ let kk = dot(k, k);
13
+ if (kk < 1e-8) { return 0.0; }
14
+ let w = vec2f(cos(u.windAngle), sin(u.windAngle));
15
+ let L = (u.windSpeed * u.windSpeed) / G;
16
+ let kdotw = dot(normalize(k), w);
17
+ var ph = u.amplitude * exp(-1.0 / (kk * L * L)) / (kk * kk) * (kdotw * kdotw);
18
+ let l = L * 0.001;
19
+ ph *= exp(-kk * l * l);
20
+ if (kdotw < 0.0) { ph *= 0.07; }
21
+ return ph;
22
+ }
23
+
24
+ @fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {
25
+ let coord = position.xy - vec2f(0.5);
26
+ let n = select(coord.x - u.resolution, coord.x, coord.x < u.resolution * 0.5);
27
+ let m = select(coord.y - u.resolution, coord.y, coord.y < u.resolution * 0.5);
28
+ let k = (2.0 * PI / u.size) * vec2f(n, m);
29
+
30
+ let rnd = textureLoad(u_noise, vec2u(coord), 0);
31
+
32
+ let h0k = (1.0 / sqrt(2.0)) * vec2f(rnd.x, rnd.y) * sqrt(phillips(k));
33
+ let h0negk = (1.0 / sqrt(2.0)) * vec2f(rnd.z, rnd.w) * sqrt(phillips(-k));
34
+
35
+ return vec4f(h0k, h0negk.x, -h0negk.y);
36
+ }
@@ -0,0 +1 @@
1
+ export default "struct InitialSpectrumUniforms {\n resolution: f32,\n size: f32,\n windSpeed: f32,\n windAngle: f32,\n amplitude: f32,\n};\n@group(0) @binding(0) var<uniform> u: InitialSpectrumUniforms;\n@group(0) @binding(1) var u_noise: texture_2d<f32>;\n\nfn phillips(k: vec2f) -> f32 {\n let kk = dot(k, k);\n if (kk < 1e-8) { return 0.0; }\n let w = vec2f(cos(u.windAngle), sin(u.windAngle));\n let L = (u.windSpeed * u.windSpeed) / G;\n let kdotw = dot(normalize(k), w);\n var ph = u.amplitude * exp(-1.0 / (kk * L * L)) / (kk * kk) * (kdotw * kdotw);\n let l = L * 0.001;\n ph *= exp(-kk * l * l);\n if (kdotw < 0.0) { ph *= 0.07; }\n return ph;\n}\n\n@fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {\n let coord = position.xy - vec2f(0.5);\n let n = select(coord.x - u.resolution, coord.x, coord.x < u.resolution * 0.5);\n let m = select(coord.y - u.resolution, coord.y, coord.y < u.resolution * 0.5);\n let k = (2.0 * PI / u.size) * vec2f(n, m);\n\n let rnd = textureLoad(u_noise, vec2u(coord), 0);\n\n let h0k = (1.0 / sqrt(2.0)) * vec2f(rnd.x, rnd.y) * sqrt(phillips(k));\n let h0negk = (1.0 / sqrt(2.0)) * vec2f(rnd.z, rnd.w) * sqrt(phillips(-k));\n\n return vec4f(h0k, h0negk.x, -h0negk.y);\n}\n";
@@ -0,0 +1,24 @@
1
+ const SEED: u32 = 0x6f636561u;
2
+ const RESOLUTION: u32 = 512u;
3
+
4
+
5
+
6
+ fn mulberryAt(callIndex: u32) -> f32 {
7
+ let state = SEED + 0x6d2b79f5u * (callIndex + 1u);
8
+ var t = state;
9
+ t = (t ^ (t >> 15u)) * (t | 1u);
10
+ t = t ^ (t + ((t ^ (t >> 7u)) * (t | 61u)));
11
+ return f32(t ^ (t >> 14u)) / 4294967296.0;
12
+ }
13
+ fn gaussianPair(callIndex: u32) -> vec2f {
14
+ let u1 = max(mulberryAt(callIndex), 1.17549435e-38);
15
+ let u2 = mulberryAt(callIndex + 1u);
16
+ let magnitude = sqrt(-2.0 * log(u1));
17
+ let angle = 6.283185307179586 * u2;
18
+ return magnitude * vec2f(cos(angle), sin(angle));
19
+ }
20
+ @fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {
21
+ let coord = vec2u(position.xy - vec2f(0.5));
22
+ let base = (coord.y * RESOLUTION + coord.x) * 4u;
23
+ return vec4f(gaussianPair(base), gaussianPair(base + 2u));
24
+ }
@@ -0,0 +1 @@
1
+ export default "const SEED: u32 = 0x6f636561u;\nconst RESOLUTION: u32 = 512u;\n\n\n\nfn mulberryAt(callIndex: u32) -> f32 {\n let state = SEED + 0x6d2b79f5u * (callIndex + 1u);\n var t = state;\n t = (t ^ (t >> 15u)) * (t | 1u);\n t = t ^ (t + ((t ^ (t >> 7u)) * (t | 61u)));\n return f32(t ^ (t >> 14u)) / 4294967296.0;\n}\nfn gaussianPair(callIndex: u32) -> vec2f {\n let u1 = max(mulberryAt(callIndex), 1.17549435e-38);\n let u2 = mulberryAt(callIndex + 1u);\n let magnitude = sqrt(-2.0 * log(u1));\n let angle = 6.283185307179586 * u2;\n return magnitude * vec2f(cos(angle), sin(angle));\n}\n@fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {\n let coord = vec2u(position.xy - vec2f(0.5));\n let base = (coord.y * RESOLUTION + coord.x) * 4u;\n return vec4f(gaussianPair(base), gaussianPair(base + 2u));\n}\n";
@@ -0,0 +1,32 @@
1
+ struct NormalFoamUniforms {
2
+ resolution: f32,
3
+ worldSize: f32,
4
+ displacementScale: f32,
5
+ foamThreshold: f32,
6
+ };
7
+ @group(0) @binding(0) var<uniform> u: NormalFoamUniforms;
8
+ @group(0) @binding(1) var u_displacement: texture_2d<f32>;
9
+
10
+ @fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {
11
+ let N = i32(u.resolution);
12
+ let coord = vec2i(position.xy - vec2f(0.5));
13
+ let dx = u.worldSize / u.resolution;
14
+
15
+ let r = wrapLoad(u_displacement, coord + vec2i(1, 0), N).xyz * u.displacementScale;
16
+ let l = wrapLoad(u_displacement, coord - vec2i(1, 0), N).xyz * u.displacementScale;
17
+ let t = wrapLoad(u_displacement, coord + vec2i(0, 1), N).xyz * u.displacementScale;
18
+ let b = wrapLoad(u_displacement, coord - vec2i(0, 1), N).xyz * u.displacementScale;
19
+
20
+ let dhdx = (r.y - l.y) / (2.0 * dx);
21
+ let dhdz = (t.y - b.y) / (2.0 * dx);
22
+ let normal = normalize(vec3f(-dhdx, 1.0, -dhdz));
23
+
24
+ let dDxdx = (r.x - l.x) / (2.0 * dx);
25
+ let dDzdz = (t.z - b.z) / (2.0 * dx);
26
+ let dDxdz = (t.x - b.x) / (2.0 * dx);
27
+ let dDzdx = (r.z - l.z) / (2.0 * dx);
28
+ let J = (1.0 + dDxdx) * (1.0 + dDzdz) - dDxdz * dDzdx;
29
+
30
+ let foam = 1.0 - smoothstep(u.foamThreshold, u.foamThreshold + 0.8, J);
31
+ return vec4f(normal, foam);
32
+ }
@@ -0,0 +1 @@
1
+ export default "struct NormalFoamUniforms {\n resolution: f32,\n worldSize: f32,\n displacementScale: f32,\n foamThreshold: f32,\n};\n@group(0) @binding(0) var<uniform> u: NormalFoamUniforms;\n@group(0) @binding(1) var u_displacement: texture_2d<f32>;\n\n@fragment fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {\n let N = i32(u.resolution);\n let coord = vec2i(position.xy - vec2f(0.5));\n let dx = u.worldSize / u.resolution;\n\n let r = wrapLoad(u_displacement, coord + vec2i(1, 0), N).xyz * u.displacementScale;\n let l = wrapLoad(u_displacement, coord - vec2i(1, 0), N).xyz * u.displacementScale;\n let t = wrapLoad(u_displacement, coord + vec2i(0, 1), N).xyz * u.displacementScale;\n let b = wrapLoad(u_displacement, coord - vec2i(0, 1), N).xyz * u.displacementScale;\n\n let dhdx = (r.y - l.y) / (2.0 * dx);\n let dhdz = (t.y - b.y) / (2.0 * dx);\n let normal = normalize(vec3f(-dhdx, 1.0, -dhdz));\n\n let dDxdx = (r.x - l.x) / (2.0 * dx);\n let dDzdz = (t.z - b.z) / (2.0 * dx);\n let dDxdz = (t.x - b.x) / (2.0 * dx);\n let dDzdx = (r.z - l.z) / (2.0 * dx);\n let J = (1.0 + dDxdx) * (1.0 + dDzdz) - dDxdz * dDzdx;\n\n let foam = 1.0 - smoothstep(u.foamThreshold, u.foamThreshold + 0.8, J);\n return vec4f(normal, foam);\n}\n";
@@ -0,0 +1,6 @@
1
+ export interface OceanColors {
2
+ readonly fg: readonly [number, number, number];
3
+ readonly bg: readonly [number, number, number];
4
+ }
5
+ export declare const DEFAULT_OCEAN_COLORS: OceanColors;
6
+ //# sourceMappingURL=ocean-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocean-colors.d.ts","sourceRoot":"","sources":["../../../../src/app/shared/ocean/ocean-colors.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { OCEAN_TUNING } from "./tuning.js";
2
+ export const DEFAULT_OCEAN_COLORS = {
3
+ fg: OCEAN_TUNING.present.fgColor,
4
+ bg: OCEAN_TUNING.present.bgColor,
5
+ };
6
+ //# sourceMappingURL=ocean-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocean-colors.js","sourceRoot":"","sources":["../../../../src/app/shared/ocean/ocean-colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;IAChC,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;CACjC,CAAC"}
@@ -0,0 +1,15 @@
1
+ const PI: f32 = 3.141592653589793;
2
+ const G: f32 = 9.81;
3
+
4
+ fn cmul(a: vec2f, b: vec2f) -> vec2f {
5
+ return vec2f(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
6
+ }
7
+
8
+ fn wrapCoord(coord: vec2i, N: i32) -> vec2u {
9
+ let wrapped = (coord % vec2i(N) + vec2i(N)) % vec2i(N);
10
+ return vec2u(wrapped);
11
+ }
12
+
13
+ fn wrapLoad(tex: texture_2d<f32>, coord: vec2i, N: i32) -> vec4f {
14
+ return textureLoad(tex, wrapCoord(coord, N), 0);
15
+ }
@@ -0,0 +1 @@
1
+ export default "const PI: f32 = 3.141592653589793;\nconst G: f32 = 9.81;\n\nfn cmul(a: vec2f, b: vec2f) -> vec2f {\n return vec2f(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);\n}\n\nfn wrapCoord(coord: vec2i, N: i32) -> vec2u {\n let wrapped = (coord % vec2i(N) + vec2i(N)) % vec2i(N);\n return vec2u(wrapped);\n}\n\nfn wrapLoad(tex: texture_2d<f32>, coord: vec2i, N: i32) -> vec4f {\n return textureLoad(tex, wrapCoord(coord, N), 0);\n}\n";
@@ -0,0 +1,12 @@
1
+ export type SimulationTargetName = "spectrum" | "ping" | "pong";
2
+ export interface IfftStage {
3
+ readonly index: number;
4
+ readonly axisStage: number;
5
+ readonly horizontal: boolean;
6
+ readonly subtransformSize: number;
7
+ readonly input: SimulationTargetName;
8
+ readonly output: Exclude<SimulationTargetName, "spectrum">;
9
+ }
10
+ export declare const OCEAN_RESOLUTION: 512;
11
+ export declare function createIfftStageTable(): readonly IfftStage[];
12
+ //# sourceMappingURL=ocean-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocean-graph.d.ts","sourceRoot":"","sources":["../../../../src/app/shared/ocean/ocean-graph.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;CAC5D;AAED,eAAO,MAAM,gBAAgB,EAAG,GAAY,CAAC;AAG7C,wBAAgB,oBAAoB,IAAI,SAAS,SAAS,EAAE,CAc3D"}
@@ -0,0 +1,16 @@
1
+ export const OCEAN_RESOLUTION = 512;
2
+ const AXIS_STAGES = 9;
3
+ export function createIfftStageTable() {
4
+ return Object.freeze(Array.from({ length: AXIS_STAGES * 2 }, (_, index) => {
5
+ const output = index % 2 ? "pong" : "ping";
6
+ return Object.freeze({
7
+ index,
8
+ axisStage: index % AXIS_STAGES,
9
+ horizontal: index < AXIS_STAGES,
10
+ subtransformSize: 2 ** ((index % AXIS_STAGES) + 1),
11
+ input: index === 0 ? "spectrum" : output === "ping" ? "pong" : "ping",
12
+ output,
13
+ });
14
+ }));
15
+ }
16
+ //# sourceMappingURL=ocean-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocean-graph.js","sourceRoot":"","sources":["../../../../src/app/shared/ocean/ocean-graph.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,CAAC;AAC7C,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC,MAAM,CAClB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAa,EAAE;QAC9D,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK;YACL,SAAS,EAAE,KAAK,GAAG,WAAW;YAC9B,UAAU,EAAE,KAAK,GAAG,WAAW;YAC/B,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACrE,MAAM;SACP,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}