reanimated-pause-state 0.1.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.
@@ -0,0 +1,69 @@
1
+ /**
2
+ * reanimated-pause-plugin
3
+ *
4
+ * Pause and resume Reanimated animations with structured state snapshots.
5
+ */
6
+ import type { AnimationRegistration, PauseSnapshot, SnapshotOptions } from './types';
7
+ export type { AnimationSnapshot, PauseSnapshot, AnimationType, SnapshotOptions } from './types';
8
+ declare global {
9
+ var __RPP__: {
10
+ paused: boolean;
11
+ pausedAt: number | null;
12
+ snapshot: PauseSnapshot | null;
13
+ } | undefined;
14
+ var __RPP_PAUSED__: boolean | undefined;
15
+ var __RPP_INSTALLED__: {
16
+ installed: boolean;
17
+ version: string;
18
+ } | undefined;
19
+ var __RPP_ORIGINAL_RAF__: ((callback: (timestamp: number) => void) => number) | undefined;
20
+ var __RPP_PENDING_CALLBACKS__: Array<(timestamp: number) => void> | undefined;
21
+ var __RPP_PAUSED_AT__: number | undefined;
22
+ var __RPP_ACCUMULATED_PAUSE__: number | undefined;
23
+ var __RPP_REGISTRY__: {
24
+ animations: Map<string, AnimationRegistration>;
25
+ register: (meta: any) => void;
26
+ unregister: (id: string) => void;
27
+ getAll: () => AnimationRegistration[];
28
+ } | undefined;
29
+ }
30
+ /**
31
+ * Check if the Babel plugin is installed
32
+ */
33
+ export declare function isInstalled(): boolean;
34
+ /**
35
+ * Check if animations are paused
36
+ */
37
+ export declare function isPaused(): boolean;
38
+ /**
39
+ * Get the last pause snapshot (or null if not paused/no snapshot)
40
+ */
41
+ export declare function getSnapshot(): PauseSnapshot | null;
42
+ /**
43
+ * Take a snapshot now with optional filtering
44
+ * This is the main API for getting animation state
45
+ */
46
+ export declare function snapshotNow(opts?: SnapshotOptions): PauseSnapshot;
47
+ /**
48
+ * Get snapshot as JSON string (for clipboard/export)
49
+ */
50
+ export declare function getSnapshotJSON(opts?: SnapshotOptions): string;
51
+ /**
52
+ * Get snapshot as prompt-ready markdown
53
+ * Optimized for pasting into Claude/LLM context
54
+ */
55
+ export declare function getSnapshotMarkdown(opts?: SnapshotOptions): string;
56
+ /**
57
+ * Pause all animations and capture snapshot
58
+ * No-op in production builds
59
+ */
60
+ export declare function pause(): PauseSnapshot;
61
+ /**
62
+ * Resume all animations
63
+ */
64
+ export declare function resume(): void;
65
+ /**
66
+ * Toggle pause state
67
+ */
68
+ export declare function toggle(): PauseSnapshot | null;
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EACrB,aAAa,EAGb,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGhG,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,OAAO,EAAE;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;KAChC,GAAG,SAAS,CAAC;IACd,IAAI,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,IAAI,iBAAiB,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3E,IAAI,oBAAoB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1F,IAAI,yBAAyB,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9E,IAAI,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,IAAI,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,IAAI,gBAAgB,EAAE;QACpB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAC9B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,MAAM,EAAE,MAAM,qBAAqB,EAAE,CAAC;KACvC,GAAG,SAAS,CAAC;CACf;AAqED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAGlD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa,CAQjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,MAAM,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,MAAM,CAkDlE;AA6PD;;;GAGG;AACH,wBAAgB,KAAK,IAAI,aAAa,CAkCrC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CA8B7B;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,aAAa,GAAG,IAAI,CAO7C"}
package/dist/index.js ADDED
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ /**
3
+ * reanimated-pause-plugin
4
+ *
5
+ * Pause and resume Reanimated animations with structured state snapshots.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.isInstalled = isInstalled;
9
+ exports.isPaused = isPaused;
10
+ exports.getSnapshot = getSnapshot;
11
+ exports.snapshotNow = snapshotNow;
12
+ exports.getSnapshotJSON = getSnapshotJSON;
13
+ exports.getSnapshotMarkdown = getSnapshotMarkdown;
14
+ exports.pause = pause;
15
+ exports.resume = resume;
16
+ exports.toggle = toggle;
17
+ const VERSION = '0.1.0';
18
+ /**
19
+ * Initialize JS-side state and registry
20
+ */
21
+ function ensureInitialized() {
22
+ if (typeof globalThis.__RPP__ === 'undefined') {
23
+ globalThis.__RPP__ = {
24
+ paused: false,
25
+ pausedAt: null,
26
+ snapshot: null,
27
+ };
28
+ }
29
+ if (typeof globalThis.__RPP_REGISTRY__ === 'undefined') {
30
+ const animations = new Map();
31
+ globalThis.__RPP_REGISTRY__ = {
32
+ animations,
33
+ register: (meta) => {
34
+ // Skip registration in production - zero overhead
35
+ if (typeof __DEV__ !== 'undefined' && !__DEV__) {
36
+ return;
37
+ }
38
+ const config = meta.__rpp_config || {};
39
+ // Extract toValue and duration from config
40
+ const toValue = config.toValue ?? 0;
41
+ const duration = config.duration;
42
+ // Capture SharedValue reference if available
43
+ const sharedValue = meta.__rpp_sharedValue;
44
+ // Read the current value from SharedValue as the fromValue
45
+ // This works because Reanimated syncs SharedValue.value to JS thread
46
+ const fromValue = sharedValue?.value ?? 0;
47
+ const registration = {
48
+ id: String(meta.__rpp_id),
49
+ type: meta.__rpp_type || 'unknown',
50
+ callsite: {
51
+ file: meta.__rpp_file || 'unknown',
52
+ line: meta.__rpp_line || 0,
53
+ column: meta.__rpp_column,
54
+ },
55
+ config,
56
+ startTime: Date.now(),
57
+ fromValue,
58
+ toValue,
59
+ duration,
60
+ sharedValue, // Store reference for reading current value at pause time
61
+ sharedValueName: meta.__rpp_sharedValueName,
62
+ };
63
+ animations.set(registration.id, registration);
64
+ // Don't auto-cleanup - animations may repeat or user may pause at any time
65
+ // Cleanup will happen on app reload or explicit clear
66
+ },
67
+ unregister: (id) => {
68
+ animations.delete(id);
69
+ },
70
+ getAll: () => Array.from(animations.values()),
71
+ };
72
+ }
73
+ }
74
+ /**
75
+ * Check if the Babel plugin is installed
76
+ */
77
+ function isInstalled() {
78
+ return globalThis.__RPP_INSTALLED__?.installed === true;
79
+ }
80
+ /**
81
+ * Check if animations are paused
82
+ */
83
+ function isPaused() {
84
+ ensureInitialized();
85
+ return globalThis.__RPP__.paused;
86
+ }
87
+ /**
88
+ * Get the last pause snapshot (or null if not paused/no snapshot)
89
+ */
90
+ function getSnapshot() {
91
+ ensureInitialized();
92
+ return globalThis.__RPP__.snapshot;
93
+ }
94
+ /**
95
+ * Take a snapshot now with optional filtering
96
+ * This is the main API for getting animation state
97
+ */
98
+ function snapshotNow(opts) {
99
+ // No-op in production
100
+ if (typeof __DEV__ !== 'undefined' && !__DEV__) {
101
+ return { timestamp: 0, timestampISO: '', animations: [], totalCount: 0, summary: 'disabled in production' };
102
+ }
103
+ ensureInitialized();
104
+ return captureSnapshot(opts);
105
+ }
106
+ /**
107
+ * Get snapshot as JSON string (for clipboard/export)
108
+ */
109
+ function getSnapshotJSON(opts) {
110
+ const snapshot = snapshotNow(opts);
111
+ return JSON.stringify(snapshot, null, 2);
112
+ }
113
+ /**
114
+ * Get snapshot as prompt-ready markdown
115
+ * Optimized for pasting into Claude/LLM context
116
+ */
117
+ function getSnapshotMarkdown(opts) {
118
+ const snapshot = snapshotNow(opts);
119
+ if (!snapshot || snapshot.animations.length === 0) {
120
+ return '**Animation State:** No active animations captured.';
121
+ }
122
+ let md = `## Animation State at Pause\n\n`;
123
+ md += `> Captured: ${snapshot.timestampISO}\n\n`;
124
+ for (const anim of snapshot.animations) {
125
+ // Use SharedValue name as heading if available
126
+ const heading = anim.sharedValueName
127
+ ? `\`${anim.sharedValueName}\` (${anim.type})`
128
+ : `${anim.type} animation`;
129
+ md += `### ${heading}\n\n`;
130
+ // Current value is the most important for debugging
131
+ md += `| Property | Value |\n`;
132
+ md += `|----------|-------|\n`;
133
+ md += `| **Current** | \`${anim.values.current.toFixed(2)}\` |\n`;
134
+ md += `| From → To | ${anim.values.from} → ${anim.values.to} |\n`;
135
+ if (anim.timing.duration) {
136
+ const progress = anim.timing.progress?.toFixed(1) || '0';
137
+ md += `| Progress | ${progress}% (${anim.timing.elapsed}ms / ${anim.timing.duration}ms) |\n`;
138
+ }
139
+ else {
140
+ md += `| Elapsed | ${anim.timing.elapsed}ms |\n`;
141
+ }
142
+ md += `| Location | \`${anim.callsite.file}:${anim.callsite.line}\` |\n`;
143
+ // Show relevant config
144
+ const cfg = anim.config.config;
145
+ if (anim.type === 'spring' && cfg.damping) {
146
+ md += `| Spring | damping=${cfg.damping}`;
147
+ if (cfg.mass)
148
+ md += `, mass=${cfg.mass}`;
149
+ if (cfg.stiffness)
150
+ md += `, stiffness=${cfg.stiffness}`;
151
+ md += ` |\n`;
152
+ }
153
+ if (anim.type === 'repeat') {
154
+ const reps = cfg.numberOfReps;
155
+ md += `| Repeat | ${reps === -1 ? 'infinite' : reps || 'unknown'}`;
156
+ if (cfg.reverse)
157
+ md += ' (reversing)';
158
+ md += ` |\n`;
159
+ }
160
+ md += `\n`;
161
+ }
162
+ return md;
163
+ }
164
+ /**
165
+ * Install the frame interceptor on UI thread
166
+ * Only installs in __DEV__ mode - zero cost in production
167
+ */
168
+ function installFrameInterceptor() {
169
+ // Skip in production - this is a dev/design review tool
170
+ if (typeof __DEV__ !== 'undefined' && !__DEV__) {
171
+ return;
172
+ }
173
+ try {
174
+ const { runOnUI } = require('react-native-reanimated');
175
+ runOnUI(() => {
176
+ 'worklet';
177
+ if (globalThis.__RPP_ORIGINAL_RAF__) {
178
+ return;
179
+ }
180
+ const originalRAF = globalThis.requestAnimationFrame;
181
+ if (!originalRAF) {
182
+ console.warn('[rpp] requestAnimationFrame not found on UI thread');
183
+ return;
184
+ }
185
+ globalThis.__RPP_ORIGINAL_RAF__ = originalRAF;
186
+ globalThis.__RPP_PENDING_CALLBACKS__ = [];
187
+ globalThis.__RPP_PAUSED__ = false;
188
+ globalThis.__RPP_PAUSED_AT__ = 0;
189
+ globalThis.__RPP_ACCUMULATED_PAUSE__ = 0;
190
+ globalThis.requestAnimationFrame = function (callback) {
191
+ if (globalThis.__RPP_PAUSED__) {
192
+ globalThis.__RPP_PENDING_CALLBACKS__.push(callback);
193
+ return -1;
194
+ }
195
+ return globalThis.__RPP_ORIGINAL_RAF__((timestamp) => {
196
+ const adjustedTimestamp = timestamp - (globalThis.__RPP_ACCUMULATED_PAUSE__ || 0);
197
+ callback(adjustedTimestamp);
198
+ });
199
+ };
200
+ })();
201
+ }
202
+ catch (e) {
203
+ console.warn('[rpp] Failed to install frame interceptor:', e);
204
+ }
205
+ }
206
+ /**
207
+ * Flush pending callbacks after resume
208
+ */
209
+ function flushPendingCallbacks() {
210
+ try {
211
+ const { runOnUI } = require('react-native-reanimated');
212
+ runOnUI(() => {
213
+ 'worklet';
214
+ const pending = globalThis.__RPP_PENDING_CALLBACKS__ || [];
215
+ globalThis.__RPP_PENDING_CALLBACKS__ = [];
216
+ if (pending.length === 0)
217
+ return;
218
+ const originalRAF = globalThis.__RPP_ORIGINAL_RAF__;
219
+ if (originalRAF) {
220
+ originalRAF((timestamp) => {
221
+ const adjusted = timestamp - (globalThis.__RPP_ACCUMULATED_PAUSE__ || 0);
222
+ for (const cb of pending) {
223
+ try {
224
+ cb(adjusted);
225
+ }
226
+ catch (e) {
227
+ // Ignore errors in callbacks
228
+ }
229
+ }
230
+ });
231
+ }
232
+ })();
233
+ }
234
+ catch (e) {
235
+ console.warn('[rpp] Failed to flush callbacks:', e);
236
+ }
237
+ }
238
+ /**
239
+ * Create a snapshot of current animation state with optional filtering
240
+ */
241
+ function captureSnapshot(opts) {
242
+ ensureInitialized();
243
+ const now = Date.now();
244
+ let registrations = globalThis.__RPP_REGISTRY__?.getAll() || [];
245
+ // Tier 1: Filter by file
246
+ if (opts?.filterFile) {
247
+ registrations = registrations.filter((reg) => reg.callsite.file.includes(opts.filterFile));
248
+ // Tier 2: Filter by line proximity (requires filterFile)
249
+ if (opts.filterLine !== undefined) {
250
+ const threshold = opts.proximityThreshold ?? 200;
251
+ registrations = registrations.filter((reg) => Math.abs(reg.callsite.line - opts.filterLine) < threshold);
252
+ }
253
+ }
254
+ // Apply max limit
255
+ const maxAnimations = opts?.maxAnimations ?? 20;
256
+ if (registrations.length > maxAnimations) {
257
+ registrations = registrations.slice(0, maxAnimations);
258
+ }
259
+ const animations = registrations.map((reg) => {
260
+ const elapsed = now - reg.startTime;
261
+ const progress = reg.duration ? (elapsed / reg.duration) * 100 : undefined;
262
+ // Read the current value from the SharedValue if available
263
+ // Reanimated syncs SharedValue.value to JS thread automatically
264
+ let currentValue = reg.fromValue;
265
+ if (reg.sharedValue && typeof reg.sharedValue.value === 'number') {
266
+ currentValue = reg.sharedValue.value;
267
+ }
268
+ const snapshot = {
269
+ id: reg.id,
270
+ type: reg.type,
271
+ sharedValueName: reg.sharedValueName,
272
+ callsite: reg.callsite,
273
+ config: {
274
+ type: reg.type,
275
+ config: reg.config,
276
+ },
277
+ timing: {
278
+ startTime: reg.startTime,
279
+ elapsed,
280
+ duration: reg.duration,
281
+ progress: progress ? Math.min(progress, 100) : undefined,
282
+ },
283
+ values: {
284
+ from: reg.fromValue,
285
+ to: reg.toValue,
286
+ current: currentValue,
287
+ },
288
+ description: formatDescription(reg, elapsed, currentValue),
289
+ };
290
+ return snapshot;
291
+ });
292
+ const snapshot = {
293
+ timestamp: now,
294
+ timestampISO: new Date(now).toISOString(),
295
+ animations,
296
+ totalCount: animations.length,
297
+ summary: `${animations.length} animation(s) captured`,
298
+ };
299
+ return snapshot;
300
+ }
301
+ /**
302
+ * Format a human-readable description optimized for prompt context
303
+ */
304
+ function formatDescription(reg, elapsed, currentValue) {
305
+ const file = reg.callsite.file.split('/').pop() || reg.callsite.file;
306
+ const location = `${file}:${reg.callsite.line}`;
307
+ const config = reg.config;
308
+ // Start with SharedValue name if available (most useful for prompts)
309
+ let desc = reg.sharedValueName ? `${reg.sharedValueName}: ` : '';
310
+ desc += `${reg.type} `;
311
+ // Add config-specific details
312
+ switch (reg.type) {
313
+ case 'timing': {
314
+ if (reg.toValue !== 0) {
315
+ desc += `to ${reg.toValue} `;
316
+ }
317
+ if (reg.duration) {
318
+ desc += `(${reg.duration}ms) `;
319
+ }
320
+ break;
321
+ }
322
+ case 'spring': {
323
+ if (reg.toValue !== 0) {
324
+ desc += `to ${reg.toValue} `;
325
+ }
326
+ if (config.damping) {
327
+ desc += `damping=${config.damping} `;
328
+ }
329
+ break;
330
+ }
331
+ case 'repeat': {
332
+ const reps = config.numberOfReps;
333
+ if (reps === -1) {
334
+ desc += '(infinite) ';
335
+ }
336
+ else if (reps) {
337
+ desc += `(${reps}x) `;
338
+ }
339
+ if (config.reverse) {
340
+ desc += 'reverse ';
341
+ }
342
+ break;
343
+ }
344
+ case 'delay': {
345
+ if (config.delayMs) {
346
+ desc += `${config.delayMs}ms `;
347
+ }
348
+ break;
349
+ }
350
+ case 'decay': {
351
+ if (config.velocity) {
352
+ desc += `velocity=${config.velocity} `;
353
+ }
354
+ break;
355
+ }
356
+ case 'sequence': {
357
+ if (config.count) {
358
+ desc += `(${config.count} animations) `;
359
+ }
360
+ break;
361
+ }
362
+ }
363
+ // Current value is the most important info for debugging
364
+ if (currentValue !== undefined) {
365
+ desc += `| current=${currentValue.toFixed(2)} `;
366
+ }
367
+ desc += `| ${elapsed}ms elapsed`;
368
+ if (reg.duration) {
369
+ const progress = Math.min((elapsed / reg.duration) * 100, 100).toFixed(0);
370
+ desc += ` (${progress}%)`;
371
+ }
372
+ desc += ` | ${location}`;
373
+ return desc;
374
+ }
375
+ /**
376
+ * Pause all animations and capture snapshot
377
+ * No-op in production builds
378
+ */
379
+ function pause() {
380
+ // No-op in production
381
+ if (typeof __DEV__ !== 'undefined' && !__DEV__) {
382
+ return { timestamp: 0, timestampISO: '', animations: [], totalCount: 0, summary: 'disabled in production' };
383
+ }
384
+ ensureInitialized();
385
+ if (globalThis.__RPP__.paused) {
386
+ return globalThis.__RPP__.snapshot;
387
+ }
388
+ installFrameInterceptor();
389
+ // Capture snapshot before pausing
390
+ const snapshot = captureSnapshot();
391
+ globalThis.__RPP__.snapshot = snapshot;
392
+ globalThis.__RPP__.paused = true;
393
+ globalThis.__RPP__.pausedAt = Date.now();
394
+ try {
395
+ const { runOnUI } = require('react-native-reanimated');
396
+ runOnUI(() => {
397
+ 'worklet';
398
+ globalThis.__RPP_PAUSED__ = true;
399
+ globalThis.__RPP_PAUSED_AT__ =
400
+ globalThis._getAnimationTimestamp?.() || Date.now();
401
+ })();
402
+ }
403
+ catch (e) {
404
+ console.warn('[rpp] Failed to pause on UI thread:', e);
405
+ }
406
+ return snapshot;
407
+ }
408
+ /**
409
+ * Resume all animations
410
+ */
411
+ function resume() {
412
+ ensureInitialized();
413
+ if (!globalThis.__RPP__.paused) {
414
+ return;
415
+ }
416
+ globalThis.__RPP__.paused = false;
417
+ try {
418
+ const { runOnUI } = require('react-native-reanimated');
419
+ runOnUI(() => {
420
+ 'worklet';
421
+ const pausedAt = globalThis.__RPP_PAUSED_AT__ || 0;
422
+ const now = globalThis._getAnimationTimestamp?.() || Date.now();
423
+ const pauseDuration = now - pausedAt;
424
+ globalThis.__RPP_ACCUMULATED_PAUSE__ =
425
+ (globalThis.__RPP_ACCUMULATED_PAUSE__ || 0) + pauseDuration;
426
+ globalThis.__RPP_PAUSED__ = false;
427
+ })();
428
+ flushPendingCallbacks();
429
+ }
430
+ catch (e) {
431
+ console.warn('[rpp] Failed to resume:', e);
432
+ }
433
+ }
434
+ /**
435
+ * Toggle pause state
436
+ */
437
+ function toggle() {
438
+ if (isPaused()) {
439
+ resume();
440
+ return null;
441
+ }
442
+ else {
443
+ return pause();
444
+ }
445
+ }
446
+ // Auto-initialize registry immediately so Babel-injected trackers work
447
+ ensureInitialized();
448
+ // Auto-install interceptor in dev mode (delayed to ensure Reanimated is ready)
449
+ if (typeof __DEV__ !== 'undefined' && __DEV__) {
450
+ setTimeout(() => {
451
+ installFrameInterceptor();
452
+ }, 100);
453
+ }
454
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Animation snapshot captured at pause time
3
+ */
4
+ export interface AnimationSnapshot {
5
+ /** Unique ID for this animation instance */
6
+ id: string;
7
+ /** Animation type: 'timing' | 'spring' | 'decay' | 'repeat' | 'sequence' | 'delay' */
8
+ type: AnimationType;
9
+ /** Variable name of the animated SharedValue (e.g., "translateX") */
10
+ sharedValueName?: string;
11
+ /** Source location where the animation was created */
12
+ callsite: {
13
+ file: string;
14
+ line: number;
15
+ column?: number;
16
+ };
17
+ /** Animation configuration */
18
+ config: AnimationConfig;
19
+ /** Timing information */
20
+ timing: {
21
+ /** When the animation started (ms since epoch) */
22
+ startTime: number;
23
+ /** How long the animation has been running (ms) */
24
+ elapsed: number;
25
+ /** Expected duration (for timing animations) */
26
+ duration?: number;
27
+ /** Progress as percentage 0-100 (for timing animations) */
28
+ progress?: number;
29
+ };
30
+ /** Value information */
31
+ values: {
32
+ /** Starting value */
33
+ from: number;
34
+ /** Target value */
35
+ to: number;
36
+ /** Current value at pause */
37
+ current: number;
38
+ };
39
+ /** Human-readable description */
40
+ description: string;
41
+ }
42
+ export type AnimationType = 'timing' | 'spring' | 'decay' | 'repeat' | 'sequence' | 'delay' | 'unknown';
43
+ export interface TimingConfig {
44
+ duration: number;
45
+ easing?: string;
46
+ }
47
+ export interface SpringConfig {
48
+ damping?: number;
49
+ mass?: number;
50
+ stiffness?: number;
51
+ overshootClamping?: boolean;
52
+ restDisplacementThreshold?: number;
53
+ restSpeedThreshold?: number;
54
+ }
55
+ export interface DecayConfig {
56
+ velocity?: number;
57
+ deceleration?: number;
58
+ }
59
+ export interface RepeatConfig {
60
+ numberOfReps?: number;
61
+ reverse?: boolean;
62
+ }
63
+ export type AnimationConfig = {
64
+ type: 'timing';
65
+ config: TimingConfig;
66
+ } | {
67
+ type: 'spring';
68
+ config: SpringConfig;
69
+ } | {
70
+ type: 'decay';
71
+ config: DecayConfig;
72
+ } | {
73
+ type: 'repeat';
74
+ config: RepeatConfig;
75
+ } | {
76
+ type: 'sequence';
77
+ config: {
78
+ count: number;
79
+ };
80
+ } | {
81
+ type: 'delay';
82
+ config: {
83
+ delayMs: number;
84
+ };
85
+ } | {
86
+ type: 'unknown';
87
+ config: Record<string, unknown>;
88
+ };
89
+ /**
90
+ * Full pause state snapshot
91
+ */
92
+ export interface PauseSnapshot {
93
+ /** When the snapshot was taken */
94
+ timestamp: number;
95
+ /** ISO timestamp string */
96
+ timestampISO: string;
97
+ /** All active animations at pause time */
98
+ animations: AnimationSnapshot[];
99
+ /** Total count of tracked animations */
100
+ totalCount: number;
101
+ /** Summary for quick reference */
102
+ summary: string;
103
+ }
104
+ /**
105
+ * Options for filtering snapshots
106
+ */
107
+ export interface SnapshotOptions {
108
+ /** Filter animations by file path (partial match) */
109
+ filterFile?: string;
110
+ /** Filter animations by line proximity (requires filterFile) */
111
+ filterLine?: number;
112
+ /** Max distance in lines from filterLine (default: 200) */
113
+ proximityThreshold?: number;
114
+ /** Max animations to return (default: 20) */
115
+ maxAnimations?: number;
116
+ }
117
+ /**
118
+ * SharedValue type from Reanimated (minimal interface for our needs)
119
+ */
120
+ export interface SharedValueRef {
121
+ value: number;
122
+ }
123
+ /**
124
+ * Registration data for tracking an animation
125
+ */
126
+ export interface AnimationRegistration {
127
+ id: string;
128
+ type: AnimationType;
129
+ callsite: {
130
+ file: string;
131
+ line: number;
132
+ column?: number;
133
+ };
134
+ config: Record<string, unknown>;
135
+ startTime: number;
136
+ fromValue: number;
137
+ toValue: number;
138
+ duration?: number;
139
+ /** Reference to the SharedValue being animated */
140
+ sharedValue?: SharedValueRef;
141
+ /** Variable name of the SharedValue (e.g., "translateX", "scale") */
142
+ sharedValueName?: string;
143
+ }
144
+ //# sourceMappingURL=types.d.ts.map