@buoy-gg/highlight-updates 2.1.2 → 2.1.3

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.
@@ -42,6 +42,8 @@ export interface RenderCause {
42
42
  timestamp: number;
43
43
  componentCause?: ComponentCauseType;
44
44
  componentName?: string;
45
+ /** Parent component that triggered this re-render (for cascade visualization) */
46
+ parentComponentName?: string;
45
47
  }
46
48
  /**
47
49
  * A single render event in the history
@@ -103,6 +105,8 @@ type StateListener = (state: {
103
105
  }) => void;
104
106
  type SettingsListener = (settings: RenderTrackerSettings) => void;
105
107
  type FilterListener = (filters: FilterConfig) => void;
108
+ /** Callback for individual render events (for unified events integration) */
109
+ type RenderEventCallback = (event: RenderEvent, render: TrackedRender) => void;
106
110
  export interface RenderTrackerSettings {
107
111
  /**
108
112
  * Maximum number of components to highlight per batch.
@@ -171,6 +175,17 @@ export interface RenderTrackerSettings {
171
175
  * Default: "off"
172
176
  */
173
177
  debugLogLevel: DebugLogLevel;
178
+ /**
179
+ * Whether to exclude other dev tools components from highlighting.
180
+ * When true (default), all Buoy dev tools components (floating menu, modals,
181
+ * settings, etc.) are excluded from highlighting.
182
+ * When false, only the Highlight Updates overlay itself is excluded
183
+ * (to prevent infinite loops), but other dev tools will show highlights.
184
+ *
185
+ * Use this to debug and optimize the dev tools themselves.
186
+ * Default: true
187
+ */
188
+ excludeDevTools: boolean;
174
189
  }
