react-native-ai-animations 0.0.0-stage → 0.8.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 (125) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -2
  3. package/lib/module/brand/index.js +4 -0
  4. package/lib/module/brand/index.js.map +1 -0
  5. package/lib/module/brand/spinning-mark.js +96 -0
  6. package/lib/module/brand/spinning-mark.js.map +1 -0
  7. package/lib/module/chat/effort-bar.js +853 -0
  8. package/lib/module/chat/effort-bar.js.map +1 -0
  9. package/lib/module/chat/index.js +8 -0
  10. package/lib/module/chat/index.js.map +1 -0
  11. package/lib/module/chat/question-card.js +720 -0
  12. package/lib/module/chat/question-card.js.map +1 -0
  13. package/lib/module/chat/reasoning.js +38 -0
  14. package/lib/module/chat/reasoning.js.map +1 -0
  15. package/lib/module/chat/status-row.js +140 -0
  16. package/lib/module/chat/status-row.js.map +1 -0
  17. package/lib/module/chat/thinking-block.js +255 -0
  18. package/lib/module/chat/thinking-block.js.map +1 -0
  19. package/lib/module/index.js +5 -0
  20. package/lib/module/index.js.map +1 -0
  21. package/lib/module/internal/color.js +15 -0
  22. package/lib/module/internal/color.js.map +1 -0
  23. package/lib/module/internal/use-elapsed.js +20 -0
  24. package/lib/module/internal/use-elapsed.js.map +1 -0
  25. package/lib/module/package.json +1 -0
  26. package/lib/module/skia/dot-orb.js +256 -0
  27. package/lib/module/skia/dot-orb.js.map +1 -0
  28. package/lib/module/skia/index.js +8 -0
  29. package/lib/module/skia/index.js.map +1 -0
  30. package/lib/module/skia/liquid-orb.js +303 -0
  31. package/lib/module/skia/liquid-orb.js.map +1 -0
  32. package/lib/module/skia/matrix-orb.js +272 -0
  33. package/lib/module/skia/matrix-orb.js.map +1 -0
  34. package/lib/module/skia/media-generating.js +524 -0
  35. package/lib/module/skia/media-generating.js.map +1 -0
  36. package/lib/module/skia/voice-wave.js +278 -0
  37. package/lib/module/skia/voice-wave.js.map +1 -0
  38. package/lib/module/text/index.js +6 -0
  39. package/lib/module/text/index.js.map +1 -0
  40. package/lib/module/text/shimmer-text.js +122 -0
  41. package/lib/module/text/shimmer-text.js.map +1 -0
  42. package/lib/module/text/spoken-text.js +85 -0
  43. package/lib/module/text/spoken-text.js.map +1 -0
  44. package/lib/module/text/streaming-text.js +135 -0
  45. package/lib/module/text/streaming-text.js.map +1 -0
  46. package/lib/module/theme/index.js +5 -0
  47. package/lib/module/theme/index.js.map +1 -0
  48. package/lib/module/theme/palette.js +45 -0
  49. package/lib/module/theme/palette.js.map +1 -0
  50. package/lib/module/theme/provider.js +65 -0
  51. package/lib/module/theme/provider.js.map +1 -0
  52. package/lib/typescript/package.json +1 -0
  53. package/lib/typescript/src/brand/index.d.ts +2 -0
  54. package/lib/typescript/src/brand/index.d.ts.map +1 -0
  55. package/lib/typescript/src/brand/spinning-mark.d.ts +21 -0
  56. package/lib/typescript/src/brand/spinning-mark.d.ts.map +1 -0
  57. package/lib/typescript/src/chat/effort-bar.d.ts +42 -0
  58. package/lib/typescript/src/chat/effort-bar.d.ts.map +1 -0
  59. package/lib/typescript/src/chat/index.d.ts +6 -0
  60. package/lib/typescript/src/chat/index.d.ts.map +1 -0
  61. package/lib/typescript/src/chat/question-card.d.ts +73 -0
  62. package/lib/typescript/src/chat/question-card.d.ts.map +1 -0
  63. package/lib/typescript/src/chat/reasoning.d.ts +20 -0
  64. package/lib/typescript/src/chat/reasoning.d.ts.map +1 -0
  65. package/lib/typescript/src/chat/status-row.d.ts +20 -0
  66. package/lib/typescript/src/chat/status-row.d.ts.map +1 -0
  67. package/lib/typescript/src/chat/thinking-block.d.ts +35 -0
  68. package/lib/typescript/src/chat/thinking-block.d.ts.map +1 -0
  69. package/lib/typescript/src/index.d.ts +3 -0
  70. package/lib/typescript/src/index.d.ts.map +1 -0
  71. package/lib/typescript/src/internal/color.d.ts +2 -0
  72. package/lib/typescript/src/internal/color.d.ts.map +1 -0
  73. package/lib/typescript/src/internal/use-elapsed.d.ts +3 -0
  74. package/lib/typescript/src/internal/use-elapsed.d.ts.map +1 -0
  75. package/lib/typescript/src/skia/dot-orb.d.ts +16 -0
  76. package/lib/typescript/src/skia/dot-orb.d.ts.map +1 -0
  77. package/lib/typescript/src/skia/index.d.ts +6 -0
  78. package/lib/typescript/src/skia/index.d.ts.map +1 -0
  79. package/lib/typescript/src/skia/liquid-orb.d.ts +20 -0
  80. package/lib/typescript/src/skia/liquid-orb.d.ts.map +1 -0
  81. package/lib/typescript/src/skia/matrix-orb.d.ts +12 -0
  82. package/lib/typescript/src/skia/matrix-orb.d.ts.map +1 -0
  83. package/lib/typescript/src/skia/media-generating.d.ts +59 -0
  84. package/lib/typescript/src/skia/media-generating.d.ts.map +1 -0
  85. package/lib/typescript/src/skia/voice-wave.d.ts +17 -0
  86. package/lib/typescript/src/skia/voice-wave.d.ts.map +1 -0
  87. package/lib/typescript/src/text/index.d.ts +4 -0
  88. package/lib/typescript/src/text/index.d.ts.map +1 -0
  89. package/lib/typescript/src/text/shimmer-text.d.ts +13 -0
  90. package/lib/typescript/src/text/shimmer-text.d.ts.map +1 -0
  91. package/lib/typescript/src/text/spoken-text.d.ts +15 -0
  92. package/lib/typescript/src/text/spoken-text.d.ts.map +1 -0
  93. package/lib/typescript/src/text/streaming-text.d.ts +16 -0
  94. package/lib/typescript/src/text/streaming-text.d.ts.map +1 -0
  95. package/lib/typescript/src/theme/index.d.ts +3 -0
  96. package/lib/typescript/src/theme/index.d.ts.map +1 -0
  97. package/lib/typescript/src/theme/palette.d.ts +33 -0
  98. package/lib/typescript/src/theme/palette.d.ts.map +1 -0
  99. package/lib/typescript/src/theme/provider.d.ts +13 -0
  100. package/lib/typescript/src/theme/provider.d.ts.map +1 -0
  101. package/package.json +133 -4
  102. package/src/brand/index.ts +5 -0
  103. package/src/brand/spinning-mark.tsx +118 -0
  104. package/src/chat/effort-bar.tsx +748 -0
  105. package/src/chat/index.ts +45 -0
  106. package/src/chat/question-card.tsx +649 -0
  107. package/src/chat/reasoning.ts +30 -0
  108. package/src/chat/status-row.tsx +127 -0
  109. package/src/chat/thinking-block.tsx +250 -0
  110. package/src/index.ts +2 -0
  111. package/src/internal/color.ts +18 -0
  112. package/src/internal/use-elapsed.ts +21 -0
  113. package/src/skia/dot-orb.tsx +248 -0
  114. package/src/skia/index.ts +34 -0
  115. package/src/skia/liquid-orb.tsx +274 -0
  116. package/src/skia/matrix-orb.tsx +337 -0
  117. package/src/skia/media-generating.tsx +389 -0
  118. package/src/skia/voice-wave.tsx +215 -0
  119. package/src/text/index.ts +3 -0
  120. package/src/text/shimmer-text.tsx +140 -0
  121. package/src/text/spoken-text.tsx +82 -0
  122. package/src/text/streaming-text.tsx +144 -0
  123. package/src/theme/index.ts +11 -0
  124. package/src/theme/palette.ts +62 -0
  125. package/src/theme/provider.tsx +54 -0
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+
3
+ import { Canvas, Path, Skia, useClock } from "@shopify/react-native-skia";
4
+ import { useEffect, useMemo } from "react";
5
+ import { Easing, useDerivedValue, useReducedMotion, useSharedValue, withDelay, withRepeat, withSequence, withTiming } from "react-native-reanimated";
6
+ import { useMotionPalette } from "../theme/provider.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const TAU = Math.PI * 2;
9
+ const STILL_TIME = 1800;
10
+ const SCATTER_MS = 700;
11
+ const LOOP_MOVE_MS = 900;
12
+ const LOOP_GATHERED_MS = 1100;
13
+ const LOOP_SCATTERED_MS = 400;
14
+ function fibonacciSphere(count) {
15
+ const points = [];
16
+ const golden = Math.PI * (3 - Math.sqrt(5));
17
+ for (let index = 0; index < count; index += 1) {
18
+ const y = 1 - index / (count - 1) * 2;
19
+ const radius = Math.sqrt(1 - y * y);
20
+ const theta = golden * index;
21
+ points.push(Math.cos(theta) * radius, y, Math.sin(theta) * radius);
22
+ }
23
+ return points;
24
+ }
25
+ function buildEdges(points, limit) {
26
+ const edges = [];
27
+ const count = points.length / 3;
28
+ for (let a = 0; a < count; a += 1) {
29
+ for (let b = a + 1; b < count; b += 1) {
30
+ const dx = points[a * 3] - points[b * 3];
31
+ const dy = points[a * 3 + 1] - points[b * 3 + 1];
32
+ const dz = points[a * 3 + 2] - points[b * 3 + 2];
33
+ if (dx * dx + dy * dy + dz * dz < limit * limit) edges.push(a, b);
34
+ }
35
+ }
36
+ const order = [];
37
+ const pairs = edges.length / 2;
38
+ for (let index = 0; index < pairs; index += 1) order.push(index);
39
+ for (let index = pairs - 1; index > 0; index -= 1) {
40
+ const swap = Math.floor((Math.sin(index * 12.9898) * 43758.5453 - Math.floor(Math.sin(index * 12.9898) * 43758.5453)) * (index + 1));
41
+ const temp = order[index];
42
+ order[index] = order[swap];
43
+ order[swap] = temp;
44
+ }
45
+ const shuffled = [];
46
+ order.forEach(pair => shuffled.push(edges[pair * 2], edges[pair * 2 + 1]));
47
+ return shuffled;
48
+ }
49
+ function project(x, y, z, spin, tilt) {
50
+ "worklet";
51
+
52
+ const x1 = x * Math.cos(spin) + z * Math.sin(spin);
53
+ const z1 = -x * Math.sin(spin) + z * Math.cos(spin);
54
+ const y2 = y * Math.cos(tilt) - z1 * Math.sin(tilt);
55
+ const z2 = y * Math.sin(tilt) + z1 * Math.cos(tilt);
56
+ return [x1, y2, z2];
57
+ }
58
+ function smooth(value) {
59
+ "worklet";
60
+
61
+ const t = Math.min(1, Math.max(0, value));
62
+ return t * t * (3 - 2 * t);
63
+ }
64
+ export function DotOrb({
65
+ variant = "orbit",
66
+ size,
67
+ color,
68
+ accent,
69
+ speed = 1,
70
+ dotScale = 1,
71
+ paused = false,
72
+ inset = 0,
73
+ scatter = false,
74
+ style
75
+ }) {
76
+ const palette = useMotionPalette();
77
+ const reduceMotion = useReducedMotion();
78
+ const ink = color ?? palette.text;
79
+ const highlight = accent ?? palette.accent;
80
+ const clock = useClock();
81
+ const layout = useSharedValue({
82
+ width: size ?? 0,
83
+ height: size ?? 0
84
+ });
85
+ const still = reduceMotion || paused;
86
+ const spread = useSharedValue(scatter === true ? 1 : 0);
87
+ useEffect(() => {
88
+ if (reduceMotion) {
89
+ spread.value = scatter === true ? 1 : 0;
90
+ } else if (scatter === "loop") {
91
+ const move = {
92
+ duration: LOOP_MOVE_MS,
93
+ easing: Easing.inOut(Easing.cubic)
94
+ };
95
+ spread.value = withRepeat(withSequence(withDelay(LOOP_GATHERED_MS, withTiming(1, move)), withDelay(LOOP_SCATTERED_MS, withTiming(0, move))), -1);
96
+ } else {
97
+ spread.value = withTiming(scatter ? 1 : 0, {
98
+ duration: SCATTER_MS,
99
+ easing: Easing.out(Easing.cubic)
100
+ });
101
+ }
102
+ }, [reduceMotion, scatter, spread]);
103
+ const sphere = useMemo(() => fibonacciSphere(variant === "constellation" ? 46 : 240), [variant]);
104
+ const edges = useMemo(() => variant === "constellation" ? buildEdges(sphere, 0.6) : [], [sphere, variant]);
105
+ const frame = useDerivedValue(() => {
106
+ const t = (still ? STILL_TIME : clock.value) * 0.001 * speed;
107
+ const width = layout.value.width;
108
+ const height = layout.value.height;
109
+ const cx = width / 2;
110
+ const cy = height / 2;
111
+ const pad = inset * width;
112
+ const radius = Math.min(width - pad * 2, height - pad * 2) * 0.4;
113
+ const s = spread.value;
114
+ let order = 0;
115
+ const dot = Math.max(0.6, radius * 0.045 * dotScale);
116
+ const back = Skia.Path.Make();
117
+ const mid = Skia.Path.Make();
118
+ const front = Skia.Path.Make();
119
+ const accentPath = Skia.Path.Make();
120
+ const lines = Skia.Path.Make();
121
+ let linesOpacity = 0;
122
+ const spot = (x, y) => {
123
+ const px = cx + x * radius;
124
+ const py = cy + y * radius;
125
+ order += 1;
126
+ if (s === 0) return [px, py];
127
+ const hx = Math.sin(order * 12.9898) * 43758.5453;
128
+ const hy = Math.sin(order * 78.233) * 43758.5453;
129
+ const tx = width * (0.06 + 0.88 * (hx - Math.floor(hx)));
130
+ const ty = height * (0.06 + 0.88 * (hy - Math.floor(hy)));
131
+ return [px + (tx - px) * s, py + (ty - py) * s];
132
+ };
133
+ const place = (x, y, z, scale) => {
134
+ const depth = (z + 1) / 2;
135
+ const r = dot * scale * (0.45 + 0.55 * depth);
136
+ const target = z < -0.3 ? back : z < 0.35 ? mid : front;
137
+ const at = spot(x, y);
138
+ target.addCircle(at[0], at[1], r);
139
+ };
140
+ if (variant === "orbit") {
141
+ const spin = t * 0.25;
142
+ const orbits = [[0.35, 0.0, 0.9], [1.15, 0.95, -0.7], [-0.75, 2.2, 1.15]];
143
+ for (let o = 0; o < orbits.length; o += 1) {
144
+ const tiltX = orbits[o][0];
145
+ const rotZ = orbits[o][1];
146
+ const rate = orbits[o][2];
147
+ for (let p = 0; p < 13; p += 1) {
148
+ const theta = p / 13 * TAU + Math.sin(p * 2.3 + o) * 0.25 + t * rate;
149
+ const bx = Math.cos(theta);
150
+ const bz = Math.sin(theta);
151
+ const y1 = -bz * Math.sin(tiltX);
152
+ const z1 = bz * Math.cos(tiltX);
153
+ const x2 = bx * Math.cos(rotZ) - y1 * Math.sin(rotZ);
154
+ const y2 = bx * Math.sin(rotZ) + y1 * Math.cos(rotZ);
155
+ const projected = project(x2, y2, z1, spin, 0.2);
156
+ place(projected[0], projected[1], projected[2], 1.15 + 0.35 * Math.sin(p * 1.7 + o));
157
+ }
158
+ }
159
+ for (let p = 0; p < 7; p += 1) {
160
+ const a = p * 0.9 + t * 0.6;
161
+ place(Math.cos(a) * 0.22, Math.sin(a * 1.3) * 0.22, Math.sin(a) * 0.5, 1.3);
162
+ }
163
+ } else if (variant === "scan") {
164
+ const spin = t * 0.35;
165
+ const sweep = -1.75 + t * 0.55 % 1 * 3.5;
166
+ for (let index = 0; index < sphere.length; index += 3) {
167
+ const projected = project(sphere[index], sphere[index + 1], sphere[index + 2], spin, 0.28);
168
+ const longitude = Math.atan2(projected[0], projected[2]);
169
+ const near = Math.abs(longitude - sweep);
170
+ if (projected[2] > 0 && near < 0.2) {
171
+ const at = spot(projected[0], projected[1]);
172
+ accentPath.addCircle(at[0], at[1], dot * 0.95 * (1.25 - near * 2));
173
+ } else {
174
+ place(projected[0], projected[1], projected[2], 0.62);
175
+ }
176
+ }
177
+ } else if (variant === "constellation") {
178
+ const spin = t * 0.22;
179
+ const cycle = t % 6.5 / 6.5;
180
+ const grow = smooth(cycle / 0.6);
181
+ linesOpacity = (cycle < 0.85 ? 0.42 : 0.42 * (1 - smooth((cycle - 0.85) / 0.15))) * (1 - s);
182
+ const points = [];
183
+ for (let index = 0; index < sphere.length; index += 3) {
184
+ const projected = project(sphere[index], sphere[index + 1], sphere[index + 2], spin, 0.35);
185
+ points.push(projected[0], projected[1], projected[2]);
186
+ place(projected[0], projected[1], projected[2], 1.05);
187
+ }
188
+ const visible = Math.floor(edges.length / 2 * grow);
189
+ for (let pair = 0; pair < visible; pair += 1) {
190
+ const a = edges[pair * 2] * 3;
191
+ const b = edges[pair * 2 + 1] * 3;
192
+ lines.moveTo(cx + points[a] * radius, cy + points[a + 1] * radius);
193
+ lines.lineTo(cx + points[b] * radius, cy + points[b + 1] * radius);
194
+ }
195
+ } else if (variant === "helix") {
196
+ const spin = t * 0.2;
197
+ for (let strand = 0; strand < 3; strand += 1) {
198
+ for (let step = 0; step < 30; step += 1) {
199
+ const u = step / 29;
200
+ const y = Math.cos(Math.PI * u);
201
+ const ring = Math.sqrt(Math.max(0, 1 - y * y));
202
+ const longitude = strand * TAU / 3 + u * Math.PI * 2.4 + t * 1.1;
203
+ const projected = project(ring * Math.cos(longitude), y, ring * Math.sin(longitude), spin, 0.25);
204
+ place(projected[0], projected[1], projected[2], 0.85 + 0.6 * Math.sin(Math.PI * u));
205
+ }
206
+ }
207
+ }
208
+ return {
209
+ back,
210
+ mid,
211
+ front,
212
+ accent: accentPath,
213
+ lines,
214
+ linesOpacity
215
+ };
216
+ });
217
+ const back = useDerivedValue(() => frame.value.back);
218
+ const mid = useDerivedValue(() => frame.value.mid);
219
+ const front = useDerivedValue(() => frame.value.front);
220
+ const accentLayer = useDerivedValue(() => frame.value.accent);
221
+ const lines = useDerivedValue(() => frame.value.lines);
222
+ const linesOpacity = useDerivedValue(() => frame.value.linesOpacity);
223
+ return /*#__PURE__*/_jsxs(Canvas, {
224
+ onSize: layout,
225
+ style: [size !== undefined ? {
226
+ width: size,
227
+ height: size
228
+ } : {
229
+ flex: 1,
230
+ alignSelf: "stretch"
231
+ }, style],
232
+ children: [variant === "constellation" ? /*#__PURE__*/_jsx(Path, {
233
+ path: lines,
234
+ style: "stroke",
235
+ strokeWidth: 1,
236
+ color: ink,
237
+ opacity: linesOpacity
238
+ }) : null, /*#__PURE__*/_jsx(Path, {
239
+ path: back,
240
+ color: ink,
241
+ opacity: 0.25
242
+ }), /*#__PURE__*/_jsx(Path, {
243
+ path: mid,
244
+ color: ink,
245
+ opacity: 0.55
246
+ }), /*#__PURE__*/_jsx(Path, {
247
+ path: front,
248
+ color: ink,
249
+ opacity: 0.95
250
+ }), variant === "scan" ? /*#__PURE__*/_jsx(Path, {
251
+ path: accentLayer,
252
+ color: highlight
253
+ }) : null]
254
+ });
255
+ }
256
+ //# sourceMappingURL=dot-orb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Canvas","Path","Skia","useClock","useEffect","useMemo","Easing","useDerivedValue","useReducedMotion","useSharedValue","withDelay","withRepeat","withSequence","withTiming","useMotionPalette","jsx","_jsx","jsxs","_jsxs","TAU","Math","PI","STILL_TIME","SCATTER_MS","LOOP_MOVE_MS","LOOP_GATHERED_MS","LOOP_SCATTERED_MS","fibonacciSphere","count","points","golden","sqrt","index","y","radius","theta","push","cos","sin","buildEdges","limit","edges","length","a","b","dx","dy","dz","order","pairs","swap","floor","temp","shuffled","forEach","pair","project","x","z","spin","tilt","x1","z1","y2","z2","smooth","value","t","min","max","DotOrb","variant","size","color","accent","speed","dotScale","paused","inset","scatter","style","palette","reduceMotion","ink","text","highlight","clock","layout","width","height","still","spread","move","duration","easing","inOut","cubic","out","sphere","frame","cx","cy","pad","s","dot","back","Make","mid","front","accentPath","lines","linesOpacity","spot","px","py","hx","hy","tx","ty","place","scale","depth","r","target","at","addCircle","orbits","o","tiltX","rotZ","rate","p","bx","bz","y1","x2","projected","sweep","longitude","atan2","near","abs","cycle","grow","visible","moveTo","lineTo","strand","step","u","ring","accentLayer","onSize","undefined","flex","alignSelf","children","path","strokeWidth","opacity"],"sourceRoot":"../../../src","sources":["skia/dot-orb.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export { DotOrb } from "./dot-orb.js";
4
+ export { MatrixOrb } from "./matrix-orb.js";
5
+ export { ImageGenerating, MEDIA_GENERATING_SIZES, MediaGenerating, MediaGeneratingBlobs, MediaGeneratingConstellation, MediaGeneratingHelix, MediaGeneratingMatrix, MediaGeneratingOrbit, MediaGeneratingScan, VideoGenerating } from "./media-generating.js";
6
+ export { VoiceWave, VoiceWaveBars, VoiceWaveDots, VoiceWaveLines, VoiceWavePulse } from "./voice-wave.js";
7
+ export { LiquidOrb } from "./liquid-orb.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DotOrb","MatrixOrb","ImageGenerating","MEDIA_GENERATING_SIZES","MediaGenerating","MediaGeneratingBlobs","MediaGeneratingConstellation","MediaGeneratingHelix","MediaGeneratingMatrix","MediaGeneratingOrbit","MediaGeneratingScan","VideoGenerating","VoiceWave","VoiceWaveBars","VoiceWaveDots","VoiceWaveLines","VoiceWavePulse","LiquidOrb"],"sourceRoot":"../../../src","sources":["skia/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAA8C,cAAW;AACxE,SAASC,SAAS,QAAkD,iBAAc;AAClF,SACEC,eAAe,EACfC,sBAAsB,EACtBC,eAAe,EACfC,oBAAoB,EACpBC,4BAA4B,EAC5BC,oBAAoB,EACpBC,qBAAqB,EACrBC,oBAAoB,EACpBC,mBAAmB,EACnBC,eAAe,QAUV,uBAAoB;AAC3B,SACEC,SAAS,EACTC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,QAIT,iBAAc;AACrB,SAASC,SAAS,QAA0E,iBAAc","ignoreList":[]}
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+
3
+ import { Blur, Canvas, Fill, Group, Oval, Paint, Path, Shader, Skia } from "@shopify/react-native-skia";
4
+ import { useEffect, useMemo } from "react";
5
+ import { View } from "react-native";
6
+ import { useDerivedValue, useFrameCallback, useReducedMotion, useSharedValue, withSpring } from "react-native-reanimated";
7
+ import { useMotionPalette } from "../theme/provider.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const MATERIALS = {
10
+ metal: 0,
11
+ water: 1,
12
+ iridescent: 2,
13
+ ring: 1
14
+ };
15
+ const DEFAULT_TINTS = {
16
+ metal: "#B8C0CC",
17
+ water: "#6FA8E8",
18
+ iridescent: "#F2E9FF",
19
+ ring: "#3FA9F5"
20
+ };
21
+ const RING_LAYERS = [{
22
+ lobes: 3,
23
+ speed: 2.1,
24
+ phase: 0,
25
+ amplitude: 1,
26
+ opacity: 1,
27
+ stroke: 2
28
+ }, {
29
+ lobes: 5,
30
+ speed: -1.6,
31
+ phase: 1.7,
32
+ amplitude: 0.7,
33
+ opacity: 0.6,
34
+ stroke: 1.5
35
+ }, {
36
+ lobes: 4,
37
+ speed: 1.2,
38
+ phase: 3.1,
39
+ amplitude: 0.5,
40
+ opacity: 0.4,
41
+ stroke: 1.5
42
+ }];
43
+ const STATE_MOTION = {
44
+ idle: {
45
+ speed: 0.6,
46
+ wobble: 0.7,
47
+ scale: 0.94,
48
+ distortion: 0.8
49
+ },
50
+ listening: {
51
+ speed: 1,
52
+ wobble: 1,
53
+ scale: 1,
54
+ distortion: 1
55
+ },
56
+ thinking: {
57
+ speed: 2.2,
58
+ wobble: 0.45,
59
+ scale: 0.86,
60
+ distortion: 1.5
61
+ },
62
+ speaking: {
63
+ speed: 1.2,
64
+ wobble: 1.2,
65
+ scale: 1.02,
66
+ distortion: 1.1
67
+ }
68
+ };
69
+ const ORB = Skia.RuntimeEffect.Make(`
70
+ uniform float2 resolution;
71
+ uniform float time;
72
+ uniform float level;
73
+ uniform float wobble;
74
+ uniform float distortion;
75
+ uniform float detail;
76
+ uniform float material;
77
+ uniform float scale;
78
+ uniform float3 tint;
79
+
80
+ float hash(float2 p) {
81
+ return fract(sin(dot(p, float2(127.1, 311.7))) * 43758.5453);
82
+ }
83
+
84
+ float noise(float2 p) {
85
+ float2 i = floor(p);
86
+ float2 f = fract(p);
87
+ float2 u = f * f * (3.0 - 2.0 * f);
88
+ return mix(mix(hash(i), hash(i + float2(1.0, 0.0)), u.x), mix(hash(i + float2(0.0, 1.0)), hash(i + float2(1.0, 1.0)), u.x), u.y);
89
+ }
90
+
91
+ float fbm(float2 p) {
92
+ float v = 0.0;
93
+ float a = 0.5;
94
+ for (int k = 0; k < 4; k++) {
95
+ v += a * noise(p);
96
+ p = p * 2.03 + float2(1.7, 9.2);
97
+ a *= 0.5;
98
+ }
99
+ return v;
100
+ }
101
+
102
+ half4 main(float2 xy) {
103
+ float2 c = resolution * 0.5;
104
+ float R = min(resolution.x, resolution.y) * 0.34 * scale;
105
+ float2 p = (xy - c) / R;
106
+ float ang = atan(p.y, p.x);
107
+ float t = time;
108
+ float w = wobble * (0.06 * sin(3.0 * ang + t * 1.3) + 0.04 * sin(5.0 * ang - t * 0.9) + 0.03 * sin(2.0 * ang + t * 0.6));
109
+ w += level * (0.07 * sin(4.0 * ang + t * 3.1) + 0.05 * sin(7.0 * ang - t * 2.3) + 0.06);
110
+ float rad = 1.0 + w;
111
+ float d = length(p) - rad;
112
+ float aa = 1.5 / R;
113
+ float mask = 1.0 - smoothstep(-aa, aa, d);
114
+
115
+ float2 q = p / rad;
116
+ float z = sqrt(max(0.0, 1.0 - dot(q, q)));
117
+ float3 n = normalize(float3(q, z));
118
+ float2 wp = q * detail * 1.6 + float2(t * 0.25, -t * 0.18);
119
+ float warp = fbm(wp + fbm(wp + t * 0.15) * 1.5);
120
+ n = normalize(n + distortion * float3(warp - 0.5, fbm(wp * 1.3 + 3.1) - 0.5, 0.0) * 1.4);
121
+
122
+ float3 v = float3(0.0, 0.0, 1.0);
123
+ float fres = pow(1.0 - max(0.0, n.z), 2.5);
124
+ float3 L = normalize(float3(-0.45, -0.6, 0.7));
125
+ float spec = pow(max(0.0, dot(reflect(-L, n), v)), 48.0);
126
+ float3 col = float3(0.0);
127
+ float alpha = 0.0;
128
+
129
+ if (material < 0.5) {
130
+ float3 rv = reflect(-v, n);
131
+ float band = rv.y + 0.35 * fbm(rv.xy * 2.5 + t * 0.2);
132
+ float env = smoothstep(-0.06, 0.06, band) * 0.85 + 0.1;
133
+ float stripes = 0.5 + 0.5 * sin(rv.x * 7.0 + warp * 6.0);
134
+ col = mix(float3(0.05, 0.05, 0.06), float3(0.93, 0.93, 0.96), env * 0.7 + stripes * 0.3);
135
+ col = mix(col, tint, 0.12) + spec * 0.9 + fres * 0.15;
136
+ alpha = 1.0;
137
+ } else if (material < 1.5) {
138
+ float3 deep = tint * 0.5;
139
+ float3 shallow = mix(tint, float3(1.0), 0.55);
140
+ col = mix(shallow, deep, z * 0.75);
141
+ float sparkle = smoothstep(0.6, 0.76, fbm(q * detail * 4.0 + t * 0.6));
142
+ col += sparkle * 0.4 + fres * float3(0.7, 0.9, 1.0) * 0.85 + spec;
143
+ alpha = 0.8 + fres * 0.2;
144
+ } else {
145
+ float th = fres * 1.6 + warp * 0.9 + t * 0.05;
146
+ float3 film = 0.5 + 0.5 * cos(6.2831 * (th + float3(0.0, 0.33, 0.67)));
147
+ col = mix(float3(0.97), film, 0.55 * fres + 0.25);
148
+ col = mix(col, tint, 0.1) + spec * 1.2;
149
+ alpha = 0.16 + fres * 0.78 + spec;
150
+ }
151
+
152
+ alpha = clamp(alpha, 0.0, 1.0) * mask;
153
+ float glow = (material > 0.5 && material < 1.5) ? exp(-max(d, 0.0) * 8.0) * (0.35 + level * 0.3) * (1.0 - mask) : 0.0;
154
+ float3 rgb = col * alpha + tint * glow;
155
+ return half4(half3(rgb), half(alpha + glow));
156
+ }
157
+ `);
158
+ function RingLayer({
159
+ index,
160
+ size,
161
+ time,
162
+ level,
163
+ scale,
164
+ still,
165
+ color
166
+ }) {
167
+ const layer = RING_LAYERS[index];
168
+ const path = useDerivedValue(() => {
169
+ const center = size / 2;
170
+ const base = size * 0.3 * scale.value;
171
+ const amp = size * 0.14 * layer.amplitude * (0.12 + level.value * 0.88);
172
+ const t = (still ? 2.4 : time.value) * layer.speed + layer.phase;
173
+ const next = Skia.Path.Make();
174
+ for (let step = 0; step <= 96; step += 1) {
175
+ const theta = step / 96 * Math.PI * 2;
176
+ const r = base + amp * Math.sin(layer.lobes * theta + t) * Math.cos(2 * theta - t * 0.7);
177
+ const x = center + Math.cos(theta) * r;
178
+ const y = center + Math.sin(theta) * r;
179
+ if (step === 0) next.moveTo(x, y);else next.lineTo(x, y);
180
+ }
181
+ next.close();
182
+ return next;
183
+ }, [size, still]);
184
+ return /*#__PURE__*/_jsx(Path, {
185
+ path: path,
186
+ style: "stroke",
187
+ strokeWidth: layer.stroke * (size / 120),
188
+ strokeJoin: "round",
189
+ color: color,
190
+ opacity: layer.opacity
191
+ });
192
+ }
193
+ export function LiquidOrb({
194
+ material = "water",
195
+ state = "idle",
196
+ level,
197
+ size = 200,
198
+ speed = 1,
199
+ wobble = 0.6,
200
+ distortion = 0.5,
201
+ detail = 1,
202
+ tint,
203
+ colors,
204
+ shadow = true,
205
+ style
206
+ }) {
207
+ const palette = useMotionPalette();
208
+ const reduceMotion = useReducedMotion();
209
+ const color = tint ?? DEFAULT_TINTS[material];
210
+ const rgb = useMemo(() => {
211
+ const parsed = Skia.Color(color);
212
+ return [parsed[0], parsed[1], parsed[2]];
213
+ }, [color]);
214
+ const motion = STATE_MOTION[state];
215
+ const time = useSharedValue(0);
216
+ const smooth = useSharedValue(0);
217
+ const rate = useSharedValue(motion.speed * speed);
218
+ const shape = useSharedValue(motion.scale);
219
+ const wob = useSharedValue(motion.wobble * wobble);
220
+ const dist = useSharedValue(motion.distortion * distortion);
221
+ const fallback = useSharedValue(0);
222
+ const input = level ?? fallback;
223
+ const listensToLevel = state === "listening" || state === "speaking";
224
+ useEffect(() => {
225
+ const config = {
226
+ damping: 18,
227
+ stiffness: 120,
228
+ mass: 1
229
+ };
230
+ rate.value = withSpring(motion.speed * speed, config);
231
+ shape.value = reduceMotion ? motion.scale : withSpring(motion.scale, config);
232
+ wob.value = withSpring(motion.wobble * wobble, config);
233
+ dist.value = withSpring(motion.distortion * distortion, config);
234
+ }, [dist, distortion, motion, rate, reduceMotion, shape, speed, wob, wobble]);
235
+ useFrameCallback(info => {
236
+ const delta = Math.min(0.05, (info.timeSincePreviousFrame ?? 16) / 1000);
237
+ time.value += delta * rate.value;
238
+ const target = listensToLevel ? Math.min(1, Math.max(0, input.value)) : state === "thinking" ? 0.15 + 0.1 * Math.sin(time.value * 3) : 0;
239
+ smooth.value += (target - smooth.value) * Math.min(1, delta * 9);
240
+ }, !reduceMotion);
241
+ const uniforms = useDerivedValue(() => ({
242
+ resolution: [size, size],
243
+ time: reduceMotion ? 2.4 : time.value,
244
+ level: smooth.value,
245
+ wobble: wob.value,
246
+ distortion: dist.value,
247
+ detail,
248
+ material: MATERIALS[material],
249
+ scale: shape.value,
250
+ tint: rgb
251
+ }), [detail, material, rgb, size, reduceMotion]);
252
+ const shadowWidth = useDerivedValue(() => size * 0.5 * shape.value * (1 + smooth.value * 0.08));
253
+ const shadowX = useDerivedValue(() => (size - shadowWidth.value) / 2);
254
+ const shadowOpacity = material === "iridescent" ? 0.1 : material === "water" ? 0.16 : 0.22;
255
+ const ring = material === "ring";
256
+ const hasShadow = shadow && !ring;
257
+ const ringColors = colors ?? [color, color, color];
258
+ if (!ORB) return null;
259
+ return /*#__PURE__*/_jsx(View, {
260
+ style: [{
261
+ width: size,
262
+ height: size * (hasShadow ? 1.12 : 1)
263
+ }, style],
264
+ children: /*#__PURE__*/_jsxs(Canvas, {
265
+ style: {
266
+ width: size,
267
+ height: size * (hasShadow ? 1.12 : 1)
268
+ },
269
+ children: [hasShadow ? /*#__PURE__*/_jsx(Group, {
270
+ layer: /*#__PURE__*/_jsx(Paint, {
271
+ children: /*#__PURE__*/_jsx(Blur, {
272
+ blur: size * 0.05
273
+ })
274
+ }),
275
+ children: /*#__PURE__*/_jsx(Oval, {
276
+ x: shadowX,
277
+ y: size * 0.98,
278
+ width: shadowWidth,
279
+ height: size * 0.07,
280
+ color: palette.text,
281
+ opacity: shadowOpacity
282
+ })
283
+ }) : null, ring ? RING_LAYERS.map((_, index) => /*#__PURE__*/_jsx(RingLayer, {
284
+ index: index,
285
+ size: size,
286
+ time: time,
287
+ level: smooth,
288
+ scale: shape,
289
+ still: reduceMotion,
290
+ color: ringColors[index]
291
+ }, index)) : /*#__PURE__*/_jsx(Group, {
292
+ clip: Skia.XYWHRect(0, 0, size, size),
293
+ children: /*#__PURE__*/_jsx(Fill, {
294
+ children: /*#__PURE__*/_jsx(Shader, {
295
+ source: ORB,
296
+ uniforms: uniforms
297
+ })
298
+ })
299
+ })]
300
+ })
301
+ });
302
+ }
303
+ //# sourceMappingURL=liquid-orb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Blur","Canvas","Fill","Group","Oval","Paint","Path","Shader","Skia","useEffect","useMemo","View","useDerivedValue","useFrameCallback","useReducedMotion","useSharedValue","withSpring","useMotionPalette","jsx","_jsx","jsxs","_jsxs","MATERIALS","metal","water","iridescent","ring","DEFAULT_TINTS","RING_LAYERS","lobes","speed","phase","amplitude","opacity","stroke","STATE_MOTION","idle","wobble","scale","distortion","listening","thinking","speaking","ORB","RuntimeEffect","Make","RingLayer","index","size","time","level","still","color","layer","path","center","base","value","amp","t","next","step","theta","Math","PI","r","sin","cos","x","y","moveTo","lineTo","close","style","strokeWidth","strokeJoin","LiquidOrb","material","state","detail","tint","colors","shadow","palette","reduceMotion","rgb","parsed","Color","motion","smooth","rate","shape","wob","dist","fallback","input","listensToLevel","config","damping","stiffness","mass","info","delta","min","timeSincePreviousFrame","target","max","uniforms","resolution","shadowWidth","shadowX","shadowOpacity","hasShadow","ringColors","width","height","children","blur","text","map","_","clip","XYWHRect","source"],"sourceRoot":"../../../src","sources":["skia/liquid-orb.tsx"],"mappings":"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","ignoreList":[]}