175
190
  declare class RenderTrackerSingleton {
176
191
  private renders;
@@ -178,6 +193,8 @@ declare class RenderTrackerSingleton {
178
193
  private stateListeners;
179
194
  private settingsListeners;
180
195
  private filterListeners;
196
+ /** Callbacks for individual render events (unified events integration) */
197
+ private renderEventCallbacks;
181
198
  private isTracking;
182
199
  private isPaused;
183
200
  private settings;
@@ -210,6 +227,31 @@ declare class RenderTrackerSingleton {
210
227
  * Add a render event to a component's history (circular buffer)
211
228
  */
212
229
  private addRenderEvent;
230
+ /**
231
+ * Notify all render event callbacks
232
+ */
233
+ private notifyRenderEventCallbacks;
234
+ /**
235
+ * Emit a render event to callbacks only (without storing in the render list).
236
+ * Used by Events tool when visual highlights are off - we want events but not list updates.
237
+ */
238
+ emitRenderEvent(data: {
239
+ nativeTag: number;
240
+ viewType: string;
241
+ testID?: string;
242
+ nativeID?: string;
243
+ accessibilityLabel?: string;
244
+ componentName?: string;
245
+ measurements?: {
246
+ x: number;
247
+ y: number;
248
+ width: number;
249
+ height: number;
250
+ };
251
+ color: string;
252
+ count: number;
253
+ renderCause?: RenderCause;
254
+ }): void;
213
255
  /**
214
256
  * Start batch mode - defers listener notifications until endBatch() is called.
215
257
  * Use this when tracking multiple renders in a loop to avoid O(n²) notifications.
@@ -355,6 +397,18 @@ declare class RenderTrackerSingleton {
355
397
  * Subscribe to filter changes
356
398
  */
357
399
  subscribeToFilters(listener: FilterListener): () => void;
400
+ /**
401
+ * Subscribe to individual render events as they occur.
402
+ * Used by unified events system to integrate render events into the timeline.
403
+ *
404
+ * @param callback - Called for each render event with the event and component info
405
+ * @returns Unsubscribe function
406
+ */
407
+ onRenderEvent(callback: RenderEventCallback): () => void;
408
+ /**
409
+ * Get the number of render event callbacks (for debugging)
410
+ */
411
+ getRenderEventCallbackCount(): number;
358
412
  /**
359
413
  * Check if a render should be visible based on current filters
360
414
  * Used by the overlay to filter frozen highlights
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Render Export Formatter
3
+ *
4
+ * Simple JSON export for render tracking data.
5
+ */
6
+ import type { TrackedRender } from "./RenderTracker";
7
+ /**
8
+ * Generate JSON export of all tracked renders
9
+ */
10
+ export declare function generateRendersJson(renders: TrackedRender[]): string;
11
+ //# sourceMappingURL=renderExportFormatter.d.ts.map
@@ -29,7 +29,8 @@ export { default as HighlightUpdatesController } from "./highlight-updates/utils
29
29
  export { HighlightUpdatesOverlay } from "./highlight-updates/HighlightUpdatesOverlay";
30
30
  export { installProfilerInterceptor, uninstallProfilerInterceptor, setComparisonCallback, isInterceptorInstalled, enableProfilerLogging, disableProfilerLogging, isLoggingEnabled, } from "./highlight-updates/utils/ProfilerInterceptor";
31
31
  export { RenderTracker } from "./highlight-updates/utils/RenderTracker";
32
- export type { TrackedRender, FilterConfig, RenderTrackerSettings, RenderCause, RenderCauseType, ComponentCauseType, RenderEvent, } from "./highlight-updates/utils/RenderTracker";
32
+ export type { TrackedRender, FilterConfig, RenderTrackerSettings, RenderCause, RenderCauseType, ComponentCauseType, RenderEvent, HookStateChange, } from "./highlight-updates/utils/RenderTracker";
33
+ export declare const onRenderEvent: (callback: (event: import("./highlight-updates/utils/RenderTracker").RenderEvent, render: import("./highlight-updates/utils/RenderTracker").TrackedRender) => void) => any;
33
34
  export { detectRenderCause, clearRenderCauseState, removeRenderCauseState, getRenderCauseStats, safeCloneForHistory, capturePropsSnapshot, captureStateSnapshot, } from "./highlight-updates/utils/RenderCauseDetector";
34
35
  export { PerformanceLogger } from "./highlight-updates/utils/PerformanceLogger";
35
36
  export type { BatchMetrics, BatchTimer } from "./highlight-updates/utils/PerformanceLogger";
@@ -40,4 +41,5 @@ export { RenderDetailView } from "./highlight-updates/components/RenderDetailVie
40
41
  export { HighlightFilterView } from "./highlight-updates/components/HighlightFilterView";
41
42
  export { RenderCauseBadge, TwoLevelCauseBadge, CAUSE_CONFIG, COMPONENT_CAUSE_CONFIG, } from "./highlight-updates/components/RenderCauseBadge";
42
43
  export { RenderHistoryViewer, RenderHistoryFooter, } from "./highlight-updates/components/RenderHistoryViewer";
44
+ export { generateRendersJson, } from "./highlight-updates/utils/renderExportFormatter";
43
45
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/highlight-updates",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "description": "Control React DevTools highlight updates feature from your app",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -26,14 +26,14 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@buoy-gg/shared-ui": "2.1.2",
30
- "@buoy-gg/floating-tools-core": "2.1.2"
29
+ "@buoy-gg/shared-ui": "2.1.3",
30
+ "@buoy-gg/floating-tools-core": "2.1.3"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@buoy-gg/license": "*",
34
34
  "react": "*",
35
35
  "react-native": "*",
36
- "@buoy-gg/core": "2.1.2"
36
+ "@buoy-gg/core": "2.1.3"
37
37
  },
38
38
  "peerDependenciesMeta": {
39
39
  "@buoy-gg/core": {
@@ -44,8 +44,8 @@
44
44
  "@types/react": "^19.1.0",
45
45
  "@types/react-native": "^0.73.0",
46
46
  "typescript": "~5.8.3",
47
- "@buoy-gg/core": "2.1.2",
48
- "@buoy-gg/license": "2.1.2"
47
+ "@buoy-gg/core": "2.1.3",
48
+ "@buoy-gg/license": "2.1.3"
49
49
  },
50
50
  "react-native-builder-bob": {
51
51
  "source": "src",