@buoy-gg/highlight-updates 7.0.61 → 7.0.63
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.
- package/lib/commonjs/highlight-updates/utils/screenElements.js +1 -1
- package/lib/commonjs/sync/highlightUpdatesSyncAdapter.js +1 -1
- package/lib/module/highlight-updates/utils/screenElements.js +1 -1
- package/lib/module/sync/highlightUpdatesSyncAdapter.js +1 -1
- package/lib/typescript/highlight-updates/utils/screenElements.d.ts +64 -0
- package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts +4 -0
- package/lib/web/index.mjs +12 -12
- package/package.json +6 -6
package/lib/web/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";var
|
|
1
|
+
"use client";var Gn=Object.defineProperty;var xl=Object.getOwnPropertyDescriptor;var Il=Object.getOwnPropertyNames;var Rl=Object.prototype.hasOwnProperty;var Mt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Vo=(e,t)=>{for(var n in t)Gn(e,n,{get:t[n],enumerable:true})},Kn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Il(t))!Rl.call(e,o)&&o!==n&&Gn(e,o,{get:()=>t[o],enumerable:!(r=xl(t,o))||r.enumerable});return e},Dl=(e,t,n)=>(Kn(e,t,"default"),n&&Kn(n,t,"default"));var kl=e=>Kn(Gn({},"__esModule",{value:true}),e);var Z,j=Mt(()=>{"use strict";Z=(()=>{try{let e=globalThis.Capacitor;if(e&&typeof e.isNativePlatform=="function"&&e.isNativePlatform())return e.DEBUG===true}catch{}return process.env.NODE_ENV!=="production"})();typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis)});function qn(e){return Ge[e]||e}function Pl(e){for(let[t,n]of Object.entries(Ge))if(n===e)return t;return null}function Ll(e){return e in Ge}function Nl(){return Object.keys(Ge)}function zl(){return[...new Set(Object.values(Ge))]}var Ge,Ao=Mt(()=>{"use strict";j();Ge={RCTView:"View",RCTSafeAreaView:"SafeAreaView",RCTModalHostView:"Modal",RCTText:"Text",RCTRawText:"RawText",RCTVirtualText:"VirtualText",RCTTextInlineImage:"TextInlineImage",RCTImageView:"Image",RCTImage:"Image",RCTScrollView:"ScrollView",RCTScrollContentView:"ScrollContentView",AndroidHorizontalScrollView:"HorizontalScrollView",AndroidHorizontalScrollContentView:"HorizontalScrollContentView",RCTSinglelineTextInputView:"TextInput",RCTMultilineTextInputView:"TextInput (Multiline)",AndroidTextInput:"TextInput",RCTInputAccessoryView:"InputAccessoryView",RCTRefreshControl:"RefreshControl",AndroidSwipeRefreshLayout:"RefreshControl",PullToRefreshView:"RefreshControl",RCTSwitch:"Switch",AndroidSwitch:"Switch",RCTSlider:"Slider",RCTActivityIndicatorView:"ActivityIndicator",AndroidProgressBar:"ActivityIndicator",AndroidDrawerLayout:"DrawerLayout",VirtualView:"VirtualView",VirtualViewExperimental:"VirtualView",DebuggingOverlay:"DebuggingOverlay",LayoutConformance:"LayoutConformance",UnimplementedNativeView:"UnimplementedView",RKShimmeringView:"ShimmeringView",RCTTemplateView:"TemplateView",RCTAxialGradientView:"AxialGradientView",RCTMap:"Map",RCTWebView:"WebView",RCTKeyframes:"Keyframes",RCTImpressionTrackingView:"ImpressionTrackingView",RNSVGSvgView:"Svg",RNSVGGroup:"G",RNSVGPath:"Path",RNSVGText:"SvgText",RNSVGTSpan:"TSpan",RNSVGTextPath:"TextPath",RNSVGImage:"SvgImage",RNSVGCircle:"Circle",RNSVGEllipse:"Ellipse",RNSVGLine:"Line",RNSVGRect:"Rect",RNSVGClipPath:"ClipPath",RNSVGDefs:"Defs",RNSVGUse:"Use",RNSVGSymbol:"Symbol",RNSVGPattern:"Pattern",RNSVGMask:"Mask",RNSVGForeignObject:"ForeignObject",RNSVGMarker:"Marker",RNSVGLinearGradient:"LinearGradient",RNSVGRadialGradient:"RadialGradient",RNSVGFilter:"Filter",RNSVGFeBlend:"FeBlend",RNSVGFeColorMatrix:"FeColorMatrix",RNSVGFeComposite:"FeComposite",RNSVGFeFlood:"FeFlood",RNSVGFeGaussianBlur:"FeGaussianBlur",RNSVGFeMerge:"FeMerge",RNSVGFeOffset:"FeOffset",RNSVGPolygon:"Polygon",RNSVGPolyline:"Polyline",RNSVGStop:"Stop",RNGestureHandlerRootView:"GestureHandlerRootView",RNGestureHandlerButton:"GestureHandlerButton",RNCSafeAreaProvider:"SafeAreaProvider",RNCSafeAreaView:"SafeAreaView",RNSScreen:"Screen",RNSScreenContainer:"ScreenContainer",RNSScreenStack:"ScreenStack",RNSScreenStackHeaderConfig:"ScreenStackHeaderConfig",RNSScreenStackHeaderSubview:"ScreenStackHeaderSubview",RNSSearchBar:"SearchBar",RNSFullWindowOverlay:"FullWindowOverlay",RNSModalScreen:"ModalScreen",ReanimatedView:"Animated.View",ExpoView:"ExpoView",ExpoBlurView:"BlurView",ExpoLinearGradient:"LinearGradient",ExpoImage:"ExpoImage",ExpoVideoView:"VideoView",ExpoCamera:"Camera",ExpoBarCodeScannerView:"BarCodeScanner",RNCWebView:"WebView",AIRMap:"MapView",AIRMapMarker:"Marker",AIRMapPolyline:"Polyline",AIRMapPolygon:"Polygon",AIRMapCircle:"Circle",AIRMapCallout:"Callout",RCTVideo:"Video",LottieAnimationView:"LottieView",FastImageView:"FastImage"}});function Vl(){return $t=performance.now(),$t}function Al(e,t){$t>0&&e>0&&($t=0)}var $t,Bo,Ke,ln=Mt(()=>{"use strict";j();$t=0;Bo=class{constructor(){this.enabled=false;this.batchCounter=0;this.listeners=new Set;this.rollingStats={batchCount:0,totalNodes:0,totalFiltered:0,totalProcessed:0,totalTime:0,maxTime:0,minTime:1/0,avgMeasurementTime:0};this.recentBatches=[];this.MAX_HISTORY=100;this.summaryInterval=null;this.SUMMARY_INTERVAL_MS=1e4}setEnabled(e){let t=this.enabled;this.enabled=e,e&&!t?this.resetStats():!e&&t&&this.stopSummaryInterval()}isEnabled(){return this.enabled}startBatch(e,t){let n=`batch_${++this.batchCounter}`,r=performance.now(),o=null,i=null,l=null,a=null,c=null,s=0,u=0,p=0,T=0,y;return{markFilteringComplete:(b,f)=>{o=performance.now(),s=b,u=f},markMeasurementStart:()=>{i=performance.now()},markMeasurementComplete:(b,f)=>{l=performance.now(),p=b,T=f},markTrackingComplete:()=>{a=performance.now()},markCallbackComplete:()=>{c=performance.now()},setOverlayRenderTime:b=>{y=b},getBatchId:()=>n,finish:()=>{let b=performance.now(),f={batchId:n,timestamp:Date.now(),nodesReceived:e,nodesFiltered:s,nodesToProcess:u,batchSize:t,nodesInBatch:Math.min(u,t),filteringTime:o?o-r:0,measurementTime:i&&l?l-i:0,trackingTime:l&&a?a-l:0,callbackTime:a&&c?c-a:0,totalTime:b-r,measurementSuccessCount:p,measurementFailCount:T,overlayRenderTime:y};return this.enabled&&this.recordMetrics(f),f}}}recordMetrics(e){this.rollingStats.batchCount++,this.rollingStats.totalNodes+=e.nodesReceived,this.rollingStats.totalFiltered+=e.nodesFiltered,this.rollingStats.totalProcessed+=e.nodesInBatch,this.rollingStats.totalTime+=e.totalTime,this.rollingStats.maxTime=Math.max(this.rollingStats.maxTime,e.totalTime),this.rollingStats.minTime=Math.min(this.rollingStats.minTime,e.totalTime);let t=this.rollingStats.avgMeasurementTime,n=this.rollingStats.batchCount;this.rollingStats.avgMeasurementTime=t+(e.measurementTime-t)/n,this.recentBatches.push(e),this.recentBatches.length>this.MAX_HISTORY&&this.recentBatches.shift(),this.notifyListeners(e)}logBatch(e){let{batchId:t,nodesReceived:n,nodesFiltered:r,nodesInBatch:o,batchSize:i,filteringTime:l,measurementTime:a,trackingTime:c,callbackTime:s,totalTime:u,measurementSuccessCount:p,measurementFailCount:T,overlayRenderTime:y}=e;console.log(`[HighlightPerf] ${t} | In:${n} Filt:${r} Proc:${o}/${i} | Filter:${l.toFixed(1)}ms Measure:${a.toFixed(1)}ms Track:${c.toFixed(1)}ms Callback:${s.toFixed(1)}ms | Total:${u.toFixed(1)}ms`+(y?` Render:${y.toFixed(1)}ms`:"")+` | Success:${p} Fail:${T}`),u>100&&console.warn(`[HighlightPerf] \u26A0\uFE0F SLOW BATCH: ${u.toFixed(1)}ms - Measurement phase: ${a.toFixed(1)}ms (${(a/u*100).toFixed(0)}%)`)}logSummary(){if(this.rollingStats.batchCount===0)return;let e=this.rollingStats,t=e.totalTime/e.batchCount,n=e.totalNodes/e.batchCount;console.log(`
|
|
2
2
|
[HighlightPerf] \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 SUMMARY (last ${this.SUMMARY_INTERVAL_MS/1e3}s) \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
3
3
|
Batches: ${e.batchCount}
|
|
4
4
|
Avg nodes/batch: ${n.toFixed(1)} (filtered: ${(e.totalFiltered/e.batchCount).toFixed(1)})
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
\u2551 Tracking: ${(e.reduce((i,l)=>i+l.trackingTime,0)/e.length).toFixed(1).padStart(6)}ms \u2551
|
|
24
24
|
\u2551 Callback: ${(e.reduce((i,l)=>i+l.callbackTime,0)/e.length).toFixed(1).padStart(6)}ms \u2551
|
|
25
25
|
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
|
|
26
|
-
`}},Ue=new Do});function kl(e){if(e.testID&&e.testID.trim())return true;let t=(e.componentName??"").trim();if(!t||Un.has(t)||ko.has(t))return false;let n=(e.viewType??"").trim();return!(n&&Un.has(n)&&t===n||/^comp(\s|$)/i.test(t)||t.startsWith("_"))}var Un,ko,Pl=zt(()=>{"use strict";j();Un=new Set(["View","RCTView","Text","RCTText","RawText","RCTRawText","VirtualText","RCTVirtualText","ScrollView","RCTScrollView","RCTScrollContentView","SafeAreaView","RCTSafeAreaView","Pressable","TouchableOpacity","Image","RCTImageView"]),ko=new Set(["Unknown","Anonymous","CellRenderer","NativeComponent"])});var Po={};Io(Po,{RenderTracker:()=>V,default:()=>No});var Gn,Lo,zo,V,No,Pe=zt(()=>{"use strict";j();Ro();nn();Pl();Gn=200,Lo=150,zo=class{constructor(){this.renders=new Map;this.listeners=new Set;this.stateListeners=new Set;this.settingsListeners=new Set;this.filterListeners=new Set;this.renderEventCallbacks=new Set;this.isTracking=false;this.isPaused=false;this.settings={batchSize:Lo,showRenderCount:true,performanceLogging:false,trackRenderCauses:false,enableRenderHistory:false,maxRenderHistoryPerComponent:20,capturePropsOnRender:false,captureStateOnRender:false,debugLogLevel:"off",excludeDevTools:true,showHostViews:false};this.isBatchMode=false;this.batchDirty=false;this.filters={includeTestID:new Set,includeNativeID:new Set,includeViewType:new Set,includeComponent:new Set,excludeTestID:new Set,excludeNativeID:new Set,excludeViewType:new Set,excludeComponent:new Set,includePatterns:[],excludePatterns:[]}}trackRender(e){if(this.isPaused)return;let t=String(e.nativeTag),n=Date.now(),r=this.renders.get(t);if(r){if(r.renderCount=e.count,r.lastRenderTime=n,r.color=e.color,e.measurements&&(r.measurements=e.measurements),e.testID&&!r.testID&&(r.testID=e.testID),e.nativeID&&!r.nativeID&&(r.nativeID=e.nativeID),e.accessibilityLabel&&!r.accessibilityLabel&&(r.accessibilityLabel=e.accessibilityLabel),e.componentName&&!r.componentName&&(r.componentName=e.componentName),e.renderCause&&(r.lastRenderCause=e.renderCause),this.settings.enableRenderHistory){let o=e.renderCause||{type:"unknown",timestamp:n};this.addRenderEvent(r,o,e.capturedProps,e.capturedState)}}else{let o={id:t,nativeTag:e.nativeTag,viewType:e.viewType,displayName:jn(e.viewType),testID:e.testID,nativeID:e.nativeID,accessibilityLabel:e.accessibilityLabel,componentName:e.componentName,renderCount:e.count,firstRenderTime:n,lastRenderTime:n,measurements:e.measurements,color:e.color,lastRenderCause:e.renderCause};if(this.settings.enableRenderHistory){o.renderHistory=[];let i=e.renderCause||{type:e.count===1?"mount":"unknown",timestamp:n};this.addRenderEvent(o,i,e.capturedProps,e.capturedState)}if(this.renders.set(t,o),this.renders.size>Gn){let i=Array.from(this.renders.values()).sort((l,a)=>l.lastRenderTime-a.lastRenderTime).slice(0,this.renders.size-Gn);for(let l of i)this.renders.delete(l.id)}}this.isBatchMode?this.batchDirty=true:this.notifyListeners()}addRenderEvent(e,t,n,r){e.renderHistory||(e.renderHistory=[]);let o={id:`${e.nativeTag}-${t.timestamp}`,timestamp:t.timestamp,cause:t,renderNumber:e.renderCount,capturedProps:this.settings.capturePropsOnRender?n:void 0,capturedState:this.settings.captureStateOnRender?r:void 0};e.renderHistory.push(o);let i=Math.max(5,Math.min(50,this.settings.maxRenderHistoryPerComponent));e.renderHistory.length>i&&(e.renderHistory=e.renderHistory.slice(-i)),this.notifyRenderEventCallbacks(o,e)}notifyRenderEventCallbacks(e,t){this.renderEventCallbacks.forEach(n=>{try{n(e,t)}catch{}})}emitRenderEvent(e){if(this.renderEventCallbacks.size===0)return;let t=Date.now(),n=e.renderCause||{type:"unknown",timestamp:t},r={id:String(e.nativeTag),nativeTag:e.nativeTag,viewType:e.viewType,displayName:jn(e.viewType),testID:e.testID,nativeID:e.nativeID,accessibilityLabel:e.accessibilityLabel,componentName:e.componentName,renderCount:e.count,firstRenderTime:t,lastRenderTime:t,measurements:e.measurements,color:e.color,lastRenderCause:n,renderHistory:[]},o={id:`${e.nativeTag}-${t}-${e.count}`,timestamp:t,renderNumber:e.count,cause:n,capturedProps:void 0,capturedState:void 0};this.notifyRenderEventCallbacks(o,r)}startBatch(){this.isBatchMode=true,this.batchDirty=false}endBatch(){this.isBatchMode=false,this.batchDirty&&(this.batchDirty=false,this.notifyListeners())}getRenders(){return Array.from(this.renders.values()).map(e=>({...e}))}passesFilters(e){if(this.filters.includePatterns.length>0&&!this.matchesAnyPatternForInfo(e,this.filters.includePatterns)||this.filters.excludePatterns.length>0&&this.matchesAnyPatternForInfo(e,this.filters.excludePatterns))return false;if(this.filters.includeViewType.size>0){let t=e.viewType||"",n=e.displayName||"";if(!this.matchesPattern(t,this.filters.includeViewType)&&!this.matchesPattern(n,this.filters.includeViewType))return false}if(this.filters.includeTestID.size>0&&(!e.testID||!this.matchesPattern(e.testID,this.filters.includeTestID))||this.filters.includeNativeID.size>0&&(!e.nativeID||!this.matchesPattern(e.nativeID,this.filters.includeNativeID))||this.filters.includeComponent.size>0&&(!e.componentName||!this.matchesPattern(e.componentName,this.filters.includeComponent)))return false;if(this.filters.excludeViewType.size>0){let t=e.viewType||"",n=e.displayName||"";if(this.matchesPattern(t,this.filters.excludeViewType)||this.matchesPattern(n,this.filters.excludeViewType))return false}return!(this.filters.excludeTestID.size>0&&e.testID&&this.matchesPattern(e.testID,this.filters.excludeTestID)||this.filters.excludeNativeID.size>0&&e.nativeID&&this.matchesPattern(e.nativeID,this.filters.excludeNativeID)||this.filters.excludeComponent.size>0&&e.componentName&&this.matchesPattern(e.componentName,this.filters.excludeComponent))}matchesAnyPatternForInfo(e,t){for(let n of t){let r=n.value.toLowerCase();switch(n.type){case"any":if(e.viewType.toLowerCase().includes(r)||e.displayName?.toLowerCase().includes(r)||e.testID?.toLowerCase().includes(r)||e.nativeID?.toLowerCase().includes(r)||e.componentName?.toLowerCase().includes(r)||e.accessibilityLabel?.toLowerCase().includes(r))return true;break;case"viewType":if(e.viewType.toLowerCase().includes(r)||e.displayName?.toLowerCase().includes(r))return true;break;case"testID":if(e.testID?.toLowerCase().includes(r))return true;break;case"nativeID":if(e.nativeID?.toLowerCase().includes(r))return true;break;case"component":if(e.componentName?.toLowerCase().includes(r))return true;break;case"accessibilityLabel":if(e.accessibilityLabel?.toLowerCase().includes(r))return true;break}}return false}hasActiveFilters(){return this.filters.includePatterns.length>0||this.filters.excludePatterns.length>0||this.filters.includeViewType.size>0||this.filters.includeTestID.size>0||this.filters.includeNativeID.size>0||this.filters.includeComponent.size>0||this.filters.excludeViewType.size>0||this.filters.excludeTestID.size>0||this.filters.excludeNativeID.size>0||this.filters.excludeComponent.size>0||this.filters.minRenderCount!==void 0||this.filters.maxRenderCount!==void 0}getFilteredRenders(e=""){let t=this.getRenders();if(this.settings.showHostViews||(t=t.filter(kl)),e.trim()){let n=e.toLowerCase();t=t.filter(r=>r.viewType.toLowerCase().includes(n)||r.displayName.toLowerCase().includes(n)||r.testID?.toLowerCase().includes(n)||r.nativeID?.toLowerCase().includes(n)||r.accessibilityLabel?.toLowerCase().includes(n)||r.componentName?.toLowerCase().includes(n)||String(r.nativeTag).includes(n))}return t=t.filter(n=>this.passesFilters(n)),this.filters.minRenderCount!==void 0&&(t=t.filter(n=>n.renderCount>=this.filters.minRenderCount)),this.filters.maxRenderCount!==void 0&&(t=t.filter(n=>n.renderCount<=this.filters.maxRenderCount)),t.sort((n,r)=>r.lastRenderTime-n.lastRenderTime)}matchesPattern(e,t){let n=e.toLowerCase();for(let r of t){let o=r.toLowerCase();if(n.includes(o))return true}return false}getRender(e){return this.renders.get(e)}clear(){this.renders.clear(),this.notifyListeners()}resetRenderCount(e){let t=this.renders.get(e);t&&(t.renderCount=0,this.notifyListeners())}start(){this.isTracking=true,this.isPaused=false,this.notifyStateListeners()}stop(){this.isTracking=false,this.isPaused=false,this.notifyStateListeners()}pause(){this.isPaused=true,this.notifyStateListeners()}resume(){this.isPaused=false,this.notifyStateListeners()}togglePause(){this.isPaused=!this.isPaused,this.notifyStateListeners()}getState(){return{isTracking:this.isTracking,isPaused:this.isPaused}}replaceRenders(e,t){let n=new Map;for(let[r,o]of this.renders)o.renderHistory&&o.renderHistory.length>0&&n.set(r,o.renderHistory);this.renders=new Map(e.map(r=>{let o=n.get(r.id),i=o&&!(r.renderHistory&&r.renderHistory.length>0)?{...r,renderHistory:o}:r;return[i.id,i]})),t&&(this.isTracking!==t.isTracking||this.isPaused!==t.isPaused)&&(this.isTracking=t.isTracking,this.isPaused=t.isPaused,this.notifyStateListeners()),this.notifyListeners()}hydrateRender(e){let t=this.renders.get(e.id);this.renders.set(e.id,t?{...t,...e}:e),this.notifyListeners()}getFilters(){return this.filters}setFilters(e){this.filters={...this.filters,...e},this.notifyListeners(),this.notifyFilterListeners()}addIncludePattern(e,t){let n=`include${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].add(t),this.notifyListeners()}removeIncludePattern(e,t){let n=`include${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].delete(t),this.notifyListeners()}addExcludePattern(e,t){let n=`exclude${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].add(t),this.notifyListeners()}removeExcludePattern(e,t){let n=`exclude${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].delete(t),this.notifyListeners()}clearFilters(){this.filters={includeTestID:new Set,includeNativeID:new Set,includeViewType:new Set,includeComponent:new Set,excludeTestID:new Set,excludeNativeID:new Set,excludeViewType:new Set,excludeComponent:new Set,includePatterns:[],excludePatterns:[],minRenderCount:void 0,maxRenderCount:void 0},this.notifyListeners()}getAvailableProps(){let e=new Set,t=new Set,n=new Set,r=new Set,o=new Set;for(let i of this.renders.values())i.viewType&&e.add(i.viewType),i.testID&&t.add(i.testID),i.nativeID&&n.add(i.nativeID),i.componentName&&r.add(i.componentName),i.accessibilityLabel&&o.add(i.accessibilityLabel);return{viewTypes:Array.from(e).sort(),testIDs:Array.from(t).sort(),nativeIDs:Array.from(n).sort(),componentNames:Array.from(r).sort(),accessibilityLabels:Array.from(o).sort()}}getStats(){let e=0;for(let t of this.renders.values())e+=t.renderCount;return{totalComponents:this.renders.size,totalRenders:e}}subscribe(e){return this.listeners.add(e),e(this.getRenders()),()=>{this.listeners.delete(e)}}subscribeToState(e){return this.stateListeners.add(e),e(this.getState()),()=>{this.stateListeners.delete(e)}}subscribeToSettings(e){return this.settingsListeners.add(e),e(this.settings),()=>{this.settingsListeners.delete(e)}}subscribeToFilters(e){return this.filterListeners.add(e),e(this.filters),()=>{this.filterListeners.delete(e)}}onRenderEvent(e){return this.renderEventCallbacks.add(e),()=>{this.renderEventCallbacks.delete(e)}}getRenderEventCallbackCount(){return this.renderEventCallbacks.size}shouldShowRender(e){let t=this.filters;return!(t.includePatterns.length>0&&!this.matchesAnyPatternForInfo(e,t.includePatterns)||t.excludePatterns.length>0&&this.matchesAnyPatternForInfo(e,t.excludePatterns)||(t.includeViewType.size>0||t.includeTestID.size>0||t.includeNativeID.size>0||t.includeComponent.size>0)&&!(t.includeViewType.size>0&&t.includeViewType.has(e.viewType)||t.includeTestID.size>0&&e.testID&&t.includeTestID.has(e.testID)||t.includeNativeID.size>0&&e.nativeID&&t.includeNativeID.has(e.nativeID)||t.includeComponent.size>0&&e.componentName&&t.includeComponent.has(e.componentName))||t.excludeViewType.has(e.viewType)||e.testID&&t.excludeTestID.has(e.testID)||e.nativeID&&t.excludeNativeID.has(e.nativeID)||e.componentName&&t.excludeComponent.has(e.componentName))}getSettings(){return{...this.settings}}setSettings(e){e.batchSize!==void 0&&(e.batchSize=Math.max(10,Math.min(500,e.batchSize))),e.maxRenderHistoryPerComponent!==void 0&&(e.maxRenderHistoryPerComponent=Math.max(5,Math.min(50,e.maxRenderHistoryPerComponent))),e.enableRenderHistory&&!this.settings.trackRenderCauses&&(e.trackRenderCauses=true),e.trackRenderCauses===false&&this.settings.enableRenderHistory&&(e.enableRenderHistory=false),this.settings={...this.settings,...e},e.performanceLogging!==void 0&&Ue.setEnabled(e.performanceLogging),this.notifySettingsListeners()}clearAllRenderHistory(){for(let e of this.renders.values())e.renderHistory=[];this.notifyListeners()}clearRenderHistory(e){let t=this.renders.get(e);t&&(t.renderHistory=[],this.notifyListeners())}getRenderHistoryStats(){let e=0,t=0;for(let n of this.renders.values())n.renderHistory&&n.renderHistory.length>0&&(e+=n.renderHistory.length,t++);return{totalEvents:e,componentsWithHistory:t,averageEventsPerComponent:t>0?e/t:0}}getBatchSize(){return this.settings.batchSize}setBatchSize(e){this.setSettings({batchSize:e})}notifyListeners(){let e=this.getRenders();for(let t of this.listeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in listener:",n)}}notifyStateListeners(){let e=this.getState();for(let t of this.stateListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in state listener:",n)}}notifySettingsListeners(){let e=this.getSettings();for(let t of this.settingsListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in settings listener:",n)}}notifyFilterListeners(){let e=this.getFilters();for(let t of this.filterListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in filter listener:",n)}}},V=new zo,No=V});j();j();import{useState as Kn,useEffect as qn,useCallback as Ll}from"react";import{HighlighterIcon as Vo,HighlightIcon as Bo}from"@buoy-gg/floating-tools-core/web";j();import{getDOMFiber as Jn,getDOMNodeHandle as zl,getDOMPublicInstance as Nl,isDOMElement as Ao}from"@buoy-gg/shared-ui/web/utils";j();var it=null,at=null,Vt=false,Bt=false,rn=null;function Ho(e){if(!e)return{type:"null"};let t=e,n={};if(t.canonical){n.type="Fabric";let r=t.canonical;if(r.publicInstance){let o=r.publicInstance;n.hasMeasure=typeof o.measure=="function",n.nativeTag=o.__nativeTag??o._nativeTag??"unknown"}}else typeof t.measure=="function"?(n.type="Legacy",n.hasMeasure=true,n.nativeTag=t.__nativeTag??t._nativeTag??t.nativeTag??"unknown"):(n.type="Unknown",n.keys=Object.keys(t).slice(0,10));return n}function Vl(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;!e||typeof e.emit!="function"||it||(it=e.emit.bind(e),e.emit=function(t,...n){if(t==="traceUpdates"&&Bt){let r=n[0];r.size>0&&console.log(`[PROFILER] traceUpdates: ${r.size} nodes`,Array.from(r).map((o,i)=>({index:i,...Ho(o)}))),rn&&rn(r)}return it(t,...n)})}function Bl(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__?.reactDevtoolsAgent;!e||typeof e.emit!="function"||at||(at=e.emit.bind(e),e.emit=function(t,...n){if(Bt&&t==="drawTraceUpdates"){let r=n[0];r.length>0&&console.log(`[PROFILER] drawTraceUpdates: ${r.length} nodes`,r.map((o,i)=>({index:i,color:o.color,...Ho(o.node)})))}return at(t,...n)})}function Al(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;e?.rendererInterfaces&&e.rendererInterfaces.forEach(t=>{if(typeof t.setTraceUpdatesEnabled=="function")try{t.setTraceUpdatesEnabled(false)}catch{}})}function $o(e){rn=e}function Mo(){typeof Q<"u"&&!Q||Vt||(Vl(),Bl(),Vt=true)}function Fo(){if(!Vt)return;let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;it&&e&&(e.emit=it,it=null),at&&e?.reactDevtoolsAgent&&(e.reactDevtoolsAgent.emit=at,at=null),Al(),rn=null,Vt=false}function Hl(){return Vt}function $l(){Bt=true}function Ml(){Bt=false}function Fl(){return Bt}var Eo={};Io(Eo,{AccessibilityInfo:()=>Wl,ActivityIndicator:()=>Ps,Alert:()=>zs,Animated:()=>jl,AppRegistry:()=>Gl,AppState:()=>Kl,Appearance:()=>Ul,BackHandler:()=>ql,Button:()=>Ls,CheckBox:()=>as,Clipboard:()=>Jl,DeviceEventEmitter:()=>Ts,Dimensions:()=>At,Easing:()=>Yl,FlatList:()=>_o,I18nManager:()=>Xl,Image:()=>ls,ImageBackground:()=>ss,InteractionManager:()=>Ql,Keyboard:()=>Zl,KeyboardAvoidingView:()=>cs,LayoutAnimation:()=>es,Linking:()=>ts,LogBox:()=>Cs,Modal:()=>jo,NativeEventEmitter:()=>ns,NativeModules:()=>_l,PanResponder:()=>rs,Picker:()=>us,PixelRatio:()=>Yn,Platform:()=>Oo,Pressable:()=>Wo,ProgressBar:()=>ds,RefreshControl:()=>hs,SafeAreaView:()=>gs,ScrollView:()=>Ve,SectionList:()=>ps,Share:()=>os,StatusBar:()=>fs,StyleSheet:()=>ye,Switch:()=>lt,Text:()=>h,TextInput:()=>on,Touchable:()=>ms,TouchableHighlight:()=>Ds,TouchableNativeFeedback:()=>ys,TouchableOpacity:()=>J,TouchableWithoutFeedback:()=>ks,UIManager:()=>Xn,Vibration:()=>is,View:()=>d,VirtualizedList:()=>bs,YellowBox:()=>vs,findNodeHandle:()=>Ht,unstable_createElement:()=>Ol,useColorScheme:()=>ws,useLocaleContext:()=>Ss,useWindowDimensions:()=>xs});j();Cl(Eo,El);import*as El from"react-native-web";import{unstable_createElement as Ol,NativeModules as _l,AccessibilityInfo as Wl,Animated as jl,Appearance as Ul,AppRegistry as Gl,AppState as Kl,BackHandler as ql,Clipboard as Jl,Dimensions as At,Easing as Yl,I18nManager as Xl,Keyboard as Zl,InteractionManager as Ql,LayoutAnimation as es,Linking as ts,NativeEventEmitter as ns,PanResponder as rs,PixelRatio as Yn,Platform as Oo,Share as os,StyleSheet as ye,UIManager as Xn,Vibration as is,CheckBox as as,FlatList as _o,Image as ls,ImageBackground as ss,KeyboardAvoidingView as cs,Picker as us,ProgressBar as ds,RefreshControl as hs,SafeAreaView as gs,SectionList as ps,StatusBar as fs,Touchable as ms,TouchableNativeFeedback as ys,VirtualizedList as bs,YellowBox as vs,LogBox as Cs,DeviceEventEmitter as Ts,useColorScheme as ws,useLocaleContext as Ss,useWindowDimensions as xs}from"react-native-web";import*as be from"react-native-web";import{createElement as Is,forwardRef as Rs}from"react";function Te(e){let t=Rs((r,o)=>{let{accessibilityState:i,accessibilityValue:l,...a}=r;for(let c of["busy","checked","disabled","expanded","selected"])i?.[c]!==void 0&&a[`aria-${c}`]===void 0&&(a[`aria-${c}`]=i[c]);for(let[c,s]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))l?.[c]!==void 0&&a[`aria-${s}`]===void 0&&(a[`aria-${s}`]=l[c]);return Is(e,{...a,ref:o})}),n=e.State;return n&&Object.assign(t,{State:n}),t.displayName=e.displayName??e.name??"NativeWebView",t}var d=Te(be.View),h=Te(be.Text),on=Te(be.TextInput),J=Te(be.TouchableOpacity),Ds=Te(be.TouchableHighlight),ks=Te(be.TouchableWithoutFeedback),Wo=Te(be.Pressable),Ve=Te(be.ScrollView),jo=Te(be.Modal),lt=Te(be.Switch),Ps=Te(be.ActivityIndicator),Ls=Te(be.Button),Ht=be.findNodeHandle,zs={alert(e,t,n,r){if(typeof document>"u")return;let o=document.createElement("dialog");o.dataset.buoyRoot="",o.setAttribute("aria-label",e),o.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let i=document.createElement("h2");if(i.textContent=e,i.style.cssText="font-size:18px;margin:0 0 12px",o.appendChild(i),t){let s=document.createElement("p");s.textContent=t,s.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",o.appendChild(s)}let l=document.createElement("div");l.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let a=n?.length?n:[{text:"OK"}],c=()=>{o.close?.(),o.remove()};for(let s of a){let u=document.createElement("button");u.type="button",u.textContent=s.text??"OK",u.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${s.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,u.onclick=()=>{c(),s.onPress?.()},l.appendChild(u)}o.addEventListener("cancel",s=>{s.preventDefault(),r?.cancelable!==false&&(c(),r?.onDismiss?.())}),o.appendChild(l),document.body.appendChild(o),o.showModal?o.showModal():o.setAttribute("open","")}};Pe();j();import{getDOMControlProps as Ns,getDOMNodeHandle as Vs,getDOMPublicInstance as Bs,isDOMElement as As}from"@buoy-gg/shared-ui/web/utils";j();function Uo(e){return e?e.x>=-.1&&e.x<=1.1&&e.y>=-.1&&e.y<=1.1:false}function Zn(e,t,n){if(!e||t<=0||n<=0)return false;let r=e.x+e.width/2,o=e.y+e.height/2,i=t*.1,l=n*.1;return r>=-i&&r<=t+i&&o>=-l&&o<=n+l}function Go(e){return String(e??"").toLowerCase().replace(/\s+/g," ").replace(/(\d)[,\u00a0\u202f](?=\d{3}\b)/g,"$1").trim()}function an(e,t){if(t.nativeTag!=null&&e.nativeTag===t.nativeTag)return 1e3;if(t.testID&&!t.query){if(!e.testID||e.testID.toLowerCase()!==t.testID.trim().toLowerCase())return 0;let l=200;return e.tap&&(l+=Uo(e.tap)?20:-40),l}let n=String(t.query??t.testID??"").trim().toLowerCase();if(!n)return 0;let r=[e.testID,e.label,e.text,e.name].filter(Boolean).map(l=>l.toLowerCase()),o=0;for(let l of r)l===n?o=Math.max(o,100):l.startsWith(n)?o=Math.max(o,50):l.includes(n)&&(o=Math.max(o,25));let i=Go(n);if(i)for(let l of r){let a=Go(l);a===i?o=Math.max(o,90):a.startsWith(i)?o=Math.max(o,45):a.includes(i)&&(o=Math.max(o,22))}return t.testID&&e.testID&&e.testID.toLowerCase()===t.testID.toLowerCase()&&(o=Math.max(o,200)),o===0?0:((e.testID??"").toLowerCase().startsWith("buoy-dial-")&&(o+=40),e.tap&&(Uo(e.tap)?o+=20:o-=40),o)}var Hs=22,Ko=new Set(["View","RCTView","ScrollView","RCTScrollView","RCTScrollContentView","SafeAreaView","RCTSafeAreaView","AndroidHorizontalScrollContentView","KeyboardAvoidingView","Pressable","PlatformPressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","AnimatedComponent","Wrapper"]);function qo(){return typeof globalThis>"u"?null:globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__??null}var Qn=0,Jo=false;function $s(){if(Jo)return;let e=qo();if(!e)return;let t=e.onCommitFiberRoot;e.onCommitFiberRoot=function(...n){return Qn++,typeof t=="function"?t.apply(e,n):void 0},Jo=true}var Ms=250;function Yo(){let e=new Map;return t=>{let n=[],r=t,o=0,i=false;for(;r&&o<400;){let l=e.get(r);if(l!==void 0){i=l;break}if(Be(r)?.__buoyDevToolsRoot){i=true,e.set(r,true);break}n.push(r),r=r.return,o++}for(let l of n)e.set(l,i);return i}}function er(){let e=qo();if(!e)return[];let t=[];try{if(e.renderers&&typeof e.renderers.forEach=="function"&&e.renderers.forEach((n,r)=>{try{let o=e.getFiberRoots?.(r);o&&o.forEach(i=>t.push(i))}catch{}}),t.length===0&&e.getFiberRoots){let n=e.getFiberRoots(1);n&&n.forEach(r=>t.push(r))}}catch{}return t}function Fs(e){return e.tag===Hs&&e.memoizedState!==null}var Ge=false,tr=0,ln=false;function Xo(e,t){let n=Ge;Ge=e;try{return t()}finally{Ge=n}}function Es(e){let t=e.memoizedProps;return t?t["aria-hidden"]===true&&(t.activityState!==void 0||"shouldFreeze"in t)||t.isFocused===false&&(t.routeKey!==void 0||"freezeContents"in t):false}function Os(e){let t=e.memoizedProps?.activityState;return t===0||t===1||e.memoizedProps?.isPageFocused===false?true:!Ge&&Es(e)?(tr++,true):false}function st(e,t,n=0,r=new Set){if(!(!e||r.has(e)||n>500)){if(r.add(e),Fs(e)||Os(e)){e.sibling&&st(e.sibling,t,n,r);return}t(e),e.child&&st(e.child,t,n+1,r),e.sibling&&st(e.sibling,t,n,r)}}function Zo(e){let t=Bs(e);if(t)return t;if(!e)return null;let n=e;return n.canonical?.publicInstance?n.canonical.publicInstance:n.canonical&&typeof n.canonical.measure=="function"?n.canonical:typeof n.measure=="function"||typeof n.measureInWindow=="function"?n:null}function nr(e){let t=Vs(e);if(t!==null)return t;if(e==null)return null;let n=e;if(typeof n.__nativeTag=="number")return n.__nativeTag;if(typeof n._nativeTag=="number")return n._nativeTag;if(typeof n.nativeTag=="number")return n.nativeTag;if(n.canonical){if(typeof n.canonical.__nativeTag=="number")return n.canonical.__nativeTag;if(typeof n.canonical._nativeTag=="number")return n.canonical._nativeTag;if(typeof n.canonical.nativeTag=="number")return n.canonical.nativeTag}return null}function Qo(e){let t=Zo(e.stateNode);if(t)return{instance:t,nativeTag:nr(e.stateNode),stateNode:e.stateNode};let n=[];e.child&&n.push(e.child);let r=0;for(;n.length>0&&r<4e3;){r++;let o=n.pop();if(!o)continue;let i=Zo(o.stateNode);if(i)return{instance:i,nativeTag:nr(o.stateNode),stateNode:o.stateNode};o.child&&n.push(o.child),o.sibling&&n.push(o.sibling)}return null}function _s(e){let t=e,n=0;for(;t&&n++<200;){let r=t.stateNode;if(r&&typeof r.scrollTo=="function"){let o=typeof r.getNativeScrollRef=="function"&&r.getNativeScrollRef()||null,i=typeof r.getInnerViewNode=="function"&&r.getInnerViewNode()||typeof r.getScrollableNode=="function"&&r.getScrollableNode()||r;return{instance:r,nativeRef:o,innerNode:i}}t=t.return}return null}async function Ws(e,t,n,r){try{if(As(n))return n.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"}),await new Promise(c=>setTimeout(c,16)),true;let o=_s(e);if(!o)return false;let i=t,l=null,a=c=>new Promise(s=>{let u=false,p=y=>{u||(u=true,s(y))},T=setTimeout(()=>p(null),600);try{c(y=>{clearTimeout(T),p(y)})}catch{clearTimeout(T),p(null)}});if(o.nativeRef&&typeof i.measureLayout=="function"&&(l=await a(c=>i.measureLayout(o.nativeRef,(s,u)=>c(u),()=>c(null)))),l==null){let c=Ht(t),s=typeof o.innerNode=="number"?o.innerNode:Ht(o.innerNode);c!=null&&s!=null&&(l=await a(u=>Xn.measureLayout(c,s,()=>u(null),(p,T)=>u(T))))}return l==null?false:(o.instance.scrollTo({y:Math.max(0,l-r),animated:false}),await new Promise(c=>setTimeout(c,120)),true)}catch{return false}}function sn(e){let t=e?.type;return t?typeof t=="string"?t:t.displayName||t.name||null:null}function rr(e){let t=e?._debugOwner||e?.return,n=0;for(;t&&n<30;){n++;let r=sn(t);if(r&&!Ko.has(r)&&typeof t.type!="string")return r;t=t.return}return null}function Be(e){return Ns(e?.stateNode,e?.memoizedProps??e?.pendingProps??null)}function ei(e,t=0){if(typeof e=="string")return e;if(typeof e=="number"&&Number.isFinite(e))return String(e);if(Array.isArray(e)&&t<4){let n=[];for(let r of e){let o=ei(r,t+1);o&&n.push(o)}return n.length>0?n.join(""):void 0}}function js(e){return e.replace(/\s+/g," ").trim()}function ti(e){if(!e)return;let t=n=>{let r=ei(n);if(r===void 0)return;let o=js(r);return o?ln?o:o.slice(0,80):void 0};return t(e.children)??t(e.title)??t(e.label)??t(e.placeholder)??void 0}function Us(e,t){let n=[],r=(i,l)=>{if(!i||l>t||n.length>=4)return;if(i!==e){let c=Be(i);if(c&&(typeof c.onPress=="function"||typeof c.onLongPress=="function"))return}let a=ti(Be(i));a&&!n.includes(a)&&n.push(a),i.child&&r(i.child,l+1),i!==e&&i.sibling&&r(i.sibling,l)};e.child&&r(e.child,1);let o=n.join(" ").trim();return o?o.slice(0,80):void 0}function Gs(e){let t=e,n=0,r=null,o=null;for(;t&&n<25&&!(r&&o);){let i=Be(t);i&&(!r&&typeof i.onPress=="function"&&(r=i.onPress),!o&&typeof i.onLongPress=="function"&&(o=i.onLongPress)),t=t.return,n++}return r?{handler:r,kind:"onPress",longPress:o??void 0}:o?{handler:o,kind:"onLongPress"}:null}function $t(e){return new Promise(t=>{let n=false,r=o=>{n||(n=true,t(o))};setTimeout(()=>r(null),1e3);try{typeof e.measureInWindow=="function"?e.measureInWindow((o,i,l,a)=>{l>0&&a>0?r({x:o,y:i,width:l,height:a}):r(null)}):typeof e.measure=="function"?e.measure((o,i,l,a,c,s)=>{l>0&&a>0&&c!=null&&s!=null?r({x:c,y:s,width:l,height:a}):r(null)}):r(null)}catch{r(null)}})}var Ks=new Set(["RCTActivityIndicatorView","AndroidProgressBar"]);function or(){let e=er();if(e.length===0)return[];let t=[],n=new Map,r=new Map,o=Yo();for(let i of e)st(i.current,l=>{let a=Be(l);if(!a)return;let c=typeof a.onPress=="function"||typeof a.onLongPress=="function",s=typeof a.onValueChange=="function",u=typeof a.onChangeText=="function",p=a.testID||void 0,T=a.accessibilityLabel||void 0,y=a.accessibilityRole||a.role||void 0,v=ti(a),m=y==="button"||y==="link"||y==="menuitem"||y==="tab"||y==="switch"||y==="checkbox",S=typeof l.type=="string"&&Ks.has(l.type)&&a.animating!==false;if(!c&&!s&&!u&&!p&&!T&&!v&&!m&&!S)return;let b=null,P=null,g=null;if(s){let w=a.value,z=typeof w=="number"||typeof a.minimumValue=="number";P={handler:a.onValueChange,kind:z?"slider":"toggle",current:w,min:typeof a.minimumValue=="number"?a.minimumValue:void 0,max:typeof a.maximumValue=="number"?a.maximumValue:void 0}}else u?g={handler:a.onChangeText,current:typeof a.value=="string"?a.value:void 0}:b=Gs(l);let D=sn(l),k=D??"Unknown";(!D||Ko.has(D)||typeof l.type=="string")&&(k=rr(l)??D??"Unknown");let R=Qo(l);if(!R&&!p)return;!v&&!T&&c&&(v=Us(l,6));let _=R?.instance??null,Z=R?.nativeTag??null,N=(_?n.get(_):void 0)??(Z!=null?r.get(Z):void 0);if(N){!N.press&&b?N.press=b:N.press&&b?.longPress&&!N.press.longPress&&(N.press.longPress=b.longPress),!N.valueControl&&P&&(N.valueControl=P),!N.textControl&&g&&(N.textControl=g),!N.testID&&p&&(N.testID=p),!N.label&&T&&(N.label=T),!N.text&&v&&(N.text=v),_&&!n.has(_)&&n.set(_,N),Z!=null&&!r.has(Z)&&r.set(Z,N);return}let W={nativeTag:Z,name:k,role:y??(S?"progressbar":void 0),testID:p,label:T,text:v,instance:_,stateNode:R?.stateNode??null,fiber:l,press:b,valueControl:P,textControl:g,rect:null,buoy:o(l)};t.push(W),_&&n.set(_,W),Z!=null&&r.set(Z,W)});return t}function qs(e,t){return t.nativeTag!=null?e.nativeTag===t.nativeTag:t.testID&&e.testID?e.testID.toLowerCase()===t.testID.toLowerCase():false}function ir(e){let t=or();return e.includeBuoy?t:t.filter(n=>!n.buoy||qs(n,e))}async function ni(e){await Promise.all(e.map(async t=>{t.instance&&(t.rect=await $t(t.instance))}))}var Js=/^(FlatList|SectionList|VirtualizedSectionList|VirtualizedList|Animated\(.*\)|AnimatedComponent.*)$/;async function Ys(e,t){let n=[],r=Yo();for(let i of er())st(i.current,l=>{if(sn(l)!=="VirtualizedList")return;let a=l.memoizedProps;if(!a||typeof a.getItemCount!="function"||!e&&r(l))return;let c;try{c=Number(a.getItemCount(a.data))}catch{return}if(!Number.isFinite(c)||c<=0)return;let s=[],u=(y,v)=>{for(let m=y?.child;m;m=m.sibling){let S=sn(m);if(S!=="VirtualizedList"){if(S==="CellRenderer"){s.push(m);continue}v<40&&u(m,v+1)}}};u(l,0);let p=l,T=rr(p);for(let y=0;y<6&&T&&Js.test(T);y++)p=p._debugOwner||p.return,T=rr(p);n.push({owner:T,items:c,cells:s})});let o=[];for(let i of n){let l=(await Promise.all(i.cells.map(async a=>{let c=Qo(a);return c?$t(c.instance):null}))).filter(t).length;l>0&&i.items>l&&o.push({owner:i.owner,items:i.items,listed:l})}return o}async function ar(e={}){let t=Ge,n=ln;Ge=!!e.includeHidden,ln=!!e.fullText;try{return await Xs(e)}finally{Ge=t,ln=n}}async function Xs(e){tr=0;let t=or(),n=tr,r=e.includeBuoy?t:t.filter(u=>!u.buoy),o=t.length-r.length;await ni(r);let i=At.get("window"),l=Math.round(i.width)||1,a=Math.round(i.height)||1,c=[];for(let u of r){let p=u.rect;if(!p&&!u.testID)continue;let T,y;if(p){let S=p.x+p.width/2,b=p.y+p.height/2;if(b<-a*.1||b>a*1.1||S<-l*.1||S>l*1.1)continue;T={x:ct(S/l),y:ct(b/a)},y={x:ct(p.x/l),y:ct(p.y/a),width:ct(p.width/l),height:ct(p.height/a)}}let v=u.valueControl?u.valueControl.kind:u.textControl?"text":void 0,m=u.valueControl?u.valueControl.current:u.textControl?.current;c.push({nativeTag:u.nativeTag,name:u.name,role:u.role,testID:u.testID,label:u.label,text:u.text,interactive:!!(u.press||u.valueControl||u.textControl),longPressable:u.press&&(u.press.kind==="onLongPress"||u.press.longPress)?true:void 0,control:v,value:m,tap:T,frame:y})}c.sort((u,p)=>{let T=u.tap?.y??2,y=p.tap?.y??2;return Math.abs(T-y)>.02?T-y:(u.tap?.x??2)-(p.tap?.x??2)});let s=await Ys(!!e.includeBuoy,u=>{if(!u)return false;let p=u.x+u.width/2;return u.y<=a*1.1&&u.y+u.height>=-a*.1&&p>=-l*.1&&p<=l*1.1});return{screen:{width:l,height:a},count:c.length,elements:c,...o>0?{hiddenBuoy:o}:{},...n>0?{hiddenScreens:n}:{},...s.length?{lists:s}:{}}}function ct(e){return Math.round(e*100)/100}function ri(e){return{nativeTag:e.nativeTag,testID:e.testID,label:e.label,text:e.text,name:e.name}}function lr(e,t){return an(ri(e),t)}function oi(e,t,n){if(!(!e||!t||!n))return{x:(e.x+e.width/2)/t,y:(e.y+e.height/2)/n}}function ii(e){let t=e?e.x+e.width/2:0,n=e?e.y+e.height/2:0;return{nativeEvent:{locationX:e?e.width/2:0,locationY:e?e.height/2:0,pageX:t,pageY:n,timestamp:0,target:null,identifier:1,touches:[],changedTouches:[]},persist:()=>{},preventDefault:()=>{},stopPropagation:()=>{},isDefaultPrevented:()=>false,isPropagationStopped:()=>false,target:null,currentTarget:null,type:"press",timeStamp:0}}async function Zs(e){let t=Xo(!!e.includeHidden,()=>ir(e));if(t.length===0)return{tapped:false,reason:"No React fiber roots / elements found on screen."};let n=t.map(g=>({c:g,score:lr(g,e)})).filter(g=>g.score>0).sort((g,D)=>D.score-g.score),r=g=>!!(g.press||g.valueControl||g.textControl);if(n.length===0&&!e.includeHidden&&Xo(true,()=>ir(e)).map(g=>({c:g,score:lr(g,e)})).filter(g=>g.score>0).length>0)return{tapped:false,reason:"That element is only on a screen that isn't showing (another tab, or a screen under the current one). Navigate to it first, or pass includeHidden:true if you really mean the hidden one."};if(n.length===0)return{tapped:false,reason:"No element matched. Call describe_screen to see available elements (match by testID, text, or name).",candidates:t.filter(r).slice(0,12).map(g=>({nativeTag:g.nativeTag,name:g.name,testID:g.testID,text:g.text}))};let o=At.get("window"),i=o.width||1,l=o.height||1,a=n.slice(0,15);await Promise.all(a.map(async g=>{g.c.instance&&!g.c.rect&&(g.c.rect=await $t(g.c.instance))}));for(let g of a)g.score=an({...ri(g.c),tap:oi(g.c.rect,i,l)},e);a.sort((g,D)=>D.score-g.score);let c=a.find(g=>r(g.c))??n.find(g=>r(g.c))??a[0],s=c.c,u=(g,D)=>g.press&&g.press.handler===D.press?.handler||g.valueControl&&g.valueControl.handler===D.valueControl?.handler||g.textControl&&g.textControl.handler===D.textControl?.handler,p=a.filter(g=>g!==c&&r(g.c)&&g.score===c.score).filter(g=>!u(g.c,s)).filter((g,D,k)=>k.findIndex(R=>u(R.c,g.c))===D).slice(0,3).map(g=>({nativeTag:g.c.nativeTag,name:g.c.name,testID:g.c.testID,text:g.c.text,tap:oi(g.c.rect,i,l)})),T=e.nativeTag==null&&!(e.testID&&!e.query);if(T&&p.length>0){let g=[s,...p.map(D=>a.find(k=>k.c.nativeTag===D.nativeTag)?.c).filter(Boolean)];return{tapped:false,reason:`"${e.query}" matches ${g.length} different controls equally well, so nothing was tapped. Tap one by its nativeTag.`,candidates:g.map(D=>({nativeTag:D.nativeTag,name:D.name,testID:D.testID,text:D.text}))}}let y=a[0];if(T&&y&&y!==c&&!r(y.c)&&y.score>=90&&c.score<y.score-40)return{tapped:false,reason:`The best match for "${e.query}" is "${y.c.text??y.c.label??y.c.name}", which has no JS press handler (it may be native, like a tab bar button). The closest pressable match, "${s.text??s.label??s.name}", is a much weaker match, so nothing was tapped. Use navigate, or tap a specific element by nativeTag.`,candidates:[{nativeTag:s.nativeTag,name:s.name,testID:s.testID,text:s.text}]};if(!r(s))return{tapped:false,reason:`Matched "${s.name}"${s.text?` ("${s.text}")`:""} but it has no onPress / onValueChange / onChangeText handler (e.g. a react-native-gesture-handler GestureDetector). This element can't be driven in JS.`,matched:{nativeTag:s.nativeTag,name:s.name,testID:s.testID,label:s.label,text:s.text,via:"onPress"}};s.instance&&!s.rect&&(s.rect=await $t(s.instance));let v=false;(s.rect==null||!Zn(s.rect,i,l))&&e.scrollIntoView!==false&&s.instance&&(v=await Ws(s.fiber,s.instance,s.stateNode,80),v&&(s.rect=await $t(s.instance)));let m={nativeTag:s.nativeTag,name:s.name,testID:s.testID,label:s.label,text:s.text};$s();let S=Qn,b=Date.now(),P=async g=>(await new Promise(D=>setTimeout(D,Ms)),{tapped:true,scrolled:v,matched:g,effect:{commits:Qn-S,observedMs:Date.now()-b},...p.length?{alsoMatched:p}:{}});try{if(s.press){if(e.longPress){let D=s.press.kind==="onLongPress"?s.press.handler:s.press.longPress;return D?(D(ii(s.rect)),await P({...m,via:"onLongPress"})):{tapped:false,scrolled:v,reason:`Matched "${s.name}"${s.text?` ("${s.text}")`:""} but it has no onLongPress handler \u2014 call tap_element without longPress to tap it normally.`,matched:{...m,via:"onPress"}}}return s.press.handler(ii(s.rect)),await P({...m,via:s.press.kind})}if(s.valueControl){let D=s.valueControl,k;if(D.kind==="toggle")k=typeof e.value=="boolean"?e.value:!D.current;else{let R=D.min??0,_=D.max??1;typeof e.value=="number"?k=Math.min(_,Math.max(R,e.value)):k=D.current===_?R:_}return D.handler(k),await P({...m,via:"onValueChange",value:k})}let g=e.text??(typeof e.value=="string"?e.value:"");return s.textControl.handler(g),await P({...m,via:"onChangeText",value:g})}catch(g){return{tapped:false,scrolled:v,reason:`handler threw: ${g instanceof Error?g.message:String(g)}`,matched:{...m,via:s.press?s.press.kind:s.valueControl?"onValueChange":"onChangeText"}}}}var Qs=5e3,ec=3e4,tc=50,nc=150;async function rc(e){if(!(e.nativeTag!=null||!!String(e.testID??"").trim()||!!String(e.query??"").trim()))return{ok:false,waitedMs:0,polls:0,reason:"Nothing to wait for \u2014 pass nativeTag, testID or query."};let t=Math.min(Math.max(e.timeoutMs??Qs,0),ec),n=Math.max(e.pollMs??nc,tc),r=e.gone===true,o=Date.now(),i=0;for(;;){i+=1;let{hit:l,closest:a}=await oc(e);if(r?!l:l)return{ok:true,waitedMs:Date.now()-o,polls:i,matched:l??void 0};if(Date.now()-o>=t){let c=a?.length?a:void 0,s=r?`Still on screen after ${t}ms.`:c?`Not on screen after ${t}ms \u2014 ${c.length===1?"one element":`${c.length} elements`} matched but ${c.some(u=>u.onScreen)?"not well enough":"none is visible"}. See \`closest\`; do not retry with different words, call describeScreen.`:`Not on screen after ${t}ms, and nothing matched those words at all. Call describeScreen to see what is there.`;return{ok:false,waitedMs:Date.now()-o,polls:i,reason:s,matched:l??void 0,closest:c}}await new Promise(c=>setTimeout(c,n))}}async function oc(e){let t=ir(e).map(a=>({c:a,score:lr(a,e)})).filter(a=>a.score>0).sort((a,c)=>c.score-a.score).slice(0,8);if(t.length===0)return{hit:null,closest:void 0};await ni(t.map(a=>a.c));let n=At.get("window"),r=Math.round(n.width)||1,o=Math.round(n.height)||1,i=null;for(let{c:a}of t)if(Zn(a.rect,r,o)){i={nativeTag:a.nativeTag,name:a.name,testID:a.testID,label:a.label,text:a.text,interactive:!!(a.press||a.valueControl||a.textControl)};break}let l=t.slice(0,3).map(({c:a})=>({name:a.name,testID:a.testID,text:a.text,onScreen:Zn(a.rect,r,o)}));return{hit:i,closest:l}}function ic(e){let t=e,n=0;for(;t&&n<400;){if(Be(t)?.__buoyDevToolsRoot)return true;t=t.return,n++}return false}function ac(e,t){let n=Be(e.fiber);if(typeof n?.onPress=="function"||typeof n?.onValueChange=="function"||typeof n?.onChangeText=="function")return e;let r=null,o=e.fiber?.return,i=0;for(;o&&i<25;){if(typeof Be(o)?.onPress=="function"){r=o;break}o=o.return,i++}if(!r)return e;let l=r;for(let a=0;a<6&&l;a++){let c=t.get(l);if(c)return c;l=l.return}return e}function ai(e){let t=or();if(t.length===0)return null;let n=new Map;for(let a of t)n.set(a.fiber,a);let r=t.find(a=>a.nativeTag===e),o=null;if(!r){for(let a of er())if(st(a.current,c=>{o||c.stateNode&&nr(c.stateNode)===e&&(o=c)}),o)break}let i=r??null;if(!i&&o){let a=o,c=0,s=null;for(;a&&c<25;){let u=n.get(a);if(u){if(u.press||u.valueControl||u.textControl){i=u;break}s||(s=u)}a=a.return,c++}i||(i=s)}if(!i||(i=ac(i,n),!i.press&&!i.valueControl&&!i.textControl)||ic(i.fiber))return null;let l=i.valueControl?i.valueControl.kind:i.textControl?"text":"press";return{nativeTag:i.nativeTag,name:i.name,role:i.role,testID:i.testID,label:i.label,text:i.text,control:l,value:i.valueControl?i.valueControl.current:i.textControl?i.textControl.current:void 0}}nn();j();j();function lc(e){return!!e&&typeof e=="object"&&("next"in e||"queue"in e||"memoizedState"in e)}function li(e,t,n){if(e===t)return false;if(n?.isClassComponent||!lc(t))return true;let r=e,o=t;for(let i=0;o!=null&&i<64;i++){if(o.queue!=null&&(r==null||!Object.is(r.memoizedState,o.memoizedState)))return true;o=o.next,r=r!=null?r.next:null}return false}function sc(e,t){return li(e?.memoizedState,t?.memoizedState,{isClassComponent:t?.tag===1})}var si={RCTText:{alwaysTrack:["children"],skip:[],description:"Text component - children is the displayed content"},RCTVirtualText:{alwaysTrack:["children"],skip:[],description:"Virtual Text (nested) - children is the displayed content"},RCTView:{alwaysTrack:[],skip:["children"],description:"View container - children are React elements"},RCTImageView:{alwaysTrack:["source"],skip:["children"],description:"Image - source contains the image URL/require"},RCTTextInput:{alwaysTrack:["value","defaultValue"],skip:["children"],description:"TextInput - value is the input content"},RCTSwitch:{alwaysTrack:["value"],skip:["children"],description:"Switch - value is the toggle state"},default:{alwaysTrack:[],skip:["children"],description:"Unknown component type"}};function cc(e){return e&&si[e]||si.default}var cn=new WeakMap;function sr(e){if(!e)return;let t=cn.get(e);if(t||e.alternate&&(t=cn.get(e.alternate),t))return t}function uc(e,t){e&&(cn.set(e,t),e.alternate&&cn.set(e.alternate,t))}var we=new Map,cr=500,dc=10,ur=50,ci=50,hc=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","Pressable","TextInput","Switch","ActivityIndicator","Modal","StatusBar","KeyboardAvoidingView","AnimatedComponent","AnimatedComponentWrapper","Fragment","Suspense","Provider","Consumer","Context","ForwardRef","Unknown","Component"]);function ui(e){return!!(!e||hc.has(e)||e.startsWith("Animated"))}function di(e){if(!e)return null;let t=e._debugOwner||e.return,n=0,r=null;for(;t&&n<30;){let o=t.tag;if(o===0||o===1||o===11||o===15){let i=Ae(t);if(r||(r=t),!ui(i))return t}t=t.return,n++}return r}function Ae(e){if(!e)return null;let t=e.type;if(t){if(typeof t=="string")return t;if(t.name)return t.name;if(t.displayName)return t.displayName}return null}function gc(e){if(!e||typeof e!="object")return"unknown";if(e.queue!==null&&e.queue!==void 0)return"useState";let t=e.memoizedState;if(t!==null&&typeof t=="object"&&!Array.isArray(t)&&"current"in t&&Object.keys(t).length===1)return"useRef";if(Array.isArray(t)&&t.length===2){let[,n]=t;if(Array.isArray(n)||n===null)return typeof t[0]=="function"?"useCallback":"useMemo"}return t!==null&&typeof t=="object"&&!Array.isArray(t)&&("tag"in t||"create"in t||"destroy"in t)?"useEffect":"unknown"}function pc(e,t){let n=e?.memoizedState;switch(t){case"useState":case"useReducer":return n;case"useRef":return n?.current;case"useMemo":case"useCallback":return Array.isArray(n)?n[0]:n;case"useEffect":return"[effect]";default:return n}}function ut(e){if(!e?.memoizedState)return null;let t=e.memoizedState;if(typeof t!="object"||t===null||!("next"in t)&&!("queue"in t)&&!("memoizedState"in t))return null;let n=[],r=t,o=0;for(;r!==null&&o<ur;){let i=gc(r),l=pc(r,i);n.push({index:o,type:i,value:l,rawState:r.memoizedState}),r=r.next,o++}return n.length>0?n:null}function fc(e,t){if(!e||!t)return null;let n=[],r=Math.max(e.length,t.length);for(let o=0;o<r;o++){let i=e[o],l=t[o];if(!i&&l){n.push({index:o,type:l.type,currentValue:un(l.value,l.type),description:`Hook[${o}] added`});continue}if(i&&!l){n.push({index:o,type:i.type,previousValue:un(i.value,i.type),description:`Hook[${o}] removed`});continue}if(i&&l){if(i.rawState===l.rawState||l.type==="useEffect"||l.type==="useMemo"||l.type==="useCallback")continue;if(l.type==="useState"||l.type==="useReducer"||l.type==="useRef"){let a=un(i.value,i.type),c=un(l.value,l.type);n.push({index:o,type:l.type,previousValue:a,currentValue:c,description:`${a} \u2192 ${c}`})}}}return n.length>0?n:null}function un(e,t){return dt(e)}function dt(e){if(e===null)return null;if(e!==void 0)return typeof e=="boolean"||typeof e=="number"?e:typeof e=="string"?e.length>30?e.slice(0,30)+"...":e:typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:Array.isArray(e)?`[Array: ${e.length} items]`:typeof e=="object"?`{Object: ${Object.keys(e).length} keys}`:String(e)}function mc(e){if(!e)return{cause:"unknown",hookChanges:null};let t=e,n=e.alternate,r=sr(e);if(r&&n){let c=ut(e),s=ut(n),u=r.extractedHooks;if(c&&s&&u&&u.length>0){let p=u.find(T=>T.type==="useState");if(p){let T=c.find(v=>v.index===p.index),y=s.find(v=>v.index===p.index);if(T&&y){let v=T.value===p.value,m=y.value===p.value;v&&!m&&(t=n,n=e)}}}}let o=ut(t),i=null,l=null,a=null;return n?(i=n.memoizedProps,l=n.memoizedState,a=ut(n)):r&&(i=r.memoizedProps,l=r.memoizedState,a=r.extractedHooks),uc(t,{memoizedProps:t.memoizedProps,memoizedState:t.memoizedState,extractedHooks:o}),i===null?{cause:"mount",hookChanges:null}:dr(i,t.memoizedProps)?li(l,t.memoizedState,{isClassComponent:t.tag===1})?{cause:"state",hookChanges:fc(a,o)}:{cause:"parent",hookChanges:null}:{cause:"props",hookChanges:null}}function dr(e,t){if(e===t)return true;if(!e||!t||typeof e!="object"||typeof t!="object")return false;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let o of n)if(e[o]!==t[o])return false;return true}function ht(e,t=3){let n=new WeakSet;function r(o,i){if(i>t)return"[MAX_DEPTH]";if(o===null)return null;if(o===void 0)return;if(typeof o=="function")return`[Function: ${o.name||"anonymous"}]`;if(typeof o=="symbol")return`[Symbol: ${o.toString()}]`;if(typeof o!="object")return o;if(n.has(o))return"[Circular]";if(n.add(o),Array.isArray(o))return o.slice(0,10).map(c=>r(c,i+1));let l={},a=Object.keys(o).slice(0,20);for(let c of a)try{l[c]=r(o[c],i+1)}catch{l[c]="[Error accessing]"}return l}return r(e,0)}function Mt(e){return e===void 0?"undefined":{0:"FunctionComponent",1:"ClassComponent",2:"IndeterminateComponent",3:"HostRoot",4:"HostPortal",5:"HostComponent",6:"HostText",7:"Fragment",8:"Mode",9:"ContextConsumer",10:"ContextProvider",11:"ForwardRef",12:"Profiler",13:"SuspenseComponent",14:"MemoComponent",15:"SimpleMemoComponent"}[e]||`Unknown(${e})`}function yc(e,t){if(!(!t.hookChanges||t.hookChanges.length===0))for(let n of t.hookChanges)console.log(`[${e||"Unknown"}] ${n.type}[${n.index}]: ${n.previousValue} \u2192 ${n.currentValue}`)}function bc(e,t,n,r,o){let i=Ae(n)||"Unknown",l=typeof t?.type=="string"?t.type:"Unknown",{cause:a,hookChanges:c}=r;if(console.log(`[RENDER] ${i} (${l}:${e}) | Cause: ${a.toUpperCase()}`+(o&&o.length>0?` | Props: [${o.join(", ")}]`:"")),c&&c.length>0)for(let s of c)console.log(` \u2514\u2500 ${s.type}[${s.index}]: ${s.previousValue} \u2192 ${s.currentValue}`)}function hi(e,t,n,r,o,i,l){let a=Ae(n)||"Unknown",c=typeof t?.type=="string"?t.type:"Unknown";console.log(`
|
|
26
|
+
`}},Ke=new Bo});function Bl(e){if(e.testID&&e.testID.trim())return true;let t=(e.componentName??"").trim();if(!t||Jn.has(t)||Ho.has(t))return false;let n=(e.viewType??"").trim();return!(n&&Jn.has(n)&&t===n||/^comp(\s|$)/i.test(t)||t.startsWith("_"))}var Jn,Ho,Hl=Mt(()=>{"use strict";j();Jn=new Set(["View","RCTView","Text","RCTText","RawText","RCTRawText","VirtualText","RCTVirtualText","ScrollView","RCTScrollView","RCTScrollContentView","SafeAreaView","RCTSafeAreaView","Pressable","TouchableOpacity","Image","RCTImageView"]),Ho=new Set(["Unknown","Anonymous","CellRenderer","NativeComponent"])});var Mo={};Vo(Mo,{RenderTracker:()=>V,default:()=>Eo});var Yn,$o,Fo,V,Eo,Ne=Mt(()=>{"use strict";j();Ao();ln();Hl();Yn=200,$o=150,Fo=class{constructor(){this.renders=new Map;this.listeners=new Set;this.stateListeners=new Set;this.settingsListeners=new Set;this.filterListeners=new Set;this.renderEventCallbacks=new Set;this.isTracking=false;this.isPaused=false;this.settings={batchSize:$o,showRenderCount:true,performanceLogging:false,trackRenderCauses:false,enableRenderHistory:false,maxRenderHistoryPerComponent:20,capturePropsOnRender:false,captureStateOnRender:false,debugLogLevel:"off",excludeDevTools:true,showHostViews:false};this.isBatchMode=false;this.batchDirty=false;this.filters={includeTestID:new Set,includeNativeID:new Set,includeViewType:new Set,includeComponent:new Set,excludeTestID:new Set,excludeNativeID:new Set,excludeViewType:new Set,excludeComponent:new Set,includePatterns:[],excludePatterns:[]}}trackRender(e){if(this.isPaused)return;let t=String(e.nativeTag),n=Date.now(),r=this.renders.get(t);if(r){if(r.renderCount=e.count,r.lastRenderTime=n,r.color=e.color,e.measurements&&(r.measurements=e.measurements),e.testID&&!r.testID&&(r.testID=e.testID),e.nativeID&&!r.nativeID&&(r.nativeID=e.nativeID),e.accessibilityLabel&&!r.accessibilityLabel&&(r.accessibilityLabel=e.accessibilityLabel),e.componentName&&!r.componentName&&(r.componentName=e.componentName),e.renderCause&&(r.lastRenderCause=e.renderCause),this.settings.enableRenderHistory){let o=e.renderCause||{type:"unknown",timestamp:n};this.addRenderEvent(r,o,e.capturedProps,e.capturedState)}}else{let o={id:t,nativeTag:e.nativeTag,viewType:e.viewType,displayName:qn(e.viewType),testID:e.testID,nativeID:e.nativeID,accessibilityLabel:e.accessibilityLabel,componentName:e.componentName,renderCount:e.count,firstRenderTime:n,lastRenderTime:n,measurements:e.measurements,color:e.color,lastRenderCause:e.renderCause};if(this.settings.enableRenderHistory){o.renderHistory=[];let i=e.renderCause||{type:e.count===1?"mount":"unknown",timestamp:n};this.addRenderEvent(o,i,e.capturedProps,e.capturedState)}if(this.renders.set(t,o),this.renders.size>Yn){let i=Array.from(this.renders.values()).sort((l,a)=>l.lastRenderTime-a.lastRenderTime).slice(0,this.renders.size-Yn);for(let l of i)this.renders.delete(l.id)}}this.isBatchMode?this.batchDirty=true:this.notifyListeners()}addRenderEvent(e,t,n,r){e.renderHistory||(e.renderHistory=[]);let o={id:`${e.nativeTag}-${t.timestamp}`,timestamp:t.timestamp,cause:t,renderNumber:e.renderCount,capturedProps:this.settings.capturePropsOnRender?n:void 0,capturedState:this.settings.captureStateOnRender?r:void 0};e.renderHistory.push(o);let i=Math.max(5,Math.min(50,this.settings.maxRenderHistoryPerComponent));e.renderHistory.length>i&&(e.renderHistory=e.renderHistory.slice(-i)),this.notifyRenderEventCallbacks(o,e)}notifyRenderEventCallbacks(e,t){this.renderEventCallbacks.forEach(n=>{try{n(e,t)}catch{}})}emitRenderEvent(e){if(this.renderEventCallbacks.size===0)return;let t=Date.now(),n=e.renderCause||{type:"unknown",timestamp:t},r={id:String(e.nativeTag),nativeTag:e.nativeTag,viewType:e.viewType,displayName:qn(e.viewType),testID:e.testID,nativeID:e.nativeID,accessibilityLabel:e.accessibilityLabel,componentName:e.componentName,renderCount:e.count,firstRenderTime:t,lastRenderTime:t,measurements:e.measurements,color:e.color,lastRenderCause:n,renderHistory:[]},o={id:`${e.nativeTag}-${t}-${e.count}`,timestamp:t,renderNumber:e.count,cause:n,capturedProps:void 0,capturedState:void 0};this.notifyRenderEventCallbacks(o,r)}startBatch(){this.isBatchMode=true,this.batchDirty=false}endBatch(){this.isBatchMode=false,this.batchDirty&&(this.batchDirty=false,this.notifyListeners())}getRenders(){return Array.from(this.renders.values()).map(e=>({...e}))}passesFilters(e){if(this.filters.includePatterns.length>0&&!this.matchesAnyPatternForInfo(e,this.filters.includePatterns)||this.filters.excludePatterns.length>0&&this.matchesAnyPatternForInfo(e,this.filters.excludePatterns))return false;if(this.filters.includeViewType.size>0){let t=e.viewType||"",n=e.displayName||"";if(!this.matchesPattern(t,this.filters.includeViewType)&&!this.matchesPattern(n,this.filters.includeViewType))return false}if(this.filters.includeTestID.size>0&&(!e.testID||!this.matchesPattern(e.testID,this.filters.includeTestID))||this.filters.includeNativeID.size>0&&(!e.nativeID||!this.matchesPattern(e.nativeID,this.filters.includeNativeID))||this.filters.includeComponent.size>0&&(!e.componentName||!this.matchesPattern(e.componentName,this.filters.includeComponent)))return false;if(this.filters.excludeViewType.size>0){let t=e.viewType||"",n=e.displayName||"";if(this.matchesPattern(t,this.filters.excludeViewType)||this.matchesPattern(n,this.filters.excludeViewType))return false}return!(this.filters.excludeTestID.size>0&&e.testID&&this.matchesPattern(e.testID,this.filters.excludeTestID)||this.filters.excludeNativeID.size>0&&e.nativeID&&this.matchesPattern(e.nativeID,this.filters.excludeNativeID)||this.filters.excludeComponent.size>0&&e.componentName&&this.matchesPattern(e.componentName,this.filters.excludeComponent))}matchesAnyPatternForInfo(e,t){for(let n of t){let r=n.value.toLowerCase();switch(n.type){case"any":if(e.viewType.toLowerCase().includes(r)||e.displayName?.toLowerCase().includes(r)||e.testID?.toLowerCase().includes(r)||e.nativeID?.toLowerCase().includes(r)||e.componentName?.toLowerCase().includes(r)||e.accessibilityLabel?.toLowerCase().includes(r))return true;break;case"viewType":if(e.viewType.toLowerCase().includes(r)||e.displayName?.toLowerCase().includes(r))return true;break;case"testID":if(e.testID?.toLowerCase().includes(r))return true;break;case"nativeID":if(e.nativeID?.toLowerCase().includes(r))return true;break;case"component":if(e.componentName?.toLowerCase().includes(r))return true;break;case"accessibilityLabel":if(e.accessibilityLabel?.toLowerCase().includes(r))return true;break}}return false}hasActiveFilters(){return this.filters.includePatterns.length>0||this.filters.excludePatterns.length>0||this.filters.includeViewType.size>0||this.filters.includeTestID.size>0||this.filters.includeNativeID.size>0||this.filters.includeComponent.size>0||this.filters.excludeViewType.size>0||this.filters.excludeTestID.size>0||this.filters.excludeNativeID.size>0||this.filters.excludeComponent.size>0||this.filters.minRenderCount!==void 0||this.filters.maxRenderCount!==void 0}getFilteredRenders(e=""){let t=this.getRenders();if(this.settings.showHostViews||(t=t.filter(Bl)),e.trim()){let n=e.toLowerCase();t=t.filter(r=>r.viewType.toLowerCase().includes(n)||r.displayName.toLowerCase().includes(n)||r.testID?.toLowerCase().includes(n)||r.nativeID?.toLowerCase().includes(n)||r.accessibilityLabel?.toLowerCase().includes(n)||r.componentName?.toLowerCase().includes(n)||String(r.nativeTag).includes(n))}return t=t.filter(n=>this.passesFilters(n)),this.filters.minRenderCount!==void 0&&(t=t.filter(n=>n.renderCount>=this.filters.minRenderCount)),this.filters.maxRenderCount!==void 0&&(t=t.filter(n=>n.renderCount<=this.filters.maxRenderCount)),t.sort((n,r)=>r.lastRenderTime-n.lastRenderTime)}matchesPattern(e,t){let n=e.toLowerCase();for(let r of t){let o=r.toLowerCase();if(n.includes(o))return true}return false}getRender(e){return this.renders.get(e)}clear(){this.renders.clear(),this.notifyListeners()}resetRenderCount(e){let t=this.renders.get(e);t&&(t.renderCount=0,this.notifyListeners())}start(){this.isTracking=true,this.isPaused=false,this.notifyStateListeners()}stop(){this.isTracking=false,this.isPaused=false,this.notifyStateListeners()}pause(){this.isPaused=true,this.notifyStateListeners()}resume(){this.isPaused=false,this.notifyStateListeners()}togglePause(){this.isPaused=!this.isPaused,this.notifyStateListeners()}getState(){return{isTracking:this.isTracking,isPaused:this.isPaused}}replaceRenders(e,t){let n=new Map;for(let[r,o]of this.renders)o.renderHistory&&o.renderHistory.length>0&&n.set(r,o.renderHistory);this.renders=new Map(e.map(r=>{let o=n.get(r.id),i=o&&!(r.renderHistory&&r.renderHistory.length>0)?{...r,renderHistory:o}:r;return[i.id,i]})),t&&(this.isTracking!==t.isTracking||this.isPaused!==t.isPaused)&&(this.isTracking=t.isTracking,this.isPaused=t.isPaused,this.notifyStateListeners()),this.notifyListeners()}hydrateRender(e){let t=this.renders.get(e.id);this.renders.set(e.id,t?{...t,...e}:e),this.notifyListeners()}getFilters(){return this.filters}setFilters(e){this.filters={...this.filters,...e},this.notifyListeners(),this.notifyFilterListeners()}addIncludePattern(e,t){let n=`include${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].add(t),this.notifyListeners()}removeIncludePattern(e,t){let n=`include${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].delete(t),this.notifyListeners()}addExcludePattern(e,t){let n=`exclude${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].add(t),this.notifyListeners()}removeExcludePattern(e,t){let n=`exclude${e.charAt(0).toUpperCase()+e.slice(1)}`;this.filters[n].delete(t),this.notifyListeners()}clearFilters(){this.filters={includeTestID:new Set,includeNativeID:new Set,includeViewType:new Set,includeComponent:new Set,excludeTestID:new Set,excludeNativeID:new Set,excludeViewType:new Set,excludeComponent:new Set,includePatterns:[],excludePatterns:[],minRenderCount:void 0,maxRenderCount:void 0},this.notifyListeners()}getAvailableProps(){let e=new Set,t=new Set,n=new Set,r=new Set,o=new Set;for(let i of this.renders.values())i.viewType&&e.add(i.viewType),i.testID&&t.add(i.testID),i.nativeID&&n.add(i.nativeID),i.componentName&&r.add(i.componentName),i.accessibilityLabel&&o.add(i.accessibilityLabel);return{viewTypes:Array.from(e).sort(),testIDs:Array.from(t).sort(),nativeIDs:Array.from(n).sort(),componentNames:Array.from(r).sort(),accessibilityLabels:Array.from(o).sort()}}getStats(){let e=0;for(let t of this.renders.values())e+=t.renderCount;return{totalComponents:this.renders.size,totalRenders:e}}subscribe(e){return this.listeners.add(e),e(this.getRenders()),()=>{this.listeners.delete(e)}}subscribeToState(e){return this.stateListeners.add(e),e(this.getState()),()=>{this.stateListeners.delete(e)}}subscribeToSettings(e){return this.settingsListeners.add(e),e(this.settings),()=>{this.settingsListeners.delete(e)}}subscribeToFilters(e){return this.filterListeners.add(e),e(this.filters),()=>{this.filterListeners.delete(e)}}onRenderEvent(e){return this.renderEventCallbacks.add(e),()=>{this.renderEventCallbacks.delete(e)}}getRenderEventCallbackCount(){return this.renderEventCallbacks.size}shouldShowRender(e){let t=this.filters;return!(t.includePatterns.length>0&&!this.matchesAnyPatternForInfo(e,t.includePatterns)||t.excludePatterns.length>0&&this.matchesAnyPatternForInfo(e,t.excludePatterns)||(t.includeViewType.size>0||t.includeTestID.size>0||t.includeNativeID.size>0||t.includeComponent.size>0)&&!(t.includeViewType.size>0&&t.includeViewType.has(e.viewType)||t.includeTestID.size>0&&e.testID&&t.includeTestID.has(e.testID)||t.includeNativeID.size>0&&e.nativeID&&t.includeNativeID.has(e.nativeID)||t.includeComponent.size>0&&e.componentName&&t.includeComponent.has(e.componentName))||t.excludeViewType.has(e.viewType)||e.testID&&t.excludeTestID.has(e.testID)||e.nativeID&&t.excludeNativeID.has(e.nativeID)||e.componentName&&t.excludeComponent.has(e.componentName))}getSettings(){return{...this.settings}}setSettings(e){e.batchSize!==void 0&&(e.batchSize=Math.max(10,Math.min(500,e.batchSize))),e.maxRenderHistoryPerComponent!==void 0&&(e.maxRenderHistoryPerComponent=Math.max(5,Math.min(50,e.maxRenderHistoryPerComponent))),e.enableRenderHistory&&!this.settings.trackRenderCauses&&(e.trackRenderCauses=true),e.trackRenderCauses===false&&this.settings.enableRenderHistory&&(e.enableRenderHistory=false),this.settings={...this.settings,...e},e.performanceLogging!==void 0&&Ke.setEnabled(e.performanceLogging),this.notifySettingsListeners()}clearAllRenderHistory(){for(let e of this.renders.values())e.renderHistory=[];this.notifyListeners()}clearRenderHistory(e){let t=this.renders.get(e);t&&(t.renderHistory=[],this.notifyListeners())}getRenderHistoryStats(){let e=0,t=0;for(let n of this.renders.values())n.renderHistory&&n.renderHistory.length>0&&(e+=n.renderHistory.length,t++);return{totalEvents:e,componentsWithHistory:t,averageEventsPerComponent:t>0?e/t:0}}getBatchSize(){return this.settings.batchSize}setBatchSize(e){this.setSettings({batchSize:e})}notifyListeners(){let e=this.getRenders();for(let t of this.listeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in listener:",n)}}notifyStateListeners(){let e=this.getState();for(let t of this.stateListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in state listener:",n)}}notifySettingsListeners(){let e=this.getSettings();for(let t of this.settingsListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in settings listener:",n)}}notifyFilterListeners(){let e=this.getFilters();for(let t of this.filterListeners)try{t(e)}catch(n){console.error("[RenderTracker] Error in filter listener:",n)}}},V=new Fo,Eo=V});j();j();import{useState as Xn,useEffect as Qn,useCallback as Ml}from"react";import{HighlighterIcon as Oo,HighlightIcon as _o}from"@buoy-gg/floating-tools-core/web";j();import{getDOMFiber as Zn,getDOMNodeHandle as $l,getDOMPublicInstance as Fl,isDOMElement as Wo}from"@buoy-gg/shared-ui/web/utils";j();var dt=null,ht=null,Ft=false,Et=false,sn=null;function jo(e){if(!e)return{type:"null"};let t=e,n={};if(t.canonical){n.type="Fabric";let r=t.canonical;if(r.publicInstance){let o=r.publicInstance;n.hasMeasure=typeof o.measure=="function",n.nativeTag=o.__nativeTag??o._nativeTag??"unknown"}}else typeof t.measure=="function"?(n.type="Legacy",n.hasMeasure=true,n.nativeTag=t.__nativeTag??t._nativeTag??t.nativeTag??"unknown"):(n.type="Unknown",n.keys=Object.keys(t).slice(0,10));return n}function El(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;!e||typeof e.emit!="function"||dt||(dt=e.emit.bind(e),e.emit=function(t,...n){if(t==="traceUpdates"&&Et){let r=n[0];r.size>0&&console.log(`[PROFILER] traceUpdates: ${r.size} nodes`,Array.from(r).map((o,i)=>({index:i,...jo(o)}))),sn&&sn(r)}return dt(t,...n)})}function Ol(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__?.reactDevtoolsAgent;!e||typeof e.emit!="function"||ht||(ht=e.emit.bind(e),e.emit=function(t,...n){if(Et&&t==="drawTraceUpdates"){let r=n[0];r.length>0&&console.log(`[PROFILER] drawTraceUpdates: ${r.length} nodes`,r.map((o,i)=>({index:i,color:o.color,...jo(o.node)})))}return ht(t,...n)})}function _l(){let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;e?.rendererInterfaces&&e.rendererInterfaces.forEach(t=>{if(typeof t.setTraceUpdatesEnabled=="function")try{t.setTraceUpdatesEnabled(false)}catch{}})}function Uo(e){sn=e}function Go(){typeof Z<"u"&&!Z||Ft||(El(),Ol(),Ft=true)}function Ko(){if(!Ft)return;let e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;dt&&e&&(e.emit=dt,dt=null),ht&&e?.reactDevtoolsAgent&&(e.reactDevtoolsAgent.emit=ht,ht=null),_l(),sn=null,Ft=false}function Wl(){return Ft}function jl(){Et=true}function Ul(){Et=false}function Gl(){return Et}var qo={};Vo(qo,{AccessibilityInfo:()=>Yl,ActivityIndicator:()=>Hs,Alert:()=>$s,Animated:()=>Xl,AppRegistry:()=>Zl,AppState:()=>es,Appearance:()=>Ql,BackHandler:()=>ts,Button:()=>Ms,CheckBox:()=>gs,Clipboard:()=>ns,DeviceEventEmitter:()=>ks,Dimensions:()=>qe,Easing:()=>rs,FlatList:()=>Yo,I18nManager:()=>os,Image:()=>ps,ImageBackground:()=>fs,InteractionManager:()=>as,Keyboard:()=>is,KeyboardAvoidingView:()=>ms,LayoutAnimation:()=>ls,Linking:()=>ss,LogBox:()=>Ds,Modal:()=>Qo,NativeEventEmitter:()=>cs,NativeModules:()=>Jl,PanResponder:()=>us,Picker:()=>ys,PixelRatio:()=>er,Platform:()=>Jo,Pressable:()=>Xo,ProgressBar:()=>bs,RefreshControl:()=>vs,SafeAreaView:()=>Cs,ScrollView:()=>Be,SectionList:()=>Ts,Share:()=>ds,StatusBar:()=>ws,StyleSheet:()=>be,Switch:()=>gt,Text:()=>h,TextInput:()=>cn,Touchable:()=>Ss,TouchableHighlight:()=>As,TouchableNativeFeedback:()=>xs,TouchableOpacity:()=>J,TouchableWithoutFeedback:()=>Bs,UIManager:()=>Ot,Vibration:()=>hs,View:()=>d,VirtualizedList:()=>Is,YellowBox:()=>Rs,findNodeHandle:()=>pt,unstable_createElement:()=>ql,useColorScheme:()=>Ps,useLocaleContext:()=>Ls,useWindowDimensions:()=>Ns});j();Dl(qo,Kl);import*as Kl from"react-native-web";import{unstable_createElement as ql,NativeModules as Jl,AccessibilityInfo as Yl,Animated as Xl,Appearance as Ql,AppRegistry as Zl,AppState as es,BackHandler as ts,Clipboard as ns,Dimensions as qe,Easing as rs,I18nManager as os,Keyboard as is,InteractionManager as as,LayoutAnimation as ls,Linking as ss,NativeEventEmitter as cs,PanResponder as us,PixelRatio as er,Platform as Jo,Share as ds,StyleSheet as be,UIManager as Ot,Vibration as hs,CheckBox as gs,FlatList as Yo,Image as ps,ImageBackground as fs,KeyboardAvoidingView as ms,Picker as ys,ProgressBar as bs,RefreshControl as vs,SafeAreaView as Cs,SectionList as Ts,StatusBar as ws,Touchable as Ss,TouchableNativeFeedback as xs,VirtualizedList as Is,YellowBox as Rs,LogBox as Ds,DeviceEventEmitter as ks,useColorScheme as Ps,useLocaleContext as Ls,useWindowDimensions as Ns}from"react-native-web";import*as ve from"react-native-web";import{createElement as zs,forwardRef as Vs}from"react";function we(e){let t=Vs((r,o)=>{let{accessibilityState:i,accessibilityValue:l,...a}=r;for(let c of["busy","checked","disabled","expanded","selected"])i?.[c]!==void 0&&a[`aria-${c}`]===void 0&&(a[`aria-${c}`]=i[c]);for(let[c,s]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))l?.[c]!==void 0&&a[`aria-${s}`]===void 0&&(a[`aria-${s}`]=l[c]);return zs(e,{...a,ref:o})}),n=e.State;return n&&Object.assign(t,{State:n}),t.displayName=e.displayName??e.name??"NativeWebView",t}var d=we(ve.View),h=we(ve.Text),cn=we(ve.TextInput),J=we(ve.TouchableOpacity),As=we(ve.TouchableHighlight),Bs=we(ve.TouchableWithoutFeedback),Xo=we(ve.Pressable),Be=we(ve.ScrollView),Qo=we(ve.Modal),gt=we(ve.Switch),Hs=we(ve.ActivityIndicator),Ms=we(ve.Button),pt=ve.findNodeHandle,$s={alert(e,t,n,r){if(typeof document>"u")return;let o=document.createElement("dialog");o.dataset.buoyRoot="",o.setAttribute("aria-label",e),o.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let i=document.createElement("h2");if(i.textContent=e,i.style.cssText="font-size:18px;margin:0 0 12px",o.appendChild(i),t){let s=document.createElement("p");s.textContent=t,s.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",o.appendChild(s)}let l=document.createElement("div");l.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let a=n?.length?n:[{text:"OK"}],c=()=>{o.close?.(),o.remove()};for(let s of a){let u=document.createElement("button");u.type="button",u.textContent=s.text??"OK",u.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${s.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,u.onclick=()=>{c(),s.onPress?.()},l.appendChild(u)}o.addEventListener("cancel",s=>{s.preventDefault(),r?.cancelable!==false&&(c(),r?.onDismiss?.())}),o.appendChild(l),document.body.appendChild(o),o.showModal?o.showModal():o.setAttribute("open","")}};Ne();j();import{getDOMControlProps as Fs,getDOMNodeHandle as Es,getDOMPublicInstance as Os,isDOMElement as _s}from"@buoy-gg/shared-ui/web/utils";j();function Zo(e){return e?e.x>=-.1&&e.x<=1.1&&e.y>=-.1&&e.y<=1.1:false}function tr(e,t,n){if(!e||t<=0||n<=0)return false;let r=e.x+e.width/2,o=e.y+e.height/2,i=t*.1,l=n*.1;return r>=-i&&r<=t+i&&o>=-l&&o<=n+l}function ei(e){return String(e??"").toLowerCase().replace(/\s+/g," ").replace(/(\d)[,\u00a0\u202f](?=\d{3}\b)/g,"$1").trim()}function un(e,t){if(t.nativeTag!=null&&e.nativeTag===t.nativeTag)return 1e3;if(t.testID&&!t.query){if(!e.testID||e.testID.toLowerCase()!==t.testID.trim().toLowerCase())return 0;let l=200;return e.tap&&(l+=Zo(e.tap)?20:-40),l}let n=String(t.query??t.testID??"").trim().toLowerCase();if(!n)return 0;let r=[e.testID,e.label,e.text,e.name].filter(Boolean).map(l=>l.toLowerCase()),o=0;for(let l of r)l===n?o=Math.max(o,100):l.startsWith(n)?o=Math.max(o,50):l.includes(n)&&(o=Math.max(o,25));let i=ei(n);if(i)for(let l of r){let a=ei(l);a===i?o=Math.max(o,90):a.startsWith(i)?o=Math.max(o,45):a.includes(i)&&(o=Math.max(o,22))}return t.testID&&e.testID&&e.testID.toLowerCase()===t.testID.toLowerCase()&&(o=Math.max(o,200)),o===0?0:((e.testID??"").toLowerCase().startsWith("buoy-dial-")&&(o+=40),e.tap&&(Zo(e.tap)?o+=20:o-=40),o)}var dn=5,Ws=22,nr=new Set(["View","RCTView","ScrollView","RCTScrollView","RCTScrollContentView","SafeAreaView","RCTSafeAreaView","AndroidHorizontalScrollContentView","KeyboardAvoidingView","Pressable","PlatformPressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","AnimatedComponent","Wrapper"]);function ti(){return typeof globalThis>"u"?null:globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__??null}var rr=0,ni=false;function js(){if(ni)return;let e=ti();if(!e)return;let t=e.onCommitFiberRoot;e.onCommitFiberRoot=function(...n){return rr++,typeof t=="function"?t.apply(e,n):void 0},ni=true}var Us=250;function ri(){let e=new Map;return t=>{let n=[],r=t,o=0,i=false;for(;r&&o<400;){let l=e.get(r);if(l!==void 0){i=l;break}if(se(r)?.__buoyDevToolsRoot){i=true,e.set(r,true);break}n.push(r),r=r.return,o++}for(let l of n)e.set(l,i);return i}}function Je(){let e=ti();if(!e)return[];let t=[];try{if(e.renderers&&typeof e.renderers.forEach=="function"&&e.renderers.forEach((n,r)=>{try{let o=e.getFiberRoots?.(r);o&&o.forEach(i=>t.push(i))}catch{}}),t.length===0&&e.getFiberRoots){let n=e.getFiberRoots(1);n&&n.forEach(r=>t.push(r))}}catch{}return t}function oi(e){return e.tag===Ws&&e.memoizedState!==null}var Ye=false,or=0,hn=false;function ii(e,t){let n=Ye;Ye=e;try{return t()}finally{Ye=n}}function Gs(e){let t=e.memoizedProps;return t?t["aria-hidden"]===true&&(t.activityState!==void 0||"shouldFreeze"in t)||t.isFocused===false&&(t.routeKey!==void 0||"freezeContents"in t):false}function ai(e){let t=e.memoizedProps?.activityState;return t===0||t===1||e.memoizedProps?.isPageFocused===false?true:!Ye&&Gs(e)?(or++,true):false}function He(e,t,n=0,r=new Set){if(!(!e||r.has(e)||n>500)){if(r.add(e),oi(e)||ai(e)){e.sibling&&He(e.sibling,t,n,r);return}t(e),e.child&&He(e.child,t,n+1,r),e.sibling&&He(e.sibling,t,n,r)}}function ir(e){let t=Os(e);if(t)return t;if(!e)return null;let n=e;return n.canonical?.publicInstance?n.canonical.publicInstance:n.canonical&&typeof n.canonical.measure=="function"?n.canonical:typeof n.measure=="function"||typeof n.measureInWindow=="function"?n:null}function ft(e){let t=Es(e);if(t!==null)return t;if(e==null)return null;let n=e;if(typeof n.__nativeTag=="number")return n.__nativeTag;if(typeof n._nativeTag=="number")return n._nativeTag;if(typeof n.nativeTag=="number")return n.nativeTag;if(n.canonical){if(typeof n.canonical.__nativeTag=="number")return n.canonical.__nativeTag;if(typeof n.canonical._nativeTag=="number")return n.canonical._nativeTag;if(typeof n.canonical.nativeTag=="number")return n.canonical.nativeTag}return null}function ar(e){let t=ir(e.stateNode);if(t)return{instance:t,nativeTag:ft(e.stateNode),stateNode:e.stateNode};let n=[];e.child&&n.push(e.child);let r=0;for(;n.length>0&&r<4e3;){r++;let o=n.pop();if(!o)continue;let i=ir(o.stateNode);if(i)return{instance:i,nativeTag:ft(o.stateNode),stateNode:o.stateNode};o.child&&n.push(o.child),o.sibling&&n.push(o.sibling)}return null}function Ks(e){let t=e,n=0;for(;t&&n++<200;){let r=t.stateNode;if(r&&typeof r.scrollTo=="function"){let o=typeof r.getNativeScrollRef=="function"&&r.getNativeScrollRef()||null,i=typeof r.getInnerViewNode=="function"&&r.getInnerViewNode()||typeof r.getScrollableNode=="function"&&r.getScrollableNode()||r;return{instance:r,nativeRef:o,innerNode:i}}t=t.return}return null}async function qs(e,t,n,r){try{if(_s(n))return n.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"}),await new Promise(c=>setTimeout(c,16)),true;let o=Ks(e);if(!o)return false;let i=t,l=null,a=c=>new Promise(s=>{let u=false,p=y=>{u||(u=true,s(y))},T=setTimeout(()=>p(null),600);try{c(y=>{clearTimeout(T),p(y)})}catch{clearTimeout(T),p(null)}});if(o.nativeRef&&typeof i.measureLayout=="function"&&(l=await a(c=>i.measureLayout(o.nativeRef,(s,u)=>c(u),()=>c(null)))),l==null){let c=pt(t),s=typeof o.innerNode=="number"?o.innerNode:pt(o.innerNode);c!=null&&s!=null&&(l=await a(u=>Ot.measureLayout(c,s,()=>u(null),(p,T)=>u(T))))}return l==null?false:(o.instance.scrollTo({y:Math.max(0,l-r),animated:false}),await new Promise(c=>setTimeout(c,120)),true)}catch{return false}}function Xe(e){let t=e?.type;return t?typeof t=="string"?t:t.displayName||t.name||null:null}function lr(e){let t=e?._debugOwner||e?.return,n=0;for(;t&&n<30;){n++;let r=Xe(t);if(r&&!nr.has(r)&&typeof t.type!="string")return r;t=t.return}return null}function se(e){return Fs(e?.stateNode,e?.memoizedProps??e?.pendingProps??null)}function li(e,t=0){if(typeof e=="string")return e;if(typeof e=="number"&&Number.isFinite(e))return String(e);if(Array.isArray(e)&&t<4){let n=[];for(let r of e){let o=li(r,t+1);o&&n.push(o)}return n.length>0?n.join(""):void 0}}function Js(e){return e.replace(/\s+/g," ").trim()}function sr(e){if(!e)return;let t=n=>{let r=li(n);if(r===void 0)return;let o=Js(r);return o?hn?o:o.slice(0,80):void 0};return t(e.children)??t(e.title)??t(e.label)??t(e.placeholder)??void 0}function Ys(e,t){let n=[],r=(i,l)=>{if(!i||l>t||n.length>=4)return;if(i!==e){let c=se(i);if(c&&(typeof c.onPress=="function"||typeof c.onLongPress=="function"))return}let a=sr(se(i));a&&!n.includes(a)&&n.push(a),i.child&&r(i.child,l+1),i!==e&&i.sibling&&r(i.sibling,l)};e.child&&r(e.child,1);let o=n.join(" ").trim();return o?o.slice(0,80):void 0}function Xs(e){let t=e,n=0,r=null,o=null;for(;t&&n<25&&!(r&&o);){let i=se(t);i&&(!r&&typeof i.onPress=="function"&&(r=i.onPress),!o&&typeof i.onLongPress=="function"&&(o=i.onLongPress)),t=t.return,n++}return r?{handler:r,kind:"onPress",longPress:o??void 0}:o?{handler:o,kind:"onLongPress"}:null}function Qe(e){return new Promise(t=>{let n=false,r=o=>{n||(n=true,t(o))};setTimeout(()=>r(null),1e3);try{typeof e.measureInWindow=="function"?e.measureInWindow((o,i,l,a)=>{l>0&&a>0?r({x:o,y:i,width:l,height:a}):r(null)}):typeof e.measure=="function"?e.measure((o,i,l,a,c,s)=>{l>0&&a>0&&c!=null&&s!=null?r({x:c,y:s,width:l,height:a}):r(null)}):r(null)}catch{r(null)}})}var Qs=new Set(["RCTActivityIndicatorView","AndroidProgressBar"]);function cr(){let e=Je();if(e.length===0)return[];let t=[],n=new Map,r=new Map,o=ri();for(let i of e)He(i.current,l=>{let a=se(l);if(!a)return;let c=typeof a.onPress=="function"||typeof a.onLongPress=="function",s=typeof a.onValueChange=="function",u=typeof a.onChangeText=="function",p=a.testID||void 0,T=a.accessibilityLabel||void 0,y=a.accessibilityRole||a.role||void 0,b=sr(a),f=y==="button"||y==="link"||y==="menuitem"||y==="tab"||y==="switch"||y==="checkbox",S=typeof l.type=="string"&&Qs.has(l.type)&&a.animating!==false;if(!c&&!s&&!u&&!p&&!T&&!b&&!f&&!S)return;let v=null,P=null,g=null;if(s){let w=a.value,N=typeof w=="number"||typeof a.minimumValue=="number";P={handler:a.onValueChange,kind:N?"slider":"toggle",current:w,min:typeof a.minimumValue=="number"?a.minimumValue:void 0,max:typeof a.maximumValue=="number"?a.maximumValue:void 0}}else u?g={handler:a.onChangeText,current:typeof a.value=="string"?a.value:void 0}:v=Xs(l);let D=Xe(l),k=D??"Unknown";(!D||nr.has(D)||typeof l.type=="string")&&(k=lr(l)??D??"Unknown");let R=ar(l);if(!R&&!p)return;!b&&!T&&c&&(b=Ys(l,6));let _=R?.instance??null,Q=R?.nativeTag??null,z=(_?n.get(_):void 0)??(Q!=null?r.get(Q):void 0);if(z){!z.press&&v?z.press=v:z.press&&v?.longPress&&!z.press.longPress&&(z.press.longPress=v.longPress),!z.valueControl&&P&&(z.valueControl=P),!z.textControl&&g&&(z.textControl=g),!z.testID&&p&&(z.testID=p),!z.label&&T&&(z.label=T),!z.text&&b&&(z.text=b),_&&!n.has(_)&&n.set(_,z),Q!=null&&!r.has(Q)&&r.set(Q,z);return}let W={nativeTag:Q,name:k,role:y??(S?"progressbar":void 0),testID:p,label:T,text:b,instance:_,stateNode:R?.stateNode??null,fiber:l,press:v,valueControl:P,textControl:g,rect:null,buoy:o(l)};t.push(W),_&&n.set(_,W),Q!=null&&r.set(Q,W)});return t}function Zs(e,t){return t.nativeTag!=null?e.nativeTag===t.nativeTag:t.testID&&e.testID?e.testID.toLowerCase()===t.testID.toLowerCase():false}function ur(e){let t=cr();return e.includeBuoy?t:t.filter(n=>!n.buoy||Zs(n,e))}async function si(e){await Promise.all(e.map(async t=>{t.instance&&(t.rect=await Qe(t.instance))}))}var ec=/^(FlatList|SectionList|VirtualizedSectionList|VirtualizedList|Animated\(.*\)|AnimatedComponent.*)$/;async function tc(e,t){let n=[],r=ri();for(let i of Je())He(i.current,l=>{if(Xe(l)!=="VirtualizedList")return;let a=l.memoizedProps;if(!a||typeof a.getItemCount!="function"||!e&&r(l))return;let c;try{c=Number(a.getItemCount(a.data))}catch{return}if(!Number.isFinite(c)||c<=0)return;let s=[],u=(y,b)=>{for(let f=y?.child;f;f=f.sibling){let S=Xe(f);if(S!=="VirtualizedList"){if(S==="CellRenderer"){s.push(f);continue}b<40&&u(f,b+1)}}};u(l,0);let p=l,T=lr(p);for(let y=0;y<6&&T&&ec.test(T);y++)p=p._debugOwner||p.return,T=lr(p);n.push({owner:T,items:c,cells:s})});let o=[];for(let i of n){let l=(await Promise.all(i.cells.map(async a=>{let c=ar(a);return c?Qe(c.instance):null}))).filter(t).length;l>0&&i.items>l&&o.push({owner:i.owner,items:i.items,listed:l})}return o}async function dr(e={}){let t=Ye,n=hn;Ye=!!e.includeHidden,hn=!!e.fullText;try{return await nc(e)}finally{Ye=t,hn=n}}async function nc(e){or=0;let t=cr(),n=or,r=e.includeBuoy?t:t.filter(u=>!u.buoy),o=t.length-r.length;await si(r);let i=qe.get("window"),l=Math.round(i.width)||1,a=Math.round(i.height)||1,c=[];for(let u of r){let p=u.rect;if(!p&&!u.testID)continue;let T,y;if(p){let S=p.x+p.width/2,v=p.y+p.height/2;if(v<-a*.1||v>a*1.1||S<-l*.1||S>l*1.1)continue;T={x:Pe(S/l),y:Pe(v/a)},y={x:Pe(p.x/l),y:Pe(p.y/a),width:Pe(p.width/l),height:Pe(p.height/a)}}let b=u.valueControl?u.valueControl.kind:u.textControl?"text":void 0,f=u.valueControl?u.valueControl.current:u.textControl?.current;c.push({nativeTag:u.nativeTag,name:u.name,role:u.role,testID:u.testID,label:u.label,text:u.text,interactive:!!(u.press||u.valueControl||u.textControl),longPressable:u.press&&(u.press.kind==="onLongPress"||u.press.longPress)?true:void 0,control:b,value:f,tap:T,frame:y})}c.sort((u,p)=>{let T=u.tap?.y??2,y=p.tap?.y??2;return Math.abs(T-y)>.02?T-y:(u.tap?.x??2)-(p.tap?.x??2)});let s=await tc(!!e.includeBuoy,u=>{if(!u)return false;let p=u.x+u.width/2;return u.y<=a*1.1&&u.y+u.height>=-a*.1&&p>=-l*.1&&p<=l*1.1});return{screen:{width:l,height:a},count:c.length,elements:c,...o>0?{hiddenBuoy:o}:{},...n>0?{hiddenScreens:n}:{},...s.length?{lists:s}:{}}}function Pe(e){return Math.round(e*100)/100}function ci(e){return{nativeTag:e.nativeTag,testID:e.testID,label:e.label,text:e.text,name:e.name}}function hr(e,t){return un(ci(e),t)}function ui(e,t,n){if(!(!e||!t||!n))return{x:(e.x+e.width/2)/t,y:(e.y+e.height/2)/n}}function di(e){let t=e?e.x+e.width/2:0,n=e?e.y+e.height/2:0;return{nativeEvent:{locationX:e?e.width/2:0,locationY:e?e.height/2:0,pageX:t,pageY:n,timestamp:0,target:null,identifier:1,touches:[],changedTouches:[]},persist:()=>{},preventDefault:()=>{},stopPropagation:()=>{},isDefaultPrevented:()=>false,isPropagationStopped:()=>false,target:null,currentTarget:null,type:"press",timeStamp:0}}async function rc(e){let t=ii(!!e.includeHidden,()=>ur(e));if(t.length===0)return{tapped:false,reason:"No React fiber roots / elements found on screen."};let n=t.map(g=>({c:g,score:hr(g,e)})).filter(g=>g.score>0).sort((g,D)=>D.score-g.score),r=g=>!!(g.press||g.valueControl||g.textControl);if(n.length===0&&!e.includeHidden&&ii(true,()=>ur(e)).map(g=>({c:g,score:hr(g,e)})).filter(g=>g.score>0).length>0)return{tapped:false,reason:"That element is only on a screen that isn't showing (another tab, or a screen under the current one). Navigate to it first, or pass includeHidden:true if you really mean the hidden one."};if(n.length===0)return{tapped:false,reason:"No element matched. Call describe_screen to see available elements (match by testID, text, or name).",candidates:t.filter(r).slice(0,12).map(g=>({nativeTag:g.nativeTag,name:g.name,testID:g.testID,text:g.text}))};let o=qe.get("window"),i=o.width||1,l=o.height||1,a=n.slice(0,15);await Promise.all(a.map(async g=>{g.c.instance&&!g.c.rect&&(g.c.rect=await Qe(g.c.instance))}));for(let g of a)g.score=un({...ci(g.c),tap:ui(g.c.rect,i,l)},e);a.sort((g,D)=>D.score-g.score);let c=a.find(g=>r(g.c))??n.find(g=>r(g.c))??a[0],s=c.c,u=(g,D)=>g.press&&g.press.handler===D.press?.handler||g.valueControl&&g.valueControl.handler===D.valueControl?.handler||g.textControl&&g.textControl.handler===D.textControl?.handler,p=a.filter(g=>g!==c&&r(g.c)&&g.score===c.score).filter(g=>!u(g.c,s)).filter((g,D,k)=>k.findIndex(R=>u(R.c,g.c))===D).slice(0,3).map(g=>({nativeTag:g.c.nativeTag,name:g.c.name,testID:g.c.testID,text:g.c.text,tap:ui(g.c.rect,i,l)})),T=e.nativeTag==null&&!(e.testID&&!e.query);if(T&&p.length>0){let g=[s,...p.map(D=>a.find(k=>k.c.nativeTag===D.nativeTag)?.c).filter(Boolean)];return{tapped:false,reason:`"${e.query}" matches ${g.length} different controls equally well, so nothing was tapped. Tap one by its nativeTag.`,candidates:g.map(D=>({nativeTag:D.nativeTag,name:D.name,testID:D.testID,text:D.text}))}}let y=a[0];if(T&&y&&y!==c&&!r(y.c)&&y.score>=90&&c.score<y.score-40)return{tapped:false,reason:`The best match for "${e.query}" is "${y.c.text??y.c.label??y.c.name}", which has no JS press handler (it may be native, like a tab bar button). The closest pressable match, "${s.text??s.label??s.name}", is a much weaker match, so nothing was tapped. Use navigate, or tap a specific element by nativeTag.`,candidates:[{nativeTag:s.nativeTag,name:s.name,testID:s.testID,text:s.text}]};if(!r(s))return{tapped:false,reason:`Matched "${s.name}"${s.text?` ("${s.text}")`:""} but it has no onPress / onValueChange / onChangeText handler (e.g. a react-native-gesture-handler GestureDetector). This element can't be driven in JS.`,matched:{nativeTag:s.nativeTag,name:s.name,testID:s.testID,label:s.label,text:s.text,via:"onPress"}};s.instance&&!s.rect&&(s.rect=await Qe(s.instance));let b=false;(s.rect==null||!tr(s.rect,i,l))&&e.scrollIntoView!==false&&s.instance&&(b=await qs(s.fiber,s.instance,s.stateNode,80),b&&(s.rect=await Qe(s.instance)));let f={nativeTag:s.nativeTag,name:s.name,testID:s.testID,label:s.label,text:s.text};js();let S=rr,v=Date.now(),P=async g=>(await new Promise(D=>setTimeout(D,Us)),{tapped:true,scrolled:b,matched:g,effect:{commits:rr-S,observedMs:Date.now()-v},...p.length?{alsoMatched:p}:{}});try{if(s.press){if(e.longPress){let D=s.press.kind==="onLongPress"?s.press.handler:s.press.longPress;return D?(D(di(s.rect)),await P({...f,via:"onLongPress"})):{tapped:false,scrolled:b,reason:`Matched "${s.name}"${s.text?` ("${s.text}")`:""} but it has no onLongPress handler \u2014 call tap_element without longPress to tap it normally.`,matched:{...f,via:"onPress"}}}return s.press.handler(di(s.rect)),await P({...f,via:s.press.kind})}if(s.valueControl){let D=s.valueControl,k;if(D.kind==="toggle")k=typeof e.value=="boolean"?e.value:!D.current;else{let R=D.min??0,_=D.max??1;typeof e.value=="number"?k=Math.min(_,Math.max(R,e.value)):k=D.current===_?R:_}return D.handler(k),await P({...f,via:"onValueChange",value:k})}let g=e.text??(typeof e.value=="string"?e.value:"");return s.textControl.handler(g),await P({...f,via:"onChangeText",value:g})}catch(g){return{tapped:false,scrolled:b,reason:`handler threw: ${g instanceof Error?g.message:String(g)}`,matched:{...f,via:s.press?s.press.kind:s.valueControl?"onValueChange":"onChangeText"}}}}var oc=5e3,ic=3e4,ac=50,lc=150;async function sc(e){if(!(e.nativeTag!=null||!!String(e.testID??"").trim()||!!String(e.query??"").trim()))return{ok:false,waitedMs:0,polls:0,reason:"Nothing to wait for \u2014 pass nativeTag, testID or query."};let t=Math.min(Math.max(e.timeoutMs??oc,0),ic),n=Math.max(e.pollMs??lc,ac),r=e.gone===true,o=Date.now(),i=0;for(;;){i+=1;let{hit:l,closest:a}=await cc(e);if(r?!l:l)return{ok:true,waitedMs:Date.now()-o,polls:i,matched:l??void 0};if(Date.now()-o>=t){let c=a?.length?a:void 0,s=r?`Still on screen after ${t}ms.`:c?`Not on screen after ${t}ms \u2014 ${c.length===1?"one element":`${c.length} elements`} matched but ${c.some(u=>u.onScreen)?"not well enough":"none is visible"}. See \`closest\`; do not retry with different words, call describeScreen.`:`Not on screen after ${t}ms, and nothing matched those words at all. Call describeScreen to see what is there.`;return{ok:false,waitedMs:Date.now()-o,polls:i,reason:s,matched:l??void 0,closest:c}}await new Promise(c=>setTimeout(c,n))}}async function cc(e){let t=ur(e).map(a=>({c:a,score:hr(a,e)})).filter(a=>a.score>0).sort((a,c)=>c.score-a.score).slice(0,8);if(t.length===0)return{hit:null,closest:void 0};await si(t.map(a=>a.c));let n=qe.get("window"),r=Math.round(n.width)||1,o=Math.round(n.height)||1,i=null;for(let{c:a}of t)if(tr(a.rect,r,o)){i={nativeTag:a.nativeTag,name:a.name,testID:a.testID,label:a.label,text:a.text,interactive:!!(a.press||a.valueControl||a.textControl)};break}let l=t.slice(0,3).map(({c:a})=>({name:a.name,testID:a.testID,text:a.text,onScreen:tr(a.rect,r,o)}));return{hit:i,closest:l}}function gr(e){let t=e,n=0;for(;t&&n<400;){if(se(t)?.__buoyDevToolsRoot)return true;t=t.return,n++}return false}function uc(e,t){let n=se(e.fiber);if(typeof n?.onPress=="function"||typeof n?.onValueChange=="function"||typeof n?.onChangeText=="function")return e;let r=null,o=e.fiber?.return,i=0;for(;o&&i<25;){if(typeof se(o)?.onPress=="function"){r=o;break}o=o.return,i++}if(!r)return e;let l=r;for(let a=0;a<6&&l;a++){let c=t.get(l);if(c)return c;l=l.return}return e}function pr(e){let t=cr();if(t.length===0)return null;let n=new Map;for(let a of t)n.set(a.fiber,a);let r=t.find(a=>a.nativeTag===e),o=null;if(!r){for(let a of Je())if(He(a.current,c=>{o||c.stateNode&&ft(c.stateNode)===e&&(o=c)}),o)break}let i=r??null;if(!i&&o){let a=o,c=0,s=null;for(;a&&c<25;){let u=n.get(a);if(u){if(u.press||u.valueControl||u.textControl){i=u;break}s||(s=u)}a=a.return,c++}i||(i=s)}if(!i||(i=uc(i,n),!i.press&&!i.valueControl&&!i.textControl)||gr(i.fiber))return null;let l=i.valueControl?i.valueControl.kind:i.textControl?"text":"press";return{nativeTag:i.nativeTag,name:i.name,role:i.role,testID:i.testID,label:i.label,text:i.text,control:l,value:i.valueControl?i.valueControl.current:i.textControl?i.textControl.current:void 0}}function dc(e){let t=null;for(let n of Je())if(He(n.current,r=>{!t&&r.stateNode&&ft(r.stateNode)===e&&(t=r)}),t)break;return t}function hi(){let e=[];for(let t of Je()){let n=t.current?.child,r=0;for(;n&&r++<200;){if(n.tag===dn&&n.stateNode){e.push(n);break}n=n.child}}return e}function hc(e,t){let n=globalThis.nativeFabricUIManager;if(!n||typeof n.findNodeAtPoint!="function")return null;let r=hi().filter(o=>o.stateNode?.node);return r.length?new Promise(o=>{let i=setTimeout(()=>o(null),1e3),l=r.length,a=null;r.forEach((c,s)=>{try{n.findNodeAtPoint(c.stateNode.node,e,t,u=>{u&&(!a||s>=a.i)&&(a={i:s,fiber:u}),--l===0&&(clearTimeout(i),o(a?.fiber??null))})}catch{--l===0&&(clearTimeout(i),o(a?.fiber??null))}})}):null}function gc(e,t){let n=Ot?.findSubviewIn;if(typeof n!="function")return null;let r=hi()[0],o=r?ft(r.stateNode)??pt(r.stateNode):null;return o==null?null:new Promise(i=>{let l=setTimeout(()=>i(null),1e3);try{n.call(Ot,o,[e,t],a=>{clearTimeout(l),i(typeof a=="number"?dc(a):null)})}catch{clearTimeout(l),i(null)}})}function pc(){let e=[],t=new Set,n=o=>{let i=[],l=(a,c)=>{for(let s=a;s&&i.length<5e3;s=s.sibling)t.has(s)||c>500||oi(s)||ai(s)||(s.tag===dn&&s.stateNode?i.push(s):s.child&&l(s.child,c+1))};return o.child&&l(o.child,0),i},r=(o,i)=>{t.has(o)||i>500||(t.add(o),e.push(o),gi(n(o)).forEach(l=>r(l,i+1)))};for(let o of Je())gi(n(o.current)).forEach(i=>r(i,0));return e}function gi(e){let t=e.map(n=>{let r=Number(fr(se(n)?.style).zIndex);return Number.isFinite(r)?r:0});return e.map((n,r)=>({h:n,i:r})).sort((n,r)=>t[n.i]-t[r.i]||n.i-r.i).map(({h:n})=>n)}function fr(e,t=0){return!e||typeof e!="object"||t>10?{}:Array.isArray(e)?Object.assign({},...e.map(n=>fr(n,t+1))):e}var fc=new Set(["RCTScrollView","AndroidHorizontalScrollView","RCTScrollContentView"]);function mc(e){if(typeof e.type=="string"&&fc.has(e.type)&&e.type!=="RCTScrollContentView")return true;let t=fr(se(e)?.style).overflow;return t==="hidden"||t==="scroll"}function yc(e){let t=se(e)?.pointerEvents??se(e)?.style?.pointerEvents;if(t==="none")return"all";let n=e.return,r=0;for(;n&&r++<200;){let o=se(n)?.pointerEvents??se(n)?.style?.pointerEvents;if(o==="none"||o==="box-only"&&n.tag===dn)return"all";n=n.return}return t==="box-none"?"self":null}async function bc(e,t,n){let r=await Promise.all(n.map(a=>{let c=ir(a.stateNode);return c?Qe(c):Promise.resolve(null)})),o=new Map;n.forEach((a,c)=>o.set(a,r[c]));let i=a=>!!a&&e>=a.x&&e<=a.x+a.width&&t>=a.y&&t<=a.y+a.height,l=a=>{for(let c=a.return,s=0;c&&s<300;c=c.return,s++)if(c.tag===dn&&o.has(c)&&mc(c)&&!i(o.get(c)))return true;return false};for(let a=n.length-1;a>=0;a--)if(!(!i(r[a])||yc(n[a])||l(n[a])))return n[a];return null}function vc(e,t){let n=globalThis.document,r=globalThis.window;if(!n?.elementFromPoint||!r)return null;let o=n.elementFromPoint(e*r.innerWidth,t*r.innerHeight);for(;o;){let i=Object.keys(o).find(l=>l.startsWith("__reactFiber$"));if(i)return o[i];o=o.parentElement}return null}async function Cc(e){let t=Math.min(1,Math.max(0,Number(e?.x))),n=Math.min(1,Math.max(0,Number(e?.y)));if(!Number.isFinite(t)||!Number.isFinite(n))return{found:false,method:"none",reason:"x and y must be numbers from 0 to 1."};let r=qe.get("window"),o=t*r.width,i=n*r.height,l="none",a=null,c=vc(t,n);if(c)l="dom",a=c;else{let b=hc(o,i);if(b)l="fabric",a=await b;else{let S=gc(o,i);S&&(l="paper",a=await S)}let f=pc();(!a||!new Set(f).has(a))&&(a=await bc(o,i,f),l="measured")}if(!a)return{found:false,method:l};let s=se(a)??{},u=ft(a.stateNode),p=[],T=a,y=0;for(;T&&y++<80&&p.length<6;){let b=Xe(T);b&&typeof T.type!="string"&&!nr.has(b)&&p[p.length-1]!==b&&p.push(b),T=T.return}return{found:true,method:l,buoy:gr(a),view:{name:Xe(a)??"Unknown",nativeTag:u,testID:s.testID||void 0,label:s.accessibilityLabel||s["aria-label"]||void 0,text:sr(s)},path:p,target:u!=null?pr(u):null}}async function Tc(){let e=[];for(let r of Je())He(r.current,o=>{let i=o.stateNode;o.tag===1&&i&&typeof i.getCamera=="function"&&!gr(o)&&e.push(o)});let t=qe.get("window"),n=r=>Promise.race([r,new Promise(o=>setTimeout(()=>o(null),1e3))]);return{maps:(await Promise.all(e.slice(0,5).map(async r=>{try{let o=await n(Promise.resolve(r.stateNode.getCamera()));if(!o)return null;let i=ar(r),l=i?await Qe(i.instance):null,a=se(r)??{};return{name:Xe(r)??"Map",testID:typeof a.testID=="string"?a.testID:void 0,frame:l&&t.width&&t.height?{x:Pe(l.x/t.width),y:Pe(l.y/t.height),width:Pe(l.width/t.width),height:Pe(l.height/t.height)}:void 0,camera:{heading:typeof o.heading=="number"?o.heading:void 0,pitch:typeof o.pitch=="number"?o.pitch:void 0,altitude:typeof o.altitude=="number"?o.altitude:void 0,zoom:typeof o.zoom=="number"?o.zoom:void 0,center:o.center}}}catch{return null}}))).filter(r=>!!r)}}ln();j();j();function wc(e){return!!e&&typeof e=="object"&&("next"in e||"queue"in e||"memoizedState"in e)}function pi(e,t,n){if(e===t)return false;if(n?.isClassComponent||!wc(t))return true;let r=e,o=t;for(let i=0;o!=null&&i<64;i++){if(o.queue!=null&&(r==null||!Object.is(r.memoizedState,o.memoizedState)))return true;o=o.next,r=r!=null?r.next:null}return false}function Sc(e,t){return pi(e?.memoizedState,t?.memoizedState,{isClassComponent:t?.tag===1})}var fi={RCTText:{alwaysTrack:["children"],skip:[],description:"Text component - children is the displayed content"},RCTVirtualText:{alwaysTrack:["children"],skip:[],description:"Virtual Text (nested) - children is the displayed content"},RCTView:{alwaysTrack:[],skip:["children"],description:"View container - children are React elements"},RCTImageView:{alwaysTrack:["source"],skip:["children"],description:"Image - source contains the image URL/require"},RCTTextInput:{alwaysTrack:["value","defaultValue"],skip:["children"],description:"TextInput - value is the input content"},RCTSwitch:{alwaysTrack:["value"],skip:["children"],description:"Switch - value is the toggle state"},default:{alwaysTrack:[],skip:["children"],description:"Unknown component type"}};function xc(e){return e&&fi[e]||fi.default}var gn=new WeakMap;function mr(e){if(!e)return;let t=gn.get(e);if(t||e.alternate&&(t=gn.get(e.alternate),t))return t}function Ic(e,t){e&&(gn.set(e,t),e.alternate&&gn.set(e.alternate,t))}var Se=new Map,yr=500,Rc=10,br=50,mi=50,Dc=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","Pressable","TextInput","Switch","ActivityIndicator","Modal","StatusBar","KeyboardAvoidingView","AnimatedComponent","AnimatedComponentWrapper","Fragment","Suspense","Provider","Consumer","Context","ForwardRef","Unknown","Component"]);function yi(e){return!!(!e||Dc.has(e)||e.startsWith("Animated"))}function bi(e){if(!e)return null;let t=e._debugOwner||e.return,n=0,r=null;for(;t&&n<30;){let o=t.tag;if(o===0||o===1||o===11||o===15){let i=Me(t);if(r||(r=t),!yi(i))return t}t=t.return,n++}return r}function Me(e){if(!e)return null;let t=e.type;if(t){if(typeof t=="string")return t;if(t.name)return t.name;if(t.displayName)return t.displayName}return null}function kc(e){if(!e||typeof e!="object")return"unknown";if(e.queue!==null&&e.queue!==void 0)return"useState";let t=e.memoizedState;if(t!==null&&typeof t=="object"&&!Array.isArray(t)&&"current"in t&&Object.keys(t).length===1)return"useRef";if(Array.isArray(t)&&t.length===2){let[,n]=t;if(Array.isArray(n)||n===null)return typeof t[0]=="function"?"useCallback":"useMemo"}return t!==null&&typeof t=="object"&&!Array.isArray(t)&&("tag"in t||"create"in t||"destroy"in t)?"useEffect":"unknown"}function Pc(e,t){let n=e?.memoizedState;switch(t){case"useState":case"useReducer":return n;case"useRef":return n?.current;case"useMemo":case"useCallback":return Array.isArray(n)?n[0]:n;case"useEffect":return"[effect]";default:return n}}function mt(e){if(!e?.memoizedState)return null;let t=e.memoizedState;if(typeof t!="object"||t===null||!("next"in t)&&!("queue"in t)&&!("memoizedState"in t))return null;let n=[],r=t,o=0;for(;r!==null&&o<br;){let i=kc(r),l=Pc(r,i);n.push({index:o,type:i,value:l,rawState:r.memoizedState}),r=r.next,o++}return n.length>0?n:null}function Lc(e,t){if(!e||!t)return null;let n=[],r=Math.max(e.length,t.length);for(let o=0;o<r;o++){let i=e[o],l=t[o];if(!i&&l){n.push({index:o,type:l.type,currentValue:pn(l.value,l.type),description:`Hook[${o}] added`});continue}if(i&&!l){n.push({index:o,type:i.type,previousValue:pn(i.value,i.type),description:`Hook[${o}] removed`});continue}if(i&&l){if(i.rawState===l.rawState||l.type==="useEffect"||l.type==="useMemo"||l.type==="useCallback")continue;if(l.type==="useState"||l.type==="useReducer"||l.type==="useRef"){let a=pn(i.value,i.type),c=pn(l.value,l.type);n.push({index:o,type:l.type,previousValue:a,currentValue:c,description:`${a} \u2192 ${c}`})}}}return n.length>0?n:null}function pn(e,t){return yt(e)}function yt(e){if(e===null)return null;if(e!==void 0)return typeof e=="boolean"||typeof e=="number"?e:typeof e=="string"?e.length>30?e.slice(0,30)+"...":e:typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:Array.isArray(e)?`[Array: ${e.length} items]`:typeof e=="object"?`{Object: ${Object.keys(e).length} keys}`:String(e)}function Nc(e){if(!e)return{cause:"unknown",hookChanges:null};let t=e,n=e.alternate,r=mr(e);if(r&&n){let c=mt(e),s=mt(n),u=r.extractedHooks;if(c&&s&&u&&u.length>0){let p=u.find(T=>T.type==="useState");if(p){let T=c.find(b=>b.index===p.index),y=s.find(b=>b.index===p.index);if(T&&y){let b=T.value===p.value,f=y.value===p.value;b&&!f&&(t=n,n=e)}}}}let o=mt(t),i=null,l=null,a=null;return n?(i=n.memoizedProps,l=n.memoizedState,a=mt(n)):r&&(i=r.memoizedProps,l=r.memoizedState,a=r.extractedHooks),Ic(t,{memoizedProps:t.memoizedProps,memoizedState:t.memoizedState,extractedHooks:o}),i===null?{cause:"mount",hookChanges:null}:vr(i,t.memoizedProps)?pi(l,t.memoizedState,{isClassComponent:t.tag===1})?{cause:"state",hookChanges:Lc(a,o)}:{cause:"parent",hookChanges:null}:{cause:"props",hookChanges:null}}function vr(e,t){if(e===t)return true;if(!e||!t||typeof e!="object"||typeof t!="object")return false;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let o of n)if(e[o]!==t[o])return false;return true}function bt(e,t=3){let n=new WeakSet;function r(o,i){if(i>t)return"[MAX_DEPTH]";if(o===null)return null;if(o===void 0)return;if(typeof o=="function")return`[Function: ${o.name||"anonymous"}]`;if(typeof o=="symbol")return`[Symbol: ${o.toString()}]`;if(typeof o!="object")return o;if(n.has(o))return"[Circular]";if(n.add(o),Array.isArray(o))return o.slice(0,10).map(c=>r(c,i+1));let l={},a=Object.keys(o).slice(0,20);for(let c of a)try{l[c]=r(o[c],i+1)}catch{l[c]="[Error accessing]"}return l}return r(e,0)}function _t(e){return e===void 0?"undefined":{0:"FunctionComponent",1:"ClassComponent",2:"IndeterminateComponent",3:"HostRoot",4:"HostPortal",5:"HostComponent",6:"HostText",7:"Fragment",8:"Mode",9:"ContextConsumer",10:"ContextProvider",11:"ForwardRef",12:"Profiler",13:"SuspenseComponent",14:"MemoComponent",15:"SimpleMemoComponent"}[e]||`Unknown(${e})`}function zc(e,t){if(!(!t.hookChanges||t.hookChanges.length===0))for(let n of t.hookChanges)console.log(`[${e||"Unknown"}] ${n.type}[${n.index}]: ${n.previousValue} \u2192 ${n.currentValue}`)}function Vc(e,t,n,r,o){let i=Me(n)||"Unknown",l=typeof t?.type=="string"?t.type:"Unknown",{cause:a,hookChanges:c}=r;if(console.log(`[RENDER] ${i} (${l}:${e}) | Cause: ${a.toUpperCase()}`+(o&&o.length>0?` | Props: [${o.join(", ")}]`:"")),c&&c.length>0)for(let s of c)console.log(` \u2514\u2500 ${s.type}[${s.index}]: ${s.previousValue} \u2192 ${s.currentValue}`)}function vi(e,t,n,r,o,i,l){let a=Me(n)||"Unknown",c=typeof t?.type=="string"?t.type:"Unknown";console.log(`
|
|
27
27
|
[RN-BUOY RENDER DEBUG] \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`),console.log(`Render #${l} for ${c} (nativeTag: ${e})`),console.log(`Timestamp: ${new Date().toISOString()}`),console.log(`\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
28
|
-
`),console.log(`NATIVE FIBER (${c}):`),console.log(` type: "${t?.type}"`),console.log(` tag: ${t?.tag} (${
|
|
28
|
+
`),console.log(`NATIVE FIBER (${c}):`),console.log(` type: "${t?.type}"`),console.log(` tag: ${t?.tag} (${_t(t?.tag)})`);let s=t?.alternate;console.log(` Previous values source: ${s?"alternate":r?"storage":"none"}`);let u=t?.memoizedProps?.children,p=s?.memoizedProps?.children,T=p!==void 0?p:r?.memoizedProps?.children,y=T!==void 0?u!==T:false;console.log(` memoizedProps.children: ${yt(u)}${y?` (was: ${yt(T)})`:T!==void 0?" (unchanged)":" (first render)"}`);let b=t?.memoizedProps?.style,f=s?.memoizedProps?.style,S=f!==void 0?f:r?.memoizedProps?.style,v=S!==void 0?b!==S:false;if(b&&(console.log(` memoizedProps.style: ${JSON.stringify(bt(b,2))}${v?" (REFERENCE CHANGED)":""}`),v&&S)){let z=fn(b,S);console.log(` \u2514\u2500 Values actually changed: ${!z}`)}console.log(` All memoizedProps keys: [${Object.keys(t?.memoizedProps||{}).join(", ")}]`);let P=t?.memoizedProps?.testID,g=t?.memoizedProps?.nativeID,D=t?.memoizedProps?.accessibilityLabel;if(P&&console.log(` testID: "${P}"`),g&&console.log(` nativeID: "${g}"`),D&&console.log(` accessibilityLabel: "${D}"`),console.log(` alternate: ${s?"YES":"NO"}`),s&&console.log(` alternate.memoizedProps.children: ${yt(p)}`),console.log(" Tree structure:"),console.log(` return (parent): ${t?.return?_t(t.return.tag):"null"}`),console.log(` child: ${t?.child?_t(t.child.tag):"null"}`),console.log(` sibling: ${t?.sibling?_t(t.sibling.tag):"null"}`),console.log(""),console.log(`COMPONENT FIBER (${a}):`),n){if(console.log(` name: "${a}"`),console.log(` type: ${typeof n.type} (${n.type?.name||n.type?.displayName||"anonymous"})`),console.log(` tag: ${n.tag} (${_t(n.tag)})`),console.log(` memoizedProps: ${JSON.stringify(bt(n.memoizedProps,2))}`),console.log(` alternate: ${n.alternate?"YES":"NO"}`),n.alternate){console.log(` ALTERNATE memoizedProps: ${JSON.stringify(bt(n.alternate.memoizedProps,2))}`);let N=!vr(n.alternate.memoizedProps,n.memoizedProps);console.log(` Props changed (vs alternate): ${N?"YES":"NO"}`),console.log(` ALTERNATE memoizedState: ${n.alternate.memoizedState===n.memoizedState?"SAME":"DIFFERENT"}`)}let z=mr(n);if(z){console.log(` WeakMap PREVIOUS memoizedProps: ${JSON.stringify(bt(z.memoizedProps,2))}`);let N=!vr(z.memoizedProps,n.memoizedProps);console.log(` Props changed (vs WeakMap): ${N?"YES":"NO"}`)}else console.log(" WeakMap PREVIOUS state: (not found - first render or WeakMap cleared)");if(n._debugOwner){let N=Me(n._debugOwner);console.log(` _debugOwner: "${N}"`);let le=n._debugOwner,ge=1;for(;le&&ge<5;){let Ae=Me(le);console.log(` \u2514\u2500[${ge}] ${Ae||"unknown"} (tag: ${le.tag})`),le=le._debugOwner,ge++}}let W=0,w=t._debugOwner||t.return;for(;w&&w!==n&&W<30;)w=w.return,W++;console.log(` Depth from native fiber: ${W}`)}else console.log(" (No component fiber found - could not walk up tree)");if(console.log(""),console.log("HOOKS:"),n?.memoizedState){let z=mt(n),W=n.alternate?mt(n.alternate):null,w=mr(n),N=W||w?.extractedHooks,le=W?"alternate":w?"WeakMap":"none";z&&z.length>0?(console.log(` Total hooks: ${z.length}`),console.log(` Previous values source: ${le}`),z.forEach((ge,Ae)=>{let me=N?.[Ae],On=me?me.rawState!==ge.rawState:false,ut=me?yt(me.value):"N/A",Bt=On?" \u2190 CHANGED":"";console.log(` [${Ae}] ${ge.type}: ${yt(ge.value)}${me?` (was: ${ut})`:" (first render)"}${Bt}`)})):(console.log(" (Could not extract hooks - memoizedState structure not recognized)"),console.log(` Raw memoizedState type: ${typeof n.memoizedState}`),console.log(` Has 'next' property: ${"next"in(n.memoizedState||{})}`),console.log(` Has 'queue' property: ${"queue"in(n.memoizedState||{})}`))}else console.log(" (No memoizedState - class component, no hooks, or not a function component)");if(console.log(""),console.log("RAW HOOKS DATA:"),n?.memoizedState&&typeof n.memoizedState=="object"){let z=n.memoizedState,W=0;for(;z&&W<10;)console.log(` Hook[${W}]:`),console.log(` memoizedState: ${bt(z.memoizedState,2)}`),console.log(` baseState: ${bt(z.baseState,2)}`),console.log(` queue: ${z.queue?"[Queue present]":"null"}`),console.log(` next: ${z.next?"[Next hook]":"null"}`),z=z.next,W++;W===0&&console.log(" (memoizedState is not a hooks linked list)")}console.log(""),console.log("DETECTION RESULTS:"),console.log(` Component Cause: ${o.cause.toUpperCase()}`),o.hookChanges&&o.hookChanges.length>0&&(console.log(" Hook Changes Detected:"),o.hookChanges.forEach(z=>{console.log(` [${z.index}] ${z.type}: ${z.previousValue} \u2192 ${z.currentValue}`),z.description&&console.log(` ${z.description}`)}));let k=typeof t?.type=="string"?t.type:void 0,R=Ci(r?.memoizedProps,t?.memoizedProps,k);R&&R.length>0?console.log(` Native Props Changed: [${R.join(", ")}]`):r&&console.log(" Native Props Changed: (none detected)"),console.log(""),console.log("BATCH CONTEXT:"),console.log(` Batch size: ${i.size}`),console.log(` All tags in batch: [${Array.from(i).slice(0,20).join(", ")}${i.size>20?"...":""}]`);let _=Si(t),Q=_!==null&&i.has(_);if(console.log(` Parent nativeTag: ${_??"not found"}`),console.log(` Parent in batch: ${Q?"YES":"NO"}`),i.size>1){console.log(" Components in same batch:");let z=t?.return,W=0;for(;z&&W<10;){let w=xi(z.stateNode);if(w!==null&&i.has(w)){let N=Me(z)||z.type;console.log(` [depth ${W}] ${N} (tag: ${w})`)}z=z.return,W++}}console.log(`
|
|
29
29
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
30
|
-
`)}function hr(e,t,n,r="off"){let o=Date.now();if(!t)return{type:"unknown",timestamp:o};let i=t,l=t.alternate,a=we.get(e);if(a&&l){let R=a.memoizedProps?.children,_=t.memoizedProps?.children,Z=l.memoizedProps?.children,N=t.memoizedProps===a.memoizedProps||R!==void 0&&_===R,W=l.memoizedProps===a.memoizedProps||R!==void 0&&Z===R;N&&!W&&(i=l,l=t,r==="all"&&console.log("[RenderCause] Detected fiber swap - using alternate as current"))}let c=null,s=null;l?(c=l.memoizedProps,s=l.memoizedState):a&&(c=a.memoizedProps,s=a.memoizedState);let u=c!==null?{memoizedProps:c,memoizedState:s,timestamp:o}:void 0,p={memoizedProps:i.memoizedProps,memoizedState:i.memoizedState,timestamp:o};wc(e,p);let T=di(i),y=Ae(T)||void 0,v=Tc(i,y)||void 0,m=mc(T),S=m.cause,b=m.hookChanges;if(!u){if(r!=="off"){if(r==="minimal")console.log(`[${y||"Unknown"}] MOUNT`);else if(r==="verbose"){let R=typeof i?.type=="string"?i.type:"Unknown";console.log(`[RENDER] ${y||"Unknown"} (${R}:${e}) | Cause: MOUNT`)}else if(r==="all"){let R=we.has(e)?we.size:1;hi(e,i,T,u,m,n,R)}}return{type:"mount",timestamp:o,componentCause:"mount",componentName:y}}let P=typeof i.type=="string"?i.type:void 0,g=gi(u.memoizedProps,p.memoizedProps,P);if(r!=="off"){if(r==="minimal")yc(y,m);else if(r==="verbose")bc(e,i,T,m,g);else if(r==="all"){let R=we.has(e)?we.size:1;hi(e,i,T,u,m,n,R)}}if(g&&g.length>0)return{type:"props",changedKeys:g.slice(0,dc),timestamp:o,componentCause:S,componentName:y,parentComponentName:v,hookChanges:b||void 0};let D=vc(u.memoizedState,p.memoizedState);if(D&&D.length>0)return{type:"hooks",hookIndices:D,timestamp:o,componentCause:S,componentName:y,parentComponentName:v,hookChanges:b||void 0};let k=mi(i);return k&&n.has(k)?{type:"parent",timestamp:o,componentCause:S,componentName:y,parentComponentName:v,hookChanges:b||void 0}:S==="state"?{type:"state",timestamp:o,componentCause:S,componentName:y,parentComponentName:v,hookChanges:b||void 0}:S==="props"?{type:"props",timestamp:o,componentCause:S,componentName:y,parentComponentName:v}:S==="parent"?{type:"parent",timestamp:o,componentCause:S,componentName:y,parentComponentName:v}:{type:"unknown",timestamp:o,componentCause:S,componentName:y,parentComponentName:v}}function gi(e,t,n){if(e===t||!e||!t||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return null;let r=cc(n),o=new Set([...Object.keys(e),...Object.keys(t)]),i=[];for(let l of o)if(!l.startsWith("__")&&!r.skip.includes(l)){if(l==="children"){if(!r.alwaysTrack.includes("children"))continue;let a=e[l],c=t[l];a!==c&&(pi(a)&&pi(c)?i.push(`children: ${fi(a)} \u2192 ${fi(c)}`):i.push("children (content)"));continue}if(e[l]!==t[l]){let a=e[l],c=t[l];l==="style"?dn(a,c)?i.push(`${l} (ref only)`):i.push(l):typeof a=="function"&&typeof c=="function"?i.push(`${l} (fn ref)`):i.push(l)}}return i.length>0?i:null}function dn(e,t,n=0){if(n>5)return false;if(e===t)return true;if(typeof e!=typeof t)return false;if(typeof e!="object"||e===null||t===null)return e===t;if(Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!dn(e[i],t[i],n+1))return false;return true}let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return false;for(let i of r)if(!o.includes(i)||!dn(e[i],t[i],n+1))return false;return true}function pi(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function fi(e){return e===null?"null":e===void 0?"undefined":typeof e=="string"?e.length>20?`"${e.slice(0,20)}..."`:`"${e}"`:typeof e=="number"||typeof e=="boolean"?String(e):"[object]"}function vc(e,t){if(e===t||e==null||t==null||typeof e!="object"||typeof t!="object")return null;let n=[],r=e,o=t,i=0;for(;o!==null&&i<ur;)(r===null||Cc(r,o))&&n.push(i),o=o?.next??null,r=r?.next??null,i++;return n.length>0?n:null}function Cc(e,t){return e===t?false:e.memoizedState!==t.memoizedState||e.baseState!==void 0&&e.baseState!==t.baseState}function mi(e){let t=e?.return,n=0;for(;t&&n<ci;){if(t.stateNode){let r=yi(t.stateNode);if(r!=null)return r}t=t.return,n++}return null}function Tc(e,t){if(!e)return null;let n=di(e);if(!n)return null;let r=n.return,o=0;for(;r&&o<ci;){let i=r.tag;if(i===0||i===1||i===11||i===15){let l=Ae(r);if(l&&!ui(l)&&l!==t)return l}r=r.return,o++}return null}function yi(e){return e?typeof e.__nativeTag=="number"?e.__nativeTag:typeof e._nativeTag=="number"?e._nativeTag:typeof e.canonical?.__nativeTag=="number"?e.canonical.__nativeTag:typeof e.canonical?.publicInstance?.__nativeTag=="number"?e.canonical.publicInstance.__nativeTag:null:null}function wc(e,t){if(we.size>=cr){let n=Array.from(we.entries());n.sort((o,i)=>o[1].timestamp-i[1].timestamp);let r=Math.floor(cr/4);for(let o=0;o<r;o++)we.delete(n[o][0])}we.set(e,t)}function bi(){we.clear()}function Sc(e){we.delete(e)}function xc(){return{storedStates:we.size,maxStates:cr}}var Ic=5,vi=200,hn=20,gn=30;function He(e,t=0,n=new WeakSet){if(e==null||typeof e=="boolean"||typeof e=="number")return e;if(typeof e=="string")return e.length>vi?e.slice(0,vi)+"...":e;if(typeof e=="function")return`[Function: ${e.name||"anonymous"}]`;if(typeof e=="symbol")return`[Symbol: ${e.description||""}]`;if(t>=Ic)return Array.isArray(e)?`[Array: ${e.length} items]`:typeof e=="object"?`[Object: ${Object.keys(e).length} keys]`:"[...]";if(typeof e=="object"){if(n.has(e))return"[Circular]";n.add(e)}if(Array.isArray(e)){let r=e.slice(0,hn).map(o=>He(o,t+1,n));return e.length>hn&&r.push(`[...${e.length-hn} more]`),r}if(e instanceof Date)return e.toISOString();if(e instanceof Error)return`[Error: ${e.message}]`;if(e instanceof RegExp)return e.toString();if(e instanceof Map){let r={__type:"Map",__size:e.size},o=0;for(let[i,l]of e){if(o>=gn){r[`...${e.size-o} more`]=true;break}let a=typeof i=="string"?i:String(i);r[a]=He(l,t+1,n),o++}return r}if(e instanceof Set)return{__type:"Set",__size:e.size,values:Array.from(e).slice(0,hn).map(r=>He(r,t+1,n))};if(typeof e=="object"){let r={},o=Object.keys(e),i=o.slice(0,gn);for(let l of i)if(!(l.startsWith("__")||l==="children"))try{r[l]=He(e[l],t+1,n)}catch{r[l]="[Error accessing property]"}return o.length>gn&&(r[`...${o.length-gn} more keys`]=true),r}return"[Unknown type]"}function Rc(e){if(e?.memoizedProps)return He(e.memoizedProps)}function Dc(e){if(!e?.memoizedState)return;let t=e.memoizedState;if(typeof t=="object"&&t!==null&&"next"in t){let n=[],r=t,o=0;for(;r&&o<ur;)n.push({index:o,memoizedState:He(r.memoizedState)}),r=r.next,o++;return{__type:"Hooks",hooks:n}}return He(t)}import{notifySubscriberCountChange as Ci}from"@buoy-gg/shared-ui/web";j();var gr=new Set(["HighlightUpdatesOverlay","HighlightUpdatesModal","HighlightFilterView","RenderDetailView","RenderListItem","RenderListItemInner","RenderHistoryViewer","RenderHistoryFooter","RenderCauseBadge","TwoLevelCauseBadge","EnhancedCauseDisplay","IsolatedRenderList","IsolatedRenderListInner","StatsDisplay","StatsDisplayInner","CurrentStateView","EventStepperFooter","EventsModal","UnifiedEventList","UnifiedEventItem","UnifiedEventDetail","UnifiedEventFilters","UnifiedEventViewer","ReactQueryEventDetail","EventsCopySettingsView"]),Ft=["HighlightUpdates","RenderList","RenderDetail","RenderHistory","RenderCause","EventStepper","UnifiedEvent","EventsModal","EventsCopy"],Ti=new Set(["JsModalComponent","JsModal","TypePicker","PatternInput","PatternChip","DetectedItemsSection","DetectedCategoryBadge","IdentifierBadge","CategoryBadge","AppRenderer","AppOverlay","FloatingTools","DialDevTools","DevToolsVisibilityProvider","AppHostProvider","MinimizedToolsProvider","ModalHeader","TabSelector","SectionHeader","DraggableHeader","WindowControls","TreeDiffViewer","DataViewer","SplitDiffViewer","VirtualizedDataExplorer","DiffSummary","TypeLegend","IndentGuides","IndentGuidesOverlay","CyberpunkInput","DiffView","AnswerCard","DetailsSection","DetailRow","QuickActionsSection","FilterOptionCard","SearchSection","SearchSectionInner","HeaderActions","HeaderActionsInner","MainListHeader","FilterViewHeader","DetailViewHeader","FloatingMenu","FloatingDevTools","MinimizedToolsStack","MinimizedToolsContext","GlitchToolButton","ExpandablePopover","CollapsedPeek","ExpandedWrapper","DialIcon","DialMenu","DialIconItem","OnboardingTooltip","MenuLauncherIcon","DevToolsSettingsModal","SettingsModal","ImageOverlayModal","ImageOverlayStandalone","ToolCard","ToolIcon","GripVerticalIcon","UserStatus","Divider","ChevronDown","ChevronUp","ChevronLeft","ChevronRight","ChevronDownIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","LogBox","LogBoxLog","LogBoxLogNotification","LogBoxNotificationContainer","_LogBoxNotificationContainer","LogBoxInspector","LogBoxInspectorContainer","LogBoxInspectorHeader","LogBoxInspectorBody","LogBoxInspectorFooter","LogBoxInspectorMessageHeader","LogBoxInspectorStackFrame","LogBoxInspectorSection","LogBoxButton","LogBoxMessage","PerfMonitorOverlay","PerfMonitorModal","PerfMonitorRoot","PerfHudInline","PerfDiagnostics","MetricSparkline","JsFallbackNotice","AutomationConfigView","AutomationProgressOverlay","AutomationResumer","SaveBenchmarkPrompt","SavedCasesModal","BatchBarReport","BatchReportView","PerfHudInlineInner","PerfMonitorOverlayInner","MiniMetric","MetricRow","MetricNumber","MetricSparklineInner","RecColumn","PillBody","FullBody","TargetLine","PagesSection","ProbesSection","TaskTable","TaskRow","BusySparkline"]),pr=["JsModal","ImageOverlay","PerfMonitor","PerfHud","JsTop"],wi=new Set(["VirtualizedDataExplorer","TreeDiffView","TreeDiffRow","DataViewer","DiffView","DiffSummary","FloatingDevTools","FloatingMenu","FloatingBubble","MinimizedDock","DialMenu","DialItem","ExpandableSection","ChevronIcon","GlitchText","SettingsModal","SettingsRow","OnboardingFlow","DevToolsMenu"]),fr=false;function kc(e){fr=e}function Si(){return fr}var Pc=new Set(["PerfHudInline","PerfHudInlineInner","PerfDiagnostics","MetricSparkline","MetricSparklineInner","JsFallbackNotice","AutomationConfigView","AutomationProgressOverlay","AutomationResumer","SaveBenchmarkPrompt","SavedCasesModal","BatchBarReport","BatchReportView","MiniMetric","MetricRow","MetricNumber","RecColumn","PillBody","FullBody","TargetLine","PagesSection","ProbesSection"]);function xi(e){return e.startsWith("PerfMonitor")||e.startsWith("PerfHud")||Pc.has(e)}var Lc=new Set(["TaskTable","TaskRow","BusySparkline"]);function zc(e){return e.startsWith("JsTop")||Lc.has(e)}function Nc(e){if(gr.has(e))return true;for(let t=0;t<Ft.length;t++)if(e.startsWith(Ft[t]))return true;if(fr)return xi(e)||zc(e);if(Ti.has(e)||wi.has(e))return true;for(let t=0;t<pr.length;t++)if(e.startsWith(pr[t]))return true;return false}function Vc(e){if(gr.has(e))return true;for(let t=0;t<Ft.length;t++)if(e.startsWith(Ft[t]))return true;return false}var se=false,gt=false,$e=false,Le=false,ie=null,ze=null,pn=null,Et=null,Ii=false,ve=false,fn=new Set,mr=new Set,yr=new Map,br=["#37afa9","#63b19e","#80b393","#97b488","#abb67d","#beb771","#cfb965","#dfba57","#efbb49","#febc38"],Bc=false;function q(e,t){Bc&&(t!==void 0?console.log(`[HighlightUpdates] ${e}`,t):console.log(`[HighlightUpdates] ${e}`))}function vr(e){let t=Nl(e);if(t)return t;if(!e)return null;let n=e;return n.canonical?.publicInstance?n.canonical.publicInstance:n.canonical&&typeof n.canonical.measure=="function"?n.canonical:typeof n.measure=="function"?n:null}function pt(e){let t=zl(e);if(t!==null)return t;if(e==null)return null;let n=e;if(n.__nativeTag!=null)return n.__nativeTag;if(n._nativeTag!=null)return n._nativeTag;if(n.nativeTag!=null)return n.nativeTag;if(n.canonical){if(n.canonical.__nativeTag!=null)return n.canonical.__nativeTag;if(n.canonical._nativeTag!=null)return n.canonical._nativeTag;if(n.canonical.nativeTag!=null)return n.canonical.nativeTag}return null}function Cr(e){let t=e,n={viewType:"Unknown"};t?.canonical?.viewConfig?.uiViewClassName?n.viewType=t.canonical.viewConfig.uiViewClassName:t?.viewConfig?.uiViewClassName?n.viewType=t.viewConfig.uiViewClassName:Ao(t)&&(n.viewType=t.tagName.toLowerCase());let r=t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Jn(t),o=t?.canonical?.currentProps,i=t?.canonical?.pendingProps,l=r?.pendingProps,a=r?.memoizedProps;return n.testID=o?.testID||i?.testID||l?.testID||a?.testID||l?.["data-testid"]||a?.["data-testid"]||void 0,n.nativeID=o?.nativeID||i?.nativeID||l?.nativeID||a?.nativeID||l?.id||a?.id||void 0,n.accessibilityLabel=o?.accessibilityLabel||i?.accessibilityLabel||l?.accessibilityLabel||a?.accessibilityLabel||l?.["aria-label"]||a?.["aria-label"]||void 0,n.componentName=_c(r)||void 0,n}var Ri=false,Ac=false,Tr=null;var Hc=new Set;var $c=new Set(["highlight-updates-overlay","__rn_buoy__highlight-modal"]),Mc=new Set(["jsmodal-root","image-overlay-standalone","logbox_inspector","logbox"]),Ke=new Map,Di=500;function Fc(){Ke.clear()}function ki(e){return e?!!($c.has(e)||e.startsWith("__highlight_")):false}function Pi(e){if(!e)return false;if(Mc.has(e))return true;let t=e.charCodeAt(0);return!!(t===95&&e.startsWith("__rn_buoy__")||t===108&&e.startsWith("logbox"))}function Li(e){if(!e)return null;let t=e.type;if(t){if(typeof t=="string")return t;if(t.name)return t.name;if(t.displayName)return t.displayName}let n=e.elementType;if(n){if(n.name)return n.name;if(n.displayName)return n.displayName}return null}var Ec=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","Pressable","TextInput","Switch","ActivityIndicator","Modal","StatusBar","KeyboardAvoidingView","AnimatedComponent","AnimatedComponentWrapper","ScreenContainer","ScreenStack","Screen","ScreenContentWrapper","Svg","G","Path","Rect","Circle","Line","Polygon","Polyline","Ellipse","Text as SVGText","TSpan","TextPath","Use","Symbol","Defs","ClipPath","LinearGradient","RadialGradient","Stop","Mask","Pattern","Image as SVGImage","SafeAreaProvider","SafeAreaView","SafeAreaListener","GestureHandlerRootView","GestureDetector","ReanimatedView","ReanimatedText","ReanimatedImage","ReanimatedScrollView","Fragment","Suspense","Provider","Consumer","Context","ForwardRef"]);function Oc(e){return!!(!e||Ec.has(e)||e==="Unknown"||e==="Component"||e.startsWith("Animated"))}function _c(e){if(!e)return null;let t=e._debugOwner||e.return,n=0,r=null;for(;t&&n<30;){let o=Li(t);if(o&&typeof t.type!="string"&&(r||(r=o),!Oc(o)))return o;t=t.return,n++}return r}function Wc(e){let t=e,n=t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Jn(t),r=pt(e)||pt(t?.canonical?.publicInstance),o=Si(),i=!o&&V.getSettings().excludeDevTools;if(i&&Ao(e)&&e.closest("[data-buoy-root]"))return true;if(r!=null&&i){let c=Ke.get(r);if(c!==void 0)return c}let l=false,a=n?.pendingProps?.nativeID||n?.memoizedProps?.nativeID||t?.canonical?.currentProps?.nativeID||null;if((ki(a)||i&&Pi(a))&&(l=true),!l&&n){let c=n,s=0;for(;c&&s<30;){let u=Li(c);if(u){if(gr.has(u)){l=true;break}for(let T of Ft)if(u.startsWith(T)){l=true;break}if(l)break;if(o&&xi(u)){l=true;break}if(i){if(Ti.has(u)||wi.has(u)){l=true;break}for(let T of pr)if(u.startsWith(T)){l=true;break}if(l)break}}let p=c.pendingProps?.nativeID||c.memoizedProps?.nativeID;if(ki(p)){l=true;break}if(i&&Pi(p)){l=true;break}c=c.return,s++}}if(l&&r!=null&&i){if(Ke.size>=Di){let c=Array.from(Ke.keys());for(let s=0;s<Di/2;s++)Ke.delete(c[s])}Ke.set(r,l)}return l}function jc(e){let t=Math.min(e-1,br.length-1);return br[Math.max(0,t)]}function Uc(e){if(e.size===0||!se&&!$e||V.getState().isPaused)return;Ue.isEnabled()&&Rl();let t=V.getBatchSize(),n=Ue.startBatch(e.size,t),r=[],o=0,i=0,l=V.hasActiveFilters();for(let s of e)if(s&&typeof s=="object")try{if(Wc(s)){o++;continue}let u=vr(s),p=pt(s)||pt(u);if(p==null)continue;let T=Cr(s);if(l&&!V.passesFilters(T)){i++;continue}let y=V.getSettings().showRenderCount,v,m;y?(v=(yr.get(p)||0)+1,yr.set(p,v),m=jc(v)):(v=0,m=br[0]),r.push({node:s,color:m,count:v})}catch{}if(n.markFilteringComplete(o+i,r.length),r.length===0){n.finish();return}Ri&&console.log(`[HighlightUpdates] ${r.length} component(s) re-rendered`);let a=V.getRenderEventCallbackCount()>0;if(!ze&&!a){Ri&&console.log("[HighlightUpdates] No highlightCallback and no event callbacks - skipping render"),Ii=false;return}n.markMeasurementStart();let c=r.slice(0,t*4).map(({node:s,color:u,count:p})=>new Promise(T=>{let y=false,v=g=>{y||(y=true,clearTimeout(m),T(g))},m=setTimeout(()=>v({rect:null,stateNode:s,color:u,count:p}),500),S=vr(s),b=pt(s)||pt(S);if(b==null){v({rect:null,stateNode:s,color:u,count:p});return}let P=(g,D,k,R,_,Z)=>{if(_==null||Z==null||k==null||R==null){v({rect:null,stateNode:s,color:u,count:p});return}v({rect:{id:b,x:_,y:Z,width:k,height:R,color:u,count:p},stateNode:s,color:u,count:p})};if(!S){let g=s.node,D=globalThis.nativeFabricUIManager;if(g&&D?.measure){try{D.measure(g,P)}catch{v({rect:null,stateNode:s,color:u,count:p})}return}v({rect:null,stateNode:s,color:u,count:p});return}try{S.measure(P)}catch{v({rect:null,stateNode:s,color:u,count:p})}}));Promise.all(c).then(s=>{let u=s.filter(T=>T.rect!==null),p=u.map(T=>T.rect);n.markMeasurementComplete(u.length,s.length-u.length),p.length>0&&ze&&se&&!gt&&ze(p),setTimeout(()=>{try{for(let m of u)m.rect&&Gc(m.rect.id,m.stateNode)}catch(m){q("registerTrackedNode batch failed",m)}let T=V.getSettings(),y=T.trackRenderCauses&&T.showRenderCount,v=null;if(y){v=new Set;for(let{rect:m}of u)m&&v.add(m.id)}if(se){V.startBatch();for(let{rect:m,stateNode:S,color:b,count:P}of u)if(m){let g=Cr(S),D;if(y&&v){let k=wr(S);D=hr(m.id,k,v,T.debugLogLevel)}V.trackRender({nativeTag:m.id,viewType:g.viewType,testID:g.testID,nativeID:g.nativeID,accessibilityLabel:g.accessibilityLabel,componentName:g.componentName,measurements:{x:m.x,y:m.y,width:m.width,height:m.height},color:b,count:P,renderCause:D})}V.endBatch()}else for(let{rect:m,stateNode:S,color:b,count:P}of u)if(m){let g=Cr(S),D;if(y&&v){let k=wr(S);D=hr(m.id,k,v,T.debugLogLevel)}V.emitRenderEvent({nativeTag:m.id,viewType:g.viewType,testID:g.testID,nativeID:g.nativeID,accessibilityLabel:g.accessibilityLabel,componentName:g.componentName,measurements:{x:m.x,y:m.y,width:m.width,height:m.height},color:b,count:P,renderCause:D})}n.markTrackingComplete(),n.markCallbackComplete(),n.finish()},0)}).catch(s=>{console.error("[HighlightUpdates] Error in measurement pipeline:",s),n.finish()})}var zi=globalThis.WeakRef,mn=new Map;function Gc(e,t){if(!(e==null||t==null||typeof t!="object"))try{mn.set(e,zi?new zi(t):{deref:()=>t})}catch{mn.set(e,{deref:()=>t})}}function Kc(e){let t=mn.get(e)?.deref();return t||mn.delete(e),t??null}function qc(e){return new Promise(t=>{try{e.measure((n,r,o,i,l,a)=>{l==null||a==null||o==null||i==null?t(null):t({x:l,y:a,width:o,height:i})})}catch{t(null)}})}function wr(e){let t=e;return t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Jn(t)||null}function Jc(e){let t=wr(e),n=0;for(;t&&n++<200;){let r=t.stateNode;if(r&&typeof r.scrollTo=="function"){let o=typeof r.getNativeScrollRef=="function"&&r.getNativeScrollRef()||null,i=typeof r.getInnerViewNode=="function"&&r.getInnerViewNode()||typeof r.getScrollableNode=="function"&&r.getScrollableNode()||r;return{instance:r,nativeRef:o,innerNode:i}}t=t.return}return null}async function Yc(e,t,n){try{let r=Jc(e);if(!r)return false;let o=t,i=null,l=a=>new Promise(c=>{let s=false,u=T=>{s||(s=true,c(T))},p=setTimeout(()=>u(null),600);try{a(T=>{clearTimeout(p),u(T)})}catch{clearTimeout(p),u(null)}});if(r.nativeRef&&typeof o.measureLayout=="function"&&(i=await l(a=>o.measureLayout(r.nativeRef,(c,s)=>a(s),()=>a(null)))),i==null){let a=Ht(t),c=typeof r.innerNode=="number"?r.innerNode:Ht(r.innerNode);a!=null&&c!=null&&(i=await l(s=>Xn.measureLayout(a,c,()=>s(null),(u,p)=>s(p))))}return i==null?false:(r.instance.scrollTo({y:Math.max(0,i-n),animated:false}),await new Promise(a=>setTimeout(a,80)),true)}catch{return false}}function Xc(e,t){let n=[e.testID,e.nativeID,e.accessibilityLabel,e.componentName,e.viewType,String(e.nativeTag)],r=0;for(let o of n){if(!o)continue;let i=o.toLowerCase();if(i===t)return 3;i.startsWith(t)?r=Math.max(r,2):i.includes(t)&&(r=Math.max(r,1))}return r}async function Zc(e){let t=e.scrollIntoView!==false,n=typeof e.margin=="number"?e.margin:12,r=V.getRenders(),o=async()=>{let b=await ar(),P=(e.query??"").trim().toLowerCase(),g;for(let R of b.elements){if(e.nativeTag!=null&&R.nativeTag===e.nativeTag){g={el:R,score:1e3};break}let _=an({nativeTag:R.nativeTag,testID:R.testID,label:R.label,text:R.text,name:R.name,tap:R.tap},{query:P||void 0,nativeTag:e.nativeTag});_<=0||(!g||_>g.score)&&(g={el:R,score:_})}if(!g?.el.frame)return{matched:false,reason:"no-match",candidates:[]};let D=b.screen,k=g.el.frame;return{matched:true,live:true,rect:{x:k.x*D.width,y:k.y*D.height,width:k.width*D.width,height:k.height*D.height},scale:Yn.get(),screen:{width:D.width,height:D.height},nativeTag:g.el.nativeTag??void 0,componentName:g.el.name,testID:g.el.testID}};if(r.length===0)return o();let i=(e.query??"").trim().toLowerCase(),l=i?r.map(b=>({r:b,score:Xc(b,i)})).filter(b=>b.score>0).sort((b,P)=>P.score-b.score||P.r.lastRenderTime-b.r.lastRenderTime):[],a=l.slice(0,8).map(({r:b})=>({nativeTag:b.nativeTag,componentName:b.componentName,testID:b.testID,nativeID:b.nativeID,viewType:b.viewType,renderCount:b.renderCount})),c=e.nativeTag??(l.length>0?l[0].r.nativeTag:void 0);if(c==null){let b=await o();return b.matched?b:{matched:false,reason:"no-match",candidates:a}}let s=r.find(b=>b.nativeTag===c),u=null,p=false,T=false,y=Kc(c);if(y){let b=vr(y);b&&(t&&(T=await Yc(y,b,n)),u=await qc(b),p=!!u)}if(!u&&s?.measurements&&(u={...s.measurements}),!u)return{matched:false,reason:"no-measurement",nativeTag:c,candidates:a};let v=Yn.get(),m=At.get("window"),S=u.x>=-1&&u.y>=-1&&u.x+u.width<=m.width+1&&u.y+u.height<=m.height+1;return{matched:true,live:p,scrolled:T,inView:S,rect:u,scale:v,screen:{width:m.width,height:m.height},nativeTag:c,componentName:s?.componentName,testID:s?.testID,candidates:a}}function Ni(e){if(!ie?.rendererInterfaces){q("No rendererInterfaces available");return}let t=0;if(ie.rendererInterfaces.forEach((n,r)=>{if(typeof n.setTraceUpdatesEnabled=="function")try{n.setTraceUpdatesEnabled(e),t++,q(`Renderer ${r}: setTraceUpdatesEnabled(${e})`)}catch(o){q(`Renderer ${r}: error setting trace updates`,o)}else q(`Renderer ${r}: no setTraceUpdatesEnabled method`)}),q(`Set trace updates ${e?"enabled":"disabled"} on ${t} renderer(s)`),ie.reactDevtoolsAgent?.setTraceUpdatesEnabled)try{ie.reactDevtoolsAgent.setTraceUpdatesEnabled(e),q("Also set trace updates on agent")}catch(n){q("Error setting trace updates on agent",n)}}function Vi(){ie&&(Et||(q("Subscribing to traceUpdates event"),typeof ie.sub=="function"?(Et=ie.sub("traceUpdates",Uc),q("Subscribed using hook.sub()")):q("hook.sub not available, traceUpdates may not work"),Ni(true)))}function Sr(){Ni(false),Et&&(Et(),Et=null,q("Unsubscribed from traceUpdates event"))}function Bi(e){ze=e,q(`Highlight callback ${e?"set":"cleared"}`)}function Qc(e){pn=e,q(`Badge press callback ${e?"set":"cleared"}`)}function eu(){return pn}function tu(e){pn&&pn(e)}var xr=null,yn=null;function nu(e){xr=e,e&&yn!==null&&e(yn)}function ru(e){if(ge){ge("setSpotlight",{nativeTag:e});return}yn=e,xr&&xr(e)}var ge=null;function ou(e){ge=e}function iu(e){se!==e.enabled&&(se=e.enabled,Ir()),ve!==e.frozen&&(ve=e.frozen,vn())}function au(){return yn}function Ir(){mr.forEach(e=>{try{e(se)}catch(t){console.error("[HighlightUpdates] Error in state listener:",t)}})}function Ai(e){return mr.add(e),e(se),()=>{mr.delete(e)}}function bn(){if(typeof Q<"u"&&!Q)return q("Only available in development builds"),false;if(ge||Le)return true;if(ie=window?.__REACT_DEVTOOLS_GLOBAL_HOOK__||null,!ie)return q("React DevTools hook not found"),false;if(q("Hook found"),q(`Hook has sub: ${typeof ie.sub=="function"}`),q(`Hook has on: ${typeof ie.on=="function"}`),q(`Hook has emit: ${typeof ie.emit=="function"}`),Mo(),ie.rendererInterfaces&&ie.rendererInterfaces.size>0)return Le=true,q(`Initialized with ${ie.rendererInterfaces.size} renderer(s)`),Hi(),true;let e=setInterval(()=>{ie?.rendererInterfaces&&ie.rendererInterfaces.size>0&&(clearInterval(e),Le=true,q(`Initialized with ${ie.rendererInterfaces.size} renderer(s) (delayed)`),Hi())},100);return setTimeout(()=>clearInterval(e),1e4),false}function Hi(){typeof window<"u"&&(window.__HIGHLIGHT_UPDATES_CONTROLLER__={enable:Ot,disable:_t,toggle:$i,isEnabled:Mi,setEnabled:Fi,subscribe:Ai,initialize:bn,destroy:_i,isInitialized:()=>Le,setHighlightCallback:Bi})}function Ot(){typeof Q<"u"&&!Q||(Le||bn(),gt&&(gt=false),!se&&(q("Enabling highlights"),$e||Vi(),V.start(),se=true,Ir(),Ci("render")))}function _t(){typeof Q<"u"&&!Q||se&&(q("Disabling highlights"),Ac=false,Ii=false,Tr&&(clearTimeout(Tr),Tr=null),Hc.clear(),Ke.clear(),bi(),ve&&(ve=false,vn()),$e||Sr(),V.stop(),se=false,Ir(),Ci("render"))}function lu(){typeof Q<"u"&&!Q||$e||(Le||bn(),q("Enabling background tracking"),se||Vi(),$e=true)}function su(){typeof Q<"u"&&!Q||$e&&(q("Disabling background tracking"),$e=false,se||Sr())}function cu(){return $e}function $i(){if(!(typeof Q<"u"&&!Q)){if(ge){ge("toggle");return}se?_t():Ot()}}function uu(){if(ge){ge("clearRenderCounts");return}yr.clear(),V.clear(),q("Cleared render counts")}function Mi(){return se}function Fi(e){if(ge){ge("setEnabled",{enabled:e});return}e?Ot():_t()}function Rr(e){gt!==e&&(gt=e,e&&ze&&ze([]))}function du(){return gt}function hu(e){if(ge){ge("setSilentTracking",{enabled:e});return}e?(Ot(),Rr(true)):(Rr(false),_t())}function gu(){return Le}function vn(){fn.forEach(e=>{try{e(ve)}catch(t){console.error("[HighlightUpdates] Error in freeze listener:",t)}})}function pu(e){return fn.add(e),e(ve),()=>{fn.delete(e)}}function Ei(){typeof Q<"u"&&!Q||ve||(ve=true,q("Freeze mode enabled"),vn())}function Oi(){typeof Q<"u"&&!Q||ve&&(ve=false,q("Freeze mode disabled"),ze&&ze([]),vn())}function fu(){if(ge){ge("toggleFreeze");return}ve?Oi():Ei()}function mu(){return ve}function _i(){Le&&(Sr(),Fo(),$o(null),ve=false,fn.clear(),se=false,ie=null,ze=null,Le=false,typeof window<"u"&&delete window.__HIGHLIGHT_UPDATES_CONTROLLER__,q("Destroyed"))}var yu={subscribe:Ai,enable:Ot,disable:_t,toggle:$i,isEnabled:Mi,setEnabled:Fi,initialize:bn,destroy:_i,isInitialized:gu,setHighlightCallback:Bi,clearRenderCounts:uu,freeze:Ei,unfreeze:Oi,toggleFreeze:fu,getFrozen:mu,subscribeToFreeze:pu,setBadgePressCallback:Qc,getBadgePressCallback:eu,handleBadgePress:tu,setSpotlightCallback:nu,setSpotlight:ru,getSpotlight:au,clearDevToolsCache:Fc,enableBackgroundTracking:lu,disableBackgroundTracking:su,isBackgroundTrackingEnabled:cu,setRemoteHandler:ou,replaceRemoteState:iu,locateComponent:Zc,setHighlightsSuppressed:Rr,getHighlightsSuppressed:du,setSilentTracking:hu},$=yu;j();import bu,{useState as ce,useEffect as Se,useRef as qe,useCallback as te}from"react";import{Power as vu,JsModal as Cu,devToolsStorageKeys as ft,persistentStorage as Cn,night as Wt,TickProvider as Wi,windowDragProps as Tu}from"@buoy-gg/shared-ui/web";import{useIsPro as wu}from"@buoy-gg/license/web";Pe();j();import{useMemo as Tn,useState as ji,useCallback as jt}from"react";import{CopyButton as Su,formatRelativeTime as xu,PlusIcon as Iu,MinusIcon as Ru,EventStepperFooter as Du,Lock as ku,night as F,useLimit as Pu,monoFont as mt}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as Lu}from"@buoy-gg/shared-ui/web/dataViewer";j();import{buoyColors as Me,night as ne,monoFont as Je}from"@buoy-gg/shared-ui/web";import{Fragment as zu,jsx as G,jsxs as ae}from"react/jsx-runtime";var Fe={mount:{label:"MOUNT",color:Me.success,tip:"First render of this component."},props:{label:"PROPS",color:Me.warning,tip:"Native props changed. Consider React.memo() or useCallback for handlers."},state:{label:"STATE",color:"#a855f7",tip:"Component state changed via setState."},hooks:{label:"HOOKS",color:"#ec4899",tip:"Hook values changed (useState, useReducer, useMemo, etc.)."},context:{label:"CONTEXT",color:"#06b6d4",tip:"React context value changed."},parent:{label:"PARENT",color:Me.textSecondary,tip:"Parent component re-rendered. Consider wrapping with React.memo()."},unknown:{label:"?",color:Me.textMuted,tip:"Could not determine render cause."}},Ut={mount:{label:"mount",color:Me.success,tip:"First render of this component."},props:{label:"props",color:Me.warning,tip:"Component received different props from parent."},state:{label:"state",color:"#a855f7",tip:"Component's own state changed (useState/useReducer)."},parent:{label:"parent",color:Me.textSecondary,tip:"Parent re-rendered but this component's props/state didn't change. Consider React.memo()."},unknown:{label:"?",color:Me.textMuted,tip:"Could not determine component render cause."}};function Ui({cause:e,compact:t=false,showKeys:n=false,showTwoLevel:r=false,testID:o}){let i=Fe[e.type],l=e.componentCause?Ut[e.componentCause]:null,a=r&&l&&e.componentCause!==e.type;return ae(d,{nativeID:"__rn_buoy__cause-badge",testID:o,style:[B.container,t&&B.containerCompact],children:[a&&ae(zu,{children:[G(d,{style:[B.badge,t&&B.badgeCompact,B.componentBadge,{backgroundColor:l.color+"15"}],children:G(h,{testID:o?`${o}-component`:void 0,style:[B.badgeText,t&&B.badgeTextCompact,B.componentBadgeText,{color:l.color}],children:l.label})}),G(h,{style:[B.arrowText,t&&B.arrowTextCompact],children:"\u2192"})]}),G(d,{style:[B.badge,t&&B.badgeCompact,{backgroundColor:i.color+"20"}],children:G(h,{testID:o?`${o}-native`:void 0,style:[B.badgeText,t&&B.badgeTextCompact,{color:i.color}],children:i.label})}),n&&e.changedKeys&&e.changedKeys.length>0&&G(h,{testID:o?`${o}-keys`:void 0,style:[B.keysText,t&&B.keysTextCompact],numberOfLines:1,children:e.changedKeys.join(", ")}),n&&e.hookIndices&&e.hookIndices.length>0&&ae(h,{testID:o?`${o}-hooks`:void 0,style:[B.keysText,t&&B.keysTextCompact],numberOfLines:1,children:["Hook ",e.hookIndices.join(", ")]})]})}function Nu({cause:e}){let t=Fe[e.type],n=e.componentCause?Ut[e.componentCause]:null,r=e.componentName||"Component";return ae(d,{nativeID:"__rn_buoy__two-level-cause",style:B.twoLevelContainer,children:[n&&ae(d,{style:B.twoLevelRow,children:[G(h,{style:B.twoLevelLabel,children:"Component:"}),G(h,{style:B.twoLevelName,children:r}),G(h,{style:B.twoLevelText,children:"re-rendered due to"}),G(d,{style:[B.badge,{backgroundColor:n.color+"20"}],children:G(h,{style:[B.badgeText,{color:n.color}],children:n.label.toUpperCase()})})]}),ae(d,{style:B.twoLevelRow,children:[G(h,{style:B.twoLevelLabel,children:"Native:"}),G(d,{style:[B.badge,{backgroundColor:t.color+"20"}],children:G(h,{style:[B.badgeText,{color:t.color}],children:t.label})}),e.changedKeys&&e.changedKeys.length>0&&ae(h,{style:B.twoLevelKeys,children:["[",e.changedKeys.join(", "),"]"]})]})]})}function Gi({cause:e,nativeType:t}){let n=Fe[e.type],r=e.componentCause?Ut[e.componentCause]:null,o=e.componentName||"Unknown",i=e.hookChanges&&e.hookChanges.length>0,l=e.changedKeys&&e.changedKeys.length>0,a=e.changedKeys?.filter(s=>s.includes("(ref only)")||s.includes("(fn ref)"))||[],c=e.changedKeys?.filter(s=>!s.includes("(ref only)")&&!s.includes("(fn ref)"))||[];return ae(d,{nativeID:"__rn_buoy__enhanced-cause",style:B.enhancedContainer,children:[ae(d,{style:B.enhancedHeader,children:[G(h,{style:B.enhancedComponentName,children:o}),t&&G(d,{style:B.enhancedNativeTag,children:G(h,{style:B.enhancedNativeTagText,children:t})})]}),ae(d,{style:B.enhancedFlowContainer,children:[G(h,{style:B.enhancedFlowLabel,children:"Cause:"}),r&&G(d,{style:[B.enhancedFlowBadge,{backgroundColor:r.color+"20"}],children:G(h,{style:[B.enhancedFlowBadgeText,{color:r.color}],children:r.label.toUpperCase()})}),G(h,{style:B.enhancedFlowArrow,children:"\u2192"}),G(d,{style:[B.enhancedFlowBadge,{backgroundColor:n.color+"20"}],children:G(h,{style:[B.enhancedFlowBadgeText,{color:n.color}],children:n.label})})]}),i&&ae(d,{style:B.enhancedSection,children:[G(h,{style:B.enhancedSectionTitle,children:"Component State Changed:"}),e.hookChanges.map(s=>ae(d,{style:B.enhancedChangeRow,children:[G(h,{style:B.enhancedChangeIcon,children:"\u26A1"}),ae(h,{style:B.enhancedChangeText,children:["Hook[",s.index,"] (",s.type,"): ",s.description]})]},s.index))]}),c.length>0&&ae(d,{style:B.enhancedSection,children:[G(h,{style:B.enhancedSectionTitle,children:"Native Props Changed:"}),c.map((s,u)=>ae(d,{style:B.enhancedChangeRow,children:[G(h,{style:B.enhancedChangeIcon,children:"~"}),G(h,{style:B.enhancedChangeText,children:s})]},u))]}),a.length>0&&ae(d,{style:B.enhancedSection,children:[G(h,{style:[B.enhancedSectionTitle,{color:ne.color.textTertiary}],children:"Reference Changes (optimization opportunity):"}),a.map((s,u)=>ae(d,{style:B.enhancedChangeRow,children:[G(h,{style:[B.enhancedChangeIcon,{color:ne.color.textTertiary}],children:"\u25CB"}),G(h,{style:[B.enhancedChangeText,{color:ne.color.textTertiary}],children:s})]},u))]}),!i&&!l&&e.type!=="mount"&&G(d,{style:B.enhancedSection,children:G(h,{style:B.enhancedNoChanges,children:e.type==="parent"?"Parent re-rendered (consider React.memo)":"No specific changes detected"})})]})}var B=ye.create({container:{flexDirection:"row",alignItems:"center",gap:6},containerCompact:{gap:4},badge:{paddingVertical:3,paddingHorizontal:6,borderRadius:4},badgeCompact:{paddingVertical:2,paddingHorizontal:5},componentBadge:{borderStyle:"dashed",borderWidth:1,borderColor:ne.color.border},badgeText:{fontSize:10,fontWeight:"700"},badgeTextCompact:{fontSize:9},componentBadgeText:{fontWeight:"500",textTransform:"lowercase"},arrowText:{fontSize:10,color:ne.color.textTertiary},arrowTextCompact:{fontSize:9},keysText:{fontSize:11,color:ne.color.textSecondary,fontFamily:Je,flex:1},keysTextCompact:{fontSize:10},twoLevelContainer:{gap:8},twoLevelRow:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6},twoLevelLabel:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary,minWidth:70},twoLevelName:{fontSize:11,fontWeight:"600",color:ne.color.text,fontFamily:Je},twoLevelText:{fontSize:11,color:ne.color.textSecondary},twoLevelKeys:{fontSize:10,color:ne.color.textSecondary,fontFamily:Je},enhancedContainer:{gap:12},enhancedHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},enhancedComponentName:{fontSize:14,fontWeight:"700",color:ne.color.text,fontFamily:Je},enhancedNativeTag:{backgroundColor:ne.color.bg,paddingVertical:2,paddingHorizontal:6,borderRadius:4},enhancedNativeTagText:{fontSize:10,fontWeight:"600",color:ne.color.textTertiary,fontFamily:Je},enhancedFlowContainer:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:8,paddingHorizontal:12,backgroundColor:ne.color.bg,borderRadius:6},enhancedFlowLabel:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary},enhancedFlowBadge:{paddingVertical:3,paddingHorizontal:8,borderRadius:4},enhancedFlowBadgeText:{fontSize:10,fontWeight:"700"},enhancedFlowArrow:{fontSize:14,color:ne.color.textTertiary,fontWeight:"300"},enhancedSection:{gap:6},enhancedSectionTitle:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary,letterSpacing:.3},enhancedChangeRow:{flexDirection:"row",alignItems:"flex-start",gap:6,paddingLeft:4},enhancedChangeIcon:{fontSize:12,color:ne.color.warning,fontFamily:Je,width:16},enhancedChangeText:{fontSize:12,color:ne.color.text,fontFamily:Je,flex:1},enhancedNoChanges:{fontSize:12,color:ne.color.textTertiary,fontStyle:"italic",paddingLeft:4}});j();function Vu(e,t){let n=e.filter(y=>y.renderCount>=t.minRenders);if(t.filterCauses.length>0){let y=new Set(t.filterCauses);n=n.filter(v=>y.has(v.lastRenderCause?.type??"unknown"))}let r=e.flatMap(y=>[y.firstRenderTime,y.lastRenderTime]).filter(y=>Number.isFinite(y)),o=r.length>0?Math.max(...r)-Math.min(...r):0,i=Math.max(.001,o/1e3),l=(t.groupByName?Bu(n):n.map(y=>[y])).map(y=>Au(y,t,i));$u(l,t.sortBy);let a=t.topN===-1?0:Math.max(0,l.length-t.topN),c=t.topN===-1?l:l.slice(0,t.topN),s=e.reduce((y,v)=>y+v.renderCount,0),u=Hu(e),p=0,T=false;for(let y of e)y.lastRenderCause||(p+=y.renderCount),y.renderHistory&&y.renderHistory.length>0&&(T=true);return{totalUniqueComponents:n.length,totalRenders:s,windowMs:o,causeBreakdown:u,rows:c,truncated:a,dataGaps:{historyOff:!T,propsCaptureOff:!e.some(y=>y.renderHistory?.some(v=>v.capturedProps!==void 0)),stateCaptureOff:!e.some(y=>y.renderHistory?.some(v=>v.capturedState!==void 0)),rendersWithoutCause:p}}}function Bu(e){let t=new Map;for(let n of e){let r=n.componentName||n.displayName||n.viewType,o=t.get(r);o?o.push(n):t.set(r,[n])}return Array.from(t.values())}function Au(e,t,n){let r=e[0],o=r.componentName||r.displayName||r.viewType,i=0,l={},a=new Map,c=new Map,s=new Map,u=0,p=0,T=0;for(let k of e){i+=k.renderCount;let R=k.lastRenderCause;if(!R)continue;let _=R.type;l[_]=(l[_]??0)+k.renderCount;let Z=(R.hookChanges?.length??0)>0,N=(R.changedKeys?.length??0)>0;if(_==="parent"&&(R.componentCause==="state"||R.componentCause==="props"||Z||N?p+=k.renderCount:T+=k.renderCount),_==="props"&&!N&&(u+=k.renderCount),R.parentComponentName&&s.set(R.parentComponentName,(s.get(R.parentComponentName)??0)+1),t.aggregateCauses&&R.hookChanges)for(let W of R.hookChanges){let w=`${W.type}[${W.index}]`,z=a.get(w);z?z.count+=1:a.set(w,{count:1,sample:Mu(W)})}if(R.changedKeys)for(let W of R.changedKeys)W.includes("(ref only)")||c.set(W,(c.get(W)??0)+1)}let y=Array.from(a.entries()).sort((k,R)=>R[1].count-k[1].count).slice(0,3).map(([k,R])=>({hook:k,count:R.count,sample:R.sample})),v=Array.from(c.entries()).sort((k,R)=>R[1]-k[1]).slice(0,5).map(([k])=>k),m="unknown",S=-1;for(let[k,R]of Object.entries(l))(R??0)>S&&(S=R??0,m=k);let b,P=0;for(let[k,R]of s)R>P&&(P=R,b=k);let g=e.map(k=>k.renderCount).sort((k,R)=>R-k),D=i/n;return{name:o,viewType:r.viewType,instances:e.length,renders:i,causeMix:l,dominantCause:m,hookCauses:y,changedKeys:v,unknownPropsCount:u,parentWithOwnChange:p,parentNoChange:T,parentName:b,instanceCounts:g,rate:D,source:e}}function Hu(e){let t={};for(let n of e){let r=n.lastRenderCause?.type??"unknown";t[r]=(t[r]??0)+n.renderCount}return t}function $u(e,t){switch(t){case"renderCount":e.sort((n,r)=>r.renders-n.renders);break;case"rate":e.sort((n,r)=>r.rate-n.rate);break;case"name":e.sort((n,r)=>n.name.localeCompare(r.name));break}}var Ki=32;function qi(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="function")return"[Fn]";if(typeof e=="object")return Array.isArray(e)?`[Array(${e.length})]`:"[Obj]";let t=String(e);return t.length>Ki?t.slice(0,Ki-1)+"\u2026":t}function Mu(e){return e.previousValue===void 0&&e.currentValue===void 0?e.description:`${qi(e.previousValue)} \u2192 ${qi(e.currentValue)}`}function Ji(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function Dr(e){return e>=100?`${e.toFixed(0)}/s`:e>=10?`${e.toFixed(1)}/s`:`${e.toFixed(2)}/s`}function Yi(e){let t=Object.entries(e).sort((n,r)=>(r[1]??0)-(n[1]??0));return t.length===0?"(no causes recorded)":t.map(([n,r])=>`${n} ${r}`).join(" \xB7 ")}function Xi(e){let t=[],n=Object.entries(e.causeMix).filter(([,o])=>(o??0)>0).sort((o,i)=>(i[1]??0)-(o[1]??0)),r=n.length>=2&&(n[1]?.[1]??0)>=e.renders*.1;if(e.dominantCause==="hooks"&&e.hookCauses.length>0){let o=e.hookCauses[0];o.sample?t.push(`hooks \xD7${o.count} ${o.hook}: ${o.sample}`):t.push(`hooks \xD7${o.count} ${o.hook}`)}else if(e.dominantCause==="props"){if(e.changedKeys.length>0){let o=e.changedKeys.slice(0,3).join(", ");t.push(`props (${o})`)}else t.push("props (keys not captured)");e.unknownPropsCount>0&&e.changedKeys.length>0&&t.push(`[${e.unknownPropsCount} unidentified]`)}else if(e.dominantCause==="parent"){let o="parent cascade";e.parentNoChange>0&&e.parentWithOwnChange===0&&(o="parent cascade, no own change"),e.parentName&&(o+=` \u2190 ${e.parentName}`),t.push(o)}else e.dominantCause==="mount"?t.push("mount"):e.dominantCause==="state"?t.push("state"):e.dominantCause==="context"?t.push("context"):t.push("unknown");if(r){let o=n.map(([i,l])=>`${i}:${l}`).join(" + ");t.push(`(${o})`)}return t.join(" ")}function Zi(e){if(e.instances<=1)return e.name;let t=e.instanceCounts,n=t[0]??0,r=t[t.length-1]??0;if(n-r<=1)return`${e.name} \xD7${e.instances} (${n} each)`;let o=t.slice(1),i=o.reduce((a,c)=>a+c,0),l=o.length>0?i/o.length:0;return`${e.name} \xD7${e.instances} (top ${n}, others ~${Math.round(l)})`}var Fu="React Native render report \u2014 review the data and identify why components are re-rendering.";function Qi(e,t){let n=[];n.push(Fu),n.push(""),n.push(`Window: ${Ji(e.windowMs)} \xB7 ${e.totalUniqueComponents} components \xB7 ${e.totalRenders} renders`),n.push(`Cause mix: ${Yi(e.causeBreakdown)}`),n.push(""),n.push("Top offenders (count \xB7 rate \xB7 component \xB7 cause):"),n.push("");let r=e.rows.map(Zi),o=Math.min(36,Math.max(8,...r.map(c=>c.length))),i=Math.max(3,...e.rows.map(c=>`\xD7${c.renders}`.length)),l=Math.max(5,...e.rows.map(c=>Dr(c.rate).length));for(let c=0;c<e.rows.length;c++){let s=e.rows[c],u=(r[c]??s.name).padEnd(o),p=`\xD7${s.renders}`.padStart(i),T=Dr(s.rate).padStart(l),y=Xi(s);n.push(` ${p} ${T} ${u} ${y}`)}e.truncated>0&&(n.push(""),n.push(`... ${e.truncated} more (set topN=-1 to expand)`));let a=ea(e);if(a.length>0){n.push(""),n.push("Data availability:");for(let c of a)n.push(` \xB7 ${c}`)}return n.join(`
|
|
31
|
-
`)}function
|
|
32
|
-
`)}function Ou(e,t,n){let r={exportedAt:new Date().toISOString(),summary:{windowMs:t.windowMs,totalComponents:t.totalUniqueComponents,totalRenders:t.totalRenders,causeBreakdown:t.causeBreakdown,truncated:t.truncated,dataGaps:t.dataGaps},components:t.rows.map(o=>({name:o.name,viewType:o.viewType,instances:o.instances,instanceCounts:o.instances>1?o.instanceCounts:void 0,renders:o.renders,ratePerSec:Number(o.rate.toFixed(3)),dominantCause:o.dominantCause,causeMix:o.causeMix,hookCauses:o.hookCauses,changedKeys:o.changedKeys,unknownPropsCount:o.unknownPropsCount||void 0,parentName:o.parentName,parentWithOwnChange:o.parentWithOwnChange||void 0,parentNoChange:o.parentNoChange||void 0,...n.includeHistory?{history:_u(o.source)}:{}}))};return n.includeHistory?JSON.stringify(r,null,2):JSON.stringify(r)}function _u(e){return e.map(t=>({name:t.componentName||t.displayName,nativeTag:t.nativeTag,renderCount:t.renderCount,history:t.renderHistory?.map(n=>({n:n.renderNumber,t:n.timestamp,cause:{type:n.cause.type,componentCause:n.cause.componentCause,changedKeys:n.cause.changedKeys,parentComponentName:n.cause.parentComponentName,hookChanges:n.cause.hookChanges?.map(r=>({type:r.type,index:r.index,desc:r.description}))}}))}))}function kr(e,t){let n=Vu(e,t);switch(t.format){case"summary":return Qi(n,t);case"markdown-table":return Eu(n,t);case"json":return Ou(e,n,t);default:return Qi(n,t)}}function Wu(e,t){return kr(e,t).length}function ta(e){return{totalComponents:e.length,totalRenders:e.reduce((t,n)=>t+n.renderCount,0)}}function ju(e){return kr([e],{format:"summary",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:true,sortBy:"renderCount",includeHistory:false})}import{jsx as E,jsxs as X}from"react/jsx-runtime";function na({render:e,disableInternalFooter:t=false,selectedEventIndex:n,onEventIndexChange:r,onAddFilter:o,isPro:i=false}){let[l,a]=ji(0),c=n??l,s=r??a,u=Tn(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((N,W)=>N.timestamp-W.timestamp),[e.renderHistory]),p=u.length,T=u[c],y=Pu("highlightUpdates.detailEvents"),v=i?1/0:y,m=Tn(()=>Math.max(0,p-v),[v,p]),S=T?.cause||e.lastRenderCause,b=jt(()=>{c>0&&s(c-1)},[c,s]),P=jt(()=>{let N=Math.min(v-1,p-1);c<N&&s(c+1)},[c,p,s,v]),g=Tn(()=>ju(e),[e]),D=e.componentName||e.displayName,k=e.viewType,R=e.lastRenderTime-e.firstRenderTime,_=R>0?(e.renderCount/(R/1e3)).toFixed(1):e.renderCount.toString(),Z=!t&&p>1;return X(d,{style:L.container,children:[X(d,{style:L.header,children:[X(d,{style:L.headerLeft,children:[E(h,{testID:"buoy-highlight-detail-name",style:L.componentName,numberOfLines:1,children:D}),E(d,{style:L.nativeTypeBadge,children:E(h,{testID:"buoy-highlight-detail-type",style:L.nativeTypeText,children:k})})]}),E(Su,{value:g,size:14,testID:"buoy-highlight-detail-copy"})]}),X(Ve,{testID:"buoy-highlight-detail-scroll",style:L.scrollView,contentContainerStyle:[L.scrollContent,Z&&{paddingBottom:100}],showsVerticalScrollIndicator:false,children:[S&&E(Uu,{cause:S,renderNumber:T?.renderNumber}),E(Gu,{render:e,rendersPerSec:_}),m>0&&X(d,{testID:"buoy-highlight-detail-locked",style:L.lockedBanner,children:[E(ku,{size:14,color:F.color.warning}),X(h,{testID:"buoy-highlight-detail-locked-text",style:L.lockedBannerText,children:[m," ",m===1?"event":"events"," hidden"]}),E(h,{style:L.lockedBannerSubtext,children:"Upgrade to Pro"})]}),o&&E(Ku,{render:e,onAddFilter:o})]}),Z&&E(Du,{currentIndex:c,totalItems:p,onPrevious:b,onNext:P,itemLabel:"Render",subtitle:T?.timestamp?xu(new Date(T.timestamp)):void 0,applySafeAreaInset:false,absolute:true})]})}function Uu({cause:e,renderNumber:t}){let n=e.componentCause||e.type,r=e.componentCause?Ut[e.componentCause]:Fe[e.type],o=e.hookChanges&&e.hookChanges.length>0,i=e.changedKeys&&e.changedKeys.length>0,l=()=>e.type==="mount"?"First render":n==="parent"?"Triggered by":"Changed:";return X(d,{testID:"buoy-highlight-detail-cause",style:L.answerCard,children:[X(d,{style:L.causeBadgeRow,children:[E(h,{testID:"buoy-highlight-detail-cause-label",style:L.causeLabel,children:l()}),E(d,{style:[L.causeBadgeLarge,{backgroundColor:r.color+"20"}],children:E(h,{testID:"buoy-highlight-detail-cause-badge",style:[L.causeBadgeLargeText,{color:r.color}],children:r.label.toUpperCase()})})]}),o&&E(d,{style:L.hookChangesContainer,children:e.hookChanges.map((a,c)=>{let s=`${a.type}[${a.index}]`,u={[s]:a.previousValue},p={[s]:a.currentValue};return E(d,{style:L.hookDiffContainer,children:E(Lu,{oldValue:u,newValue:p,theme:"dark",showUnchanged:false})},c)})}),!o&&i&&E(d,{style:L.propsChangesContainer,children:e.changedKeys.filter(a=>!a.includes("(ref only)")).slice(0,5).map((a,c)=>E(d,{style:L.propChangeChip,children:E(h,{testID:`buoy-highlight-detail-changed-${c}`,style:L.propChangeText,children:a})},c))})]})}function Gu({render:e,rendersPerSec:t}){let n=e.testID||e.nativeID||e.accessibilityLabel,r=e.measurements;return X(d,{style:L.detailsSection,children:[n&&X(d,{testID:"buoy-highlight-detail-identifiers",style:L.detailsCard,children:[E(h,{style:L.detailsCardTitle,children:"Identifiers"}),e.testID&&E(Pr,{label:"testID",value:e.testID}),e.nativeID&&E(Pr,{label:"nativeID",value:e.nativeID}),e.accessibilityLabel&&E(Pr,{label:"a11y",value:e.accessibilityLabel})]}),X(d,{testID:"buoy-highlight-detail-stats",style:L.statsRow,children:[X(d,{testID:"buoy-highlight-detail-stat-renders",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-renders-value",style:[L.statValue,{color:e.color}],children:e.renderCount}),E(h,{style:L.statLabel,children:"renders"})]}),E(d,{style:L.statDivider}),X(d,{testID:"buoy-highlight-detail-stat-rate",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-rate-value",style:L.statValue,children:t}),E(h,{style:L.statLabel,children:"/sec"})]}),E(d,{style:L.statDivider}),X(d,{testID:"buoy-highlight-detail-stat-tag",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-tag-value",style:L.statValue,children:e.nativeTag}),E(h,{style:L.statLabel,children:"tag"})]})]}),r&&X(d,{testID:"buoy-highlight-detail-measure",style:L.measurementsRow,children:[X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"x"}),E(h,{testID:"buoy-highlight-detail-measure-x",style:L.measurementValue,children:Math.round(e.measurements.x)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"y"}),E(h,{testID:"buoy-highlight-detail-measure-y",style:L.measurementValue,children:Math.round(e.measurements.y)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"w"}),E(h,{testID:"buoy-highlight-detail-measure-w",style:L.measurementValue,children:Math.round(e.measurements.width)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"h"}),E(h,{testID:"buoy-highlight-detail-measure-h",style:L.measurementValue,children:Math.round(e.measurements.height)})]})]})]})}function Pr({label:e,value:t}){let n=`buoy-highlight-detail-id-${e.toLowerCase()}`;return X(d,{testID:n,style:L.detailRow,children:[E(h,{style:L.detailLabel,children:e}),E(h,{testID:`${n}-value`,style:L.detailValue,numberOfLines:1,children:t})]})}function Ku({render:e,onAddFilter:t}){let[n,r]=ji(null),o=Tn(()=>{let s=[];return e.nativeID&&s.push({type:"nativeID",value:e.nativeID,label:"nativeID"}),e.testID&&s.push({type:"testID",value:e.testID,label:"testID"}),e.accessibilityLabel&&s.push({type:"accessibilityLabel",value:e.accessibilityLabel,label:"a11y"}),e.componentName&&s.push({type:"component",value:e.componentName,label:"component"}),s.push({type:"viewType",value:e.viewType,label:"viewType"}),s},[e]),i=n!==null?o[n]:null,l=jt(s=>{r(u=>u===s?null:s)},[]),a=jt(()=>{i&&(t({type:i.type,value:i.value},"include"),r(null))},[i,t]),c=jt(()=>{i&&(t({type:i.type,value:i.value},"exclude"),r(null))},[i,t]);return X(d,{testID:"buoy-highlight-quick",style:L.quickActionsSection,children:[E(h,{style:L.quickActionsTitle,children:"Quick Filters"}),E(d,{style:L.filterOptionsList,children:o.map((s,u)=>E(qu,{testID:`buoy-highlight-quick-${s.type.toLowerCase()}`,label:s.label,value:s.value,isSelected:n===u,onSelect:()=>l(u)},s.type))}),X(d,{style:L.filterActionButtons,children:[X(J,{testID:"buoy-highlight-quick-include",accessibilityRole:"button",accessibilityLabel:"Only show this",style:[L.filterActionButton,L.filterActionButtonInclude,!i&&L.filterActionButtonDisabled],onPress:a,disabled:!i,activeOpacity:.7,children:[E(Iu,{size:14,color:i?F.color.accent:F.color.textTertiary}),E(h,{style:[L.filterActionButtonText,{color:i?F.color.accent:F.color.textTertiary}],children:"Only Show This"})]}),X(J,{testID:"buoy-highlight-quick-exclude",accessibilityRole:"button",accessibilityLabel:"Hide this",style:[L.filterActionButton,L.filterActionButtonExclude,!i&&L.filterActionButtonDisabled],onPress:c,disabled:!i,activeOpacity:.7,children:[E(Ru,{size:14,color:i?F.color.danger:F.color.textTertiary}),E(h,{style:[L.filterActionButtonText,{color:i?F.color.danger:F.color.textTertiary}],children:"Hide This"})]})]})]})}function qu({testID:e,label:t,value:n,isSelected:r,onSelect:o}){return X(J,{testID:e,accessibilityRole:"button",accessibilityLabel:`${t}, ${n}`,style:[L.filterOptionCard,r&&L.filterOptionCardSelected],onPress:o,activeOpacity:.7,children:[E(h,{style:[L.filterOptionLabel,r&&L.filterOptionLabelSelected],children:t}),E(h,{testID:e?`${e}-value`:void 0,style:[L.filterOptionValue,r&&L.filterOptionValueSelected],numberOfLines:1,children:n})]})}var L=ye.create({container:{flex:1,backgroundColor:"transparent"},header:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:12,padding:16,paddingBottom:0},scrollView:{flex:1},scrollContent:{padding:16,paddingTop:12,paddingBottom:80,gap:12},headerLeft:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:10},componentName:{fontSize:18,fontWeight:"700",color:F.color.text,flexShrink:1},nativeTypeBadge:{backgroundColor:F.color.bg,paddingVertical:3,paddingHorizontal:8,borderRadius:4},nativeTypeText:{fontSize:11,fontWeight:"600",color:F.color.textTertiary,fontFamily:mt},answerCard:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:6},causeBadgeRow:{flexDirection:"row",alignItems:"center",gap:8},causeBadgeLarge:{paddingVertical:4,paddingHorizontal:10,borderRadius:4},causeBadgeLargeText:{fontSize:11,fontWeight:"700",letterSpacing:.5},causeLabel:{fontSize:12,color:F.color.textSecondary,fontWeight:"500"},hookChangesContainer:{gap:6},hookDiffContainer:{backgroundColor:F.color.bg,borderRadius:6,overflow:"hidden"},propsChangesContainer:{flexDirection:"row",flexWrap:"wrap",gap:4},propChangeChip:{backgroundColor:F.color.bg,paddingVertical:2,paddingHorizontal:6,borderRadius:4},propChangeText:{fontSize:11,color:F.color.text,fontFamily:mt},detailsSection:{gap:10},detailsCard:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:6},detailsCardTitle:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,letterSpacing:.5,textTransform:"uppercase",marginBottom:4},detailRow:{flexDirection:"row",alignItems:"center",gap:8},detailLabel:{fontSize:11,fontWeight:"600",color:F.color.textSecondary,minWidth:55},detailValue:{fontSize:12,color:F.color.text,fontFamily:mt,flex:1},statsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,paddingVertical:10,paddingHorizontal:16},statItem:{flex:1,alignItems:"center"},statValue:{fontSize:16,fontWeight:"700",color:F.color.text,fontFamily:mt},statLabel:{fontSize:10,color:F.color.textTertiary,marginTop:2},statDivider:{width:1,height:24,backgroundColor:F.color.border,marginHorizontal:12},measurementsRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-around",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,paddingVertical:8,paddingHorizontal:12},measurementItem:{flexDirection:"row",alignItems:"baseline",gap:4},measurementLabel:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,textTransform:"uppercase"},measurementValue:{fontSize:12,fontWeight:"600",color:F.color.text,fontFamily:mt},quickActionsSection:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:10},quickActionsTitle:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,letterSpacing:.5,textTransform:"uppercase",marginBottom:2},filterOptionsList:{gap:6},filterOptionCard:{flexDirection:"row",alignItems:"center",backgroundColor:F.color.surfaceElevated,borderRadius:6,paddingVertical:10,paddingHorizontal:12,borderWidth:1,borderColor:"transparent",gap:10},filterOptionCardSelected:{borderColor:F.color.accentBorderStrong,backgroundColor:F.color.accentSoft},filterOptionLabel:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,minWidth:70},filterOptionLabelSelected:{color:F.color.accent},filterOptionValue:{fontSize:12,color:F.color.text,fontFamily:mt,flex:1},filterOptionValueSelected:{color:F.color.text},filterActionButtons:{flexDirection:"row",gap:8,marginTop:12},filterActionButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,paddingVertical:8,paddingHorizontal:10,borderRadius:6,borderWidth:1},filterActionButtonInclude:{backgroundColor:F.color.accentSoft,borderColor:F.color.accentBorderStrong},filterActionButtonExclude:{backgroundColor:F.color.dangerSoft,borderColor:F.color.danger+"40"},filterActionButtonDisabled:{backgroundColor:F.color.surfaceElevated,borderColor:F.color.border,opacity:.5},filterActionButtonText:{fontSize:11,fontWeight:"600"},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.warning+"40",paddingVertical:12,paddingHorizontal:16,gap:8},lockedBannerText:{color:F.color.warning,fontSize:13,fontWeight:"600"},lockedBannerSubtext:{color:F.color.textTertiary,fontSize:12}});import{EventStepperFooter as Ju}from"@buoy-gg/shared-ui/web";j();import{useState as Ye,useCallback as Xe}from"react";import{Eye as ra,Filter as Lr,Plus as oa,X as wn,Box as ia,Settings as Yu,Hash as Xu,SectionHeader as ee,night as x,monoFont as yt}from"@buoy-gg/shared-ui/web";j();import{Box as Zu,Hash as aa,Layers as Qu,Eye as ed,Search as td,FileCode as nd,buoyColors as zr,night as la,monoFont as sa}from"@buoy-gg/shared-ui/web";import{jsx as bt,jsxs as Nr}from"react/jsx-runtime";var ca={viewType:{label:"ViewType",shortLabel:"View",color:la.color.accent,icon:Zu},testID:{label:"testID",shortLabel:"test",color:zr.success,icon:aa},nativeID:{label:"nativeID",shortLabel:"native",color:"#f59e0b",icon:aa},component:{label:"Component",shortLabel:"Comp",color:"#a855f7",icon:nd},accessibilityLabel:{label:"a11y",shortLabel:"a11y",color:"#ec4899",icon:ed},nativeTag:{label:"tag",shortLabel:"tag",color:zr.textMuted,icon:Qu},any:{label:"Any",shortLabel:"Any",color:zr.warning,icon:td}};function Gt({type:e,value:t,compact:n=false,badgeOnly:r=false,valueOnly:o=false,shortLabel:i=false,showIcon:l=false,testID:a}){let c=ca[e],s=c.icon,u=i?c.shortLabel:c.label;return o?bt(h,{testID:a?`${a}-value`:void 0,style:[pe.valueOnly,n&&pe.valueOnlyCompact,{color:c.color}],numberOfLines:1,children:t}):r?Nr(d,{testID:a,style:[pe.badgeOnly,n&&pe.badgeOnlyCompact,{backgroundColor:c.color+"20",borderColor:c.color+"40"}],children:[l&&bt(s,{size:n?10:12,color:c.color}),bt(h,{style:[pe.badgeOnlyText,n&&pe.badgeOnlyTextCompact,{color:c.color}],children:u})]}):Nr(d,{testID:a,accessibilityLabel:`${c.label} ${t}`,style:[pe.container,n&&pe.containerCompact],children:[Nr(d,{style:[pe.badge,n&&pe.badgeCompact,{backgroundColor:c.color+"20"}],children:[l&&bt(s,{size:n?8:10,color:c.color}),bt(h,{style:[pe.badgeText,n&&pe.badgeTextCompact,{color:c.color}],children:u})]}),bt(h,{testID:a?`${a}-value`:void 0,style:[pe.value,n&&pe.valueCompact],numberOfLines:1,children:t})]})}var pe=ye.create({container:{flexDirection:"row",alignItems:"center",gap:6},containerCompact:{gap:4},badge:{flexDirection:"row",alignItems:"center",paddingVertical:3,paddingHorizontal:6,borderRadius:4,gap:4},badgeCompact:{paddingVertical:2,paddingHorizontal:5,gap:3},badgeText:{fontSize:10,fontWeight:"700"},badgeTextCompact:{fontSize:9},value:{fontSize:12,color:la.color.text,fontFamily:sa,flex:1},valueCompact:{fontSize:11},badgeOnly:{flexDirection:"row",alignItems:"center",paddingVertical:4,paddingHorizontal:8,borderRadius:6,borderWidth:1,gap:5},badgeOnlyCompact:{paddingVertical:2,paddingHorizontal:6,borderRadius:4,gap:4},badgeOnlyText:{fontSize:11,fontWeight:"600"},badgeOnlyTextCompact:{fontSize:9,fontWeight:"700"},valueOnly:{fontSize:12,fontFamily:sa},valueOnlyCompact:{fontSize:11},categoryBadge:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingLeft:10,paddingRight:6,borderRadius:8,gap:6},categoryBadgeText:{fontSize:11,fontWeight:"600"},categoryBadgeCount:{paddingHorizontal:6,paddingVertical:2,borderRadius:10,minWidth:20,alignItems:"center"},categoryBadgeCountText:{fontSize:10,fontWeight:"600"}});j();function vt(e){return String(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function ua(e){return`buoy-highlight-row-${vt(e)}`}function da(e,t){return`buoy-highlight-detected-${vt(e)}-${vt(t)}`}function ha(e,t,n){return`buoy-highlight-${e}-chip-${vt(t)}-${vt(n)}`}function Ct(e){return`buoy-highlight-setting-${e}`}import{Fragment as Vr,jsx as C,jsxs as M}from"react/jsx-runtime";var Kt=e=>ca[e],rd=["any","viewType","testID","nativeID","component","accessibilityLabel"];function ga({mode:e,onSelect:t,onCancel:n}){return M(d,{nativeID:"__rn_buoy__type-picker",testID:`buoy-highlight-${e}-types`,style:f.typePicker,children:[C(d,{style:f.typePickerRow,children:rd.map(r=>{let o=Kt(r),i=o.icon;return M(J,{testID:`buoy-highlight-${e}-type-${r.toLowerCase()}`,accessibilityRole:"button",accessibilityLabel:o.label,style:[f.typeOption,{backgroundColor:o.color+"15",borderColor:o.color+"40"}],onPress:()=>t(r),children:[C(i,{size:14,color:o.color}),C(h,{style:[f.typeOptionText,{color:o.color}],children:o.label})]},r)})}),C(J,{testID:`buoy-highlight-${e}-types-cancel`,accessibilityRole:"button",accessibilityLabel:"Cancel",onPress:n,style:f.typePickerCancel,children:C(wn,{size:16,color:x.color.textTertiary})})]})}function pa({mode:e,type:t,onSubmit:n,onCancel:r}){let[o,i]=Ye(""),l=Kt(t),a=()=>{o.trim()&&n(o.trim())};return M(d,{nativeID:"__rn_buoy__pattern-input",testID:`buoy-highlight-${e}-input-row`,style:f.patternInputContainer,children:[C(Gt,{type:t,value:"",badgeOnly:true,compact:true}),C(on,{testID:`buoy-highlight-${e}-input`,value:o,onChangeText:i,onSubmitEditing:a,placeholder:"Enter pattern...",placeholderTextColor:x.color.placeholder,style:f.patternInput,autoFocus:true,returnKeyType:"done",autoCorrect:false,autoCapitalize:"none"}),o.trim()&&C(J,{testID:`buoy-highlight-${e}-submit`,accessibilityRole:"button",accessibilityLabel:"Add pattern",onPress:a,style:[f.addPatternButton,{backgroundColor:l.color+"20"}],children:C(h,{style:[f.addPatternButtonText,{color:l.color}],children:"Add"})}),C(J,{testID:`buoy-highlight-${e}-input-cancel`,accessibilityRole:"button",accessibilityLabel:"Cancel",onPress:r,style:f.cancelButton,children:C(wn,{size:16,color:x.color.textTertiary})})]})}function fa({mode:e,pattern:t,onRemove:n}){let r=Kt(t.type);return M(J,{testID:ha(e,t.type,t.value),accessibilityRole:"button",accessibilityLabel:`${r.label} ${t.value}, tap to remove`,style:[f.patternChip,{borderColor:r.color+"40"}],onPress:n,activeOpacity:.7,children:[C(d,{style:[f.patternChipBadge,{backgroundColor:r.color+"20"}],children:C(h,{style:[f.patternChipBadgeText,{color:r.color}],children:r.shortLabel})}),C(h,{style:f.patternChipValue,numberOfLines:1,children:t.value}),C(wn,{size:12,color:x.color.textTertiary,style:f.patternChipX})]})}var od={label:"All",shortLabel:"All",color:x.color.textSecondary,icon:ia};function Tt({filterType:e,count:t,isSelected:n,onPress:r}){let o=e==="all"?od:Kt(e),i=`buoy-highlight-detected-cat-${String(e).toLowerCase()}`;return M(J,{testID:i,accessibilityRole:"button",accessibilityLabel:`${o.label}, ${t}`,style:[f.categoryBadge,{backgroundColor:o.color+"15",borderColor:n?o.color:o.color+"40",borderWidth:n?2:1}],onPress:r,children:[C(o.icon,{size:12,color:o.color}),C(h,{style:[f.categoryBadgeText,{color:o.color}],children:o.label}),C(d,{style:[f.categoryBadgeCountBubble,{backgroundColor:o.color+"25"}],children:C(h,{testID:`${i}-count`,style:[f.categoryBadgeCount,{color:o.color}],children:t})})]})}var id=[{value:20,label:"20"},{value:50,label:"50"},{value:100,label:"100"},{value:150,label:"150"},{value:250,label:"250"},{value:500,label:"500"}],Br=[{value:"off",label:"Off",description:"No debug logging"},{value:"minimal",label:"Minimal",description:"Only hook value changes"},{value:"verbose",label:"Verbose",description:"Component + cause + changes"},{value:"all",label:"All",description:"Full fiber dump"}];function ma({filters:e,onFilterChange:t,settings:n,onSettingsChange:r,availableProps:o,activeTab:i}){let[l,a]=Ye(false),[c,s]=Ye(false),[u,p]=Ye(null),[T,y]=Ye(null),[v,m]=Ye("all"),[S,b]=Ye(null),P=(w=>{switch(w){case"viewType":return o.viewTypes.map(z=>({value:z,type:"viewType"}));case"testID":return o.testIDs.map(z=>({value:z,type:"testID"}));case"nativeID":return o.nativeIDs.map(z=>({value:z,type:"nativeID"}));case"component":return o.componentNames.map(z=>({value:z,type:"component"}));case"accessibilityLabel":return o.accessibilityLabels.map(z=>({value:z,type:"accessibilityLabel"}));case"all":default:return[...o.viewTypes.map(z=>({value:z,type:"viewType"})),...o.testIDs.map(z=>({value:z,type:"testID"})),...o.nativeIDs.map(z=>({value:z,type:"nativeID"})),...o.componentNames.map(z=>({value:z,type:"component"})),...o.accessibilityLabels.map(z=>({value:z,type:"accessibilityLabel"}))]}})(v),g=o.viewTypes.length+o.testIDs.length+o.nativeIDs.length+o.componentNames.length+o.accessibilityLabels.length,D=Xe((w,z)=>{let le=[...e.includePatterns,{type:w,value:z}];t({includePatterns:le}),p(null)},[e.includePatterns,t]),k=Xe((w,z)=>{let le=[...e.excludePatterns,{type:w,value:z}];t({excludePatterns:le}),y(null)},[e.excludePatterns,t]),R=Xe(w=>{let z=e.includePatterns.filter((le,he)=>he!==w);t({includePatterns:z})},[e.includePatterns,t]),_=Xe(w=>{let z=e.excludePatterns.filter((le,he)=>he!==w);t({excludePatterns:z})},[e.excludePatterns,t]),Z=Xe((w,z)=>{b({type:w,value:z})},[]),N=Xe(()=>{S&&(D(S.type,S.value),b(null))},[S,D]),W=Xe(()=>{S&&(k(S.type,S.value),b(null))},[S,k]);return C(d,{style:f.container,children:C(Ve,{nativeID:"__rn_buoy__filter-view",testID:"buoy-highlight-filter-scroll",style:f.scrollView,contentContainerStyle:f.scrollContent,showsVerticalScrollIndicator:false,children:i==="filters"?M(Vr,{children:[M(d,{style:f.section,children:[M(ee,{children:[C(ee.Icon,{icon:ra,color:x.color.accent,size:12}),C(ee.Title,{children:"INCLUDE ONLY"}),e.includePatterns.length>0&&C(ee.Badge,{testID:"buoy-highlight-include-count",count:e.includePatterns.length,color:x.color.accent})]}),C(h,{style:f.sectionDescription,children:"Show only components matching these patterns. If any are set, components must match at least one."}),e.includePatterns.length>0&&C(d,{style:f.patternChips,children:e.includePatterns.map((w,z)=>C(fa,{mode:"include",pattern:w,onRemove:()=>R(z)},`${w.type}-${w.value}-${z}`))}),C(d,{style:f.addPatternRow,children:l?C(ga,{mode:"include",onSelect:w=>{a(false),p(w)},onCancel:()=>a(false)}):u?C(pa,{mode:"include",type:u,onSubmit:w=>D(u,w),onCancel:()=>p(null)}):M(J,{testID:"buoy-highlight-include-add",accessibilityRole:"button",accessibilityLabel:"Add include pattern",style:[f.addButton,{borderColor:x.color.accentBorderStrong}],onPress:()=>a(true),children:[C(oa,{size:14,color:x.color.accent}),C(h,{style:[f.addButtonText,{color:x.color.accent}],children:"Add include pattern"})]})})]}),M(d,{style:f.section,children:[M(ee,{children:[C(ee.Icon,{icon:Lr,color:x.color.accent,size:12}),C(ee.Title,{children:"EXCLUDE"}),e.excludePatterns.length>0&&C(ee.Badge,{testID:"buoy-highlight-exclude-count",count:e.excludePatterns.length,color:x.color.accent})]}),C(h,{style:f.sectionDescription,children:"Hide components matching these patterns from the list."}),e.excludePatterns.length>0&&C(d,{style:f.patternChips,children:e.excludePatterns.map((w,z)=>C(fa,{mode:"exclude",pattern:w,onRemove:()=>_(z)},`${w.type}-${w.value}-${z}`))}),C(d,{style:f.addPatternRow,children:c?C(ga,{mode:"exclude",onSelect:w=>{s(false),y(w)},onCancel:()=>s(false)}):T?C(pa,{mode:"exclude",type:T,onSubmit:w=>k(T,w),onCancel:()=>y(null)}):M(J,{testID:"buoy-highlight-exclude-add",accessibilityRole:"button",accessibilityLabel:"Add exclude pattern",style:[f.addButton,{borderColor:x.color.accentBorderStrong}],onPress:()=>s(true),children:[C(oa,{size:14,color:x.color.accent}),C(h,{style:[f.addButtonText,{color:x.color.accent}],children:"Add exclude pattern"})]})})]}),M(d,{style:f.section,children:[M(ee,{children:[C(ee.Icon,{icon:Xu,color:x.color.warning,size:12}),C(ee.Title,{children:"RENDER COUNT RANGE"}),(e.minRenderCount!==void 0||e.maxRenderCount!==void 0)&&C(ee.Badge,{count:1,color:x.color.warning})]}),C(h,{style:f.sectionDescription,children:"Show only components with render count in a specific range."}),M(d,{nativeID:"__rn_buoy__render-count-range",testID:"buoy-highlight-range",style:f.renderCountRangeContainer,children:[M(d,{style:f.renderCountInputRow,children:[M(d,{style:f.renderCountInputGroup,children:[C(h,{style:f.renderCountLabel,children:"Min"}),C(on,{value:e.minRenderCount!==void 0?String(e.minRenderCount):"",onChangeText:w=>{let z=parseInt(w,10);w===""||w===void 0?t({minRenderCount:void 0}):!isNaN(z)&&z>=0&&t({minRenderCount:z})},testID:"buoy-highlight-range-min",placeholder:"0",placeholderTextColor:x.color.placeholder,style:f.renderCountInput,keyboardType:"number-pad",returnKeyType:"done"})]}),C(h,{style:f.renderCountSeparator,children:"to"}),M(d,{style:f.renderCountInputGroup,children:[C(h,{style:f.renderCountLabel,children:"Max"}),C(on,{value:e.maxRenderCount!==void 0?String(e.maxRenderCount):"",onChangeText:w=>{let z=parseInt(w,10);w===""||w===void 0?t({maxRenderCount:void 0}):!isNaN(z)&&z>=0&&t({maxRenderCount:z})},testID:"buoy-highlight-range-max",placeholder:"\u221E",placeholderTextColor:x.color.placeholder,style:f.renderCountInput,keyboardType:"number-pad",returnKeyType:"done"})]})]}),(e.minRenderCount!==void 0||e.maxRenderCount!==void 0)&&M(J,{testID:"buoy-highlight-range-clear",accessibilityRole:"button",accessibilityLabel:"Clear range",style:f.clearRangeButton,onPress:()=>t({minRenderCount:void 0,maxRenderCount:void 0}),children:[C(wn,{size:12,color:x.color.warning}),C(h,{style:f.clearRangeButtonText,children:"Clear Range"})]})]})]}),M(d,{style:f.section,children:[M(ee,{children:[C(ee.Icon,{icon:ia,color:x.color.textSecondary,size:12}),C(ee.Title,{children:"DETECTED ITEMS"})]}),C(h,{style:f.sectionDescription,children:"Tap an item to quickly add it as an exclude pattern."}),M(Ve,{horizontal:true,showsHorizontalScrollIndicator:false,style:f.categoryBadgeScroll,contentContainerStyle:f.categoryBadgeScrollContent,children:[g>0&&C(Tt,{filterType:"all",count:g,isSelected:v==="all",onPress:()=>m("all")}),o.viewTypes.length>0&&C(Tt,{filterType:"viewType",count:o.viewTypes.length,isSelected:v==="viewType",onPress:()=>m("viewType")}),o.testIDs.length>0&&C(Tt,{filterType:"testID",count:o.testIDs.length,isSelected:v==="testID",onPress:()=>m("testID")}),o.nativeIDs.length>0&&C(Tt,{filterType:"nativeID",count:o.nativeIDs.length,isSelected:v==="nativeID",onPress:()=>m("nativeID")}),o.componentNames.length>0&&C(Tt,{filterType:"component",count:o.componentNames.length,isSelected:v==="component",onPress:()=>m("component")}),o.accessibilityLabels.length>0&&C(Tt,{filterType:"accessibilityLabel",count:o.accessibilityLabels.length,isSelected:v==="accessibilityLabel",onPress:()=>m("accessibilityLabel")})]}),C(d,{nativeID:"__rn_buoy__detected-items",testID:"buoy-highlight-detected",style:f.detectedItemsContainer,children:P.length>0?C(Ve,{testID:"buoy-highlight-detected-scroll",style:f.detectedItemsScroll,contentContainerStyle:f.detectedItems,nestedScrollEnabled:true,showsVerticalScrollIndicator:true,children:P.map(w=>{let z=Kt(w.type);return C(J,{testID:da(w.type,w.value),accessibilityRole:"button",accessibilityLabel:`${z.label} ${w.value}`,style:[f.detectedItem,{borderColor:z.color+"40"}],onPress:()=>Z(w.type,w.value),children:v==="all"?C(Gt,{type:w.type,value:w.value,compact:true,shortLabel:true}):C(h,{style:f.detectedItemText,numberOfLines:1,children:w.value})},`${w.type}-${w.value}`)})}):C(h,{testID:"buoy-highlight-detected-empty",style:f.emptyText,children:"No items detected yet. Start tracking to see components here."})})]}),C(jo,{visible:S!==null,transparent:true,animationType:"fade",onRequestClose:()=>b(null),children:C(Wo,{accessible:false,testID:"buoy-highlight-detected-popup-backdrop",style:f.modalOverlay,onPress:()=>b(null),children:C(d,{accessible:false,testID:"buoy-highlight-detected-popup",style:f.actionPopup,children:S&&M(Vr,{children:[C(d,{style:f.actionPopupHeader,children:C(Gt,{type:S.type,value:S.value,compact:true,shortLabel:true})}),M(d,{style:f.actionPopupButtons,children:[M(J,{testID:"buoy-highlight-detected-popup-include",accessibilityRole:"button",accessibilityLabel:"Include only",style:[f.actionPopupButton,f.actionPopupInclude],onPress:N,children:[C(ra,{size:16,color:x.color.accent}),C(h,{style:[f.actionPopupButtonText,{color:x.color.accent}],children:"Include Only"})]}),M(J,{testID:"buoy-highlight-detected-popup-exclude",accessibilityRole:"button",accessibilityLabel:"Exclude",style:[f.actionPopupButton,f.actionPopupExclude],onPress:W,children:[C(Lr,{size:16,color:x.color.accent}),C(h,{style:[f.actionPopupButtonText,{color:x.color.accent}],children:"Exclude"})]})]}),C(J,{testID:"buoy-highlight-detected-popup-cancel",accessibilityRole:"button",accessibilityLabel:"Cancel",style:f.actionPopupCancel,onPress:()=>b(null),children:C(h,{style:f.actionPopupCancelText,children:"Cancel"})})]})})})}),M(d,{style:f.section,children:[M(ee,{children:[C(ee.Icon,{icon:Lr,color:x.color.textTertiary,size:12}),C(ee.Title,{children:"HOW FILTERS WORK"})]}),C(d,{style:f.howItWorks,children:M(h,{style:f.howItWorksText,children:[C(h,{style:f.howItWorksBold,children:"Any:"})," Matches against all fields",`
|
|
33
|
-
`,C(h,{style:
|
|
34
|
-
`,C(h,{style:
|
|
35
|
-
`,C(h,{style:
|
|
36
|
-
`,'Requires "Show Render Count" to be enabled.']})]})]})
|
|
37
|
-
`,'Requires "Track Render Causes" to be enabled.']})]})]})
|
|
38
|
-
`,"The highlight overlay is always excluded to prevent infinite loops."]})]})]})]})]})})})})}var f=ye.create({container:{flex:1,backgroundColor:"transparent"},scrollView:{flex:1},scrollContent:{paddingHorizontal:16,paddingTop:12,paddingBottom:32},section:{backgroundColor:x.color.surface,borderRadius:8,borderWidth:1,borderColor:x.color.border,marginBottom:12,overflow:"hidden"},sectionDescription:{fontSize:11,color:x.color.textSecondary,paddingHorizontal:16,paddingTop:8,lineHeight:16},patternChips:{flexDirection:"row",flexWrap:"wrap",gap:8,paddingHorizontal:16,paddingTop:12},patternChip:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:6,borderWidth:1,paddingVertical:4,paddingLeft:4,paddingRight:6,maxWidth:"100%",gap:4},patternChipBadge:{paddingVertical:2,paddingHorizontal:5,borderRadius:4},patternChipBadgeText:{fontSize:9,fontWeight:"700"},patternChipValue:{fontSize:11,color:x.color.text,fontFamily:yt,flexShrink:1},patternChipX:{marginLeft:2},addPatternRow:{paddingHorizontal:16,paddingTop:12,paddingBottom:16},addButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:10,paddingHorizontal:16,borderRadius:8,borderWidth:1,borderStyle:"dashed",gap:6},addButtonText:{fontSize:12,fontWeight:"500"},typePicker:{flexDirection:"row",alignItems:"center",gap:8},typePickerRow:{flex:1,flexDirection:"row",flexWrap:"wrap",gap:8},typeOption:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingHorizontal:12,borderRadius:6,borderWidth:1,backgroundColor:x.color.surfaceElevated,gap:6},typeOptionText:{fontSize:11,fontWeight:"600"},typePickerCancel:{padding:8},patternInputContainer:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:x.color.border,paddingLeft:4,paddingRight:8,paddingVertical:4,gap:4},patternInput:{flex:1,fontSize:12,color:x.color.text,paddingVertical:6,paddingHorizontal:4},addPatternButton:{paddingVertical:6,paddingHorizontal:10,borderRadius:4},addPatternButtonText:{fontSize:11,fontWeight:"600"},cancelButton:{padding:4},categoryBadgeScroll:{marginTop:12},categoryBadgeScrollContent:{paddingHorizontal:16,gap:8},categoryBadge:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingLeft:10,paddingRight:6,borderRadius:8,borderWidth:1,gap:6},categoryBadgeText:{fontSize:11,fontWeight:"600"},categoryBadgeCountBubble:{paddingHorizontal:6,paddingVertical:2,borderRadius:10,minWidth:20,alignItems:"center"},categoryBadgeCount:{fontSize:10,fontWeight:"600"},detectedItemsContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:16},detectedItemsScroll:{maxHeight:200},detectedItems:{flexDirection:"row",flexWrap:"wrap",gap:8},detectedItem:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:6,borderWidth:1,paddingVertical:6,paddingHorizontal:10,gap:6},detectedItemText:{fontSize:11,color:x.color.text,fontFamily:yt},emptyText:{fontSize:11,color:x.color.textTertiary,fontStyle:"italic",textAlign:"center",paddingVertical:16,paddingHorizontal:16},howItWorks:{paddingHorizontal:16,paddingVertical:12},howItWorksText:{fontSize:11,color:x.color.textTertiary,lineHeight:18,fontFamily:yt},howItWorksBold:{fontWeight:"700",color:x.color.textSecondary},modalOverlay:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.5)",justifyContent:"center",alignItems:"center",padding:32},actionPopup:{backgroundColor:x.color.surface,borderRadius:12,borderWidth:1,borderColor:x.color.border,width:"100%",maxWidth:300,overflow:"hidden"},actionPopupHeader:{padding:16,borderBottomWidth:1,borderBottomColor:x.color.separator,alignItems:"center"},actionPopupButtons:{flexDirection:"row",padding:12,gap:8},actionPopupButton:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:12,paddingHorizontal:12,borderRadius:8,gap:8},actionPopupInclude:{backgroundColor:x.color.accentSoft},actionPopupExclude:{backgroundColor:x.color.accentSoft},actionPopupButtonText:{fontSize:13,fontWeight:"600"},actionPopupCancel:{padding:12,borderTopWidth:1,borderTopColor:x.color.separator,alignItems:"center"},actionPopupCancelText:{fontSize:13,color:x.color.textTertiary,fontWeight:"500"},settingsSection:{paddingHorizontal:16,paddingTop:8,paddingBottom:16},settingItem:{gap:8},settingItemSpaced:{marginTop:16,paddingTop:16,borderTopWidth:1,borderTopColor:x.color.separator},settingHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},settingLabel:{fontSize:13,fontWeight:"600",color:x.color.text},settingValue:{backgroundColor:x.color.fillSecondary,paddingHorizontal:10,paddingVertical:4,borderRadius:6},settingValueText:{fontSize:12,fontWeight:"700",color:x.color.textTertiary,fontFamily:yt},settingDescription:{fontSize:11,color:x.color.textSecondary,lineHeight:16},settingDescriptionMuted:{fontSize:10,color:x.color.textTertiary,lineHeight:14,marginTop:4,fontStyle:"italic"},settingLabelDisabled:{color:x.color.textTertiary},settingWarning:{color:x.color.warning,fontWeight:"500"},batchSizePresets:{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:4},batchSizePreset:{paddingVertical:8,paddingHorizontal:14,borderRadius:6,backgroundColor:x.color.surfaceElevated,borderWidth:1,borderColor:x.color.border},batchSizePresetActive:{backgroundColor:x.color.fillSecondary,borderColor:x.color.fillTertiary},batchSizePresetText:{fontSize:12,fontWeight:"500",color:x.color.textSecondary,fontFamily:yt},batchSizePresetTextActive:{color:x.color.textTertiary,fontWeight:"700"},renderCountRangeContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:16,gap:12},renderCountInputRow:{flexDirection:"row",alignItems:"center",gap:12},renderCountInputGroup:{flex:1,gap:4},renderCountLabel:{fontSize:10,fontWeight:"600",color:x.color.textTertiary,textTransform:"uppercase",letterSpacing:.5},renderCountInput:{backgroundColor:x.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:x.color.border,paddingVertical:10,paddingHorizontal:12,fontSize:14,fontWeight:"600",color:x.color.text,fontFamily:yt,textAlign:"center"},renderCountSeparator:{fontSize:12,color:x.color.textTertiary,marginTop:18},clearRangeButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:8,paddingHorizontal:12,borderRadius:6,backgroundColor:x.color.warningSoft,borderWidth:1,borderColor:x.color.warning+"40",gap:6,alignSelf:"center"},clearRangeButtonText:{fontSize:11,fontWeight:"600",color:x.color.warning}});j();import{useState as ad,useEffect as ya,useRef as ld,useCallback as Ar,memo as sd,useMemo as ba}from"react";Pe();j();import cd,{useMemo as va}from"react";import{ChevronRight as ud,night as Ze,useRelativeTime as dd,monoFont as Ca}from"@buoy-gg/shared-ui/web";import{jsx as Ie,jsxs as wt}from"react/jsx-runtime";function hd({render:e,onPress:t}){let n=va(()=>e.testID?{type:"testID",value:e.testID}:e.nativeID?{type:"nativeID",value:e.nativeID}:e.componentName?{type:"component",value:e.componentName}:e.accessibilityLabel?{type:"accessibilityLabel",value:e.accessibilityLabel}:{type:"nativeTag",value:String(e.nativeTag)},[e.testID,e.nativeID,e.componentName,e.accessibilityLabel,e.nativeTag]),r=va(()=>e.accessibilityLabel&&n.type!=="accessibilityLabel"?{type:"accessibilityLabel",value:e.accessibilityLabel}:null,[e.accessibilityLabel,n.type]),o=dd(e.lastRenderTime),i=ua(n.value);return wt(J,{testID:i,accessibilityRole:"button",accessibilityLabel:`${e.displayName}, ${n.type} ${n.value}, ${e.renderCount} renders`,style:Ce.container,onPress:()=>t(e),activeOpacity:.7,children:[Ie(d,{style:[Ce.colorIndicator,{backgroundColor:e.color}]}),wt(d,{style:Ce.content,children:[wt(d,{style:Ce.topRow,children:[wt(d,{style:Ce.viewTypeContainer,children:[Ie(h,{testID:`${i}-name`,style:Ce.viewType,numberOfLines:1,children:e.displayName}),r?Ie(Gt,{type:r.type,value:r.value,compact:true,shortLabel:true}):e.displayName!==e.viewType?Ie(h,{testID:`${i}-type`,style:Ce.nativeType,numberOfLines:1,children:e.viewType}):null]}),Ie(d,{style:[Ce.renderCountBadge,{backgroundColor:e.color+"30"}],children:wt(h,{testID:`${i}-count`,style:[Ce.renderCount,{color:e.color}],children:[e.renderCount,"x"]})})]}),e.lastRenderCause&&Ie(d,{style:Ce.causeRow,children:Ie(Ui,{testID:`${i}-cause`,cause:e.lastRenderCause,compact:true,showKeys:true,showTwoLevel:true})}),wt(d,{style:Ce.bottomRow,children:[Ie(d,{style:Ce.identifierContainer,children:Ie(Gt,{testID:`${i}-identifier`,type:n.type,value:n.value,compact:true,shortLabel:true})}),Ie(h,{testID:`${i}-time`,style:Ce.timing,children:o})]})]}),Ie(ud,{size:16,color:Ze.color.textTertiary})]})}var Ta=cd.memo(hd,(e,t)=>{let n=e.render,r=t.render;return n.id===r.id&&n.renderCount===r.renderCount&&n.color===r.color&&n.lastRenderTime===r.lastRenderTime&&n.lastRenderCause?.type===r.lastRenderCause?.type&&n.lastRenderCause?.componentCause===r.lastRenderCause?.componentCause&&e.onPress===t.onPress}),Ce=ye.create({container:{flexDirection:"row",alignItems:"center",paddingVertical:10,paddingHorizontal:12,marginHorizontal:12,marginBottom:6,backgroundColor:Ze.color.surface,borderRadius:8,borderWidth:1,borderColor:Ze.color.border},colorIndicator:{width:4,height:36,borderRadius:2,marginRight:10},content:{flex:1,marginRight:8},topRow:{flexDirection:"row",alignItems:"center",marginBottom:4},causeRow:{marginBottom:4},viewTypeContainer:{flex:1,marginRight:8},viewType:{fontSize:13,fontWeight:"600",color:Ze.color.text},nativeType:{fontSize:10,color:Ze.color.textTertiary,fontFamily:Ca,marginTop:1},accessibilityLabel:{fontSize:10,color:Ze.color.accent,fontStyle:"italic",marginTop:1},renderCountBadge:{paddingHorizontal:8,paddingVertical:2,borderRadius:10},renderCount:{fontSize:11,fontWeight:"700",fontFamily:Ca},bottomRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},identifierContainer:{flex:1,flexShrink:1,overflow:"hidden"},timing:{fontSize:10,color:Ze.color.textTertiary,fontWeight:"500",flexShrink:0}});import{Lock as gd,night as Hr,useLimit as pd,ToolEmptyState as fd,resolveListEmptyState as md}from"@buoy-gg/shared-ui/web";import{jsx as qt,jsxs as wa}from"react/jsx-runtime";function yd({searchText:e,filters:t,onSelectRender:n,onStatsChange:r,onRendersChange:o,isTracking:i,isPro:l=false}){let[a,c]=ad(()=>V.getFilteredRenders(e)),s=ld(null);ya(()=>V.subscribe(()=>{let b=V.getFilteredRenders(e);c(b),r(V.getStats()),o?.(b)}),[e,r,o]),ya(()=>{let b=V.getFilteredRenders(e);c(b),o?.(b)},[e,t,o]);let u=pd("highlightUpdates.components"),p=l?1/0:u,T=ba(()=>a.slice(0,p),[a,p]),y=ba(()=>Math.max(0,a.length-p),[a.length,p]),v=Ar(b=>b.id,[]),m=Ar(({item:b,index:P})=>qt(Ta,{render:b,onPress:()=>n(b,P,T)}),[n,T]),S=Ar(()=>y<=0?null:wa(d,{testID:"buoy-highlight-locked",style:Sn.lockedBanner,children:[qt(gd,{size:14,color:Hr.color.warning}),wa(h,{testID:"buoy-highlight-locked-text",style:Sn.lockedBannerText,children:[y," more ",y===1?"component":"components"," locked"]}),qt(h,{style:Sn.lockedBannerSubtext,children:"Upgrade to Pro"})]}),[y]);if(a.length===0){let b=e.trim(),P=V.getStats().totalComponents,g=b?V.getFilteredRenders("").length:0,D=md({subject:"components",verb:"tracked",search:e,total:b?g:P,capturing:i,blocked:b&&g===0&&P>0?"The active filters hide everything tracked, so there is nothing to search.":void 0,waiting:{otto:"stare",title:"No renders tracked",message:"Component renders will appear here"},paused:{title:"No renders tracked",message:"Enable tracking to start capturing"}});return qt(fd,{...D,testID:"buoy-highlight-empty"})}return qt(_o,{testID:"buoy-highlight-list",ref:s,data:T,renderItem:m,keyExtractor:v,contentContainerStyle:Sn.listContent,showsVerticalScrollIndicator:true,initialNumToRender:10,maxToRenderPerBatch:10,windowSize:10,scrollEnabled:false,ListFooterComponent:S})}var bd=sd(yd),Sn=ye.create({listContent:{paddingTop:8},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:12,paddingHorizontal:16,marginTop:8,gap:8},lockedBannerText:{color:Hr.color.warning,fontSize:13,fontWeight:"500"},lockedBannerSubtext:{color:Hr.color.textTertiary,fontSize:12}});j();import{memo as St}from"react";import{Trash2 as vd,Search as Cd,Filter as Td,Pause as wd,Copy as Sd,ModalHeader as ue,TabSelector as Sa,night as de,PowerToggleButton as xd}from"@buoy-gg/shared-ui/web";j();import{useState as Id,useEffect as Rd,memo as Dd}from"react";Pe();import{Activity as kd,night as xn,monoFont as Pd}from"@buoy-gg/shared-ui/web";import{jsx as xa,jsxs as Ld}from"react/jsx-runtime";function zd(){let[e,t]=Id({totalComponents:0,totalRenders:0});return Rd(()=>V.subscribe(()=>{t(V.getStats())}),[]),Ld(d,{nativeID:"__rn_buoy__stats-row",testID:"buoy-highlight-stats",accessibilityLabel:`${e.totalComponents} components tracked`,style:Ia.headerChip,children:[xa(kd,{size:12,color:xn.color.accent}),xa(h,{testID:"buoy-highlight-stats-value",style:[Ia.headerChipValue,{color:xn.color.accent}],children:e.totalComponents})]})}var Nd=Dd(zd),Ia=ye.create({headerChip:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:xn.color.buttonSurface,paddingHorizontal:8,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:xn.color.border},headerChipValue:{fontSize:12,fontWeight:"600",fontFamily:Pd}});import{jsx as Y,jsxs as Jt}from"react/jsx-runtime";var Vd=St(function({isActive:e,searchText:t,onSearchChange:n,onSearchClose:r}){return e?Y(ue.Search,{value:t,onChangeText:n,onCancel:()=>{n(""),r()},onDismiss:r,dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search testID, nativeID, component...",accessibilityLabel:"Search renders",iconSize:14,testID:"buoy-highlight-search-field",containerTestID:"buoy-highlight-search-container",containerNativeID:"__rn_buoy__search-container",clearTestID:"buoy-highlight-search-clear"}):null}),Bd=Vd,Ad=St(function({onSearchToggle:e,onFilterToggle:t,onToggleTracking:n,onToggleFreeze:r,onClear:o,onOpenCopySettings:i,isTracking:l,isFrozen:a,activeFilterCount:c,hasRenders:s}){return Jt(ue.Actions,{children:[Y(J,{testID:"buoy-highlight-search",accessibilityRole:"button",accessibilityLabel:"Search renders",onPress:e,style:ke.headerActionButton,children:Y(Cd,{size:14,color:de.color.textSecondary})}),Y(J,{testID:"buoy-highlight-filters",accessibilityRole:"button",accessibilityLabel:c>0?`Filters, ${c} active`:"Filters",onPress:t,style:[ke.headerActionButton,c>0&&ke.activeFilterButton],children:Y(Td,{size:14,color:c>0?de.color.accent:de.color.textTertiary})}),Y(J,{testID:"buoy-highlight-copy",accessibilityRole:"button",onPress:i,style:[ke.headerActionButton,!s&&ke.headerActionButtonDisabled],disabled:!s,accessibilityLabel:"Open copy settings",children:Y(Sd,{size:14,color:s?de.color.textSecondary:de.color.textTertiary})}),Y(J,{testID:"buoy-highlight-freeze",accessibilityRole:"button",accessibilityLabel:a?"Unfreeze frame":"Freeze frame",onPress:r,style:[ke.headerActionButton,a&&ke.freezeButton,!l&&ke.headerActionButtonDisabled],disabled:!l,children:Y(wd,{size:14,color:l?a?de.color.accent:de.color.textTertiary:de.color.textTertiary})}),Y(xd,{testID:"buoy-highlight-power",isEnabled:l,onToggle:n,accessibilityLabel:"Toggle render tracking"}),Y(J,{testID:"buoy-highlight-clear",accessibilityRole:"button",accessibilityLabel:"Clear tracked renders",onPress:o,style:[ke.headerActionButton,!s&&ke.headerActionButtonDisabled],disabled:!s,children:Y(vd,{size:14,color:s?de.color.textTertiary:de.color.textTertiary})})]})}),Hd=Ad,$d=St(function({onBack:e,isSearchActive:t,searchText:n,onSearchChange:r,onSearchToggle:o,onSearchClose:i,onFilterToggle:l,onToggleTracking:a,onToggleFreeze:c,onClear:s,onOpenCopySettings:u,isTracking:p,isFrozen:T,activeFilterCount:y,hasRenders:v,searchInputRef:m}){return Jt(ue,{children:[e&&Y(ue.Navigation,{onBack:e}),Y(ue.Content,{title:"",children:t?Y(Bd,{isActive:t,searchText:n,onSearchChange:r,onSearchClose:i,searchInputRef:m}):Y(Nd,{})}),Y(Hd,{onSearchToggle:o,onFilterToggle:l,onToggleTracking:a,onToggleFreeze:c,onClear:s,onOpenCopySettings:u,isTracking:p,isFrozen:T,activeFilterCount:y,hasRenders:v})]})}),Md=St(function({onBack:e,activeTab:t,onTabChange:n,activeFilterCount:r=0}){let o=[{key:"filters",label:`Filters${r>0?` (${r})`:""}`},{key:"settings",label:"Settings"}];return Jt(ue,{children:[Y(ue.Navigation,{onBack:e}),Y(ue.Content,{title:"",noMargin:true,children:Y(Sa,{tabs:o,activeTab:t,onTabChange:i=>n(i),testIDPrefix:"buoy-highlight-filter-tab"})}),Y(ue.Actions,{})]})}),Fd=St(function({onBack:e,activeTab:t,onTabChange:n,hasHistory:r=true}){let o=[{key:"details",label:"Details"},{key:"history",label:"History",disabled:!r}];return Jt(ue,{children:[Y(ue.Navigation,{onBack:e}),Y(ue.Content,{title:"",noMargin:true,children:Y(Sa,{tabs:o,activeTab:t,onTabChange:i=>n(i),testIDPrefix:"buoy-highlight-detail-tab"})}),Y(ue.Actions,{})]})}),Ed=St(function({onBack:e}){return Jt(ue,{children:[Y(ue.Navigation,{onBack:e}),Y(ue.Content,{title:"Copy Settings",testID:"buoy-highlight-copy-title"})]})}),ke=ye.create({headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:de.color.buttonSurface,borderWidth:1,borderColor:de.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},activeFilterButton:{backgroundColor:de.color.accentSoft,borderColor:de.color.accentBorderStrong},freezeButton:{backgroundColor:de.color.accentSoft,borderColor:de.color.accentBorderStrong}});j();import{useState as $r,useCallback as In,useMemo as Yt}from"react";Pe();import{Clock as Od,GitBranch as _d,Database as Ra,Lock as Wd,formatRelativeTime as Da,SectionHeader as xt,EventStepperFooter as ka,buoyColors as Pa,night as A,useLimit as La,ToolEmptyState as jd,monoFont as Ee}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as za}from"@buoy-gg/shared-ui/web/dataViewer";import{Fragment as Ud,jsx as H,jsxs as K}from"react/jsx-runtime";function Mr(e){let t=new Date(e),n=t.getHours().toString().padStart(2,"0"),r=t.getMinutes().toString().padStart(2,"0"),o=t.getSeconds().toString().padStart(2,"0"),i=t.getMilliseconds().toString().padStart(3,"0");return`${n}:${r}:${o}.${i}`}function Na({render:e,disableInternalFooter:t=false,selectedEventIndex:n,onEventIndexChange:r,isPro:o=false}){let[i,l]=$r(0),a=n??i,c=r??l,[s,u]=$r("current"),p=Yt(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((k,R)=>k.timestamp-R.timestamp),[e.renderHistory]),T=La("highlightUpdates.historyEvents"),y=o?1/0:T,v=Yt(()=>p.slice(-y),[p,y]),m=Yt(()=>Math.max(0,p.length-y),[p.length,y]),S=v.length,b=v[a],P=a>0?v[a-1]:null,g=In(()=>{a>0&&c(a-1)},[a,c]),D=In(()=>{a<S-1&&c(a+1)},[a,S,c]);if(S===0){let k=V.getSettings().enableRenderHistory;return H(jd,{testID:"buoy-highlight-history-empty",otto:k?"stare":"paused",title:"No Render History",message:k?"History is on and armed \u2014 this component has not re-rendered since. Interact with the app to record one.":"Enable render history tracking in settings to see render events here."})}return K(Ud,{children:[K(d,{style:[I.container,{paddingBottom:!t&&S>1?80:0}],children:[m>0&&K(d,{testID:"buoy-highlight-history-locked",style:I.lockedBanner,children:[H(Wd,{size:14,color:A.color.warning}),K(h,{testID:"buoy-highlight-history-locked-text",style:I.lockedBannerText,children:[m," older ",m===1?"render":"renders"," locked"]}),H(h,{style:I.lockedBannerSubtext,children:"Upgrade to Pro"})]}),K(d,{style:I.viewToggleContainer,children:[K(J,{testID:"buoy-highlight-history-mode-current",accessibilityRole:"button",accessibilityLabel:"Current state",style:[I.viewToggleCard,s==="current"&&I.viewToggleCardActive],onPress:()=>u("current"),activeOpacity:.8,children:[K(d,{style:I.viewToggleContent,children:[H(Ra,{size:16,color:s==="current"?A.color.accent:A.color.textSecondary}),H(h,{style:[I.viewToggleLabel,s==="current"&&I.viewToggleLabelActive],children:"CURRENT STATE"})]}),K(h,{style:[I.viewToggleDescription,s==="current"&&{color:A.color.text}],children:["View render #",b?.renderNumber??0," details"]})]}),K(d,{testID:"buoy-highlight-history-mode-diff",accessibilityLabel:"Diff view, coming soon",style:[I.viewToggleCard,I.viewToggleCardDisabled],children:[K(d,{style:I.viewToggleContent,children:[H(_d,{size:16,color:A.color.textTertiary}),H(h,{style:[I.viewToggleLabel,I.viewToggleLabelDisabled],children:"DIFF VIEW"}),H(d,{style:I.todoBadge,children:H(h,{style:I.todoBadgeText,children:"TODO"})})]}),H(h,{style:[I.viewToggleDescription,{color:A.color.textTertiary}],children:"Compare renders side by side (coming soon)"})]})]}),H(Ve,{testID:"buoy-highlight-history-scroll",style:I.contentScroll,contentContainerStyle:I.contentContainer,showsVerticalScrollIndicator:false,children:s==="current"?H(Gd,{event:b,render:e}):H(Kd,{previousEvent:P,currentEvent:b,render:e})})]}),!t&&H(ka,{currentIndex:a,totalItems:S,onPrevious:g,onNext:D,itemLabel:"Render",subtitle:Da(new Date(b?.timestamp??Date.now()))})]})}function Gd({event:e,render:t}){if(!e)return H(d,{testID:"buoy-highlight-history-no-event",style:I.noEventContainer,children:H(h,{style:I.noEventText,children:"No event selected"})});let n=Fe[e.cause.type];return K(d,{style:I.currentStateContainer,children:[K(d,{style:I.eventHeader,children:[K(d,{style:I.eventHeaderLeft,children:[K(h,{testID:"buoy-highlight-history-event-title",style:I.eventTitle,children:["Render #",e.renderNumber]}),H(h,{testID:"buoy-highlight-history-event-time",style:I.eventTime,children:Mr(e.timestamp)})]}),K(d,{style:[I.eventBadge,{backgroundColor:t.color+"30"}],children:[H(d,{style:[I.eventBadgeDot,{backgroundColor:t.color}]}),H(h,{testID:"buoy-highlight-history-event-cause",style:[I.eventBadgeText,{color:t.color}],children:e.cause.type.toUpperCase()})]})]}),K(d,{style:I.section,children:[K(xt,{children:[H(xt.Icon,{icon:Od,color:n.color,size:12}),H(xt.Title,{children:"WHY DID THIS RENDER?"})]}),H(d,{style:I.sectionContent,children:H(Gi,{cause:e.cause,nativeType:t.viewType})})]}),e.capturedProps&&Object.keys(e.capturedProps).length>0&&K(d,{style:I.section,children:[K(xt,{children:[H(xt.Icon,{icon:Ra,color:A.color.accent,size:12}),H(xt.Title,{children:"CAPTURED PROPS"})]}),H(d,{style:I.sectionContent,children:H(Ve,{horizontal:true,showsHorizontalScrollIndicator:false,style:I.propsScrollView,children:H(h,{testID:"buoy-highlight-history-props",style:I.propsJson,children:JSON.stringify(e.capturedProps,null,2)})})})]})]})}function Kd({previousEvent:e,currentEvent:t,render:n}){let[r,o]=$r("props");if(!e||!t)return H(d,{style:I.noEventContainer,children:H(h,{style:I.noEventText,children:"Select an event with a previous event to compare"})});let i=Fe[e.cause.type],l=Fe[t.cause.type],a=e.capturedProps&&t.capturedProps,c=e.capturedState&&t.capturedState;return K(d,{style:I.diffContainer,children:[K(d,{style:I.compareBar,children:[K(d,{style:I.compareSide,children:[K(d,{style:I.compareLabelRow,children:[H(h,{style:[I.compareLabel,{color:Pa.warning}],children:"PREV"}),H(d,{style:[I.compareActionBadge,{backgroundColor:`${i.color}20`}],children:H(h,{style:[I.compareActionText,{color:i.color}],children:e.cause.type.toUpperCase()})})]}),K(d,{style:I.compareMeta,children:[K(h,{style:I.compareIndex,children:["#",e.renderNumber]}),H(h,{style:I.compareTime,children:Mr(e.timestamp)})]})]}),H(d,{style:I.compareDivider,children:H(h,{style:I.compareArrow,children:"\u2192"})}),K(d,{style:I.compareSide,children:[K(d,{style:I.compareLabelRow,children:[H(h,{style:[I.compareLabel,{color:Pa.success}],children:"CUR"}),H(d,{style:[I.compareActionBadge,{backgroundColor:`${l.color}20`}],children:H(h,{style:[I.compareActionText,{color:l.color}],children:t.cause.type.toUpperCase()})})]}),K(d,{style:I.compareMeta,children:[K(h,{style:I.compareIndex,children:["#",t.renderNumber]}),H(h,{style:I.compareTime,children:Mr(t.timestamp)})]})]})]}),K(d,{style:I.diffModeTabs,children:[H(J,{style:[I.diffModeTab,r==="cause"&&I.diffModeTabActive],onPress:()=>o("cause"),activeOpacity:.7,children:H(h,{style:[I.diffModeTabText,r==="cause"&&I.diffModeTabTextActive],children:"CAUSE"})}),H(J,{style:[I.diffModeTab,r==="props"&&I.diffModeTabActive,!a&&I.diffModeTabDisabled],onPress:()=>a&&o("props"),activeOpacity:a?.7:1,children:H(h,{style:[I.diffModeTabText,r==="props"&&I.diffModeTabTextActive,!a&&I.diffModeTabTextDisabled],children:"PROPS"})}),H(J,{style:[I.diffModeTab,r==="state"&&I.diffModeTabActive,!c&&I.diffModeTabDisabled],onPress:()=>c&&o("state"),activeOpacity:c?.7:1,children:H(h,{style:[I.diffModeTabText,r==="state"&&I.diffModeTabTextActive,!c&&I.diffModeTabTextDisabled],children:"STATE"})})]}),r==="cause"&&H(d,{style:I.diffSummary,children:H(Gi,{cause:t.cause,nativeType:n.viewType})}),r==="props"&&H(d,{style:I.treeDiffContainer,children:a?H(za,{oldValue:e.capturedProps,newValue:t.capturedProps,theme:"dark",showUnchanged:true}):K(d,{style:I.noDiffData,children:[H(h,{style:I.noDiffDataTitle,children:"Props Not Captured"}),H(h,{style:I.noDiffDataText,children:'Enable "Capture Props on Render" in settings to see props diff.'})]})}),r==="state"&&H(d,{style:I.treeDiffContainer,children:c?H(za,{oldValue:e.capturedState,newValue:t.capturedState,theme:"dark",showUnchanged:true}):K(d,{style:I.noDiffData,children:[H(h,{style:I.noDiffDataTitle,children:"State Not Captured"}),H(h,{style:I.noDiffDataText,children:'Enable "Capture State on Render" in settings to see state diff.'})]})})]})}function Va({render:e,selectedEventIndex:t=0,onEventIndexChange:n=()=>{},isPro:r=false}){let o=Yt(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((T,y)=>T.timestamp-y.timestamp),[e.renderHistory]),i=La("highlightUpdates.historyEvents"),l=r?1/0:i,a=Yt(()=>o.slice(-l),[o,l]),c=a.length,s=a[t],u=In(()=>{n(Math.max(0,t-1))},[t,n]),p=In(()=>{n(Math.min(c-1,t+1))},[t,c,n]);return c<=1?null:H(ka,{currentIndex:t,totalItems:c,onPrevious:u,onNext:p,itemLabel:"Render",subtitle:s?Da(new Date(s.timestamp)):void 0})}var I=ye.create({container:{flex:1,backgroundColor:"transparent"},emptyContainer:{flex:1,alignItems:"center",justifyContent:"center",padding:32,gap:12},emptyTitle:{fontSize:16,fontWeight:"600",color:A.color.text},emptyText:{fontSize:13,color:A.color.textSecondary,textAlign:"center",lineHeight:18},viewToggleContainer:{flexDirection:"row",padding:12,gap:8},viewToggleCard:{flex:1,backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,padding:10,gap:4},viewToggleCardActive:{borderColor:A.color.accentBorderStrong,backgroundColor:A.color.accentSoft},viewToggleCardDisabled:{opacity:.5},todoBadge:{backgroundColor:A.color.fillSecondary,paddingHorizontal:6,paddingVertical:2,borderRadius:4,marginLeft:4},todoBadgeText:{fontSize:9,fontWeight:"700",color:A.color.textTertiary,letterSpacing:.3},viewToggleContent:{flexDirection:"row",alignItems:"center",gap:6},viewToggleLabel:{fontSize:10,fontWeight:"700",color:A.color.textSecondary,letterSpacing:.5},viewToggleLabelActive:{color:A.color.accent},viewToggleLabelDisabled:{color:A.color.textTertiary},viewToggleDescription:{fontSize:11,color:A.color.textTertiary,marginTop:2},contentScroll:{flex:1},contentContainer:{padding:12,paddingTop:0},noEventContainer:{padding:24,alignItems:"center"},noEventText:{fontSize:13,color:A.color.textTertiary},currentStateContainer:{gap:12},eventHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,padding:12},eventHeaderLeft:{gap:2},eventTitle:{fontSize:15,fontWeight:"700",color:A.color.text},eventTime:{fontSize:11,color:A.color.textTertiary,fontFamily:Ee},eventBadge:{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4,borderRadius:12,gap:6},eventBadgeDot:{width:6,height:6,borderRadius:3},eventBadgeText:{fontSize:10,fontWeight:"700",fontFamily:Ee},section:{backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,overflow:"hidden"},sectionContent:{padding:12,paddingTop:8},causeContainer:{marginBottom:12},changedList:{marginBottom:12,paddingLeft:4},changedListTitle:{fontSize:11,fontWeight:"600",color:A.color.textSecondary,marginBottom:6},changedItem:{fontSize:12,color:A.color.text,fontFamily:Ee,marginBottom:3,paddingLeft:8},propsScrollView:{maxHeight:150},propsJson:{fontSize:11,fontFamily:Ee,color:A.color.text,backgroundColor:A.color.bg,padding:10,borderRadius:6},diffContainer:{gap:12},compareBar:{flexDirection:"row",backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,padding:10},compareSide:{flex:1,gap:4},compareLabelRow:{flexDirection:"row",alignItems:"center",gap:8},compareLabel:{fontSize:10,fontWeight:"700",letterSpacing:.5},compareActionBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:4},compareActionText:{fontSize:9,fontWeight:"600"},compareMeta:{flexDirection:"row",alignItems:"center",gap:6},compareIndex:{fontSize:12,fontWeight:"600",color:A.color.text},compareTime:{fontSize:10,color:A.color.textTertiary,fontFamily:Ee},compareDivider:{width:30,alignItems:"center",justifyContent:"center"},compareArrow:{fontSize:16,color:A.color.textTertiary},diffSummary:{backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,padding:12},diffSummaryTitle:{fontSize:11,fontWeight:"600",color:A.color.textSecondary,marginBottom:8},diffChanges:{gap:4},diffChangeItem:{flexDirection:"row",alignItems:"center",gap:6},diffChangeIcon:{fontSize:12,fontWeight:"700",color:A.color.warning,fontFamily:Ee},diffChangeKey:{fontSize:12,color:A.color.text,fontFamily:Ee},diffNoChanges:{fontSize:12,color:A.color.textTertiary,fontStyle:"italic"},diffPlaceholder:{fontSize:12,color:A.color.textTertiary,fontStyle:"italic",textAlign:"center",padding:16},diffModeTabs:{flexDirection:"row",backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,padding:4,gap:4},diffModeTab:{flex:1,paddingVertical:8,paddingHorizontal:12,borderRadius:6,alignItems:"center"},diffModeTabActive:{backgroundColor:A.color.accentSoft},diffModeTabDisabled:{opacity:.4},diffModeTabText:{fontSize:10,fontWeight:"600",color:A.color.textSecondary,letterSpacing:.5},diffModeTabTextActive:{color:A.color.accent},diffModeTabTextDisabled:{color:A.color.textTertiary},causeDiffContainer:{gap:8,marginBottom:12},causeDiffRow:{flexDirection:"row",alignItems:"center",gap:8},causeDiffLabel:{fontSize:11,fontWeight:"600",color:A.color.textSecondary,minWidth:80},causeDiffValue:{fontSize:12,color:A.color.text,fontFamily:Ee,fontWeight:"500"},diffChangesTitle:{fontSize:11,fontWeight:"600",color:A.color.textSecondary,marginBottom:6},treeDiffContainer:{backgroundColor:A.color.surface,borderRadius:8,borderWidth:1,borderColor:A.color.border,overflow:"hidden",minHeight:150},noDiffData:{padding:24,alignItems:"center",gap:8},noDiffDataTitle:{fontSize:13,fontWeight:"600",color:A.color.text},noDiffDataText:{fontSize:12,color:A.color.textTertiary,textAlign:"center",lineHeight:18},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:10,paddingHorizontal:16,marginHorizontal:12,marginTop:8,backgroundColor:A.color.warningSoft,borderRadius:8,borderWidth:1,borderColor:A.color.warning+"30",gap:8},lockedBannerText:{color:A.color.warning,fontSize:13,fontWeight:"500"},lockedBannerSubtext:{color:A.color.textTertiary,fontSize:12}});j();import{useCallback as It,useEffect as qd,useMemo as Rn,useState as Ba}from"react";import{DynamicFilterView as Jd,macOSColors as Fr,night as Er,FileText as Aa,FileCode as Ha,Zap as $a,Settings as Yd,Eye as Xd,Layers as Zd,ToolbarCopyButton as Qd,ExportPreview as eh,monoFont as th}from"@buoy-gg/shared-ui/web";j();var Or={format:"summary",topN:25,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},Ma={llm:{format:"summary",topN:25,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},table:{format:"markdown-table",topN:50,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},json:{format:"json",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},full:{format:"json",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:false,sortBy:"renderCount",includeHistory:true}};function nh(e){for(let[t,n]of Object.entries(Ma))if(Object.keys(n).every(r=>{let o=e[r],i=n[r];return Array.isArray(o)&&Array.isArray(i)?o.length===i.length&&o.every((l,a)=>l===i[a]):o===i}))return t;return null}var xe={llm:{label:"LLM",description:"Compact summary for AI",color:"#10B981"},table:{label:"Table",description:"Markdown table",color:"#3B82F6"},json:{label:"JSON",description:"Structured data",color:"#F59E0B"},full:{label:"Full",description:"Everything incl. history",color:"#6B7280"}};j();import{definePersistedSetting as rh,devToolsStorageKeys as oh}from"@buoy-gg/shared-ui/web";var Fa=rh(oh.highlightUpdates.copySettings(),Or,{sanitize:(e,t)=>({...e,filterCauses:t?.filterCauses??Or.filterCauses})});async function ih(e){await Fa.save(e)}async function ah(){return Fa.loadOrNull()}import{Fragment as lh,jsx as Rt,jsxs as sh}from"react/jsx-runtime";var ch=50*1024,uh=200*1024,dh=[{value:"mount",label:"Mount"},{value:"props",label:"Props"},{value:"hooks",label:"Hooks"},{value:"state",label:"State"},{value:"parent",label:"Parent"},{value:"context",label:"Context"},{value:"unknown",label:"Unknown"}];function hh(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function gh(){let e=Date.now();return[{id:"1",nativeTag:1,viewType:"RCTView",displayName:"View",componentName:"PokemonListItem",renderCount:30,firstRenderTime:e-5e3,lastRenderTime:e,color:"#10B981",lastRenderCause:{type:"parent",timestamp:e,componentCause:"parent"}},{id:"2",nativeTag:2,viewType:"RCTView",displayName:"View",componentName:"CartHeader",renderCount:12,firstRenderTime:e-4e3,lastRenderTime:e,color:"#3B82F6",lastRenderCause:{type:"hooks",timestamp:e,componentCause:"state",hookChanges:[{type:"useState",index:2,previousValue:4,currentValue:5}]}},{id:"3",nativeTag:3,viewType:"RCTView",displayName:"View",componentName:"SearchBar",renderCount:8,firstRenderTime:e-3e3,lastRenderTime:e,color:"#F59E0B",lastRenderCause:{type:"props",timestamp:e,componentCause:"props",changedKeys:["query","onChange"]}}]}function ph({renders:e}){let[t,n]=Ba(Or),[r,o]=Ba(false);qd(()=>{let b=true;return ah().then(P=>{b&&P&&n(P)}),()=>{b=false}},[]);let i=It(b=>{n(b),ih(b)},[]),l=e.length>0,a=l?e:gh(),c=Rn(()=>nh(t),[t]),s=Rn(()=>Wu(a,t),[a,t]),u=Rn(()=>s>=uh?"danger":s>=ch?"warning":"none",[s]),p=It(()=>kr(a,t),[a,t]),T=It(b=>{let P=Ma[b];P&&i({...P,filterCauses:[...P.filterCauses]})},[i]),y=It((b,P)=>{let[g,D]=b.split("::");if(g==="preset"){T(D);return}if(g==="format"){i({...t,format:P});return}if(g==="sort"){i({...t,sortBy:P});return}if(g==="topN"){i({...t,topN:P});return}if(g==="minRenders"){i({...t,minRenders:P});return}if(g==="cause"){let k=P,R=t.filterCauses.includes(k);i({...t,filterCauses:R?t.filterCauses.filter(_=>_!==k):[...t.filterCauses,k]});return}if(g==="signal"){let k=D;i({...t,[k]:!t[k]});return}},[t,i,T]),v=It(()=>{let{totalComponents:b,totalRenders:P}=ta(a);return Rt(eh,{expanded:r,onExpandedChange:o,summary:`${b} component${b!==1?"s":""} \xB7 ${P} renders \xB7 ~${hh(s)}${l?"":" (mock data)"}`,warningLevel:u,warningText:{warning:"Large payload \u2014 preview may be slow",danger:"Very large payload \u2014 try a smaller topN or turn off history"},testIDs:{expand:"buoy-highlight-copy-preview-show",collapse:"buoy-highlight-copy-preview-hide",summary:"buoy-highlight-copy-preview-summary",warning:"buoy-highlight-copy-size-warning"},renderBody:()=>{let g=p();return Rt(Ve,{testID:"buoy-highlight-copy-preview-scroll",style:_r.previewScroll,nestedScrollEnabled:true,children:Rt(h,{testID:"buoy-highlight-copy-preview-text",style:_r.previewText,selectable:true,children:g})})}})},[r,a,s,u,l,p]),m=It(()=>{let{totalComponents:b}=ta(a),P=l?`${b} components`:"Mock data (no renders captured)";return sh(lh,{children:[Rt(h,{testID:"buoy-highlight-copy-status",style:_r.statusLabel,children:P}),Rt(Qd,{value:p})]})},[l,a,p]),S=Rn(()=>({sections:[{id:"presets",title:"Presets",type:"custom",data:[{id:"preset::llm",label:xe.llm.label,icon:$a,color:xe.llm.color,value:"llm",isActive:c==="llm",description:xe.llm.description},{id:"preset::table",label:xe.table.label,icon:Aa,color:xe.table.color,value:"table",isActive:c==="table",description:xe.table.description},{id:"preset::json",label:xe.json.label,icon:Ha,color:xe.json.color,value:"json",isActive:c==="json",description:xe.json.description},{id:"preset::full",label:xe.full.label,icon:Zd,color:xe.full.color,value:"full",isActive:c==="full",description:xe.full.description},{id:"preset::custom",label:"Custom",icon:Yd,color:Er.color.textSecondary,value:"custom",isActive:c===null,description:"User-configured"}]},{id:"format",title:"Format",type:"custom",data:[{id:"format::summary",label:"Summary",icon:$a,color:Fr.semantic.success,value:"summary",isActive:t.format==="summary",description:"Compact, LLM-ready"},{id:"format::markdown-table",label:"Table",icon:Aa,color:Fr.semantic.info,value:"markdown-table",isActive:t.format==="markdown-table",description:"Markdown table"},{id:"format::json",label:"JSON",icon:Ha,color:Fr.semantic.warning,value:"json",isActive:t.format==="json",description:"Structured data"}]},{id:"sort",title:"Sort By",type:"custom",data:[{id:"sort::renderCount",label:"Count",value:"renderCount",isActive:t.sortBy==="renderCount",description:"Total renders"},{id:"sort::rate",label:"Rate",value:"rate",isActive:t.sortBy==="rate",description:"Renders / sec"},{id:"sort::name",label:"Name",value:"name",isActive:t.sortBy==="name",description:"Alphabetical"}]},{id:"topN",title:"Top N",type:"custom",data:[{id:"topN::10",label:"10",value:10,isActive:t.topN===10},{id:"topN::25",label:"25",value:25,isActive:t.topN===25},{id:"topN::50",label:"50",value:50,isActive:t.topN===50},{id:"topN::100",label:"100",value:100,isActive:t.topN===100},{id:"topN::-1",label:"All",value:-1,isActive:t.topN===-1}]},{id:"minRenders",title:"Min Renders",type:"custom",data:[{id:"minRenders::1",label:"1",value:1,isActive:t.minRenders===1},{id:"minRenders::2",label:"2",value:2,isActive:t.minRenders===2},{id:"minRenders::3",label:"3",value:3,isActive:t.minRenders===3},{id:"minRenders::5",label:"5",value:5,isActive:t.minRenders===5},{id:"minRenders::10",label:"10",value:10,isActive:t.minRenders===10}]},{id:"causes",title:"Filter Causes",type:"custom",description:t.filterCauses.length===0?"All causes shown":"Only the selected causes shown",data:dh.map(b=>({id:`cause::${b.value}`,label:b.label,value:b.value,isActive:t.filterCauses.includes(b.value)}))},{id:"signal",title:"Signal Extraction",type:"custom",data:[{id:"signal::groupByName",label:"Group by name",value:"groupByName",isActive:t.groupByName,description:"Collapse list items"},{id:"signal::aggregateCauses",label:"Aggregate causes",value:"aggregateCauses",isActive:t.aggregateCauses,description:"Hook x N"},{id:"signal::includeHistory",label:"Include history",value:"includeHistory",isActive:t.includeHistory,description:"JSON only \u2014 large"}]}],previewSection:{enabled:true,title:"PREVIEW",icon:Xd,content:v,headerActions:m},onFilterChange:y}),[t,c,y,v,m]);return Rt(Jd,{...S})}var _r=ye.create({previewScroll:{maxHeight:360},previewText:{fontFamily:th,fontSize:11,color:Er.color.text,lineHeight:18},statusLabel:{fontSize:11,fontWeight:"600",color:Er.color.textTertiary,marginRight:8}});import{Fragment as fh,jsx as re,jsxs as Wr}from"react/jsx-runtime";var mh=bu.memo(function(){return Wr(d,{testID:"buoy-highlight-disabled-banner",style:Xt.disabledBanner,children:[re(vu,{size:14,color:Wt.color.warning}),re(h,{testID:"buoy-highlight-disabled-text",style:Xt.disabledText,children:"Render tracking is disabled"})]})});function jr({visible:e,onClose:t,onBack:n,onMinimize:r,enableSharedModalDimensions:o=false,initialNativeTag:i,onInitialNativeTagHandled:l,onRenderSelect:a,inline:c=false}){let s=wu(),[u,p]=ce(false),[T,y]=ce(()=>$.getFrozen()),[v,m]=ce(()=>V.getStats().totalComponents>0),[S,b]=ce(null),[P,g]=ce(0),[D,k]=ce(false),[R,_]=ce(false),[Z,N]=ce([]),[W,w]=ce("filters"),[z,le]=ce("details"),[he,Ne]=ce(0),[fe,$n]=ce(""),[ot,Pt]=ce(false),ro=qe(null),Lt=qe([]),oo=qe(V.getFilters()),[Mn,io]=ce(()=>{let O=V.getFilters();return O.includePatterns.length+O.excludePatterns.length}),[me,ao]=ce(()=>V.getFilters()),[Fn,lo]=ce(()=>V.getSettings()),so=qe(false),En=qe(false),tn=qe(false);Se(()=>{!e||so.current||(so.current=true)},[e]),Se(()=>{if(!e||En.current)return;(async()=>{try{let O=await Cn.getItem(ft.highlightUpdates.filters());if(O){let U=JSON.parse(O),oe={includeTestID:new Set(U.includeTestID||[]),includeNativeID:new Set(U.includeNativeID||[]),includeViewType:new Set(U.includeViewType||[]),includeComponent:new Set(U.includeComponent||[]),excludeTestID:new Set(U.excludeTestID||[]),excludeNativeID:new Set(U.excludeNativeID||[]),excludeViewType:new Set(U.excludeViewType||[]),excludeComponent:new Set(U.excludeComponent||[]),includePatterns:U.includePatterns||[],excludePatterns:U.excludePatterns||[]};V.setFilters(oe);let De=V.getFilters();oo.current=De,ao(De),io(De.includePatterns.length+De.excludePatterns.length)}En.current=true}catch{}})()},[e]),Se(()=>{if(!En.current)return;(async()=>{try{let O={includeTestID:Array.from(me.includeTestID),includeNativeID:Array.from(me.includeNativeID),includeViewType:Array.from(me.includeViewType),includeComponent:Array.from(me.includeComponent),excludeTestID:Array.from(me.excludeTestID),excludeNativeID:Array.from(me.excludeNativeID),excludeViewType:Array.from(me.excludeViewType),excludeComponent:Array.from(me.excludeComponent),includePatterns:me.includePatterns,excludePatterns:me.excludePatterns};await Cn.setItem(ft.highlightUpdates.filters(),JSON.stringify(O))}catch{}})()},[me]),Se(()=>{if(!e||tn.current)return;(async()=>{try{let O=await Cn.getItem(ft.highlightUpdates.settings());if(O){let U=JSON.parse(O),{performanceLogging:oe,excludeDevTools:De,...We}=U;V.setSettings(We),lo(V.getSettings())}tn.current=true}catch{tn.current=true}})()},[e]),Se(()=>{if(!tn.current)return;(async()=>{try{let{performanceLogging:O,excludeDevTools:U,...oe}=Fn;await Cn.setItem(ft.highlightUpdates.settings(),JSON.stringify(oe))}catch{}})()},[Fn]),Se(()=>{let O=V.subscribeToState(U=>{p(U.isTracking)});return()=>{O()}},[]),Se(()=>{let O=$.subscribeToFreeze(U=>{y(U)});return()=>{O()}},[]),Se(()=>{ot&&requestAnimationFrame(()=>{ro.current?.focus()})},[ot]),Se(()=>{e||$.setSpotlight(null)},[e]),Se(()=>{if(e&&i!=null){let O=V.getRender(String(i));O&&(b(O),g(0),k(false),$.setSpotlight(O.nativeTag)),l?.()}},[e,i,l]);let co=te(()=>{$.isInitialized()||$.initialize(),$.toggle()},[]),uo=te(()=>{$.toggleFreeze()},[]),ho=te(()=>{$.clearRenderCounts(),m(false)},[]),go=te(()=>{N(V.getFilteredRenders(fe)),_(true)},[fe]),po=te(()=>{_(false)},[]),fo=te(O=>{$n(O)},[]),sl=te((O,U,oe)=>{b(O),g(U),le("details"),Ne(0),Lt.current=oe,$.setSpotlight(O.nativeTag)},[]);Se(()=>{if(!S)return;let O=String(S.nativeTag);return V.subscribe(()=>{let U=V.getRender(O);U&&b({...U})})},[S?.nativeTag]);let mo=qe(null);Se(()=>{!a||!S||mo.current!==S.nativeTag&&(mo.current=S.nativeTag,a(S))},[S,a]);let cl=te(O=>{Lt.current=O},[]),yo=te(()=>{b(null),g(0),fe&&Pt(true),$.setSpotlight(null)},[fe]),ul=te(()=>{let O=Lt.current;if(P>0){let U=P-1,oe=O[U];oe&&(b(oe),g(U),$.setSpotlight(oe.nativeTag))}},[P]),dl=te(()=>{let O=Lt.current;if(P<O.length-1){let U=P+1,oe=O[U];oe&&(b(oe),g(U),$.setSpotlight(oe.nativeTag))}},[P]),bo=te(()=>{k(false)},[]),vo=te(()=>{k(true)},[]),Co=te(()=>{Pt(true)},[]),To=te(()=>{Pt(false)},[]),On=te(O=>{V.setFilters(O);let U=V.getFilters();oo.current=U,ao(U),io(U.includePatterns.length+U.excludePatterns.length)},[]),hl=te((O,U)=>{let oe=V.getFilters(),De={};U==="include"?oe.includePatterns.some(We=>We.type===O.type&&We.value===O.value)||(De.includePatterns=[...oe.includePatterns,O]):oe.excludePatterns.some(We=>We.type===O.type&&We.value===O.value)||(De.excludePatterns=[...oe.excludePatterns,O]),Object.keys(De).length>0&&(On(De),b(null),g(0),$.setSpotlight(null))},[On]),gl=te(O=>{V.setSettings(O),lo(V.getSettings())},[]),pl=te(O=>{m(O.totalComponents>0)},[]),wo=te(()=>R?re(Ed,{onBack:po}):D?re(Md,{onBack:bo,activeTab:W,onTabChange:w,activeFilterCount:Mn}):S?re(Fd,{onBack:yo,activeTab:z,onTabChange:le,hasHistory:(S.renderHistory?.length??0)>0}):re($d,{onBack:n,isSearchActive:ot,searchText:fe,onSearchChange:fo,onSearchToggle:Co,onSearchClose:To,onFilterToggle:vo,onToggleTracking:co,onToggleFreeze:uo,onClear:ho,onOpenCopySettings:go,isTracking:u,isFrozen:T,activeFilterCount:Mn,hasRenders:v,searchInputRef:ro}),[R,D,S,n,ot,fe,u,T,Mn,v,W,z,bo,yo,po,fo,Co,To,vo,co,uo,ho,go]),fl=o?ft.modal.root():ft.highlightUpdates.modal();if(!e)return null;let ml=Lt.current.length,So=S?z==="details"?re(Ju,{currentIndex:P,totalItems:ml,onPrevious:ul,onNext:dl,itemLabel:"Component",subtitle:S.componentName||S.displayName||S.viewType}):re(Va,{render:S,selectedEventIndex:he,onEventIndexChange:Ne,isPro:s}):null,xo=re(d,{nativeID:"__rn_buoy__highlight-modal",testID:"buoy-highlight-body",style:Xt.container,children:R?re(ph,{renders:Z}):S?z==="details"?re(na,{render:S,disableInternalFooter:true,onAddFilter:hl,isPro:s}):re(Na,{render:S,disableInternalFooter:true,selectedEventIndex:he,onEventIndexChange:Ne,isPro:s}):D?re(ma,{filters:me,onFilterChange:On,settings:Fn,onSettingsChange:gl,availableProps:V.getAvailableProps(),activeTab:W}):Wr(fh,{children:[!u&&re(mh,{}),re(bd,{searchText:fe,filters:me,onSelectRender:sl,onStatsChange:pl,onRendersChange:cl,isTracking:u,isPro:s})]})});return c?re(Wi,{children:Wr(d,{style:Xt.inlineRoot,children:[re(d,{style:Xt.inlineHeader,...Tu,children:wo()}),xo,So]})}):re(Wi,{children:re(Cu,{visible:e,onClose:t,onMinimize:r,persistenceKey:fl,header:{showToggleButton:true,customContent:wo()},enablePersistence:true,initialMode:"bottomSheet",enableGlitchEffects:true,disableScrollWrapper:Oo.OS==="web",styles:{},footer:So,footerHeight:S&&(z==="details"||(S.renderHistory?.length??0)>1)?68:0,children:xo})})}function yh(e={}){return re(jr,{...e,inline:true,visible:true,onClose:()=>{}})}var Xt=ye.create({inlineRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},inlineHeader:{paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:Wt.color.border,backgroundColor:"transparent"},container:{flex:1,backgroundColor:"transparent"},disabledBanner:{flexDirection:"row",alignItems:"center",gap:8,padding:10,marginHorizontal:12,marginTop:8,backgroundColor:Wt.color.warningSoft,borderRadius:8,borderWidth:1,borderColor:Wt.color.warning+"20"},disabledText:{color:Wt.color.warning,fontSize:11,flex:1}});import{jsx as Zt}from"react/jsx-runtime";function bh({size:e}){let[t,n]=Kn(()=>$.isEnabled());return qn(()=>$.subscribe(r=>{n(r)}),[]),Zt(Bo,{size:e,color:t?"#10b981":"#6b7280"})}function Ea(){return null}function Oa(e){let[t,n]=Kn(null);qn(()=>(e.visible&&$.setBadgePressCallback(o=>{n(o)}),()=>{e.visible||$.setBadgePressCallback(null)}),[e.visible]);let r=Ll(()=>{n(null)},[]);return Zt(jr,{...e,initialNativeTag:t,onInitialNativeTagHandled:r})}var vh={id:"highlight-updates",name:"TOGGLE HIGHLIGHT",description:"Toggle component render highlights",slot:"row",icon:bh,component:Ea,props:{},launchMode:"toggle-only",onPress:()=>{$.isInitialized()||$.initialize(),$.toggle()}};function Ch(e){let t=e?.enabledColor||"#10b981",n=e?.disabledColor||"#6b7280";e?.autoInitialize&&setTimeout(()=>{$.initialize()},1e3);let r=({size:o})=>{let[i,l]=Kn(()=>$.isEnabled());return qn(()=>$.subscribe(a=>{l(a)}),[]),Zt(Bo,{size:o,color:i?t:n})};return{id:e?.id||"highlight-updates",name:e?.name||"TOGGLE HIGHLIGHT",description:e?.description||"Toggle component render highlights",slot:"row",icon:r,component:Ea,props:{},launchMode:"toggle-only",onPress:()=>{$.isInitialized()||$.initialize(),$.toggle()}}}var Th={id:"highlight-updates-modal",name:"HIGHLIGHT",description:"View component render tracking modal",slot:"both",icon:({size:e})=>Zt(Vo,{size:e}),component:Oa,props:{enableSharedModalDimensions:false}};function wh(e){let t=e?.enabledColor||"#10b981",n=e?.disabledColor||"#6b7280";return e?.autoInitialize&&setTimeout(()=>{$.initialize()},1e3),{id:e?.id||"highlight-updates-modal",name:e?.name||"HIGHLIGHT",description:e?.description||"View component render tracking modal",slot:"both",icon:({size:r})=>Zt(Vo,{size:r,color:t}),component:Oa,props:{enableSharedModalDimensions:false}}}j();j();import{getDOMFiber as Sh,getDOMNodeHandle as xh}from"@buoy-gg/shared-ui/web/utils";var Ih=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","Pressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","TextInput","Switch","ActivityIndicator","Modal","SafeAreaView","SafeAreaProvider","KeyboardAvoidingView","VirtualizedList","Screen","ScreenContainer","ScreenStack","ScreenContentWrapper","GestureHandlerRootView","GestureDetector","Wrapper"]);function Ur(e){let t=e.return,n=t?.elementType??t?.type;return t&&n?.$$typeof===Symbol.for("react.memo")&&(n.type===e.type||n.type===e.elementType)?t:null}function Gr(e){let t="",n=e.tag===14||e.tag===15,r=e.tag===11,o=new Set,i=a=>{!a||o.has(a)||o.size>20||(o.add(a),t||(t=a.displayName||(typeof a=="function"?a.name:"")),a.$$typeof===Symbol.for("react.memo")&&(n=true,i(a.type)),a.$$typeof===Symbol.for("react.forward_ref")&&(r=true,i(a.render)))};i(e.elementType),i(e.type);let l=Ur(e);return l&&i(l.elementType??l.type),{name:t||"Anonymous",memo:n,forwardRef:r}}function _a(e){if(!e||typeof e.type=="string"||![0,1,2,11,14,15].includes(e.tag))return false;let{name:t}=Gr(e),n=e._debugSource?.fileName??"";return!Ih.has(t)&&!/^(Animated|RCT|Reanimated|Buoy|DevTools|FloatingDevTools|HighlightUpdates)/.test(t)&&!/[@/]buoy-gg\/|\/react-native\//.test(n)&&!e.memoizedProps?.__buoyDevToolsRoot}function Rh(e){let t=Gr(e),n=Ur(e),r=e._debugSource??n?._debugSource;if(typeof r?.fileName=="string"&&r.fileName)t.source={fileName:r.fileName},Number.isFinite(r.lineNumber)&&(t.source.lineNumber=r.lineNumber),Number.isFinite(r.columnNumber)&&(t.source.columnNumber=r.columnNumber);else{let o=e._debugStack??n?._debugStack;typeof o?.stack=="string"&&(t.rawStack=o.stack)}return t}function Dh(e){let t=e.child?[e.child]:[],n=0;for(;t.length&&n++<300;){let r=t.shift();if(r._debugOwner===e){let o=r._debugSource;if(typeof o?.fileName=="string"&&o.fileName)return{source:{fileName:o.fileName,...Number.isFinite(o.lineNumber)?{lineNumber:o.lineNumber}:{},...Number.isFinite(o.columnNumber)?{columnNumber:o.columnNumber}:{}}};if(typeof r._debugStack?.stack=="string")return{rawStack:r._debugStack.stack}}r.child&&t.push(r.child),r.sibling&&t.push(r.sibling)}}function kh(e){let t=[],n=null,r=new Set,o=e;for(;o&&!r.has(o)&&r.size<400&&t.length<7;){r.add(o),_a(o)&&(t.length||(n=o),t.push(Rh(o)));let l=Ur(o);o=o._debugOwner||l?._debugOwner||l?.return||o.return,l&&o===l&&(o=l._debugOwner||l.return)}if(!t.length)return{found:false,reason:"No app component was found for this view."};let i=n?Dh(n):void 0;return{found:true,component:i?{...t[0],definedIn:i}:t[0],owners:t.slice(1)}}function Ph(e){return e?.canonical?.internalInstanceHandle||e?._internalInstanceHandle||e?._internalFiberInstanceHandleDEV||Sh(e)||null}function Lh(e){return xh(e)??e?.__nativeTag??e?._nativeTag??e?.nativeTag??e?.canonical?.__nativeTag??e?.canonical?._nativeTag??e?.canonical?.nativeTag??null}var zh=1e5;function Nh(e){let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__,n=[],r=l=>{try{t?.getFiberRoots?.(l)?.forEach(a=>n.push(a.current))}catch{}};t?.renderers?.forEach((l,a)=>r(a)),n.length||r(1);let o=[...n],i=new Set;for(;o.length;){if(i.size>=zh)return{fiber:null,capped:true,any:true};let l=o.pop();if(!l||i.has(l))continue;i.add(l),l.sibling&&o.push(l.sibling);let a=l.memoizedProps??{};if(!(l.tag===22&&l.memoizedState!=null||a.__buoyDevToolsRoot||a.activityState===0||a.activityState===1||a.isPageFocused===false||a["aria-hidden"]===true&&(a.activityState!==void 0||"shouldFreeze"in a)||a.isFocused===false&&(a.routeKey!==void 0||"freezeContents"in a))){if(e(l))return{fiber:l,capped:false,any:true};l.child&&o.push(l.child)}}return{fiber:null,capped:false,any:n.length>0}}async function Vh(e={}){try{let{nativeTag:t,query:n}=e??{};if(t!==void 0&&(!Number.isInteger(t)||t<0)||n!==void 0&&typeof n!="string")return{found:false,reason:"Pass a valid nativeTag or a text query."};let r=n?.trim();if(t==null&&!r)return{found:false,reason:"Pass a query or nativeTag."};let o=false,i=false,l=s=>{let u=Nh(s);return o||(o=u.capped),i||(i=u.any),u.fiber??void 0},a=s=>l(u=>u.stateNode&&Lh(u.stateNode)===s),c=t!=null?a(t):void 0;if(t==null&&r&&(c=l(s=>_a(s)&&Gr(s).name.toLowerCase()===r.toLowerCase()),!c)){let s=(await ar({})).elements.map(u=>({el:u,score:an(u,{query:r})})).filter(({score:u})=>u>0).sort((u,p)=>p.score-u.score)[0]?.el;s?.nativeTag!=null&&(c=a(s.nativeTag))}return!c&&!i?{found:false,reason:"No React tree was found. Use a dev build."}:c?kh(Ph(c.stateNode)??c):{found:false,reason:o?"The React tree is too big to search fully, and no view matched in the part searched. Pass the nativeTag from describe_screen.":"No view matched. Check describe_screen for its name or tag."}}catch{return{found:false,reason:"Could not read the React tree. Try again in a dev build."}}}Pe();j();j();import{resolveDOMEventEmitter as Bh}from"@buoy-gg/shared-ui/web/utils";var Ah=14,Hh=550,$h=4e3,Mh=8e3,Wa=600,Kr=null,ja=false,qr=null,Dn=[],Oe="idle",_e=[],Jr=0,Re=null;function Fh(){if(ja)return Kr;ja=true;let e=Bh();return Kr=e.emitter,qr=e.reason,Kr}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ua(e){let t=e?.nativeEvent;return t?Dt(t.target)??Dt(t.tag):null}function Yr(e){let t=e?.nativeEvent;if(!t)return null;let n={x:Dt(t.pageX),y:Dt(t.pageY)};if(n.x!==null&&n.y!==null)return{x:n.x,y:n.y};for(let r of["changedTouches","touches"]){let o=t[r];if(Array.isArray(o)&&o.length){let i=o[0],l=Dt(i?.pageX),a=Dt(i?.pageY);if(l!==null&&a!==null)return{x:l,y:a}}}return null}function Ga(e){_e.push({...e,seq:++Jr}),_e.length>Wa&&(_e=_e.slice(-Wa))}function Eh(e){let t=Ua(e);if(t===null)return;let n=Yr(e),r=null;try{r=ai(t)}catch{}Re={tag:t,x:n?.x??0,y:n?.y??0,t:Date.now(),drift:0,target:r}}function Oh(e){if(!Re)return;let t=Yr(e);if(!t)return;let n=t.x-Re.x,r=t.y-Re.y;Re.drift=Math.max(Re.drift,Math.sqrt(n*n+r*r))}function _h(e){let t=Re;if(Re=null,!t||!t.target)return;let n=Yr(e);if(n){let o=n.x-t.x,i=n.y-t.y;t.drift=Math.max(t.drift,Math.sqrt(o*o+i*i))}if(t.drift>Ah)return;let r=Date.now()-t.t;r>$h||t.target.control!=="text"&&(t.target.control==="toggle"||t.target.control==="slider"||Ga({t:Date.now(),kind:r>=Hh?"longPress":"press",target:t.target}))}function Wh(){Re=null}function Xr(e){let t=Ua(e);if(t===null)return;let n=e.nativeEvent,r,o;if(typeof n.text=="string")r="text",o=n.text;else if(typeof n.value=="boolean")r="toggle",o=n.value;else if(typeof n.value=="number")r="slider",o=n.value;else return;let i=_e[_e.length-1];if(i&&i.kind===r&&i.target.nativeTag===t&&Date.now()-i.t<Mh){i.value=o,i.t=Date.now();return}let l=null;try{l=ai(t)}catch{}l&&Ga({t:Date.now(),kind:r,target:l,value:o})}function jh(){if(Oe==="capturing")return Qt();let e=Fh();if(!e)return Oe="unavailable",Qt();try{Dn=[e.addListener("topTouchStart",Eh),e.addListener("topTouchMove",Oh),e.addListener("topTouchEnd",_h),e.addListener("topTouchCancel",Wh),e.addListener("topChange",Xr),e.addListener("topValueChange",Xr),e.addListener("topSlidingComplete",Xr)],Re=null,Oe="capturing"}catch(t){Dn=[],Oe="unavailable",qr=t?.message??"addListener failed"}return Qt()}function Uh(){Dn.forEach(e=>{try{e.remove()}catch{}}),Dn=[],Re=null,Oe==="capturing"&&(Oe="idle")}function Gh(){_e=[],Jr=0}function Qt(){return{status:Oe,reason:Oe==="unavailable"?qr:null}}function Kh(e=0){return{...Qt(),records:_e.filter(t=>t.seq>e),seq:Jr}}j();var Ka=0,qa=1,Ja=11,Ya=14,Xa=15,kn=1,qh=1e4,Jh=300,Yh=20,Za=false,en=false,Zr=false,Pn=false,Ln=0,Qe=0,zn=0,et={},tt=new Map;function Qa(){return typeof globalThis>"u"?null:globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__??null}function Qr(e){let t=e.flags??e.effectTag;return typeof t=="number"?t:0}function el(e){return e===Ka||e===qa||e===Ja||e===Ya||e===Xa}function eo(e){let t=e.type;try{switch(e.tag){case Ka:case qa:return t?.displayName||t?.name||"Anonymous";case Ja:return t?.displayName||t?.render?.displayName||t?.render?.name||"ForwardRef";case Ya:case Xa:{let n=t?.type??e.elementType?.type;return t?.displayName||n?.displayName||n?.name||"Memo"}default:return"Anonymous"}}catch{return"Anonymous"}}function Xh(e){let t=e.actualDuration;if(typeof t!="number")return null;let n=t;for(let r=e.child;r!=null;r=r.sibling)typeof r.actualDuration=="number"&&(n-=r.actualDuration);return n>0?n:0}var Zh=new Set(["View","Text","Image","ImageBackground","ScrollView","FlatList","SectionList","SafeAreaView","KeyboardAvoidingView","StatusBar","ActivityIndicator","RefreshControl","Modal","Switch","Pressable","PlatformPressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","PressabilityDebugView","AnimatedComponent","Wrapper"]),tl=["Animated(","Pressability","Virtualized","CellRenderer"];function nl(e){if(Zh.has(e))return true;for(let t=0;t<tl.length;t++)if(e.startsWith(tl[t]))return true;return false}var rl=40,ol=5;function Qh(e,t){if(Object.is(e,t))return true;let n=typeof e;if(n!==typeof t)return false;if(n==="function")return true;if(e===null||t===null||n!=="object")return false;let r=Array.isArray(e);if(r!==Array.isArray(t))return false;if(r){if(e.length!==t.length)return false;for(let l=0;l<e.length;l++)if(!Object.is(e[l],t[l]))return false;return true}let o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return false;for(let l=0;l<o.length;l++){let a=o[l];if(!Object.prototype.hasOwnProperty.call(t,a)||!Object.is(e[a],t[a]))return false}return true}function eg(e,t){let n=e.alternate;if(!n)return{cause:"mount"};let r=e.memoizedProps,o=n.memoizedProps;if(r!==o&&r&&o){let i=false,l=false,a,c=Object.keys(r),s=c.length<rl?c.length:rl;for(let u=0;u<s;u++){let p=c[u],T=o[p],y=r[p];if(!Object.is(T,y)&&(i=true,t&&(a||(a=[]),a.length<ol&&a.push(p)),!Qh(T,y)&&(l=true,!t)))break}if(!l&&Object.keys(o).length!==c.length&&(i=true,l=true),i)return{cause:l?"props":"propsUnstable",changedKeys:a}}return sc(n,e)?{cause:"hooks"}:{cause:"parent"}}function tg(e){for(let t=e.return;t!=null;t=t.return){if(!el(t.tag)||(Qr(t)&kn)===0)continue;let n=eo(t);if(!nl(n))return n}}function ng(e,t){let n=eo(e),r=Xh(e);r!==null&&(Zr=true);let o=r??0;Qe+=1,zn+=o;let{cause:i,changedKeys:l}=eg(e,Pn);if(et[i]=(et[i]??0)+1,nl(n))return;let a=tt.get(n);if(!a){if(tt.size>=Jh)return;a={renders:0,totalSelfMs:0,maxSelfMs:0,causes:{}},tt.set(n,a)}if(a.renders+=1,a.totalSelfMs+=o,o>a.maxSelfMs&&(a.maxSelfMs=o),a.causes[i]=(a.causes[i]??0)+1,Pn){if(l){a.changedProps||(a.changedProps=new Set);for(let c=0;c<l.length&&!(a.changedProps.size>=ol);c++)a.changedProps.add(l[c])}t&&!a.parentName&&(a.parentName=t)}}function rg(e){let t=e?.current;if(!t)return;let n=Qe,r=0,o=t;for(;o!=null&&(r+=1,!(r>qh));){let i=false,l=el(o.tag);if(o.memoizedProps?.__buoyDevToolsRoot)i=true;else if(l){let a=eo(o);Vc(a)?i=true:Nc(a)||(Qr(o)&kn)!==0&&ng(o,Pn?tg(o):void 0)}if(!i){let a=o.subtreeFlags;if(!(typeof a=="number"&&(a&kn)===0&&(Qr(o)&kn)===0)&&o.child!=null){o=o.child;continue}}for(;o!=null;){if(o===t)return il(n);if(o.sibling!=null){o=o.sibling;break}o=o.return}}il(n)}function il(e){Qe>e&&(Ln+=1)}function og(){if(Za)return true;let e=Qa();if(!e)return false;let t=e.onCommitFiberRoot;return e.onCommitFiberRoot=function(n,r,...o){if(en)try{rg(r)}catch{}return typeof t=="function"?t.call(e,n,r,...o):void 0},Za=true,true}function ig(){if(typeof Q<"u"&&!Q)return false;let e=Qa();return!!(e&&e.renderers&&e.renderers.size>0)}function ag(){return en}function lg(e){og()&&(tt=new Map,Zr=false,Pn=e?.detail===true,Ln=0,Qe=0,zn=0,et={},en=true)}function sg(){if(!en&&Qe===0&&tt.size===0)return null;en=false;let e=Array.from(tt.entries()).sort((n,r)=>{let o=r[1].totalSelfMs-n[1].totalSelfMs;return o!==0?o:r[1].renders-n[1].renders}).slice(0,Yh).map(([n,r])=>({name:n,renders:r.renders,totalMs:Nn(r.totalSelfMs),maxMs:Nn(r.maxSelfMs),avgMs:r.renders>0?Nn(r.totalSelfMs/r.renders):0,causes:r.causes,...r.changedProps&&r.changedProps.size>0?{changedProps:Array.from(r.changedProps)}:null,...r.parentName?{parentName:r.parentName}:null})),t={totalCommits:Ln,totalRenders:Qe,capturedDurations:Zr,totalRenderMs:Nn(zn),wastedRenders:(et.parent??0)+(et.propsUnstable??0),causes:et,topComponents:e};return tt=new Map,Ln=0,Qe=0,zn=0,et={},t}function Nn(e){return Math.round(e*100)/100}var nt={isSupported:ig,isCapturing:ag,startCapture:lg,stopCapture:sg};function Vn(){$.isInitialized()||$.initialize()}function to(e){if(!e)return;let{hookChanges:t,...n}=e;return n}function cg(e){let{renderHistory:t,lastRenderCause:n,...r}=e;return{...r,lastRenderCause:to(n),historyCount:t?.length??0}}function ug(e){try{return JSON.stringify(e),e}catch{return{...e,lastRenderCause:to(e.lastRenderCause),renderHistory:e.renderHistory?.map(t=>({...t,capturedProps:void 0,capturedState:void 0,cause:to(t.cause)??t.cause}))}}}function dg(){return nt.isSupported()?(nt.startCapture({detail:true}),{ok:true}):{ok:false,reason:"render capture needs a dev build with the React DevTools hook available"}}function hg(){return{summary:nt.stopCapture()}}var gg={version:3,getSnapshot:()=>({enabled:$.isEnabled(),frozen:$.getFrozen(),highlightsSuppressed:$.getHighlightsSuppressed(),renders:V.getRenders().map(cg),trackerState:V.getState()}),subscribe:e=>{let t=$.subscribe(e),n=$.subscribeToFreeze(e),r=V.subscribe(e),o=V.subscribeToState(e);return()=>{t(),n(),r(),o()}},actions:{getComponentSource:async e=>{try{return await Vh(e)}catch(t){return{found:false,reason:`Could not read the component's source: ${t instanceof Error?t.message:String(t)}`}}},beginMeasurement:()=>dg(),endMeasurement:()=>hg(),getRenderDetail:e=>{let{nativeTag:t}=e??{};if(t==null)return{found:false,reason:"missing nativeTag"};let n=V.getRender(String(t));return n?{found:true,nativeTag:t,render:ug(n)}:{found:false,reason:"unknown nativeTag"}},toggle:()=>{Vn(),$.toggle()},setEnabled:e=>{Vn(),$.setEnabled(e.enabled)},toggleFreeze:()=>{$.toggleFreeze()},clearRenderCounts:()=>{$.clearRenderCounts()},setSpotlight:e=>{$.setSpotlight(e.nativeTag)},locateComponent:e=>(Vn(),$.locateComponent(e??{})),setSilentTracking:e=>{Vn(),$.setSilentTracking(e.enabled??false)},describeScreen:e=>ar(e??{}),tapElement:e=>Zs(e??{}),waitFor:e=>rc(e??{}),startTouchCapture:()=>jh(),stopTouchCapture:()=>(Uh(),Qt()),clearTouchCapture:()=>(Gh(),{ok:true}),readTouchCapture:e=>Kh(e?.sinceSeq??0)}};j();import{useEffect as Bn,useState as no,useRef as An,useCallback as al,useLayoutEffect as pg}from"react";import{night as Hn,monoFont as fg}from"@buoy-gg/shared-ui/web";nn();Pe();import{Fragment as mg,jsx as kt,jsxs as ll}from"react/jsx-runtime";var yg=1e3;function bg({onBadgePress:e}={}){let[t,n]=no([]),[r,o]=no(()=>$.getFrozen()),[i,l]=no(null),a=An(null),c=An(0),s=An(0),u=An(r);u.current=r,Ue.isEnabled()&&(c.current=performance.now(),s.current=t.length),pg(()=>{if(Ue.isEnabled()&&c.current>0&&s.current>0){let m=performance.now()-c.current;Dl(s.current,m)}}),Bn(()=>$.subscribeToFreeze(m=>{o(m)}),[]),Bn(()=>V.subscribeToFilters(()=>{n(m=>m.filter(S=>{let b=V.getRender(String(S.id));return b?V.shouldShowRender(b):true}))}),[]),Bn(()=>($.setSpotlightCallback(m=>{l(m)}),()=>{$.setSpotlightCallback(null)}),[]);let p=al(m=>{let S=Date.now(),b=m.map(P=>({...P,timestamp:S}));n(P=>{let g=[...P];for(let D of b){let k=g.findIndex(R=>R.id===D.id);k>=0?g[k]=D:g.push(D)}return g})},[]);Bn(()=>($.setHighlightCallback(p),a.current=setInterval(()=>{if(u.current)return;let m=Date.now();n(S=>S.filter(b=>m-b.timestamp<yg))},50),()=>{$.setHighlightCallback(null),a.current&&clearInterval(a.current)}),[p]);let T=e||$.getBadgePressCallback(),y=al(m=>{e?e(m):$.handleBadgePress(m)},[e]),v=i?V.getRender(String(i)):null;return t.length===0&&!v?.measurements?null:ll(d,{style:rt.overlay,pointerEvents:"box-none",nativeID:"highlight-updates-overlay",children:[v?.measurements&&ll(mg,{children:[kt(d,{pointerEvents:"none",nativeID:"__spotlight_highlight__",style:[rt.spotlightHighlight,{left:v.measurements.x-3,top:v.measurements.y-3,width:v.measurements.width+6,height:v.measurements.height+6}]}),kt(d,{pointerEvents:"none",style:[rt.spotlightLabel,{left:v.measurements.x,top:v.measurements.y+v.measurements.height+4}],children:kt(h,{style:rt.spotlightLabelText,children:v.componentName||v.displayName||v.viewType})})]}),t.map(m=>kt(d,{pointerEvents:"box-none",nativeID:`__highlight_rect_${m.id}__`,style:[rt.highlight,{left:m.x,top:m.y,width:m.width,height:m.height,borderColor:m.color}],children:m.count>0&&kt(d,{style:[rt.badge,{backgroundColor:m.color}],nativeID:`__highlight_badge_${m.id}__`,pointerEvents:T?"auto":"none",hitSlop:{top:8,bottom:8,left:8,right:8},onStartShouldSetResponder:()=>!!T,onResponderGrant:()=>y(m.id),children:kt(h,{style:rt.badgeText,nativeID:`__highlight_text_${m.id}__`,children:m.count})})},`highlight-${m.id}`))]})}var rt=ye.create({overlay:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:999999,elevation:999999,borderWidth:0},highlight:{position:"absolute",borderWidth:2,borderStyle:"solid",backgroundColor:"transparent"},badge:{position:"absolute",top:0,right:0,height:14,borderRadius:0,justifyContent:"center",alignItems:"center",paddingHorizontal:2},badgeText:{color:"#000",fontSize:9,fontWeight:"bold"},spotlightHighlight:{position:"absolute",borderWidth:2,borderStyle:"dashed",borderColor:Hn.color.accent,backgroundColor:"transparent"},spotlightLabel:{position:"absolute",backgroundColor:Hn.color.surface,borderWidth:1,borderColor:Hn.color.accent,paddingHorizontal:8,paddingVertical:3,borderRadius:4},spotlightLabelText:{color:Hn.color.accent,fontSize:11,fontWeight:"600",fontFamily:fg}});import{setRenderCaptureProvider as vg}from"@buoy-gg/shared-ui/web";Pe();nn();Ro();j();function Cg(e){let t={exportedAt:new Date().toISOString(),totalComponents:e.length,totalRenders:e.reduce((n,r)=>n+r.renderCount,0),components:e.map(n=>({componentName:n.componentName||n.displayName,viewType:n.viewType,nativeTag:n.nativeTag,testID:n.testID,nativeID:n.nativeID,accessibilityLabel:n.accessibilityLabel,renderCount:n.renderCount,firstRenderTime:n.firstRenderTime,lastRenderTime:n.lastRenderTime,lastRenderCause:n.lastRenderCause?{type:n.lastRenderCause.type,componentCause:n.lastRenderCause.componentCause,changedKeys:n.lastRenderCause.changedKeys,hookChanges:n.lastRenderCause.hookChanges?.map(r=>({type:r.type,index:r.index,description:r.description}))}:null,renderHistory:n.renderHistory?.map(r=>({renderNumber:r.renderNumber,timestamp:r.timestamp,cause:{type:r.cause.type,componentCause:r.cause.componentCause,changedKeys:r.cause.changedKeys}}))}))};return JSON.stringify(t,null,2)}try{vg({isSupported:nt.isSupported,start:nt.startCapture,stop:nt.stopCapture,startLiveHighlights:()=>{try{let e=$.isEnabled(),t=$.getHighlightsSuppressed();return $.enable(),()=>{try{e?t&&$.setHighlightsSuppressed(true):$.disable()}catch{}}}catch{return null}}})}catch{}var Tg=e=>{let{RenderTracker:t}=(Pe(),Tl(Po));return t.onRenderEvent(e)};export{Fe as CAUSE_CONFIG,Ut as COMPONENT_CAUSE_CONFIG,nt as CommitProfiler,ma as HighlightFilterView,yh as HighlightToolView,$ as HighlightUpdatesController,jr as HighlightUpdatesModal,bg as HighlightUpdatesOverlay,Ue as PerformanceLogger,Ui as RenderCauseBadge,na as RenderDetailView,Va as RenderHistoryFooter,Na as RenderHistoryViewer,Ta as RenderListItem,V as RenderTracker,Nu as TwoLevelCauseBadge,je as VIEW_TYPE_MAP,Rc as capturePropsSnapshot,Dc as captureStateSnapshot,bi as clearRenderCauseState,wh as createHighlightUpdatesModalTool,Ch as createHighlightUpdatesTool,hr as detectRenderCause,da as detectedItemTestID,Ml as disableProfilerLogging,$l as enableProfilerLogging,Cg as generateRendersJson,Il as getAllComponentNames,xl as getAllNativeViewTypes,jn as getComponentDisplayName,wl as getNativeViewType,xc as getRenderCauseStats,Th as highlightUpdatesModalPreset,vh as highlightUpdatesPreset,gg as highlightUpdatesSyncAdapter,vt as identifierSlug,Mo as installProfilerInterceptor,Si as isCapturingBuoyToolRenders,Hl as isInterceptorInstalled,Sl as isKnownViewType,Fl as isLoggingEnabled,Tg as onRenderEvent,ha as patternChipTestID,Sc as removeRenderCauseState,ua as renderRowTestID,He as safeCloneForHistory,kc as setCaptureBuoyToolRenders,$o as setComparisonCallback,Ct as settingTestID,Fo as uninstallProfilerInterceptor};
|
|
30
|
+
`)}function Cr(e,t,n,r="off"){let o=Date.now();if(!t)return{type:"unknown",timestamp:o};let i=t,l=t.alternate,a=Se.get(e);if(a&&l){let R=a.memoizedProps?.children,_=t.memoizedProps?.children,Q=l.memoizedProps?.children,z=t.memoizedProps===a.memoizedProps||R!==void 0&&_===R,W=l.memoizedProps===a.memoizedProps||R!==void 0&&Q===R;z&&!W&&(i=l,l=t,r==="all"&&console.log("[RenderCause] Detected fiber swap - using alternate as current"))}let c=null,s=null;l?(c=l.memoizedProps,s=l.memoizedState):a&&(c=a.memoizedProps,s=a.memoizedState);let u=c!==null?{memoizedProps:c,memoizedState:s,timestamp:o}:void 0,p={memoizedProps:i.memoizedProps,memoizedState:i.memoizedState,timestamp:o};Mc(e,p);let T=bi(i),y=Me(T)||void 0,b=Hc(i,y)||void 0,f=Nc(T),S=f.cause,v=f.hookChanges;if(!u){if(r!=="off"){if(r==="minimal")console.log(`[${y||"Unknown"}] MOUNT`);else if(r==="verbose"){let R=typeof i?.type=="string"?i.type:"Unknown";console.log(`[RENDER] ${y||"Unknown"} (${R}:${e}) | Cause: MOUNT`)}else if(r==="all"){let R=Se.has(e)?Se.size:1;vi(e,i,T,u,f,n,R)}}return{type:"mount",timestamp:o,componentCause:"mount",componentName:y}}let P=typeof i.type=="string"?i.type:void 0,g=Ci(u.memoizedProps,p.memoizedProps,P);if(r!=="off"){if(r==="minimal")zc(y,f);else if(r==="verbose")Vc(e,i,T,f,g);else if(r==="all"){let R=Se.has(e)?Se.size:1;vi(e,i,T,u,f,n,R)}}if(g&&g.length>0)return{type:"props",changedKeys:g.slice(0,Rc),timestamp:o,componentCause:S,componentName:y,parentComponentName:b,hookChanges:v||void 0};let D=Ac(u.memoizedState,p.memoizedState);if(D&&D.length>0)return{type:"hooks",hookIndices:D,timestamp:o,componentCause:S,componentName:y,parentComponentName:b,hookChanges:v||void 0};let k=Si(i);return k&&n.has(k)?{type:"parent",timestamp:o,componentCause:S,componentName:y,parentComponentName:b,hookChanges:v||void 0}:S==="state"?{type:"state",timestamp:o,componentCause:S,componentName:y,parentComponentName:b,hookChanges:v||void 0}:S==="props"?{type:"props",timestamp:o,componentCause:S,componentName:y,parentComponentName:b}:S==="parent"?{type:"parent",timestamp:o,componentCause:S,componentName:y,parentComponentName:b}:{type:"unknown",timestamp:o,componentCause:S,componentName:y,parentComponentName:b}}function Ci(e,t,n){if(e===t||!e||!t||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return null;let r=xc(n),o=new Set([...Object.keys(e),...Object.keys(t)]),i=[];for(let l of o)if(!l.startsWith("__")&&!r.skip.includes(l)){if(l==="children"){if(!r.alwaysTrack.includes("children"))continue;let a=e[l],c=t[l];a!==c&&(Ti(a)&&Ti(c)?i.push(`children: ${wi(a)} \u2192 ${wi(c)}`):i.push("children (content)"));continue}if(e[l]!==t[l]){let a=e[l],c=t[l];l==="style"?fn(a,c)?i.push(`${l} (ref only)`):i.push(l):typeof a=="function"&&typeof c=="function"?i.push(`${l} (fn ref)`):i.push(l)}}return i.length>0?i:null}function fn(e,t,n=0){if(n>5)return false;if(e===t)return true;if(typeof e!=typeof t)return false;if(typeof e!="object"||e===null||t===null)return e===t;if(Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!fn(e[i],t[i],n+1))return false;return true}let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return false;for(let i of r)if(!o.includes(i)||!fn(e[i],t[i],n+1))return false;return true}function Ti(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function wi(e){return e===null?"null":e===void 0?"undefined":typeof e=="string"?e.length>20?`"${e.slice(0,20)}..."`:`"${e}"`:typeof e=="number"||typeof e=="boolean"?String(e):"[object]"}function Ac(e,t){if(e===t||e==null||t==null||typeof e!="object"||typeof t!="object")return null;let n=[],r=e,o=t,i=0;for(;o!==null&&i<br;)(r===null||Bc(r,o))&&n.push(i),o=o?.next??null,r=r?.next??null,i++;return n.length>0?n:null}function Bc(e,t){return e===t?false:e.memoizedState!==t.memoizedState||e.baseState!==void 0&&e.baseState!==t.baseState}function Si(e){let t=e?.return,n=0;for(;t&&n<mi;){if(t.stateNode){let r=xi(t.stateNode);if(r!=null)return r}t=t.return,n++}return null}function Hc(e,t){if(!e)return null;let n=bi(e);if(!n)return null;let r=n.return,o=0;for(;r&&o<mi;){let i=r.tag;if(i===0||i===1||i===11||i===15){let l=Me(r);if(l&&!yi(l)&&l!==t)return l}r=r.return,o++}return null}function xi(e){return e?typeof e.__nativeTag=="number"?e.__nativeTag:typeof e._nativeTag=="number"?e._nativeTag:typeof e.canonical?.__nativeTag=="number"?e.canonical.__nativeTag:typeof e.canonical?.publicInstance?.__nativeTag=="number"?e.canonical.publicInstance.__nativeTag:null:null}function Mc(e,t){if(Se.size>=yr){let n=Array.from(Se.entries());n.sort((o,i)=>o[1].timestamp-i[1].timestamp);let r=Math.floor(yr/4);for(let o=0;o<r;o++)Se.delete(n[o][0])}Se.set(e,t)}function Ii(){Se.clear()}function $c(e){Se.delete(e)}function Fc(){return{storedStates:Se.size,maxStates:yr}}var Ec=5,Ri=200,mn=20,yn=30;function $e(e,t=0,n=new WeakSet){if(e==null||typeof e=="boolean"||typeof e=="number")return e;if(typeof e=="string")return e.length>Ri?e.slice(0,Ri)+"...":e;if(typeof e=="function")return`[Function: ${e.name||"anonymous"}]`;if(typeof e=="symbol")return`[Symbol: ${e.description||""}]`;if(t>=Ec)return Array.isArray(e)?`[Array: ${e.length} items]`:typeof e=="object"?`[Object: ${Object.keys(e).length} keys]`:"[...]";if(typeof e=="object"){if(n.has(e))return"[Circular]";n.add(e)}if(Array.isArray(e)){let r=e.slice(0,mn).map(o=>$e(o,t+1,n));return e.length>mn&&r.push(`[...${e.length-mn} more]`),r}if(e instanceof Date)return e.toISOString();if(e instanceof Error)return`[Error: ${e.message}]`;if(e instanceof RegExp)return e.toString();if(e instanceof Map){let r={__type:"Map",__size:e.size},o=0;for(let[i,l]of e){if(o>=yn){r[`...${e.size-o} more`]=true;break}let a=typeof i=="string"?i:String(i);r[a]=$e(l,t+1,n),o++}return r}if(e instanceof Set)return{__type:"Set",__size:e.size,values:Array.from(e).slice(0,mn).map(r=>$e(r,t+1,n))};if(typeof e=="object"){let r={},o=Object.keys(e),i=o.slice(0,yn);for(let l of i)if(!(l.startsWith("__")||l==="children"))try{r[l]=$e(e[l],t+1,n)}catch{r[l]="[Error accessing property]"}return o.length>yn&&(r[`...${o.length-yn} more keys`]=true),r}return"[Unknown type]"}function Oc(e){if(e?.memoizedProps)return $e(e.memoizedProps)}function _c(e){if(!e?.memoizedState)return;let t=e.memoizedState;if(typeof t=="object"&&t!==null&&"next"in t){let n=[],r=t,o=0;for(;r&&o<br;)n.push({index:o,memoizedState:$e(r.memoizedState)}),r=r.next,o++;return{__type:"Hooks",hooks:n}}return $e(t)}import{notifySubscriberCountChange as Di}from"@buoy-gg/shared-ui/web";j();var Tr=new Set(["HighlightUpdatesOverlay","HighlightUpdatesModal","HighlightFilterView","RenderDetailView","RenderListItem","RenderListItemInner","RenderHistoryViewer","RenderHistoryFooter","RenderCauseBadge","TwoLevelCauseBadge","EnhancedCauseDisplay","IsolatedRenderList","IsolatedRenderListInner","StatsDisplay","StatsDisplayInner","CurrentStateView","EventStepperFooter","EventsModal","UnifiedEventList","UnifiedEventItem","UnifiedEventDetail","UnifiedEventFilters","UnifiedEventViewer","ReactQueryEventDetail","EventsCopySettingsView"]),Wt=["HighlightUpdates","RenderList","RenderDetail","RenderHistory","RenderCause","EventStepper","UnifiedEvent","EventsModal","EventsCopy"],ki=new Set(["JsModalComponent","JsModal","TypePicker","PatternInput","PatternChip","DetectedItemsSection","DetectedCategoryBadge","IdentifierBadge","CategoryBadge","AppRenderer","AppOverlay","FloatingTools","DialDevTools","DevToolsVisibilityProvider","AppHostProvider","MinimizedToolsProvider","ModalHeader","TabSelector","SectionHeader","DraggableHeader","WindowControls","TreeDiffViewer","DataViewer","SplitDiffViewer","VirtualizedDataExplorer","DiffSummary","TypeLegend","IndentGuides","IndentGuidesOverlay","CyberpunkInput","DiffView","AnswerCard","DetailsSection","DetailRow","QuickActionsSection","FilterOptionCard","SearchSection","SearchSectionInner","HeaderActions","HeaderActionsInner","MainListHeader","FilterViewHeader","DetailViewHeader","FloatingMenu","FloatingDevTools","MinimizedToolsStack","MinimizedToolsContext","GlitchToolButton","ExpandablePopover","CollapsedPeek","ExpandedWrapper","DialIcon","DialMenu","DialIconItem","OnboardingTooltip","MenuLauncherIcon","DevToolsSettingsModal","SettingsModal","ImageOverlayModal","ImageOverlayStandalone","ToolCard","ToolIcon","GripVerticalIcon","UserStatus","Divider","ChevronDown","ChevronUp","ChevronLeft","ChevronRight","ChevronDownIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","LogBox","LogBoxLog","LogBoxLogNotification","LogBoxNotificationContainer","_LogBoxNotificationContainer","LogBoxInspector","LogBoxInspectorContainer","LogBoxInspectorHeader","LogBoxInspectorBody","LogBoxInspectorFooter","LogBoxInspectorMessageHeader","LogBoxInspectorStackFrame","LogBoxInspectorSection","LogBoxButton","LogBoxMessage","PerfMonitorOverlay","PerfMonitorModal","PerfMonitorRoot","PerfHudInline","PerfDiagnostics","MetricSparkline","JsFallbackNotice","AutomationConfigView","AutomationProgressOverlay","AutomationResumer","SaveBenchmarkPrompt","SavedCasesModal","BatchBarReport","BatchReportView","PerfHudInlineInner","PerfMonitorOverlayInner","MiniMetric","MetricRow","MetricNumber","MetricSparklineInner","RecColumn","PillBody","FullBody","TargetLine","PagesSection","ProbesSection","TaskTable","TaskRow","BusySparkline"]),wr=["JsModal","ImageOverlay","PerfMonitor","PerfHud","JsTop"],Pi=new Set(["VirtualizedDataExplorer","TreeDiffView","TreeDiffRow","DataViewer","DiffView","DiffSummary","FloatingDevTools","FloatingMenu","FloatingBubble","MinimizedDock","DialMenu","DialItem","ExpandableSection","ChevronIcon","GlitchText","SettingsModal","SettingsRow","OnboardingFlow","DevToolsMenu"]),Sr=false;function Wc(e){Sr=e}function Li(){return Sr}var jc=new Set(["PerfHudInline","PerfHudInlineInner","PerfDiagnostics","MetricSparkline","MetricSparklineInner","JsFallbackNotice","AutomationConfigView","AutomationProgressOverlay","AutomationResumer","SaveBenchmarkPrompt","SavedCasesModal","BatchBarReport","BatchReportView","MiniMetric","MetricRow","MetricNumber","RecColumn","PillBody","FullBody","TargetLine","PagesSection","ProbesSection"]);function Ni(e){return e.startsWith("PerfMonitor")||e.startsWith("PerfHud")||jc.has(e)}var Uc=new Set(["TaskTable","TaskRow","BusySparkline"]);function Gc(e){return e.startsWith("JsTop")||Uc.has(e)}function Kc(e){if(Tr.has(e))return true;for(let t=0;t<Wt.length;t++)if(e.startsWith(Wt[t]))return true;if(Sr)return Ni(e)||Gc(e);if(ki.has(e)||Pi.has(e))return true;for(let t=0;t<wr.length;t++)if(e.startsWith(wr[t]))return true;return false}function qc(e){if(Tr.has(e))return true;for(let t=0;t<Wt.length;t++)if(e.startsWith(Wt[t]))return true;return false}var ce=false,vt=false,Fe=false,ze=false,ie=null,Ve=null,bn=null,jt=null,zi=false,Ce=false,vn=new Set,xr=new Set,Ir=new Map,Rr=["#37afa9","#63b19e","#80b393","#97b488","#abb67d","#beb771","#cfb965","#dfba57","#efbb49","#febc38"],Jc=false;function q(e,t){Jc&&(t!==void 0?console.log(`[HighlightUpdates] ${e}`,t):console.log(`[HighlightUpdates] ${e}`))}function Dr(e){let t=Fl(e);if(t)return t;if(!e)return null;let n=e;return n.canonical?.publicInstance?n.canonical.publicInstance:n.canonical&&typeof n.canonical.measure=="function"?n.canonical:typeof n.measure=="function"?n:null}function Ct(e){let t=$l(e);if(t!==null)return t;if(e==null)return null;let n=e;if(n.__nativeTag!=null)return n.__nativeTag;if(n._nativeTag!=null)return n._nativeTag;if(n.nativeTag!=null)return n.nativeTag;if(n.canonical){if(n.canonical.__nativeTag!=null)return n.canonical.__nativeTag;if(n.canonical._nativeTag!=null)return n.canonical._nativeTag;if(n.canonical.nativeTag!=null)return n.canonical.nativeTag}return null}function kr(e){let t=e,n={viewType:"Unknown"};t?.canonical?.viewConfig?.uiViewClassName?n.viewType=t.canonical.viewConfig.uiViewClassName:t?.viewConfig?.uiViewClassName?n.viewType=t.viewConfig.uiViewClassName:Wo(t)&&(n.viewType=t.tagName.toLowerCase());let r=t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Zn(t),o=t?.canonical?.currentProps,i=t?.canonical?.pendingProps,l=r?.pendingProps,a=r?.memoizedProps;return n.testID=o?.testID||i?.testID||l?.testID||a?.testID||l?.["data-testid"]||a?.["data-testid"]||void 0,n.nativeID=o?.nativeID||i?.nativeID||l?.nativeID||a?.nativeID||l?.id||a?.id||void 0,n.accessibilityLabel=o?.accessibilityLabel||i?.accessibilityLabel||l?.accessibilityLabel||a?.accessibilityLabel||l?.["aria-label"]||a?.["aria-label"]||void 0,n.componentName=ru(r)||void 0,n}var Vi=false,Yc=false,Pr=null;var Xc=new Set;var Qc=new Set(["highlight-updates-overlay","__rn_buoy__highlight-modal"]),Zc=new Set(["jsmodal-root","image-overlay-standalone","logbox_inspector","logbox"]),Ze=new Map,Ai=500;function eu(){Ze.clear()}function Bi(e){return e?!!(Qc.has(e)||e.startsWith("__highlight_")):false}function Hi(e){if(!e)return false;if(Zc.has(e))return true;let t=e.charCodeAt(0);return!!(t===95&&e.startsWith("__rn_buoy__")||t===108&&e.startsWith("logbox"))}function Mi(e){if(!e)return null;let t=e.type;if(t){if(typeof t=="string")return t;if(t.name)return t.name;if(t.displayName)return t.displayName}let n=e.elementType;if(n){if(n.name)return n.name;if(n.displayName)return n.displayName}return null}var tu=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","Pressable","TextInput","Switch","ActivityIndicator","Modal","StatusBar","KeyboardAvoidingView","AnimatedComponent","AnimatedComponentWrapper","ScreenContainer","ScreenStack","Screen","ScreenContentWrapper","Svg","G","Path","Rect","Circle","Line","Polygon","Polyline","Ellipse","Text as SVGText","TSpan","TextPath","Use","Symbol","Defs","ClipPath","LinearGradient","RadialGradient","Stop","Mask","Pattern","Image as SVGImage","SafeAreaProvider","SafeAreaView","SafeAreaListener","GestureHandlerRootView","GestureDetector","ReanimatedView","ReanimatedText","ReanimatedImage","ReanimatedScrollView","Fragment","Suspense","Provider","Consumer","Context","ForwardRef"]);function nu(e){return!!(!e||tu.has(e)||e==="Unknown"||e==="Component"||e.startsWith("Animated"))}function ru(e){if(!e)return null;let t=e._debugOwner||e.return,n=0,r=null;for(;t&&n<30;){let o=Mi(t);if(o&&typeof t.type!="string"&&(r||(r=o),!nu(o)))return o;t=t.return,n++}return r}function ou(e){let t=e,n=t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Zn(t),r=Ct(e)||Ct(t?.canonical?.publicInstance),o=Li(),i=!o&&V.getSettings().excludeDevTools;if(i&&Wo(e)&&e.closest("[data-buoy-root]"))return true;if(r!=null&&i){let c=Ze.get(r);if(c!==void 0)return c}let l=false,a=n?.pendingProps?.nativeID||n?.memoizedProps?.nativeID||t?.canonical?.currentProps?.nativeID||null;if((Bi(a)||i&&Hi(a))&&(l=true),!l&&n){let c=n,s=0;for(;c&&s<30;){let u=Mi(c);if(u){if(Tr.has(u)){l=true;break}for(let T of Wt)if(u.startsWith(T)){l=true;break}if(l)break;if(o&&Ni(u)){l=true;break}if(i){if(ki.has(u)||Pi.has(u)){l=true;break}for(let T of wr)if(u.startsWith(T)){l=true;break}if(l)break}}let p=c.pendingProps?.nativeID||c.memoizedProps?.nativeID;if(Bi(p)){l=true;break}if(i&&Hi(p)){l=true;break}c=c.return,s++}}if(l&&r!=null&&i){if(Ze.size>=Ai){let c=Array.from(Ze.keys());for(let s=0;s<Ai/2;s++)Ze.delete(c[s])}Ze.set(r,l)}return l}function iu(e){let t=Math.min(e-1,Rr.length-1);return Rr[Math.max(0,t)]}function au(e){if(e.size===0||!ce&&!Fe||V.getState().isPaused)return;Ke.isEnabled()&&Vl();let t=V.getBatchSize(),n=Ke.startBatch(e.size,t),r=[],o=0,i=0,l=V.hasActiveFilters();for(let s of e)if(s&&typeof s=="object")try{if(ou(s)){o++;continue}let u=Dr(s),p=Ct(s)||Ct(u);if(p==null)continue;let T=kr(s);if(l&&!V.passesFilters(T)){i++;continue}let y=V.getSettings().showRenderCount,b,f;y?(b=(Ir.get(p)||0)+1,Ir.set(p,b),f=iu(b)):(b=0,f=Rr[0]),r.push({node:s,color:f,count:b})}catch{}if(n.markFilteringComplete(o+i,r.length),r.length===0){n.finish();return}Vi&&console.log(`[HighlightUpdates] ${r.length} component(s) re-rendered`);let a=V.getRenderEventCallbackCount()>0;if(!Ve&&!a){Vi&&console.log("[HighlightUpdates] No highlightCallback and no event callbacks - skipping render"),zi=false;return}n.markMeasurementStart();let c=r.slice(0,t*4).map(({node:s,color:u,count:p})=>new Promise(T=>{let y=false,b=g=>{y||(y=true,clearTimeout(f),T(g))},f=setTimeout(()=>b({rect:null,stateNode:s,color:u,count:p}),500),S=Dr(s),v=Ct(s)||Ct(S);if(v==null){b({rect:null,stateNode:s,color:u,count:p});return}let P=(g,D,k,R,_,Q)=>{if(_==null||Q==null||k==null||R==null){b({rect:null,stateNode:s,color:u,count:p});return}b({rect:{id:v,x:_,y:Q,width:k,height:R,color:u,count:p},stateNode:s,color:u,count:p})};if(!S){let g=s.node,D=globalThis.nativeFabricUIManager;if(g&&D?.measure){try{D.measure(g,P)}catch{b({rect:null,stateNode:s,color:u,count:p})}return}b({rect:null,stateNode:s,color:u,count:p});return}try{S.measure(P)}catch{b({rect:null,stateNode:s,color:u,count:p})}}));Promise.all(c).then(s=>{let u=s.filter(T=>T.rect!==null),p=u.map(T=>T.rect);n.markMeasurementComplete(u.length,s.length-u.length),p.length>0&&Ve&&ce&&!vt&&Ve(p),setTimeout(()=>{try{for(let f of u)f.rect&&lu(f.rect.id,f.stateNode)}catch(f){q("registerTrackedNode batch failed",f)}let T=V.getSettings(),y=T.trackRenderCauses&&T.showRenderCount,b=null;if(y){b=new Set;for(let{rect:f}of u)f&&b.add(f.id)}if(ce){V.startBatch();for(let{rect:f,stateNode:S,color:v,count:P}of u)if(f){let g=kr(S),D;if(y&&b){let k=Lr(S);D=Cr(f.id,k,b,T.debugLogLevel)}V.trackRender({nativeTag:f.id,viewType:g.viewType,testID:g.testID,nativeID:g.nativeID,accessibilityLabel:g.accessibilityLabel,componentName:g.componentName,measurements:{x:f.x,y:f.y,width:f.width,height:f.height},color:v,count:P,renderCause:D})}V.endBatch()}else for(let{rect:f,stateNode:S,color:v,count:P}of u)if(f){let g=kr(S),D;if(y&&b){let k=Lr(S);D=Cr(f.id,k,b,T.debugLogLevel)}V.emitRenderEvent({nativeTag:f.id,viewType:g.viewType,testID:g.testID,nativeID:g.nativeID,accessibilityLabel:g.accessibilityLabel,componentName:g.componentName,measurements:{x:f.x,y:f.y,width:f.width,height:f.height},color:v,count:P,renderCause:D})}n.markTrackingComplete(),n.markCallbackComplete(),n.finish()},0)}).catch(s=>{console.error("[HighlightUpdates] Error in measurement pipeline:",s),n.finish()})}var $i=globalThis.WeakRef,Cn=new Map;function lu(e,t){if(!(e==null||t==null||typeof t!="object"))try{Cn.set(e,$i?new $i(t):{deref:()=>t})}catch{Cn.set(e,{deref:()=>t})}}function su(e){let t=Cn.get(e)?.deref();return t||Cn.delete(e),t??null}function cu(e){return new Promise(t=>{try{e.measure((n,r,o,i,l,a)=>{l==null||a==null||o==null||i==null?t(null):t({x:l,y:a,width:o,height:i})})}catch{t(null)}})}function Lr(e){let t=e;return t?.canonical?.internalInstanceHandle||t?._internalInstanceHandle||t?._internalFiberInstanceHandleDEV||Zn(t)||null}function uu(e){let t=Lr(e),n=0;for(;t&&n++<200;){let r=t.stateNode;if(r&&typeof r.scrollTo=="function"){let o=typeof r.getNativeScrollRef=="function"&&r.getNativeScrollRef()||null,i=typeof r.getInnerViewNode=="function"&&r.getInnerViewNode()||typeof r.getScrollableNode=="function"&&r.getScrollableNode()||r;return{instance:r,nativeRef:o,innerNode:i}}t=t.return}return null}async function du(e,t,n){try{let r=uu(e);if(!r)return false;let o=t,i=null,l=a=>new Promise(c=>{let s=false,u=T=>{s||(s=true,c(T))},p=setTimeout(()=>u(null),600);try{a(T=>{clearTimeout(p),u(T)})}catch{clearTimeout(p),u(null)}});if(r.nativeRef&&typeof o.measureLayout=="function"&&(i=await l(a=>o.measureLayout(r.nativeRef,(c,s)=>a(s),()=>a(null)))),i==null){let a=pt(t),c=typeof r.innerNode=="number"?r.innerNode:pt(r.innerNode);a!=null&&c!=null&&(i=await l(s=>Ot.measureLayout(a,c,()=>s(null),(u,p)=>s(p))))}return i==null?false:(r.instance.scrollTo({y:Math.max(0,i-n),animated:false}),await new Promise(a=>setTimeout(a,80)),true)}catch{return false}}function hu(e,t){let n=[e.testID,e.nativeID,e.accessibilityLabel,e.componentName,e.viewType,String(e.nativeTag)],r=0;for(let o of n){if(!o)continue;let i=o.toLowerCase();if(i===t)return 3;i.startsWith(t)?r=Math.max(r,2):i.includes(t)&&(r=Math.max(r,1))}return r}async function gu(e){let t=e.scrollIntoView!==false,n=typeof e.margin=="number"?e.margin:12,r=V.getRenders(),o=async()=>{let v=await dr(),P=(e.query??"").trim().toLowerCase(),g;for(let R of v.elements){if(e.nativeTag!=null&&R.nativeTag===e.nativeTag){g={el:R,score:1e3};break}let _=un({nativeTag:R.nativeTag,testID:R.testID,label:R.label,text:R.text,name:R.name,tap:R.tap},{query:P||void 0,nativeTag:e.nativeTag});_<=0||(!g||_>g.score)&&(g={el:R,score:_})}if(!g?.el.frame)return{matched:false,reason:"no-match",candidates:[]};let D=v.screen,k=g.el.frame;return{matched:true,live:true,rect:{x:k.x*D.width,y:k.y*D.height,width:k.width*D.width,height:k.height*D.height},scale:er.get(),screen:{width:D.width,height:D.height},nativeTag:g.el.nativeTag??void 0,componentName:g.el.name,testID:g.el.testID}};if(r.length===0)return o();let i=(e.query??"").trim().toLowerCase(),l=i?r.map(v=>({r:v,score:hu(v,i)})).filter(v=>v.score>0).sort((v,P)=>P.score-v.score||P.r.lastRenderTime-v.r.lastRenderTime):[],a=l.slice(0,8).map(({r:v})=>({nativeTag:v.nativeTag,componentName:v.componentName,testID:v.testID,nativeID:v.nativeID,viewType:v.viewType,renderCount:v.renderCount})),c=e.nativeTag??(l.length>0?l[0].r.nativeTag:void 0);if(c==null){let v=await o();return v.matched?v:{matched:false,reason:"no-match",candidates:a}}let s=r.find(v=>v.nativeTag===c),u=null,p=false,T=false,y=su(c);if(y){let v=Dr(y);v&&(t&&(T=await du(y,v,n)),u=await cu(v),p=!!u)}if(!u&&s?.measurements&&(u={...s.measurements}),!u)return{matched:false,reason:"no-measurement",nativeTag:c,candidates:a};let b=er.get(),f=qe.get("window"),S=u.x>=-1&&u.y>=-1&&u.x+u.width<=f.width+1&&u.y+u.height<=f.height+1;return{matched:true,live:p,scrolled:T,inView:S,rect:u,scale:b,screen:{width:f.width,height:f.height},nativeTag:c,componentName:s?.componentName,testID:s?.testID,candidates:a}}function Fi(e){if(!ie?.rendererInterfaces){q("No rendererInterfaces available");return}let t=0;if(ie.rendererInterfaces.forEach((n,r)=>{if(typeof n.setTraceUpdatesEnabled=="function")try{n.setTraceUpdatesEnabled(e),t++,q(`Renderer ${r}: setTraceUpdatesEnabled(${e})`)}catch(o){q(`Renderer ${r}: error setting trace updates`,o)}else q(`Renderer ${r}: no setTraceUpdatesEnabled method`)}),q(`Set trace updates ${e?"enabled":"disabled"} on ${t} renderer(s)`),ie.reactDevtoolsAgent?.setTraceUpdatesEnabled)try{ie.reactDevtoolsAgent.setTraceUpdatesEnabled(e),q("Also set trace updates on agent")}catch(n){q("Error setting trace updates on agent",n)}}function Ei(){ie&&(jt||(q("Subscribing to traceUpdates event"),typeof ie.sub=="function"?(jt=ie.sub("traceUpdates",au),q("Subscribed using hook.sub()")):q("hook.sub not available, traceUpdates may not work"),Fi(true)))}function Nr(){Fi(false),jt&&(jt(),jt=null,q("Unsubscribed from traceUpdates event"))}function Oi(e){Ve=e,q(`Highlight callback ${e?"set":"cleared"}`)}function pu(e){bn=e,q(`Badge press callback ${e?"set":"cleared"}`)}function fu(){return bn}function mu(e){bn&&bn(e)}var zr=null,Tn=null;function yu(e){zr=e,e&&Tn!==null&&e(Tn)}function bu(e){if(pe){pe("setSpotlight",{nativeTag:e});return}Tn=e,zr&&zr(e)}var pe=null;function vu(e){pe=e}function Cu(e){ce!==e.enabled&&(ce=e.enabled,Vr()),Ce!==e.frozen&&(Ce=e.frozen,Sn())}function Tu(){return Tn}function Vr(){xr.forEach(e=>{try{e(ce)}catch(t){console.error("[HighlightUpdates] Error in state listener:",t)}})}function _i(e){return xr.add(e),e(ce),()=>{xr.delete(e)}}function wn(){if(typeof Z<"u"&&!Z)return q("Only available in development builds"),false;if(pe||ze)return true;if(ie=window?.__REACT_DEVTOOLS_GLOBAL_HOOK__||null,!ie)return q("React DevTools hook not found"),false;if(q("Hook found"),q(`Hook has sub: ${typeof ie.sub=="function"}`),q(`Hook has on: ${typeof ie.on=="function"}`),q(`Hook has emit: ${typeof ie.emit=="function"}`),Go(),ie.rendererInterfaces&&ie.rendererInterfaces.size>0)return ze=true,q(`Initialized with ${ie.rendererInterfaces.size} renderer(s)`),Wi(),true;let e=setInterval(()=>{ie?.rendererInterfaces&&ie.rendererInterfaces.size>0&&(clearInterval(e),ze=true,q(`Initialized with ${ie.rendererInterfaces.size} renderer(s) (delayed)`),Wi())},100);return setTimeout(()=>clearInterval(e),1e4),false}function Wi(){typeof window<"u"&&(window.__HIGHLIGHT_UPDATES_CONTROLLER__={enable:Ut,disable:Gt,toggle:ji,isEnabled:Ui,setEnabled:Gi,subscribe:_i,initialize:wn,destroy:Ji,isInitialized:()=>ze,setHighlightCallback:Oi})}function Ut(){typeof Z<"u"&&!Z||(ze||wn(),vt&&(vt=false),!ce&&(q("Enabling highlights"),Fe||Ei(),V.start(),ce=true,Vr(),Di("render")))}function Gt(){typeof Z<"u"&&!Z||ce&&(q("Disabling highlights"),Yc=false,zi=false,Pr&&(clearTimeout(Pr),Pr=null),Xc.clear(),Ze.clear(),Ii(),Ce&&(Ce=false,Sn()),Fe||Nr(),V.stop(),ce=false,Vr(),Di("render"))}function wu(){typeof Z<"u"&&!Z||Fe||(ze||wn(),q("Enabling background tracking"),ce||Ei(),Fe=true)}function Su(){typeof Z<"u"&&!Z||Fe&&(q("Disabling background tracking"),Fe=false,ce||Nr())}function xu(){return Fe}function ji(){if(!(typeof Z<"u"&&!Z)){if(pe){pe("toggle");return}ce?Gt():Ut()}}function Iu(){if(pe){pe("clearRenderCounts");return}Ir.clear(),V.clear(),q("Cleared render counts")}function Ui(){return ce}function Gi(e){if(pe){pe("setEnabled",{enabled:e});return}e?Ut():Gt()}function Ar(e){vt!==e&&(vt=e,e&&Ve&&Ve([]))}function Ru(){return vt}function Du(e){if(pe){pe("setSilentTracking",{enabled:e});return}e?(Ut(),Ar(true)):(Ar(false),Gt())}function ku(){return ze}function Sn(){vn.forEach(e=>{try{e(Ce)}catch(t){console.error("[HighlightUpdates] Error in freeze listener:",t)}})}function Pu(e){return vn.add(e),e(Ce),()=>{vn.delete(e)}}function Ki(){typeof Z<"u"&&!Z||Ce||(Ce=true,q("Freeze mode enabled"),Sn())}function qi(){typeof Z<"u"&&!Z||Ce&&(Ce=false,q("Freeze mode disabled"),Ve&&Ve([]),Sn())}function Lu(){if(pe){pe("toggleFreeze");return}Ce?qi():Ki()}function Nu(){return Ce}function Ji(){ze&&(Nr(),Ko(),Uo(null),Ce=false,vn.clear(),ce=false,ie=null,Ve=null,ze=false,typeof window<"u"&&delete window.__HIGHLIGHT_UPDATES_CONTROLLER__,q("Destroyed"))}var zu={subscribe:_i,enable:Ut,disable:Gt,toggle:ji,isEnabled:Ui,setEnabled:Gi,initialize:wn,destroy:Ji,isInitialized:ku,setHighlightCallback:Oi,clearRenderCounts:Iu,freeze:Ki,unfreeze:qi,toggleFreeze:Lu,getFrozen:Nu,subscribeToFreeze:Pu,setBadgePressCallback:pu,getBadgePressCallback:fu,handleBadgePress:mu,setSpotlightCallback:yu,setSpotlight:bu,getSpotlight:Tu,clearDevToolsCache:eu,enableBackgroundTracking:wu,disableBackgroundTracking:Su,isBackgroundTrackingEnabled:xu,setRemoteHandler:vu,replaceRemoteState:Cu,locateComponent:gu,setHighlightsSuppressed:Ar,getHighlightsSuppressed:Ru,setSilentTracking:Du},M=zu;j();import Vu,{useState as ue,useEffect as xe,useRef as et,useCallback as te}from"react";import{Power as Au,JsModal as Bu,devToolsStorageKeys as Tt,persistentStorage as xn,night as Kt,TickProvider as Yi,windowDragProps as Hu}from"@buoy-gg/shared-ui/web";import{useIsPro as Mu}from"@buoy-gg/license/web";Ne();j();import{useMemo as In,useState as Xi,useCallback as qt}from"react";import{CopyButton as $u,formatRelativeTime as Fu,PlusIcon as Eu,MinusIcon as Ou,EventStepperFooter as _u,Lock as Wu,night as F,useLimit as ju,monoFont as wt}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as Uu}from"@buoy-gg/shared-ui/web/dataViewer";j();import{buoyColors as Ee,night as ne,monoFont as tt}from"@buoy-gg/shared-ui/web";import{Fragment as Gu,jsx as G,jsxs as ae}from"react/jsx-runtime";var Oe={mount:{label:"MOUNT",color:Ee.success,tip:"First render of this component."},props:{label:"PROPS",color:Ee.warning,tip:"Native props changed. Consider React.memo() or useCallback for handlers."},state:{label:"STATE",color:"#a855f7",tip:"Component state changed via setState."},hooks:{label:"HOOKS",color:"#ec4899",tip:"Hook values changed (useState, useReducer, useMemo, etc.)."},context:{label:"CONTEXT",color:"#06b6d4",tip:"React context value changed."},parent:{label:"PARENT",color:Ee.textSecondary,tip:"Parent component re-rendered. Consider wrapping with React.memo()."},unknown:{label:"?",color:Ee.textMuted,tip:"Could not determine render cause."}},Jt={mount:{label:"mount",color:Ee.success,tip:"First render of this component."},props:{label:"props",color:Ee.warning,tip:"Component received different props from parent."},state:{label:"state",color:"#a855f7",tip:"Component's own state changed (useState/useReducer)."},parent:{label:"parent",color:Ee.textSecondary,tip:"Parent re-rendered but this component's props/state didn't change. Consider React.memo()."},unknown:{label:"?",color:Ee.textMuted,tip:"Could not determine component render cause."}};function Qi({cause:e,compact:t=false,showKeys:n=false,showTwoLevel:r=false,testID:o}){let i=Oe[e.type],l=e.componentCause?Jt[e.componentCause]:null,a=r&&l&&e.componentCause!==e.type;return ae(d,{nativeID:"__rn_buoy__cause-badge",testID:o,style:[A.container,t&&A.containerCompact],children:[a&&ae(Gu,{children:[G(d,{style:[A.badge,t&&A.badgeCompact,A.componentBadge,{backgroundColor:l.color+"15"}],children:G(h,{testID:o?`${o}-component`:void 0,style:[A.badgeText,t&&A.badgeTextCompact,A.componentBadgeText,{color:l.color}],children:l.label})}),G(h,{style:[A.arrowText,t&&A.arrowTextCompact],children:"\u2192"})]}),G(d,{style:[A.badge,t&&A.badgeCompact,{backgroundColor:i.color+"20"}],children:G(h,{testID:o?`${o}-native`:void 0,style:[A.badgeText,t&&A.badgeTextCompact,{color:i.color}],children:i.label})}),n&&e.changedKeys&&e.changedKeys.length>0&&G(h,{testID:o?`${o}-keys`:void 0,style:[A.keysText,t&&A.keysTextCompact],numberOfLines:1,children:e.changedKeys.join(", ")}),n&&e.hookIndices&&e.hookIndices.length>0&&ae(h,{testID:o?`${o}-hooks`:void 0,style:[A.keysText,t&&A.keysTextCompact],numberOfLines:1,children:["Hook ",e.hookIndices.join(", ")]})]})}function Ku({cause:e}){let t=Oe[e.type],n=e.componentCause?Jt[e.componentCause]:null,r=e.componentName||"Component";return ae(d,{nativeID:"__rn_buoy__two-level-cause",style:A.twoLevelContainer,children:[n&&ae(d,{style:A.twoLevelRow,children:[G(h,{style:A.twoLevelLabel,children:"Component:"}),G(h,{style:A.twoLevelName,children:r}),G(h,{style:A.twoLevelText,children:"re-rendered due to"}),G(d,{style:[A.badge,{backgroundColor:n.color+"20"}],children:G(h,{style:[A.badgeText,{color:n.color}],children:n.label.toUpperCase()})})]}),ae(d,{style:A.twoLevelRow,children:[G(h,{style:A.twoLevelLabel,children:"Native:"}),G(d,{style:[A.badge,{backgroundColor:t.color+"20"}],children:G(h,{style:[A.badgeText,{color:t.color}],children:t.label})}),e.changedKeys&&e.changedKeys.length>0&&ae(h,{style:A.twoLevelKeys,children:["[",e.changedKeys.join(", "),"]"]})]})]})}function Zi({cause:e,nativeType:t}){let n=Oe[e.type],r=e.componentCause?Jt[e.componentCause]:null,o=e.componentName||"Unknown",i=e.hookChanges&&e.hookChanges.length>0,l=e.changedKeys&&e.changedKeys.length>0,a=e.changedKeys?.filter(s=>s.includes("(ref only)")||s.includes("(fn ref)"))||[],c=e.changedKeys?.filter(s=>!s.includes("(ref only)")&&!s.includes("(fn ref)"))||[];return ae(d,{nativeID:"__rn_buoy__enhanced-cause",style:A.enhancedContainer,children:[ae(d,{style:A.enhancedHeader,children:[G(h,{style:A.enhancedComponentName,children:o}),t&&G(d,{style:A.enhancedNativeTag,children:G(h,{style:A.enhancedNativeTagText,children:t})})]}),ae(d,{style:A.enhancedFlowContainer,children:[G(h,{style:A.enhancedFlowLabel,children:"Cause:"}),r&&G(d,{style:[A.enhancedFlowBadge,{backgroundColor:r.color+"20"}],children:G(h,{style:[A.enhancedFlowBadgeText,{color:r.color}],children:r.label.toUpperCase()})}),G(h,{style:A.enhancedFlowArrow,children:"\u2192"}),G(d,{style:[A.enhancedFlowBadge,{backgroundColor:n.color+"20"}],children:G(h,{style:[A.enhancedFlowBadgeText,{color:n.color}],children:n.label})})]}),i&&ae(d,{style:A.enhancedSection,children:[G(h,{style:A.enhancedSectionTitle,children:"Component State Changed:"}),e.hookChanges.map(s=>ae(d,{style:A.enhancedChangeRow,children:[G(h,{style:A.enhancedChangeIcon,children:"\u26A1"}),ae(h,{style:A.enhancedChangeText,children:["Hook[",s.index,"] (",s.type,"): ",s.description]})]},s.index))]}),c.length>0&&ae(d,{style:A.enhancedSection,children:[G(h,{style:A.enhancedSectionTitle,children:"Native Props Changed:"}),c.map((s,u)=>ae(d,{style:A.enhancedChangeRow,children:[G(h,{style:A.enhancedChangeIcon,children:"~"}),G(h,{style:A.enhancedChangeText,children:s})]},u))]}),a.length>0&&ae(d,{style:A.enhancedSection,children:[G(h,{style:[A.enhancedSectionTitle,{color:ne.color.textTertiary}],children:"Reference Changes (optimization opportunity):"}),a.map((s,u)=>ae(d,{style:A.enhancedChangeRow,children:[G(h,{style:[A.enhancedChangeIcon,{color:ne.color.textTertiary}],children:"\u25CB"}),G(h,{style:[A.enhancedChangeText,{color:ne.color.textTertiary}],children:s})]},u))]}),!i&&!l&&e.type!=="mount"&&G(d,{style:A.enhancedSection,children:G(h,{style:A.enhancedNoChanges,children:e.type==="parent"?"Parent re-rendered (consider React.memo)":"No specific changes detected"})})]})}var A=be.create({container:{flexDirection:"row",alignItems:"center",gap:6},containerCompact:{gap:4},badge:{paddingVertical:3,paddingHorizontal:6,borderRadius:4},badgeCompact:{paddingVertical:2,paddingHorizontal:5},componentBadge:{borderStyle:"dashed",borderWidth:1,borderColor:ne.color.border},badgeText:{fontSize:10,fontWeight:"700"},badgeTextCompact:{fontSize:9},componentBadgeText:{fontWeight:"500",textTransform:"lowercase"},arrowText:{fontSize:10,color:ne.color.textTertiary},arrowTextCompact:{fontSize:9},keysText:{fontSize:11,color:ne.color.textSecondary,fontFamily:tt,flex:1},keysTextCompact:{fontSize:10},twoLevelContainer:{gap:8},twoLevelRow:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6},twoLevelLabel:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary,minWidth:70},twoLevelName:{fontSize:11,fontWeight:"600",color:ne.color.text,fontFamily:tt},twoLevelText:{fontSize:11,color:ne.color.textSecondary},twoLevelKeys:{fontSize:10,color:ne.color.textSecondary,fontFamily:tt},enhancedContainer:{gap:12},enhancedHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},enhancedComponentName:{fontSize:14,fontWeight:"700",color:ne.color.text,fontFamily:tt},enhancedNativeTag:{backgroundColor:ne.color.bg,paddingVertical:2,paddingHorizontal:6,borderRadius:4},enhancedNativeTagText:{fontSize:10,fontWeight:"600",color:ne.color.textTertiary,fontFamily:tt},enhancedFlowContainer:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:8,paddingHorizontal:12,backgroundColor:ne.color.bg,borderRadius:6},enhancedFlowLabel:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary},enhancedFlowBadge:{paddingVertical:3,paddingHorizontal:8,borderRadius:4},enhancedFlowBadgeText:{fontSize:10,fontWeight:"700"},enhancedFlowArrow:{fontSize:14,color:ne.color.textTertiary,fontWeight:"300"},enhancedSection:{gap:6},enhancedSectionTitle:{fontSize:11,fontWeight:"600",color:ne.color.textSecondary,letterSpacing:.3},enhancedChangeRow:{flexDirection:"row",alignItems:"flex-start",gap:6,paddingLeft:4},enhancedChangeIcon:{fontSize:12,color:ne.color.warning,fontFamily:tt,width:16},enhancedChangeText:{fontSize:12,color:ne.color.text,fontFamily:tt,flex:1},enhancedNoChanges:{fontSize:12,color:ne.color.textTertiary,fontStyle:"italic",paddingLeft:4}});j();function qu(e,t){let n=e.filter(y=>y.renderCount>=t.minRenders);if(t.filterCauses.length>0){let y=new Set(t.filterCauses);n=n.filter(b=>y.has(b.lastRenderCause?.type??"unknown"))}let r=e.flatMap(y=>[y.firstRenderTime,y.lastRenderTime]).filter(y=>Number.isFinite(y)),o=r.length>0?Math.max(...r)-Math.min(...r):0,i=Math.max(.001,o/1e3),l=(t.groupByName?Ju(n):n.map(y=>[y])).map(y=>Yu(y,t,i));Qu(l,t.sortBy);let a=t.topN===-1?0:Math.max(0,l.length-t.topN),c=t.topN===-1?l:l.slice(0,t.topN),s=e.reduce((y,b)=>y+b.renderCount,0),u=Xu(e),p=0,T=false;for(let y of e)y.lastRenderCause||(p+=y.renderCount),y.renderHistory&&y.renderHistory.length>0&&(T=true);return{totalUniqueComponents:n.length,totalRenders:s,windowMs:o,causeBreakdown:u,rows:c,truncated:a,dataGaps:{historyOff:!T,propsCaptureOff:!e.some(y=>y.renderHistory?.some(b=>b.capturedProps!==void 0)),stateCaptureOff:!e.some(y=>y.renderHistory?.some(b=>b.capturedState!==void 0)),rendersWithoutCause:p}}}function Ju(e){let t=new Map;for(let n of e){let r=n.componentName||n.displayName||n.viewType,o=t.get(r);o?o.push(n):t.set(r,[n])}return Array.from(t.values())}function Yu(e,t,n){let r=e[0],o=r.componentName||r.displayName||r.viewType,i=0,l={},a=new Map,c=new Map,s=new Map,u=0,p=0,T=0;for(let k of e){i+=k.renderCount;let R=k.lastRenderCause;if(!R)continue;let _=R.type;l[_]=(l[_]??0)+k.renderCount;let Q=(R.hookChanges?.length??0)>0,z=(R.changedKeys?.length??0)>0;if(_==="parent"&&(R.componentCause==="state"||R.componentCause==="props"||Q||z?p+=k.renderCount:T+=k.renderCount),_==="props"&&!z&&(u+=k.renderCount),R.parentComponentName&&s.set(R.parentComponentName,(s.get(R.parentComponentName)??0)+1),t.aggregateCauses&&R.hookChanges)for(let W of R.hookChanges){let w=`${W.type}[${W.index}]`,N=a.get(w);N?N.count+=1:a.set(w,{count:1,sample:Zu(W)})}if(R.changedKeys)for(let W of R.changedKeys)W.includes("(ref only)")||c.set(W,(c.get(W)??0)+1)}let y=Array.from(a.entries()).sort((k,R)=>R[1].count-k[1].count).slice(0,3).map(([k,R])=>({hook:k,count:R.count,sample:R.sample})),b=Array.from(c.entries()).sort((k,R)=>R[1]-k[1]).slice(0,5).map(([k])=>k),f="unknown",S=-1;for(let[k,R]of Object.entries(l))(R??0)>S&&(S=R??0,f=k);let v,P=0;for(let[k,R]of s)R>P&&(P=R,v=k);let g=e.map(k=>k.renderCount).sort((k,R)=>R-k),D=i/n;return{name:o,viewType:r.viewType,instances:e.length,renders:i,causeMix:l,dominantCause:f,hookCauses:y,changedKeys:b,unknownPropsCount:u,parentWithOwnChange:p,parentNoChange:T,parentName:v,instanceCounts:g,rate:D,source:e}}function Xu(e){let t={};for(let n of e){let r=n.lastRenderCause?.type??"unknown";t[r]=(t[r]??0)+n.renderCount}return t}function Qu(e,t){switch(t){case"renderCount":e.sort((n,r)=>r.renders-n.renders);break;case"rate":e.sort((n,r)=>r.rate-n.rate);break;case"name":e.sort((n,r)=>n.name.localeCompare(r.name));break}}var ea=32;function ta(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="function")return"[Fn]";if(typeof e=="object")return Array.isArray(e)?`[Array(${e.length})]`:"[Obj]";let t=String(e);return t.length>ea?t.slice(0,ea-1)+"\u2026":t}function Zu(e){return e.previousValue===void 0&&e.currentValue===void 0?e.description:`${ta(e.previousValue)} \u2192 ${ta(e.currentValue)}`}function na(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function Br(e){return e>=100?`${e.toFixed(0)}/s`:e>=10?`${e.toFixed(1)}/s`:`${e.toFixed(2)}/s`}function ra(e){let t=Object.entries(e).sort((n,r)=>(r[1]??0)-(n[1]??0));return t.length===0?"(no causes recorded)":t.map(([n,r])=>`${n} ${r}`).join(" \xB7 ")}function oa(e){let t=[],n=Object.entries(e.causeMix).filter(([,o])=>(o??0)>0).sort((o,i)=>(i[1]??0)-(o[1]??0)),r=n.length>=2&&(n[1]?.[1]??0)>=e.renders*.1;if(e.dominantCause==="hooks"&&e.hookCauses.length>0){let o=e.hookCauses[0];o.sample?t.push(`hooks \xD7${o.count} ${o.hook}: ${o.sample}`):t.push(`hooks \xD7${o.count} ${o.hook}`)}else if(e.dominantCause==="props"){if(e.changedKeys.length>0){let o=e.changedKeys.slice(0,3).join(", ");t.push(`props (${o})`)}else t.push("props (keys not captured)");e.unknownPropsCount>0&&e.changedKeys.length>0&&t.push(`[${e.unknownPropsCount} unidentified]`)}else if(e.dominantCause==="parent"){let o="parent cascade";e.parentNoChange>0&&e.parentWithOwnChange===0&&(o="parent cascade, no own change"),e.parentName&&(o+=` \u2190 ${e.parentName}`),t.push(o)}else e.dominantCause==="mount"?t.push("mount"):e.dominantCause==="state"?t.push("state"):e.dominantCause==="context"?t.push("context"):t.push("unknown");if(r){let o=n.map(([i,l])=>`${i}:${l}`).join(" + ");t.push(`(${o})`)}return t.join(" ")}function ia(e){if(e.instances<=1)return e.name;let t=e.instanceCounts,n=t[0]??0,r=t[t.length-1]??0;if(n-r<=1)return`${e.name} \xD7${e.instances} (${n} each)`;let o=t.slice(1),i=o.reduce((a,c)=>a+c,0),l=o.length>0?i/o.length:0;return`${e.name} \xD7${e.instances} (top ${n}, others ~${Math.round(l)})`}var ed="React Native render report \u2014 review the data and identify why components are re-rendering.";function aa(e,t){let n=[];n.push(ed),n.push(""),n.push(`Window: ${na(e.windowMs)} \xB7 ${e.totalUniqueComponents} components \xB7 ${e.totalRenders} renders`),n.push(`Cause mix: ${ra(e.causeBreakdown)}`),n.push(""),n.push("Top offenders (count \xB7 rate \xB7 component \xB7 cause):"),n.push("");let r=e.rows.map(ia),o=Math.min(36,Math.max(8,...r.map(c=>c.length))),i=Math.max(3,...e.rows.map(c=>`\xD7${c.renders}`.length)),l=Math.max(5,...e.rows.map(c=>Br(c.rate).length));for(let c=0;c<e.rows.length;c++){let s=e.rows[c],u=(r[c]??s.name).padEnd(o),p=`\xD7${s.renders}`.padStart(i),T=Br(s.rate).padStart(l),y=oa(s);n.push(` ${p} ${T} ${u} ${y}`)}e.truncated>0&&(n.push(""),n.push(`... ${e.truncated} more (set topN=-1 to expand)`));let a=la(e);if(a.length>0){n.push(""),n.push("Data availability:");for(let c of a)n.push(` \xB7 ${c}`)}return n.join(`
|
|
31
|
+
`)}function la(e){let t=[];return e.dataGaps.rendersWithoutCause>0&&t.push(`${e.dataGaps.rendersWithoutCause} renders had no cause info (enable trackRenderCauses for more detail)`),e.dataGaps.propsCaptureOff&&t.push("prop snapshots not captured (enable capturePropsOnRender to see prop diffs for 'props (keys not captured)' rows)"),e.dataGaps.stateCaptureOff&&t.push("state snapshots not captured (enable captureStateOnRender)"),e.dataGaps.historyOff&&t.push("render history off (enable enableRenderHistory for per-render timeline)"),t}function td(e,t){let n=[];n.push("# React Render Report"),n.push(""),n.push(`**Window:** ${na(e.windowMs)} \xB7 **Components:** ${e.totalUniqueComponents} \xB7 **Renders:** ${e.totalRenders}`),n.push(`**Cause mix:** ${ra(e.causeBreakdown)}`),n.push(""),n.push("| Component | Renders | Rate | Cause |"),n.push("|---|---:|---:|---|");for(let o of e.rows){let i=ia(o),l=oa(o).replace(/\|/g,"\\|");n.push(`| ${i} | ${o.renders} | ${Br(o.rate)} | ${l} |`)}e.truncated>0&&(n.push(""),n.push(`_... ${e.truncated} more rows_`));let r=la(e);if(r.length>0){n.push(""),n.push("**Data availability:**");for(let o of r)n.push(`- ${o}`)}return n.join(`
|
|
32
|
+
`)}function nd(e,t,n){let r={exportedAt:new Date().toISOString(),summary:{windowMs:t.windowMs,totalComponents:t.totalUniqueComponents,totalRenders:t.totalRenders,causeBreakdown:t.causeBreakdown,truncated:t.truncated,dataGaps:t.dataGaps},components:t.rows.map(o=>({name:o.name,viewType:o.viewType,instances:o.instances,instanceCounts:o.instances>1?o.instanceCounts:void 0,renders:o.renders,ratePerSec:Number(o.rate.toFixed(3)),dominantCause:o.dominantCause,causeMix:o.causeMix,hookCauses:o.hookCauses,changedKeys:o.changedKeys,unknownPropsCount:o.unknownPropsCount||void 0,parentName:o.parentName,parentWithOwnChange:o.parentWithOwnChange||void 0,parentNoChange:o.parentNoChange||void 0,...n.includeHistory?{history:rd(o.source)}:{}}))};return n.includeHistory?JSON.stringify(r,null,2):JSON.stringify(r)}function rd(e){return e.map(t=>({name:t.componentName||t.displayName,nativeTag:t.nativeTag,renderCount:t.renderCount,history:t.renderHistory?.map(n=>({n:n.renderNumber,t:n.timestamp,cause:{type:n.cause.type,componentCause:n.cause.componentCause,changedKeys:n.cause.changedKeys,parentComponentName:n.cause.parentComponentName,hookChanges:n.cause.hookChanges?.map(r=>({type:r.type,index:r.index,desc:r.description}))}}))}))}function Hr(e,t){let n=qu(e,t);switch(t.format){case"summary":return aa(n,t);case"markdown-table":return td(n,t);case"json":return nd(e,n,t);default:return aa(n,t)}}function od(e,t){return Hr(e,t).length}function sa(e){return{totalComponents:e.length,totalRenders:e.reduce((t,n)=>t+n.renderCount,0)}}function id(e){return Hr([e],{format:"summary",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:true,sortBy:"renderCount",includeHistory:false})}import{jsx as E,jsxs as X}from"react/jsx-runtime";function ca({render:e,disableInternalFooter:t=false,selectedEventIndex:n,onEventIndexChange:r,onAddFilter:o,isPro:i=false}){let[l,a]=Xi(0),c=n??l,s=r??a,u=In(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((z,W)=>z.timestamp-W.timestamp),[e.renderHistory]),p=u.length,T=u[c],y=ju("highlightUpdates.detailEvents"),b=i?1/0:y,f=In(()=>Math.max(0,p-b),[b,p]),S=T?.cause||e.lastRenderCause,v=qt(()=>{c>0&&s(c-1)},[c,s]),P=qt(()=>{let z=Math.min(b-1,p-1);c<z&&s(c+1)},[c,p,s,b]),g=In(()=>id(e),[e]),D=e.componentName||e.displayName,k=e.viewType,R=e.lastRenderTime-e.firstRenderTime,_=R>0?(e.renderCount/(R/1e3)).toFixed(1):e.renderCount.toString(),Q=!t&&p>1;return X(d,{style:L.container,children:[X(d,{style:L.header,children:[X(d,{style:L.headerLeft,children:[E(h,{testID:"buoy-highlight-detail-name",style:L.componentName,numberOfLines:1,children:D}),E(d,{style:L.nativeTypeBadge,children:E(h,{testID:"buoy-highlight-detail-type",style:L.nativeTypeText,children:k})})]}),E($u,{value:g,size:14,testID:"buoy-highlight-detail-copy"})]}),X(Be,{testID:"buoy-highlight-detail-scroll",style:L.scrollView,contentContainerStyle:[L.scrollContent,Q&&{paddingBottom:100}],showsVerticalScrollIndicator:false,children:[S&&E(ad,{cause:S,renderNumber:T?.renderNumber}),E(ld,{render:e,rendersPerSec:_}),f>0&&X(d,{testID:"buoy-highlight-detail-locked",style:L.lockedBanner,children:[E(Wu,{size:14,color:F.color.warning}),X(h,{testID:"buoy-highlight-detail-locked-text",style:L.lockedBannerText,children:[f," ",f===1?"event":"events"," hidden"]}),E(h,{style:L.lockedBannerSubtext,children:"Upgrade to Pro"})]}),o&&E(sd,{render:e,onAddFilter:o})]}),Q&&E(_u,{currentIndex:c,totalItems:p,onPrevious:v,onNext:P,itemLabel:"Render",subtitle:T?.timestamp?Fu(new Date(T.timestamp)):void 0,applySafeAreaInset:false,absolute:true})]})}function ad({cause:e,renderNumber:t}){let n=e.componentCause||e.type,r=e.componentCause?Jt[e.componentCause]:Oe[e.type],o=e.hookChanges&&e.hookChanges.length>0,i=e.changedKeys&&e.changedKeys.length>0,l=()=>e.type==="mount"?"First render":n==="parent"?"Triggered by":"Changed:";return X(d,{testID:"buoy-highlight-detail-cause",style:L.answerCard,children:[X(d,{style:L.causeBadgeRow,children:[E(h,{testID:"buoy-highlight-detail-cause-label",style:L.causeLabel,children:l()}),E(d,{style:[L.causeBadgeLarge,{backgroundColor:r.color+"20"}],children:E(h,{testID:"buoy-highlight-detail-cause-badge",style:[L.causeBadgeLargeText,{color:r.color}],children:r.label.toUpperCase()})})]}),o&&E(d,{style:L.hookChangesContainer,children:e.hookChanges.map((a,c)=>{let s=`${a.type}[${a.index}]`,u={[s]:a.previousValue},p={[s]:a.currentValue};return E(d,{style:L.hookDiffContainer,children:E(Uu,{oldValue:u,newValue:p,theme:"dark",showUnchanged:false})},c)})}),!o&&i&&E(d,{style:L.propsChangesContainer,children:e.changedKeys.filter(a=>!a.includes("(ref only)")).slice(0,5).map((a,c)=>E(d,{style:L.propChangeChip,children:E(h,{testID:`buoy-highlight-detail-changed-${c}`,style:L.propChangeText,children:a})},c))})]})}function ld({render:e,rendersPerSec:t}){let n=e.testID||e.nativeID||e.accessibilityLabel,r=e.measurements;return X(d,{style:L.detailsSection,children:[n&&X(d,{testID:"buoy-highlight-detail-identifiers",style:L.detailsCard,children:[E(h,{style:L.detailsCardTitle,children:"Identifiers"}),e.testID&&E(Mr,{label:"testID",value:e.testID}),e.nativeID&&E(Mr,{label:"nativeID",value:e.nativeID}),e.accessibilityLabel&&E(Mr,{label:"a11y",value:e.accessibilityLabel})]}),X(d,{testID:"buoy-highlight-detail-stats",style:L.statsRow,children:[X(d,{testID:"buoy-highlight-detail-stat-renders",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-renders-value",style:[L.statValue,{color:e.color}],children:e.renderCount}),E(h,{style:L.statLabel,children:"renders"})]}),E(d,{style:L.statDivider}),X(d,{testID:"buoy-highlight-detail-stat-rate",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-rate-value",style:L.statValue,children:t}),E(h,{style:L.statLabel,children:"/sec"})]}),E(d,{style:L.statDivider}),X(d,{testID:"buoy-highlight-detail-stat-tag",style:L.statItem,children:[E(h,{testID:"buoy-highlight-detail-stat-tag-value",style:L.statValue,children:e.nativeTag}),E(h,{style:L.statLabel,children:"tag"})]})]}),r&&X(d,{testID:"buoy-highlight-detail-measure",style:L.measurementsRow,children:[X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"x"}),E(h,{testID:"buoy-highlight-detail-measure-x",style:L.measurementValue,children:Math.round(e.measurements.x)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"y"}),E(h,{testID:"buoy-highlight-detail-measure-y",style:L.measurementValue,children:Math.round(e.measurements.y)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"w"}),E(h,{testID:"buoy-highlight-detail-measure-w",style:L.measurementValue,children:Math.round(e.measurements.width)})]}),X(d,{style:L.measurementItem,children:[E(h,{style:L.measurementLabel,children:"h"}),E(h,{testID:"buoy-highlight-detail-measure-h",style:L.measurementValue,children:Math.round(e.measurements.height)})]})]})]})}function Mr({label:e,value:t}){let n=`buoy-highlight-detail-id-${e.toLowerCase()}`;return X(d,{testID:n,style:L.detailRow,children:[E(h,{style:L.detailLabel,children:e}),E(h,{testID:`${n}-value`,style:L.detailValue,numberOfLines:1,children:t})]})}function sd({render:e,onAddFilter:t}){let[n,r]=Xi(null),o=In(()=>{let s=[];return e.nativeID&&s.push({type:"nativeID",value:e.nativeID,label:"nativeID"}),e.testID&&s.push({type:"testID",value:e.testID,label:"testID"}),e.accessibilityLabel&&s.push({type:"accessibilityLabel",value:e.accessibilityLabel,label:"a11y"}),e.componentName&&s.push({type:"component",value:e.componentName,label:"component"}),s.push({type:"viewType",value:e.viewType,label:"viewType"}),s},[e]),i=n!==null?o[n]:null,l=qt(s=>{r(u=>u===s?null:s)},[]),a=qt(()=>{i&&(t({type:i.type,value:i.value},"include"),r(null))},[i,t]),c=qt(()=>{i&&(t({type:i.type,value:i.value},"exclude"),r(null))},[i,t]);return X(d,{testID:"buoy-highlight-quick",style:L.quickActionsSection,children:[E(h,{style:L.quickActionsTitle,children:"Quick Filters"}),E(d,{style:L.filterOptionsList,children:o.map((s,u)=>E(cd,{testID:`buoy-highlight-quick-${s.type.toLowerCase()}`,label:s.label,value:s.value,isSelected:n===u,onSelect:()=>l(u)},s.type))}),X(d,{style:L.filterActionButtons,children:[X(J,{testID:"buoy-highlight-quick-include",accessibilityRole:"button",accessibilityLabel:"Only show this",style:[L.filterActionButton,L.filterActionButtonInclude,!i&&L.filterActionButtonDisabled],onPress:a,disabled:!i,activeOpacity:.7,children:[E(Eu,{size:14,color:i?F.color.accent:F.color.textTertiary}),E(h,{style:[L.filterActionButtonText,{color:i?F.color.accent:F.color.textTertiary}],children:"Only Show This"})]}),X(J,{testID:"buoy-highlight-quick-exclude",accessibilityRole:"button",accessibilityLabel:"Hide this",style:[L.filterActionButton,L.filterActionButtonExclude,!i&&L.filterActionButtonDisabled],onPress:c,disabled:!i,activeOpacity:.7,children:[E(Ou,{size:14,color:i?F.color.danger:F.color.textTertiary}),E(h,{style:[L.filterActionButtonText,{color:i?F.color.danger:F.color.textTertiary}],children:"Hide This"})]})]})]})}function cd({testID:e,label:t,value:n,isSelected:r,onSelect:o}){return X(J,{testID:e,accessibilityRole:"button",accessibilityLabel:`${t}, ${n}`,style:[L.filterOptionCard,r&&L.filterOptionCardSelected],onPress:o,activeOpacity:.7,children:[E(h,{style:[L.filterOptionLabel,r&&L.filterOptionLabelSelected],children:t}),E(h,{testID:e?`${e}-value`:void 0,style:[L.filterOptionValue,r&&L.filterOptionValueSelected],numberOfLines:1,children:n})]})}var L=be.create({container:{flex:1,backgroundColor:"transparent"},header:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:12,padding:16,paddingBottom:0},scrollView:{flex:1},scrollContent:{padding:16,paddingTop:12,paddingBottom:80,gap:12},headerLeft:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:10},componentName:{fontSize:18,fontWeight:"700",color:F.color.text,flexShrink:1},nativeTypeBadge:{backgroundColor:F.color.bg,paddingVertical:3,paddingHorizontal:8,borderRadius:4},nativeTypeText:{fontSize:11,fontWeight:"600",color:F.color.textTertiary,fontFamily:wt},answerCard:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:6},causeBadgeRow:{flexDirection:"row",alignItems:"center",gap:8},causeBadgeLarge:{paddingVertical:4,paddingHorizontal:10,borderRadius:4},causeBadgeLargeText:{fontSize:11,fontWeight:"700",letterSpacing:.5},causeLabel:{fontSize:12,color:F.color.textSecondary,fontWeight:"500"},hookChangesContainer:{gap:6},hookDiffContainer:{backgroundColor:F.color.bg,borderRadius:6,overflow:"hidden"},propsChangesContainer:{flexDirection:"row",flexWrap:"wrap",gap:4},propChangeChip:{backgroundColor:F.color.bg,paddingVertical:2,paddingHorizontal:6,borderRadius:4},propChangeText:{fontSize:11,color:F.color.text,fontFamily:wt},detailsSection:{gap:10},detailsCard:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:6},detailsCardTitle:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,letterSpacing:.5,textTransform:"uppercase",marginBottom:4},detailRow:{flexDirection:"row",alignItems:"center",gap:8},detailLabel:{fontSize:11,fontWeight:"600",color:F.color.textSecondary,minWidth:55},detailValue:{fontSize:12,color:F.color.text,fontFamily:wt,flex:1},statsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,paddingVertical:10,paddingHorizontal:16},statItem:{flex:1,alignItems:"center"},statValue:{fontSize:16,fontWeight:"700",color:F.color.text,fontFamily:wt},statLabel:{fontSize:10,color:F.color.textTertiary,marginTop:2},statDivider:{width:1,height:24,backgroundColor:F.color.border,marginHorizontal:12},measurementsRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-around",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,paddingVertical:8,paddingHorizontal:12},measurementItem:{flexDirection:"row",alignItems:"baseline",gap:4},measurementLabel:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,textTransform:"uppercase"},measurementValue:{fontSize:12,fontWeight:"600",color:F.color.text,fontFamily:wt},quickActionsSection:{backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.border,padding:12,gap:10},quickActionsTitle:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,letterSpacing:.5,textTransform:"uppercase",marginBottom:2},filterOptionsList:{gap:6},filterOptionCard:{flexDirection:"row",alignItems:"center",backgroundColor:F.color.surfaceElevated,borderRadius:6,paddingVertical:10,paddingHorizontal:12,borderWidth:1,borderColor:"transparent",gap:10},filterOptionCardSelected:{borderColor:F.color.accentBorderStrong,backgroundColor:F.color.accentSoft},filterOptionLabel:{fontSize:10,fontWeight:"600",color:F.color.textTertiary,minWidth:70},filterOptionLabelSelected:{color:F.color.accent},filterOptionValue:{fontSize:12,color:F.color.text,fontFamily:wt,flex:1},filterOptionValueSelected:{color:F.color.text},filterActionButtons:{flexDirection:"row",gap:8,marginTop:12},filterActionButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,paddingVertical:8,paddingHorizontal:10,borderRadius:6,borderWidth:1},filterActionButtonInclude:{backgroundColor:F.color.accentSoft,borderColor:F.color.accentBorderStrong},filterActionButtonExclude:{backgroundColor:F.color.dangerSoft,borderColor:F.color.danger+"40"},filterActionButtonDisabled:{backgroundColor:F.color.surfaceElevated,borderColor:F.color.border,opacity:.5},filterActionButtonText:{fontSize:11,fontWeight:"600"},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:F.color.surface,borderRadius:8,borderWidth:1,borderColor:F.color.warning+"40",paddingVertical:12,paddingHorizontal:16,gap:8},lockedBannerText:{color:F.color.warning,fontSize:13,fontWeight:"600"},lockedBannerSubtext:{color:F.color.textTertiary,fontSize:12}});import{EventStepperFooter as ud}from"@buoy-gg/shared-ui/web";j();import{useState as nt,useCallback as rt}from"react";import{Eye as ua,Filter as $r,Plus as da,X as Rn,Box as ha,Settings as dd,Hash as hd,SectionHeader as ee,night as x,monoFont as St}from"@buoy-gg/shared-ui/web";j();import{Box as gd,Hash as ga,Layers as pd,Eye as fd,Search as md,FileCode as yd,buoyColors as Fr,night as pa,monoFont as fa}from"@buoy-gg/shared-ui/web";import{jsx as xt,jsxs as Er}from"react/jsx-runtime";var ma={viewType:{label:"ViewType",shortLabel:"View",color:pa.color.accent,icon:gd},testID:{label:"testID",shortLabel:"test",color:Fr.success,icon:ga},nativeID:{label:"nativeID",shortLabel:"native",color:"#f59e0b",icon:ga},component:{label:"Component",shortLabel:"Comp",color:"#a855f7",icon:yd},accessibilityLabel:{label:"a11y",shortLabel:"a11y",color:"#ec4899",icon:fd},nativeTag:{label:"tag",shortLabel:"tag",color:Fr.textMuted,icon:pd},any:{label:"Any",shortLabel:"Any",color:Fr.warning,icon:md}};function Yt({type:e,value:t,compact:n=false,badgeOnly:r=false,valueOnly:o=false,shortLabel:i=false,showIcon:l=false,testID:a}){let c=ma[e],s=c.icon,u=i?c.shortLabel:c.label;return o?xt(h,{testID:a?`${a}-value`:void 0,style:[fe.valueOnly,n&&fe.valueOnlyCompact,{color:c.color}],numberOfLines:1,children:t}):r?Er(d,{testID:a,style:[fe.badgeOnly,n&&fe.badgeOnlyCompact,{backgroundColor:c.color+"20",borderColor:c.color+"40"}],children:[l&&xt(s,{size:n?10:12,color:c.color}),xt(h,{style:[fe.badgeOnlyText,n&&fe.badgeOnlyTextCompact,{color:c.color}],children:u})]}):Er(d,{testID:a,accessibilityLabel:`${c.label} ${t}`,style:[fe.container,n&&fe.containerCompact],children:[Er(d,{style:[fe.badge,n&&fe.badgeCompact,{backgroundColor:c.color+"20"}],children:[l&&xt(s,{size:n?8:10,color:c.color}),xt(h,{style:[fe.badgeText,n&&fe.badgeTextCompact,{color:c.color}],children:u})]}),xt(h,{testID:a?`${a}-value`:void 0,style:[fe.value,n&&fe.valueCompact],numberOfLines:1,children:t})]})}var fe=be.create({container:{flexDirection:"row",alignItems:"center",gap:6},containerCompact:{gap:4},badge:{flexDirection:"row",alignItems:"center",paddingVertical:3,paddingHorizontal:6,borderRadius:4,gap:4},badgeCompact:{paddingVertical:2,paddingHorizontal:5,gap:3},badgeText:{fontSize:10,fontWeight:"700"},badgeTextCompact:{fontSize:9},value:{fontSize:12,color:pa.color.text,fontFamily:fa,flex:1},valueCompact:{fontSize:11},badgeOnly:{flexDirection:"row",alignItems:"center",paddingVertical:4,paddingHorizontal:8,borderRadius:6,borderWidth:1,gap:5},badgeOnlyCompact:{paddingVertical:2,paddingHorizontal:6,borderRadius:4,gap:4},badgeOnlyText:{fontSize:11,fontWeight:"600"},badgeOnlyTextCompact:{fontSize:9,fontWeight:"700"},valueOnly:{fontSize:12,fontFamily:fa},valueOnlyCompact:{fontSize:11},categoryBadge:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingLeft:10,paddingRight:6,borderRadius:8,gap:6},categoryBadgeText:{fontSize:11,fontWeight:"600"},categoryBadgeCount:{paddingHorizontal:6,paddingVertical:2,borderRadius:10,minWidth:20,alignItems:"center"},categoryBadgeCountText:{fontSize:10,fontWeight:"600"}});j();function It(e){return String(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function ya(e){return`buoy-highlight-row-${It(e)}`}function ba(e,t){return`buoy-highlight-detected-${It(e)}-${It(t)}`}function va(e,t,n){return`buoy-highlight-${e}-chip-${It(t)}-${It(n)}`}function Rt(e){return`buoy-highlight-setting-${e}`}import{Fragment as Or,jsx as C,jsxs as $}from"react/jsx-runtime";var Xt=e=>ma[e],bd=["any","viewType","testID","nativeID","component","accessibilityLabel"];function Ca({mode:e,onSelect:t,onCancel:n}){return $(d,{nativeID:"__rn_buoy__type-picker",testID:`buoy-highlight-${e}-types`,style:m.typePicker,children:[C(d,{style:m.typePickerRow,children:bd.map(r=>{let o=Xt(r),i=o.icon;return $(J,{testID:`buoy-highlight-${e}-type-${r.toLowerCase()}`,accessibilityRole:"button",accessibilityLabel:o.label,style:[m.typeOption,{backgroundColor:o.color+"15",borderColor:o.color+"40"}],onPress:()=>t(r),children:[C(i,{size:14,color:o.color}),C(h,{style:[m.typeOptionText,{color:o.color}],children:o.label})]},r)})}),C(J,{testID:`buoy-highlight-${e}-types-cancel`,accessibilityRole:"button",accessibilityLabel:"Cancel",onPress:n,style:m.typePickerCancel,children:C(Rn,{size:16,color:x.color.textTertiary})})]})}function Ta({mode:e,type:t,onSubmit:n,onCancel:r}){let[o,i]=nt(""),l=Xt(t),a=()=>{o.trim()&&n(o.trim())};return $(d,{nativeID:"__rn_buoy__pattern-input",testID:`buoy-highlight-${e}-input-row`,style:m.patternInputContainer,children:[C(Yt,{type:t,value:"",badgeOnly:true,compact:true}),C(cn,{testID:`buoy-highlight-${e}-input`,value:o,onChangeText:i,onSubmitEditing:a,placeholder:"Enter pattern...",placeholderTextColor:x.color.placeholder,style:m.patternInput,autoFocus:true,returnKeyType:"done",autoCorrect:false,autoCapitalize:"none"}),o.trim()&&C(J,{testID:`buoy-highlight-${e}-submit`,accessibilityRole:"button",accessibilityLabel:"Add pattern",onPress:a,style:[m.addPatternButton,{backgroundColor:l.color+"20"}],children:C(h,{style:[m.addPatternButtonText,{color:l.color}],children:"Add"})}),C(J,{testID:`buoy-highlight-${e}-input-cancel`,accessibilityRole:"button",accessibilityLabel:"Cancel",onPress:r,style:m.cancelButton,children:C(Rn,{size:16,color:x.color.textTertiary})})]})}function wa({mode:e,pattern:t,onRemove:n}){let r=Xt(t.type);return $(J,{testID:va(e,t.type,t.value),accessibilityRole:"button",accessibilityLabel:`${r.label} ${t.value}, tap to remove`,style:[m.patternChip,{borderColor:r.color+"40"}],onPress:n,activeOpacity:.7,children:[C(d,{style:[m.patternChipBadge,{backgroundColor:r.color+"20"}],children:C(h,{style:[m.patternChipBadgeText,{color:r.color}],children:r.shortLabel})}),C(h,{style:m.patternChipValue,numberOfLines:1,children:t.value}),C(Rn,{size:12,color:x.color.textTertiary,style:m.patternChipX})]})}var vd={label:"All",shortLabel:"All",color:x.color.textSecondary,icon:ha};function Dt({filterType:e,count:t,isSelected:n,onPress:r}){let o=e==="all"?vd:Xt(e),i=`buoy-highlight-detected-cat-${String(e).toLowerCase()}`;return $(J,{testID:i,accessibilityRole:"button",accessibilityLabel:`${o.label}, ${t}`,style:[m.categoryBadge,{backgroundColor:o.color+"15",borderColor:n?o.color:o.color+"40",borderWidth:n?2:1}],onPress:r,children:[C(o.icon,{size:12,color:o.color}),C(h,{style:[m.categoryBadgeText,{color:o.color}],children:o.label}),C(d,{style:[m.categoryBadgeCountBubble,{backgroundColor:o.color+"25"}],children:C(h,{testID:`${i}-count`,style:[m.categoryBadgeCount,{color:o.color}],children:t})})]})}var Cd=[{value:20,label:"20"},{value:50,label:"50"},{value:100,label:"100"},{value:150,label:"150"},{value:250,label:"250"},{value:500,label:"500"}],_r=[{value:"off",label:"Off",description:"No debug logging"},{value:"minimal",label:"Minimal",description:"Only hook value changes"},{value:"verbose",label:"Verbose",description:"Component + cause + changes"},{value:"all",label:"All",description:"Full fiber dump"}];function Sa({filters:e,onFilterChange:t,settings:n,onSettingsChange:r,availableProps:o,activeTab:i}){let[l,a]=nt(false),[c,s]=nt(false),[u,p]=nt(null),[T,y]=nt(null),[b,f]=nt("all"),[S,v]=nt(null),P=(w=>{switch(w){case"viewType":return o.viewTypes.map(N=>({value:N,type:"viewType"}));case"testID":return o.testIDs.map(N=>({value:N,type:"testID"}));case"nativeID":return o.nativeIDs.map(N=>({value:N,type:"nativeID"}));case"component":return o.componentNames.map(N=>({value:N,type:"component"}));case"accessibilityLabel":return o.accessibilityLabels.map(N=>({value:N,type:"accessibilityLabel"}));case"all":default:return[...o.viewTypes.map(N=>({value:N,type:"viewType"})),...o.testIDs.map(N=>({value:N,type:"testID"})),...o.nativeIDs.map(N=>({value:N,type:"nativeID"})),...o.componentNames.map(N=>({value:N,type:"component"})),...o.accessibilityLabels.map(N=>({value:N,type:"accessibilityLabel"}))]}})(b),g=o.viewTypes.length+o.testIDs.length+o.nativeIDs.length+o.componentNames.length+o.accessibilityLabels.length,D=rt((w,N)=>{let le=[...e.includePatterns,{type:w,value:N}];t({includePatterns:le}),p(null)},[e.includePatterns,t]),k=rt((w,N)=>{let le=[...e.excludePatterns,{type:w,value:N}];t({excludePatterns:le}),y(null)},[e.excludePatterns,t]),R=rt(w=>{let N=e.includePatterns.filter((le,ge)=>ge!==w);t({includePatterns:N})},[e.includePatterns,t]),_=rt(w=>{let N=e.excludePatterns.filter((le,ge)=>ge!==w);t({excludePatterns:N})},[e.excludePatterns,t]),Q=rt((w,N)=>{v({type:w,value:N})},[]),z=rt(()=>{S&&(D(S.type,S.value),v(null))},[S,D]),W=rt(()=>{S&&(k(S.type,S.value),v(null))},[S,k]);return C(d,{style:m.container,children:C(Be,{nativeID:"__rn_buoy__filter-view",testID:"buoy-highlight-filter-scroll",style:m.scrollView,contentContainerStyle:m.scrollContent,showsVerticalScrollIndicator:false,children:i==="filters"?$(Or,{children:[$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:ua,color:x.color.accent,size:12}),C(ee.Title,{children:"INCLUDE ONLY"}),e.includePatterns.length>0&&C(ee.Badge,{testID:"buoy-highlight-include-count",count:e.includePatterns.length,color:x.color.accent})]}),C(h,{style:m.sectionDescription,children:"Show only components matching these patterns. If any are set, components must match at least one."}),e.includePatterns.length>0&&C(d,{style:m.patternChips,children:e.includePatterns.map((w,N)=>C(wa,{mode:"include",pattern:w,onRemove:()=>R(N)},`${w.type}-${w.value}-${N}`))}),C(d,{style:m.addPatternRow,children:l?C(Ca,{mode:"include",onSelect:w=>{a(false),p(w)},onCancel:()=>a(false)}):u?C(Ta,{mode:"include",type:u,onSubmit:w=>D(u,w),onCancel:()=>p(null)}):$(J,{testID:"buoy-highlight-include-add",accessibilityRole:"button",accessibilityLabel:"Add include pattern",style:[m.addButton,{borderColor:x.color.accentBorderStrong}],onPress:()=>a(true),children:[C(da,{size:14,color:x.color.accent}),C(h,{style:[m.addButtonText,{color:x.color.accent}],children:"Add include pattern"})]})})]}),$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:$r,color:x.color.accent,size:12}),C(ee.Title,{children:"EXCLUDE"}),e.excludePatterns.length>0&&C(ee.Badge,{testID:"buoy-highlight-exclude-count",count:e.excludePatterns.length,color:x.color.accent})]}),C(h,{style:m.sectionDescription,children:"Hide components matching these patterns from the list."}),e.excludePatterns.length>0&&C(d,{style:m.patternChips,children:e.excludePatterns.map((w,N)=>C(wa,{mode:"exclude",pattern:w,onRemove:()=>_(N)},`${w.type}-${w.value}-${N}`))}),C(d,{style:m.addPatternRow,children:c?C(Ca,{mode:"exclude",onSelect:w=>{s(false),y(w)},onCancel:()=>s(false)}):T?C(Ta,{mode:"exclude",type:T,onSubmit:w=>k(T,w),onCancel:()=>y(null)}):$(J,{testID:"buoy-highlight-exclude-add",accessibilityRole:"button",accessibilityLabel:"Add exclude pattern",style:[m.addButton,{borderColor:x.color.accentBorderStrong}],onPress:()=>s(true),children:[C(da,{size:14,color:x.color.accent}),C(h,{style:[m.addButtonText,{color:x.color.accent}],children:"Add exclude pattern"})]})})]}),$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:hd,color:x.color.warning,size:12}),C(ee.Title,{children:"RENDER COUNT RANGE"}),(e.minRenderCount!==void 0||e.maxRenderCount!==void 0)&&C(ee.Badge,{count:1,color:x.color.warning})]}),C(h,{style:m.sectionDescription,children:"Show only components with render count in a specific range."}),$(d,{nativeID:"__rn_buoy__render-count-range",testID:"buoy-highlight-range",style:m.renderCountRangeContainer,children:[$(d,{style:m.renderCountInputRow,children:[$(d,{style:m.renderCountInputGroup,children:[C(h,{style:m.renderCountLabel,children:"Min"}),C(cn,{value:e.minRenderCount!==void 0?String(e.minRenderCount):"",onChangeText:w=>{let N=parseInt(w,10);w===""||w===void 0?t({minRenderCount:void 0}):!isNaN(N)&&N>=0&&t({minRenderCount:N})},testID:"buoy-highlight-range-min",placeholder:"0",placeholderTextColor:x.color.placeholder,style:m.renderCountInput,keyboardType:"number-pad",returnKeyType:"done"})]}),C(h,{style:m.renderCountSeparator,children:"to"}),$(d,{style:m.renderCountInputGroup,children:[C(h,{style:m.renderCountLabel,children:"Max"}),C(cn,{value:e.maxRenderCount!==void 0?String(e.maxRenderCount):"",onChangeText:w=>{let N=parseInt(w,10);w===""||w===void 0?t({maxRenderCount:void 0}):!isNaN(N)&&N>=0&&t({maxRenderCount:N})},testID:"buoy-highlight-range-max",placeholder:"\u221E",placeholderTextColor:x.color.placeholder,style:m.renderCountInput,keyboardType:"number-pad",returnKeyType:"done"})]})]}),(e.minRenderCount!==void 0||e.maxRenderCount!==void 0)&&$(J,{testID:"buoy-highlight-range-clear",accessibilityRole:"button",accessibilityLabel:"Clear range",style:m.clearRangeButton,onPress:()=>t({minRenderCount:void 0,maxRenderCount:void 0}),children:[C(Rn,{size:12,color:x.color.warning}),C(h,{style:m.clearRangeButtonText,children:"Clear Range"})]})]})]}),$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:ha,color:x.color.textSecondary,size:12}),C(ee.Title,{children:"DETECTED ITEMS"})]}),C(h,{style:m.sectionDescription,children:"Tap an item to quickly add it as an exclude pattern."}),$(Be,{horizontal:true,showsHorizontalScrollIndicator:false,style:m.categoryBadgeScroll,contentContainerStyle:m.categoryBadgeScrollContent,children:[g>0&&C(Dt,{filterType:"all",count:g,isSelected:b==="all",onPress:()=>f("all")}),o.viewTypes.length>0&&C(Dt,{filterType:"viewType",count:o.viewTypes.length,isSelected:b==="viewType",onPress:()=>f("viewType")}),o.testIDs.length>0&&C(Dt,{filterType:"testID",count:o.testIDs.length,isSelected:b==="testID",onPress:()=>f("testID")}),o.nativeIDs.length>0&&C(Dt,{filterType:"nativeID",count:o.nativeIDs.length,isSelected:b==="nativeID",onPress:()=>f("nativeID")}),o.componentNames.length>0&&C(Dt,{filterType:"component",count:o.componentNames.length,isSelected:b==="component",onPress:()=>f("component")}),o.accessibilityLabels.length>0&&C(Dt,{filterType:"accessibilityLabel",count:o.accessibilityLabels.length,isSelected:b==="accessibilityLabel",onPress:()=>f("accessibilityLabel")})]}),C(d,{nativeID:"__rn_buoy__detected-items",testID:"buoy-highlight-detected",style:m.detectedItemsContainer,children:P.length>0?C(Be,{testID:"buoy-highlight-detected-scroll",style:m.detectedItemsScroll,contentContainerStyle:m.detectedItems,nestedScrollEnabled:true,showsVerticalScrollIndicator:true,children:P.map(w=>{let N=Xt(w.type);return C(J,{testID:ba(w.type,w.value),accessibilityRole:"button",accessibilityLabel:`${N.label} ${w.value}`,style:[m.detectedItem,{borderColor:N.color+"40"}],onPress:()=>Q(w.type,w.value),children:b==="all"?C(Yt,{type:w.type,value:w.value,compact:true,shortLabel:true}):C(h,{style:m.detectedItemText,numberOfLines:1,children:w.value})},`${w.type}-${w.value}`)})}):C(h,{testID:"buoy-highlight-detected-empty",style:m.emptyText,children:"No items detected yet. Start tracking to see components here."})})]}),C(Qo,{visible:S!==null,transparent:true,animationType:"fade",onRequestClose:()=>v(null),children:C(Xo,{accessible:false,testID:"buoy-highlight-detected-popup-backdrop",style:m.modalOverlay,onPress:()=>v(null),children:C(d,{accessible:false,testID:"buoy-highlight-detected-popup",style:m.actionPopup,children:S&&$(Or,{children:[C(d,{style:m.actionPopupHeader,children:C(Yt,{type:S.type,value:S.value,compact:true,shortLabel:true})}),$(d,{style:m.actionPopupButtons,children:[$(J,{testID:"buoy-highlight-detected-popup-include",accessibilityRole:"button",accessibilityLabel:"Include only",style:[m.actionPopupButton,m.actionPopupInclude],onPress:z,children:[C(ua,{size:16,color:x.color.accent}),C(h,{style:[m.actionPopupButtonText,{color:x.color.accent}],children:"Include Only"})]}),$(J,{testID:"buoy-highlight-detected-popup-exclude",accessibilityRole:"button",accessibilityLabel:"Exclude",style:[m.actionPopupButton,m.actionPopupExclude],onPress:W,children:[C($r,{size:16,color:x.color.accent}),C(h,{style:[m.actionPopupButtonText,{color:x.color.accent}],children:"Exclude"})]})]}),C(J,{testID:"buoy-highlight-detected-popup-cancel",accessibilityRole:"button",accessibilityLabel:"Cancel",style:m.actionPopupCancel,onPress:()=>v(null),children:C(h,{style:m.actionPopupCancelText,children:"Cancel"})})]})})})}),$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:$r,color:x.color.textTertiary,size:12}),C(ee.Title,{children:"HOW FILTERS WORK"})]}),C(d,{style:m.howItWorks,children:$(h,{style:m.howItWorksText,children:[C(h,{style:m.howItWorksBold,children:"Any:"})," Matches against all fields",`
|
|
33
|
+
`,C(h,{style:m.howItWorksBold,children:"ViewType:"})," Native component class (RCTView, RCTText)",`
|
|
34
|
+
`,C(h,{style:m.howItWorksBold,children:"testID:"})," Component testID prop",`
|
|
35
|
+
`,C(h,{style:m.howItWorksBold,children:"Component:"})," React component name from fiber"]})})]})]}):C(Or,{children:$(d,{style:m.section,children:[$(ee,{children:[C(ee.Icon,{icon:dd,color:x.color.textTertiary,size:12}),C(ee.Title,{children:"SETTINGS"})]}),$(d,{style:m.settingsSection,children:[$(d,{style:m.settingItem,children:[$(d,{style:m.settingHeader,children:[C(h,{style:m.settingLabel,children:"Show Render Count"}),C(gt,{testID:Rt("showRenderCount"),value:n.showRenderCount,onValueChange:w=>{r({showRenderCount:w}),!w&&n.trackRenderCauses&&r({trackRenderCauses:false})},trackColor:{false:x.color.surfaceElevated,true:x.color.accent+"80"},thumbColor:n.showRenderCount?x.color.accent:x.color.knob})]}),C(h,{style:m.settingDescription,children:"Display render count badge on highlights. Disabling improves performance by skipping count tracking."})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:[m.settingLabel,!n.showRenderCount&&m.settingLabelDisabled],children:"Track Render Causes"}),C(gt,{testID:Rt("trackRenderCauses"),value:n.trackRenderCauses,onValueChange:w=>r({trackRenderCauses:w}),trackColor:{false:x.color.surfaceElevated,true:x.color.warning+"80"},thumbColor:n.trackRenderCauses?x.color.warning:x.color.knob,disabled:!n.showRenderCount})]}),$(h,{style:m.settingDescription,children:["Detect WHY components render (props, hooks, parent re-render).",!n.showRenderCount&&$(h,{style:m.settingWarning,children:[`
|
|
36
|
+
`,'Requires "Show Render Count" to be enabled.']})]})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:[m.settingLabel,!n.trackRenderCauses&&m.settingLabelDisabled],children:"Enable Render History"}),C(gt,{testID:Rt("enableRenderHistory"),value:n.enableRenderHistory,onValueChange:w=>r({enableRenderHistory:w}),trackColor:{false:x.color.surfaceElevated,true:x.color.accent+"80"},thumbColor:n.enableRenderHistory?x.color.accent:x.color.knob,disabled:!n.trackRenderCauses})]}),$(h,{style:m.settingDescription,children:["Store render events for each component to view in the History tab.",!n.trackRenderCauses&&$(h,{style:m.settingWarning,children:[`
|
|
37
|
+
`,'Requires "Track Render Causes" to be enabled.']})]})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:m.settingLabel,children:"Debug Log Level"}),C(d,{style:m.settingValue,children:C(h,{testID:"buoy-highlight-setting-debugLogLevel-value",style:[m.settingValueText,n.debugLogLevel!=="off"&&{color:x.color.warning}],children:_r.find(w=>w.value===n.debugLogLevel)?.label||"Off"})})]}),C(h,{style:m.settingDescription,children:"Control console logging verbosity for render cause detection."}),C(d,{style:m.batchSizePresets,children:_r.map(w=>C(J,{style:[m.batchSizePreset,n.debugLogLevel===w.value&&m.batchSizePresetActive,w.value!=="off"&&n.debugLogLevel===w.value&&{backgroundColor:x.color.warningSoft,borderColor:x.color.warning}],onPress:()=>r({debugLogLevel:w.value}),testID:`buoy-highlight-preset-log-${w.value}`,accessibilityRole:"button",accessibilityLabel:`Debug log level ${w.label}`,children:C(h,{style:[m.batchSizePresetText,n.debugLogLevel===w.value&&m.batchSizePresetTextActive,w.value!=="off"&&n.debugLogLevel===w.value&&{color:x.color.warning}],children:w.label})},w.value))}),$(h,{style:m.settingDescriptionMuted,children:[_r.find(w=>w.value===n.debugLogLevel)?.description,n.debugLogLevel!=="off"&&" \u2022 Check Metro console for logs"]})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:m.settingLabel,children:"Batch Size"}),C(d,{style:m.settingValue,children:C(h,{testID:"buoy-highlight-setting-batchSize-value",style:m.settingValueText,children:n.batchSize})})]}),C(h,{style:m.settingDescription,children:"Maximum components to highlight per render update. Higher values capture more re-renders but may impact performance on complex screens."}),C(d,{style:m.batchSizePresets,children:Cd.map(w=>C(J,{style:[m.batchSizePreset,n.batchSize===w.value&&m.batchSizePresetActive],onPress:()=>r({batchSize:w.value}),testID:`buoy-highlight-preset-batch-${w.value}`,accessibilityRole:"button",accessibilityLabel:`Batch size ${w.label}`,children:C(h,{style:[m.batchSizePresetText,n.batchSize===w.value&&m.batchSizePresetTextActive],children:w.label})},w.value))})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:m.settingLabel,children:"Show host views"}),C(gt,{testID:Rt("showHostViews"),value:!!n.showHostViews,onValueChange:w=>r({showHostViews:w}),trackColor:{false:x.color.surfaceElevated,true:x.color.accent+"80"},thumbColor:n.showHostViews?x.color.accent:x.color.knob})]}),C(h,{style:m.settingDescription,children:"Include anonymous View / RCTView / Text hosts. Off by default so the list is named composites (what actually re-rendered)."})]}),$(d,{style:[m.settingItem,m.settingItemSpaced],children:[$(d,{style:m.settingHeader,children:[C(h,{style:m.settingLabel,children:"Highlight Dev Tools"}),C(gt,{testID:Rt("excludeDevTools"),value:!n.excludeDevTools,onValueChange:w=>r({excludeDevTools:!w}),trackColor:{false:x.color.surfaceElevated,true:x.color.accent+"80"},thumbColor:n.excludeDevTools?x.color.knob:x.color.accent})]}),$(h,{style:m.settingDescription,children:["Show re-render highlights on Buoy dev tools (floating menu, modals, etc.). Useful for optimizing the dev tools themselves.",!n.excludeDevTools&&$(h,{style:m.settingWarning,children:[`
|
|
38
|
+
`,"The highlight overlay is always excluded to prevent infinite loops."]})]})]})]})]})})})})}var m=be.create({container:{flex:1,backgroundColor:"transparent"},scrollView:{flex:1},scrollContent:{paddingHorizontal:16,paddingTop:12,paddingBottom:32},section:{backgroundColor:x.color.surface,borderRadius:8,borderWidth:1,borderColor:x.color.border,marginBottom:12,overflow:"hidden"},sectionDescription:{fontSize:11,color:x.color.textSecondary,paddingHorizontal:16,paddingTop:8,lineHeight:16},patternChips:{flexDirection:"row",flexWrap:"wrap",gap:8,paddingHorizontal:16,paddingTop:12},patternChip:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:6,borderWidth:1,paddingVertical:4,paddingLeft:4,paddingRight:6,maxWidth:"100%",gap:4},patternChipBadge:{paddingVertical:2,paddingHorizontal:5,borderRadius:4},patternChipBadgeText:{fontSize:9,fontWeight:"700"},patternChipValue:{fontSize:11,color:x.color.text,fontFamily:St,flexShrink:1},patternChipX:{marginLeft:2},addPatternRow:{paddingHorizontal:16,paddingTop:12,paddingBottom:16},addButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:10,paddingHorizontal:16,borderRadius:8,borderWidth:1,borderStyle:"dashed",gap:6},addButtonText:{fontSize:12,fontWeight:"500"},typePicker:{flexDirection:"row",alignItems:"center",gap:8},typePickerRow:{flex:1,flexDirection:"row",flexWrap:"wrap",gap:8},typeOption:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingHorizontal:12,borderRadius:6,borderWidth:1,backgroundColor:x.color.surfaceElevated,gap:6},typeOptionText:{fontSize:11,fontWeight:"600"},typePickerCancel:{padding:8},patternInputContainer:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:x.color.border,paddingLeft:4,paddingRight:8,paddingVertical:4,gap:4},patternInput:{flex:1,fontSize:12,color:x.color.text,paddingVertical:6,paddingHorizontal:4},addPatternButton:{paddingVertical:6,paddingHorizontal:10,borderRadius:4},addPatternButtonText:{fontSize:11,fontWeight:"600"},cancelButton:{padding:4},categoryBadgeScroll:{marginTop:12},categoryBadgeScrollContent:{paddingHorizontal:16,gap:8},categoryBadge:{flexDirection:"row",alignItems:"center",paddingVertical:8,paddingLeft:10,paddingRight:6,borderRadius:8,borderWidth:1,gap:6},categoryBadgeText:{fontSize:11,fontWeight:"600"},categoryBadgeCountBubble:{paddingHorizontal:6,paddingVertical:2,borderRadius:10,minWidth:20,alignItems:"center"},categoryBadgeCount:{fontSize:10,fontWeight:"600"},detectedItemsContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:16},detectedItemsScroll:{maxHeight:200},detectedItems:{flexDirection:"row",flexWrap:"wrap",gap:8},detectedItem:{flexDirection:"row",alignItems:"center",backgroundColor:x.color.surfaceElevated,borderRadius:6,borderWidth:1,paddingVertical:6,paddingHorizontal:10,gap:6},detectedItemText:{fontSize:11,color:x.color.text,fontFamily:St},emptyText:{fontSize:11,color:x.color.textTertiary,fontStyle:"italic",textAlign:"center",paddingVertical:16,paddingHorizontal:16},howItWorks:{paddingHorizontal:16,paddingVertical:12},howItWorksText:{fontSize:11,color:x.color.textTertiary,lineHeight:18,fontFamily:St},howItWorksBold:{fontWeight:"700",color:x.color.textSecondary},modalOverlay:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.5)",justifyContent:"center",alignItems:"center",padding:32},actionPopup:{backgroundColor:x.color.surface,borderRadius:12,borderWidth:1,borderColor:x.color.border,width:"100%",maxWidth:300,overflow:"hidden"},actionPopupHeader:{padding:16,borderBottomWidth:1,borderBottomColor:x.color.separator,alignItems:"center"},actionPopupButtons:{flexDirection:"row",padding:12,gap:8},actionPopupButton:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:12,paddingHorizontal:12,borderRadius:8,gap:8},actionPopupInclude:{backgroundColor:x.color.accentSoft},actionPopupExclude:{backgroundColor:x.color.accentSoft},actionPopupButtonText:{fontSize:13,fontWeight:"600"},actionPopupCancel:{padding:12,borderTopWidth:1,borderTopColor:x.color.separator,alignItems:"center"},actionPopupCancelText:{fontSize:13,color:x.color.textTertiary,fontWeight:"500"},settingsSection:{paddingHorizontal:16,paddingTop:8,paddingBottom:16},settingItem:{gap:8},settingItemSpaced:{marginTop:16,paddingTop:16,borderTopWidth:1,borderTopColor:x.color.separator},settingHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},settingLabel:{fontSize:13,fontWeight:"600",color:x.color.text},settingValue:{backgroundColor:x.color.fillSecondary,paddingHorizontal:10,paddingVertical:4,borderRadius:6},settingValueText:{fontSize:12,fontWeight:"700",color:x.color.textTertiary,fontFamily:St},settingDescription:{fontSize:11,color:x.color.textSecondary,lineHeight:16},settingDescriptionMuted:{fontSize:10,color:x.color.textTertiary,lineHeight:14,marginTop:4,fontStyle:"italic"},settingLabelDisabled:{color:x.color.textTertiary},settingWarning:{color:x.color.warning,fontWeight:"500"},batchSizePresets:{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:4},batchSizePreset:{paddingVertical:8,paddingHorizontal:14,borderRadius:6,backgroundColor:x.color.surfaceElevated,borderWidth:1,borderColor:x.color.border},batchSizePresetActive:{backgroundColor:x.color.fillSecondary,borderColor:x.color.fillTertiary},batchSizePresetText:{fontSize:12,fontWeight:"500",color:x.color.textSecondary,fontFamily:St},batchSizePresetTextActive:{color:x.color.textTertiary,fontWeight:"700"},renderCountRangeContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:16,gap:12},renderCountInputRow:{flexDirection:"row",alignItems:"center",gap:12},renderCountInputGroup:{flex:1,gap:4},renderCountLabel:{fontSize:10,fontWeight:"600",color:x.color.textTertiary,textTransform:"uppercase",letterSpacing:.5},renderCountInput:{backgroundColor:x.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:x.color.border,paddingVertical:10,paddingHorizontal:12,fontSize:14,fontWeight:"600",color:x.color.text,fontFamily:St,textAlign:"center"},renderCountSeparator:{fontSize:12,color:x.color.textTertiary,marginTop:18},clearRangeButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:8,paddingHorizontal:12,borderRadius:6,backgroundColor:x.color.warningSoft,borderWidth:1,borderColor:x.color.warning+"40",gap:6,alignSelf:"center"},clearRangeButtonText:{fontSize:11,fontWeight:"600",color:x.color.warning}});j();import{useState as Td,useEffect as xa,useRef as wd,useCallback as Wr,memo as Sd,useMemo as Ia}from"react";Ne();j();import xd,{useMemo as Ra}from"react";import{ChevronRight as Id,night as ot,useRelativeTime as Rd,monoFont as Da}from"@buoy-gg/shared-ui/web";import{jsx as Re,jsxs as kt}from"react/jsx-runtime";function Dd({render:e,onPress:t}){let n=Ra(()=>e.testID?{type:"testID",value:e.testID}:e.nativeID?{type:"nativeID",value:e.nativeID}:e.componentName?{type:"component",value:e.componentName}:e.accessibilityLabel?{type:"accessibilityLabel",value:e.accessibilityLabel}:{type:"nativeTag",value:String(e.nativeTag)},[e.testID,e.nativeID,e.componentName,e.accessibilityLabel,e.nativeTag]),r=Ra(()=>e.accessibilityLabel&&n.type!=="accessibilityLabel"?{type:"accessibilityLabel",value:e.accessibilityLabel}:null,[e.accessibilityLabel,n.type]),o=Rd(e.lastRenderTime),i=ya(n.value);return kt(J,{testID:i,accessibilityRole:"button",accessibilityLabel:`${e.displayName}, ${n.type} ${n.value}, ${e.renderCount} renders`,style:Te.container,onPress:()=>t(e),activeOpacity:.7,children:[Re(d,{style:[Te.colorIndicator,{backgroundColor:e.color}]}),kt(d,{style:Te.content,children:[kt(d,{style:Te.topRow,children:[kt(d,{style:Te.viewTypeContainer,children:[Re(h,{testID:`${i}-name`,style:Te.viewType,numberOfLines:1,children:e.displayName}),r?Re(Yt,{type:r.type,value:r.value,compact:true,shortLabel:true}):e.displayName!==e.viewType?Re(h,{testID:`${i}-type`,style:Te.nativeType,numberOfLines:1,children:e.viewType}):null]}),Re(d,{style:[Te.renderCountBadge,{backgroundColor:e.color+"30"}],children:kt(h,{testID:`${i}-count`,style:[Te.renderCount,{color:e.color}],children:[e.renderCount,"x"]})})]}),e.lastRenderCause&&Re(d,{style:Te.causeRow,children:Re(Qi,{testID:`${i}-cause`,cause:e.lastRenderCause,compact:true,showKeys:true,showTwoLevel:true})}),kt(d,{style:Te.bottomRow,children:[Re(d,{style:Te.identifierContainer,children:Re(Yt,{testID:`${i}-identifier`,type:n.type,value:n.value,compact:true,shortLabel:true})}),Re(h,{testID:`${i}-time`,style:Te.timing,children:o})]})]}),Re(Id,{size:16,color:ot.color.textTertiary})]})}var ka=xd.memo(Dd,(e,t)=>{let n=e.render,r=t.render;return n.id===r.id&&n.renderCount===r.renderCount&&n.color===r.color&&n.lastRenderTime===r.lastRenderTime&&n.lastRenderCause?.type===r.lastRenderCause?.type&&n.lastRenderCause?.componentCause===r.lastRenderCause?.componentCause&&e.onPress===t.onPress}),Te=be.create({container:{flexDirection:"row",alignItems:"center",paddingVertical:10,paddingHorizontal:12,marginHorizontal:12,marginBottom:6,backgroundColor:ot.color.surface,borderRadius:8,borderWidth:1,borderColor:ot.color.border},colorIndicator:{width:4,height:36,borderRadius:2,marginRight:10},content:{flex:1,marginRight:8},topRow:{flexDirection:"row",alignItems:"center",marginBottom:4},causeRow:{marginBottom:4},viewTypeContainer:{flex:1,marginRight:8},viewType:{fontSize:13,fontWeight:"600",color:ot.color.text},nativeType:{fontSize:10,color:ot.color.textTertiary,fontFamily:Da,marginTop:1},accessibilityLabel:{fontSize:10,color:ot.color.accent,fontStyle:"italic",marginTop:1},renderCountBadge:{paddingHorizontal:8,paddingVertical:2,borderRadius:10},renderCount:{fontSize:11,fontWeight:"700",fontFamily:Da},bottomRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},identifierContainer:{flex:1,flexShrink:1,overflow:"hidden"},timing:{fontSize:10,color:ot.color.textTertiary,fontWeight:"500",flexShrink:0}});import{Lock as kd,night as jr,useLimit as Pd,ToolEmptyState as Ld,resolveListEmptyState as Nd}from"@buoy-gg/shared-ui/web";import{jsx as Qt,jsxs as Pa}from"react/jsx-runtime";function zd({searchText:e,filters:t,onSelectRender:n,onStatsChange:r,onRendersChange:o,isTracking:i,isPro:l=false}){let[a,c]=Td(()=>V.getFilteredRenders(e)),s=wd(null);xa(()=>V.subscribe(()=>{let v=V.getFilteredRenders(e);c(v),r(V.getStats()),o?.(v)}),[e,r,o]),xa(()=>{let v=V.getFilteredRenders(e);c(v),o?.(v)},[e,t,o]);let u=Pd("highlightUpdates.components"),p=l?1/0:u,T=Ia(()=>a.slice(0,p),[a,p]),y=Ia(()=>Math.max(0,a.length-p),[a.length,p]),b=Wr(v=>v.id,[]),f=Wr(({item:v,index:P})=>Qt(ka,{render:v,onPress:()=>n(v,P,T)}),[n,T]),S=Wr(()=>y<=0?null:Pa(d,{testID:"buoy-highlight-locked",style:Dn.lockedBanner,children:[Qt(kd,{size:14,color:jr.color.warning}),Pa(h,{testID:"buoy-highlight-locked-text",style:Dn.lockedBannerText,children:[y," more ",y===1?"component":"components"," locked"]}),Qt(h,{style:Dn.lockedBannerSubtext,children:"Upgrade to Pro"})]}),[y]);if(a.length===0){let v=e.trim(),P=V.getStats().totalComponents,g=v?V.getFilteredRenders("").length:0,D=Nd({subject:"components",verb:"tracked",search:e,total:v?g:P,capturing:i,blocked:v&&g===0&&P>0?"The active filters hide everything tracked, so there is nothing to search.":void 0,waiting:{otto:"stare",title:"No renders tracked",message:"Component renders will appear here"},paused:{title:"No renders tracked",message:"Enable tracking to start capturing"}});return Qt(Ld,{...D,testID:"buoy-highlight-empty"})}return Qt(Yo,{testID:"buoy-highlight-list",ref:s,data:T,renderItem:f,keyExtractor:b,contentContainerStyle:Dn.listContent,showsVerticalScrollIndicator:true,initialNumToRender:10,maxToRenderPerBatch:10,windowSize:10,scrollEnabled:false,ListFooterComponent:S})}var Vd=Sd(zd),Dn=be.create({listContent:{paddingTop:8},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:12,paddingHorizontal:16,marginTop:8,gap:8},lockedBannerText:{color:jr.color.warning,fontSize:13,fontWeight:"500"},lockedBannerSubtext:{color:jr.color.textTertiary,fontSize:12}});j();import{memo as Pt}from"react";import{Trash2 as Ad,Search as Bd,Filter as Hd,Pause as Md,Copy as $d,ModalHeader as de,TabSelector as La,night as he,PowerToggleButton as Fd}from"@buoy-gg/shared-ui/web";j();import{useState as Ed,useEffect as Od,memo as _d}from"react";Ne();import{Activity as Wd,night as kn,monoFont as jd}from"@buoy-gg/shared-ui/web";import{jsx as Na,jsxs as Ud}from"react/jsx-runtime";function Gd(){let[e,t]=Ed({totalComponents:0,totalRenders:0});return Od(()=>V.subscribe(()=>{t(V.getStats())}),[]),Ud(d,{nativeID:"__rn_buoy__stats-row",testID:"buoy-highlight-stats",accessibilityLabel:`${e.totalComponents} components tracked`,style:za.headerChip,children:[Na(Wd,{size:12,color:kn.color.accent}),Na(h,{testID:"buoy-highlight-stats-value",style:[za.headerChipValue,{color:kn.color.accent}],children:e.totalComponents})]})}var Kd=_d(Gd),za=be.create({headerChip:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:kn.color.buttonSurface,paddingHorizontal:8,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:kn.color.border},headerChipValue:{fontSize:12,fontWeight:"600",fontFamily:jd}});import{jsx as Y,jsxs as Zt}from"react/jsx-runtime";var qd=Pt(function({isActive:e,searchText:t,onSearchChange:n,onSearchClose:r}){return e?Y(de.Search,{value:t,onChangeText:n,onCancel:()=>{n(""),r()},onDismiss:r,dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search testID, nativeID, component...",accessibilityLabel:"Search renders",iconSize:14,testID:"buoy-highlight-search-field",containerTestID:"buoy-highlight-search-container",containerNativeID:"__rn_buoy__search-container",clearTestID:"buoy-highlight-search-clear"}):null}),Jd=qd,Yd=Pt(function({onSearchToggle:e,onFilterToggle:t,onToggleTracking:n,onToggleFreeze:r,onClear:o,onOpenCopySettings:i,isTracking:l,isFrozen:a,activeFilterCount:c,hasRenders:s}){return Zt(de.Actions,{children:[Y(J,{testID:"buoy-highlight-search",accessibilityRole:"button",accessibilityLabel:"Search renders",onPress:e,style:Le.headerActionButton,children:Y(Bd,{size:14,color:he.color.textSecondary})}),Y(J,{testID:"buoy-highlight-filters",accessibilityRole:"button",accessibilityLabel:c>0?`Filters, ${c} active`:"Filters",onPress:t,style:[Le.headerActionButton,c>0&&Le.activeFilterButton],children:Y(Hd,{size:14,color:c>0?he.color.accent:he.color.textTertiary})}),Y(J,{testID:"buoy-highlight-copy",accessibilityRole:"button",onPress:i,style:[Le.headerActionButton,!s&&Le.headerActionButtonDisabled],disabled:!s,accessibilityLabel:"Open copy settings",children:Y($d,{size:14,color:s?he.color.textSecondary:he.color.textTertiary})}),Y(J,{testID:"buoy-highlight-freeze",accessibilityRole:"button",accessibilityLabel:a?"Unfreeze frame":"Freeze frame",onPress:r,style:[Le.headerActionButton,a&&Le.freezeButton,!l&&Le.headerActionButtonDisabled],disabled:!l,children:Y(Md,{size:14,color:l?a?he.color.accent:he.color.textTertiary:he.color.textTertiary})}),Y(Fd,{testID:"buoy-highlight-power",isEnabled:l,onToggle:n,accessibilityLabel:"Toggle render tracking"}),Y(J,{testID:"buoy-highlight-clear",accessibilityRole:"button",accessibilityLabel:"Clear tracked renders",onPress:o,style:[Le.headerActionButton,!s&&Le.headerActionButtonDisabled],disabled:!s,children:Y(Ad,{size:14,color:s?he.color.textTertiary:he.color.textTertiary})})]})}),Xd=Yd,Qd=Pt(function({onBack:e,isSearchActive:t,searchText:n,onSearchChange:r,onSearchToggle:o,onSearchClose:i,onFilterToggle:l,onToggleTracking:a,onToggleFreeze:c,onClear:s,onOpenCopySettings:u,isTracking:p,isFrozen:T,activeFilterCount:y,hasRenders:b,searchInputRef:f}){return Zt(de,{children:[e&&Y(de.Navigation,{onBack:e}),Y(de.Content,{title:"",children:t?Y(Jd,{isActive:t,searchText:n,onSearchChange:r,onSearchClose:i,searchInputRef:f}):Y(Kd,{})}),Y(Xd,{onSearchToggle:o,onFilterToggle:l,onToggleTracking:a,onToggleFreeze:c,onClear:s,onOpenCopySettings:u,isTracking:p,isFrozen:T,activeFilterCount:y,hasRenders:b})]})}),Zd=Pt(function({onBack:e,activeTab:t,onTabChange:n,activeFilterCount:r=0}){let o=[{key:"filters",label:`Filters${r>0?` (${r})`:""}`},{key:"settings",label:"Settings"}];return Zt(de,{children:[Y(de.Navigation,{onBack:e}),Y(de.Content,{title:"",noMargin:true,children:Y(La,{tabs:o,activeTab:t,onTabChange:i=>n(i),testIDPrefix:"buoy-highlight-filter-tab"})}),Y(de.Actions,{})]})}),eh=Pt(function({onBack:e,activeTab:t,onTabChange:n,hasHistory:r=true}){let o=[{key:"details",label:"Details"},{key:"history",label:"History",disabled:!r}];return Zt(de,{children:[Y(de.Navigation,{onBack:e}),Y(de.Content,{title:"",noMargin:true,children:Y(La,{tabs:o,activeTab:t,onTabChange:i=>n(i),testIDPrefix:"buoy-highlight-detail-tab"})}),Y(de.Actions,{})]})}),th=Pt(function({onBack:e}){return Zt(de,{children:[Y(de.Navigation,{onBack:e}),Y(de.Content,{title:"Copy Settings",testID:"buoy-highlight-copy-title"})]})}),Le=be.create({headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:he.color.buttonSurface,borderWidth:1,borderColor:he.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},activeFilterButton:{backgroundColor:he.color.accentSoft,borderColor:he.color.accentBorderStrong},freezeButton:{backgroundColor:he.color.accentSoft,borderColor:he.color.accentBorderStrong}});j();import{useState as Ur,useCallback as Pn,useMemo as en}from"react";Ne();import{Clock as nh,GitBranch as rh,Database as Va,Lock as oh,formatRelativeTime as Aa,SectionHeader as Lt,EventStepperFooter as Ba,buoyColors as Ha,night as B,useLimit as Ma,ToolEmptyState as ih,monoFont as _e}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as $a}from"@buoy-gg/shared-ui/web/dataViewer";import{Fragment as ah,jsx as H,jsxs as K}from"react/jsx-runtime";function Gr(e){let t=new Date(e),n=t.getHours().toString().padStart(2,"0"),r=t.getMinutes().toString().padStart(2,"0"),o=t.getSeconds().toString().padStart(2,"0"),i=t.getMilliseconds().toString().padStart(3,"0");return`${n}:${r}:${o}.${i}`}function Fa({render:e,disableInternalFooter:t=false,selectedEventIndex:n,onEventIndexChange:r,isPro:o=false}){let[i,l]=Ur(0),a=n??i,c=r??l,[s,u]=Ur("current"),p=en(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((k,R)=>k.timestamp-R.timestamp),[e.renderHistory]),T=Ma("highlightUpdates.historyEvents"),y=o?1/0:T,b=en(()=>p.slice(-y),[p,y]),f=en(()=>Math.max(0,p.length-y),[p.length,y]),S=b.length,v=b[a],P=a>0?b[a-1]:null,g=Pn(()=>{a>0&&c(a-1)},[a,c]),D=Pn(()=>{a<S-1&&c(a+1)},[a,S,c]);if(S===0){let k=V.getSettings().enableRenderHistory;return H(ih,{testID:"buoy-highlight-history-empty",otto:k?"stare":"paused",title:"No Render History",message:k?"History is on and armed \u2014 this component has not re-rendered since. Interact with the app to record one.":"Enable render history tracking in settings to see render events here."})}return K(ah,{children:[K(d,{style:[I.container,{paddingBottom:!t&&S>1?80:0}],children:[f>0&&K(d,{testID:"buoy-highlight-history-locked",style:I.lockedBanner,children:[H(oh,{size:14,color:B.color.warning}),K(h,{testID:"buoy-highlight-history-locked-text",style:I.lockedBannerText,children:[f," older ",f===1?"render":"renders"," locked"]}),H(h,{style:I.lockedBannerSubtext,children:"Upgrade to Pro"})]}),K(d,{style:I.viewToggleContainer,children:[K(J,{testID:"buoy-highlight-history-mode-current",accessibilityRole:"button",accessibilityLabel:"Current state",style:[I.viewToggleCard,s==="current"&&I.viewToggleCardActive],onPress:()=>u("current"),activeOpacity:.8,children:[K(d,{style:I.viewToggleContent,children:[H(Va,{size:16,color:s==="current"?B.color.accent:B.color.textSecondary}),H(h,{style:[I.viewToggleLabel,s==="current"&&I.viewToggleLabelActive],children:"CURRENT STATE"})]}),K(h,{style:[I.viewToggleDescription,s==="current"&&{color:B.color.text}],children:["View render #",v?.renderNumber??0," details"]})]}),K(d,{testID:"buoy-highlight-history-mode-diff",accessibilityLabel:"Diff view, coming soon",style:[I.viewToggleCard,I.viewToggleCardDisabled],children:[K(d,{style:I.viewToggleContent,children:[H(rh,{size:16,color:B.color.textTertiary}),H(h,{style:[I.viewToggleLabel,I.viewToggleLabelDisabled],children:"DIFF VIEW"}),H(d,{style:I.todoBadge,children:H(h,{style:I.todoBadgeText,children:"TODO"})})]}),H(h,{style:[I.viewToggleDescription,{color:B.color.textTertiary}],children:"Compare renders side by side (coming soon)"})]})]}),H(Be,{testID:"buoy-highlight-history-scroll",style:I.contentScroll,contentContainerStyle:I.contentContainer,showsVerticalScrollIndicator:false,children:s==="current"?H(lh,{event:v,render:e}):H(sh,{previousEvent:P,currentEvent:v,render:e})})]}),!t&&H(Ba,{currentIndex:a,totalItems:S,onPrevious:g,onNext:D,itemLabel:"Render",subtitle:Aa(new Date(v?.timestamp??Date.now()))})]})}function lh({event:e,render:t}){if(!e)return H(d,{testID:"buoy-highlight-history-no-event",style:I.noEventContainer,children:H(h,{style:I.noEventText,children:"No event selected"})});let n=Oe[e.cause.type];return K(d,{style:I.currentStateContainer,children:[K(d,{style:I.eventHeader,children:[K(d,{style:I.eventHeaderLeft,children:[K(h,{testID:"buoy-highlight-history-event-title",style:I.eventTitle,children:["Render #",e.renderNumber]}),H(h,{testID:"buoy-highlight-history-event-time",style:I.eventTime,children:Gr(e.timestamp)})]}),K(d,{style:[I.eventBadge,{backgroundColor:t.color+"30"}],children:[H(d,{style:[I.eventBadgeDot,{backgroundColor:t.color}]}),H(h,{testID:"buoy-highlight-history-event-cause",style:[I.eventBadgeText,{color:t.color}],children:e.cause.type.toUpperCase()})]})]}),K(d,{style:I.section,children:[K(Lt,{children:[H(Lt.Icon,{icon:nh,color:n.color,size:12}),H(Lt.Title,{children:"WHY DID THIS RENDER?"})]}),H(d,{style:I.sectionContent,children:H(Zi,{cause:e.cause,nativeType:t.viewType})})]}),e.capturedProps&&Object.keys(e.capturedProps).length>0&&K(d,{style:I.section,children:[K(Lt,{children:[H(Lt.Icon,{icon:Va,color:B.color.accent,size:12}),H(Lt.Title,{children:"CAPTURED PROPS"})]}),H(d,{style:I.sectionContent,children:H(Be,{horizontal:true,showsHorizontalScrollIndicator:false,style:I.propsScrollView,children:H(h,{testID:"buoy-highlight-history-props",style:I.propsJson,children:JSON.stringify(e.capturedProps,null,2)})})})]})]})}function sh({previousEvent:e,currentEvent:t,render:n}){let[r,o]=Ur("props");if(!e||!t)return H(d,{style:I.noEventContainer,children:H(h,{style:I.noEventText,children:"Select an event with a previous event to compare"})});let i=Oe[e.cause.type],l=Oe[t.cause.type],a=e.capturedProps&&t.capturedProps,c=e.capturedState&&t.capturedState;return K(d,{style:I.diffContainer,children:[K(d,{style:I.compareBar,children:[K(d,{style:I.compareSide,children:[K(d,{style:I.compareLabelRow,children:[H(h,{style:[I.compareLabel,{color:Ha.warning}],children:"PREV"}),H(d,{style:[I.compareActionBadge,{backgroundColor:`${i.color}20`}],children:H(h,{style:[I.compareActionText,{color:i.color}],children:e.cause.type.toUpperCase()})})]}),K(d,{style:I.compareMeta,children:[K(h,{style:I.compareIndex,children:["#",e.renderNumber]}),H(h,{style:I.compareTime,children:Gr(e.timestamp)})]})]}),H(d,{style:I.compareDivider,children:H(h,{style:I.compareArrow,children:"\u2192"})}),K(d,{style:I.compareSide,children:[K(d,{style:I.compareLabelRow,children:[H(h,{style:[I.compareLabel,{color:Ha.success}],children:"CUR"}),H(d,{style:[I.compareActionBadge,{backgroundColor:`${l.color}20`}],children:H(h,{style:[I.compareActionText,{color:l.color}],children:t.cause.type.toUpperCase()})})]}),K(d,{style:I.compareMeta,children:[K(h,{style:I.compareIndex,children:["#",t.renderNumber]}),H(h,{style:I.compareTime,children:Gr(t.timestamp)})]})]})]}),K(d,{style:I.diffModeTabs,children:[H(J,{style:[I.diffModeTab,r==="cause"&&I.diffModeTabActive],onPress:()=>o("cause"),activeOpacity:.7,children:H(h,{style:[I.diffModeTabText,r==="cause"&&I.diffModeTabTextActive],children:"CAUSE"})}),H(J,{style:[I.diffModeTab,r==="props"&&I.diffModeTabActive,!a&&I.diffModeTabDisabled],onPress:()=>a&&o("props"),activeOpacity:a?.7:1,children:H(h,{style:[I.diffModeTabText,r==="props"&&I.diffModeTabTextActive,!a&&I.diffModeTabTextDisabled],children:"PROPS"})}),H(J,{style:[I.diffModeTab,r==="state"&&I.diffModeTabActive,!c&&I.diffModeTabDisabled],onPress:()=>c&&o("state"),activeOpacity:c?.7:1,children:H(h,{style:[I.diffModeTabText,r==="state"&&I.diffModeTabTextActive,!c&&I.diffModeTabTextDisabled],children:"STATE"})})]}),r==="cause"&&H(d,{style:I.diffSummary,children:H(Zi,{cause:t.cause,nativeType:n.viewType})}),r==="props"&&H(d,{style:I.treeDiffContainer,children:a?H($a,{oldValue:e.capturedProps,newValue:t.capturedProps,theme:"dark",showUnchanged:true}):K(d,{style:I.noDiffData,children:[H(h,{style:I.noDiffDataTitle,children:"Props Not Captured"}),H(h,{style:I.noDiffDataText,children:'Enable "Capture Props on Render" in settings to see props diff.'})]})}),r==="state"&&H(d,{style:I.treeDiffContainer,children:c?H($a,{oldValue:e.capturedState,newValue:t.capturedState,theme:"dark",showUnchanged:true}):K(d,{style:I.noDiffData,children:[H(h,{style:I.noDiffDataTitle,children:"State Not Captured"}),H(h,{style:I.noDiffDataText,children:'Enable "Capture State on Render" in settings to see state diff.'})]})})]})}function Ea({render:e,selectedEventIndex:t=0,onEventIndexChange:n=()=>{},isPro:r=false}){let o=en(()=>!e.renderHistory||e.renderHistory.length===0?[]:[...e.renderHistory].sort((T,y)=>T.timestamp-y.timestamp),[e.renderHistory]),i=Ma("highlightUpdates.historyEvents"),l=r?1/0:i,a=en(()=>o.slice(-l),[o,l]),c=a.length,s=a[t],u=Pn(()=>{n(Math.max(0,t-1))},[t,n]),p=Pn(()=>{n(Math.min(c-1,t+1))},[t,c,n]);return c<=1?null:H(Ba,{currentIndex:t,totalItems:c,onPrevious:u,onNext:p,itemLabel:"Render",subtitle:s?Aa(new Date(s.timestamp)):void 0})}var I=be.create({container:{flex:1,backgroundColor:"transparent"},emptyContainer:{flex:1,alignItems:"center",justifyContent:"center",padding:32,gap:12},emptyTitle:{fontSize:16,fontWeight:"600",color:B.color.text},emptyText:{fontSize:13,color:B.color.textSecondary,textAlign:"center",lineHeight:18},viewToggleContainer:{flexDirection:"row",padding:12,gap:8},viewToggleCard:{flex:1,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:10,gap:4},viewToggleCardActive:{borderColor:B.color.accentBorderStrong,backgroundColor:B.color.accentSoft},viewToggleCardDisabled:{opacity:.5},todoBadge:{backgroundColor:B.color.fillSecondary,paddingHorizontal:6,paddingVertical:2,borderRadius:4,marginLeft:4},todoBadgeText:{fontSize:9,fontWeight:"700",color:B.color.textTertiary,letterSpacing:.3},viewToggleContent:{flexDirection:"row",alignItems:"center",gap:6},viewToggleLabel:{fontSize:10,fontWeight:"700",color:B.color.textSecondary,letterSpacing:.5},viewToggleLabelActive:{color:B.color.accent},viewToggleLabelDisabled:{color:B.color.textTertiary},viewToggleDescription:{fontSize:11,color:B.color.textTertiary,marginTop:2},contentScroll:{flex:1},contentContainer:{padding:12,paddingTop:0},noEventContainer:{padding:24,alignItems:"center"},noEventText:{fontSize:13,color:B.color.textTertiary},currentStateContainer:{gap:12},eventHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},eventHeaderLeft:{gap:2},eventTitle:{fontSize:15,fontWeight:"700",color:B.color.text},eventTime:{fontSize:11,color:B.color.textTertiary,fontFamily:_e},eventBadge:{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4,borderRadius:12,gap:6},eventBadgeDot:{width:6,height:6,borderRadius:3},eventBadgeText:{fontSize:10,fontWeight:"700",fontFamily:_e},section:{backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,overflow:"hidden"},sectionContent:{padding:12,paddingTop:8},causeContainer:{marginBottom:12},changedList:{marginBottom:12,paddingLeft:4},changedListTitle:{fontSize:11,fontWeight:"600",color:B.color.textSecondary,marginBottom:6},changedItem:{fontSize:12,color:B.color.text,fontFamily:_e,marginBottom:3,paddingLeft:8},propsScrollView:{maxHeight:150},propsJson:{fontSize:11,fontFamily:_e,color:B.color.text,backgroundColor:B.color.bg,padding:10,borderRadius:6},diffContainer:{gap:12},compareBar:{flexDirection:"row",backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:10},compareSide:{flex:1,gap:4},compareLabelRow:{flexDirection:"row",alignItems:"center",gap:8},compareLabel:{fontSize:10,fontWeight:"700",letterSpacing:.5},compareActionBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:4},compareActionText:{fontSize:9,fontWeight:"600"},compareMeta:{flexDirection:"row",alignItems:"center",gap:6},compareIndex:{fontSize:12,fontWeight:"600",color:B.color.text},compareTime:{fontSize:10,color:B.color.textTertiary,fontFamily:_e},compareDivider:{width:30,alignItems:"center",justifyContent:"center"},compareArrow:{fontSize:16,color:B.color.textTertiary},diffSummary:{backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},diffSummaryTitle:{fontSize:11,fontWeight:"600",color:B.color.textSecondary,marginBottom:8},diffChanges:{gap:4},diffChangeItem:{flexDirection:"row",alignItems:"center",gap:6},diffChangeIcon:{fontSize:12,fontWeight:"700",color:B.color.warning,fontFamily:_e},diffChangeKey:{fontSize:12,color:B.color.text,fontFamily:_e},diffNoChanges:{fontSize:12,color:B.color.textTertiary,fontStyle:"italic"},diffPlaceholder:{fontSize:12,color:B.color.textTertiary,fontStyle:"italic",textAlign:"center",padding:16},diffModeTabs:{flexDirection:"row",backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:4,gap:4},diffModeTab:{flex:1,paddingVertical:8,paddingHorizontal:12,borderRadius:6,alignItems:"center"},diffModeTabActive:{backgroundColor:B.color.accentSoft},diffModeTabDisabled:{opacity:.4},diffModeTabText:{fontSize:10,fontWeight:"600",color:B.color.textSecondary,letterSpacing:.5},diffModeTabTextActive:{color:B.color.accent},diffModeTabTextDisabled:{color:B.color.textTertiary},causeDiffContainer:{gap:8,marginBottom:12},causeDiffRow:{flexDirection:"row",alignItems:"center",gap:8},causeDiffLabel:{fontSize:11,fontWeight:"600",color:B.color.textSecondary,minWidth:80},causeDiffValue:{fontSize:12,color:B.color.text,fontFamily:_e,fontWeight:"500"},diffChangesTitle:{fontSize:11,fontWeight:"600",color:B.color.textSecondary,marginBottom:6},treeDiffContainer:{backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,overflow:"hidden",minHeight:150},noDiffData:{padding:24,alignItems:"center",gap:8},noDiffDataTitle:{fontSize:13,fontWeight:"600",color:B.color.text},noDiffDataText:{fontSize:12,color:B.color.textTertiary,textAlign:"center",lineHeight:18},lockedBanner:{flexDirection:"row",alignItems:"center",justifyContent:"center",paddingVertical:10,paddingHorizontal:16,marginHorizontal:12,marginTop:8,backgroundColor:B.color.warningSoft,borderRadius:8,borderWidth:1,borderColor:B.color.warning+"30",gap:8},lockedBannerText:{color:B.color.warning,fontSize:13,fontWeight:"500"},lockedBannerSubtext:{color:B.color.textTertiary,fontSize:12}});j();import{useCallback as Nt,useEffect as ch,useMemo as Ln,useState as Oa}from"react";import{DynamicFilterView as uh,macOSColors as Kr,night as qr,FileText as _a,FileCode as Wa,Zap as ja,Settings as dh,Eye as hh,Layers as gh,ToolbarCopyButton as ph,ExportPreview as fh,monoFont as mh}from"@buoy-gg/shared-ui/web";j();var Jr={format:"summary",topN:25,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},Ua={llm:{format:"summary",topN:25,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},table:{format:"markdown-table",topN:50,minRenders:2,filterCauses:[],groupByName:true,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},json:{format:"json",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:true,sortBy:"renderCount",includeHistory:false},full:{format:"json",topN:-1,minRenders:1,filterCauses:[],groupByName:false,aggregateCauses:false,sortBy:"renderCount",includeHistory:true}};function yh(e){for(let[t,n]of Object.entries(Ua))if(Object.keys(n).every(r=>{let o=e[r],i=n[r];return Array.isArray(o)&&Array.isArray(i)?o.length===i.length&&o.every((l,a)=>l===i[a]):o===i}))return t;return null}var Ie={llm:{label:"LLM",description:"Compact summary for AI",color:"#10B981"},table:{label:"Table",description:"Markdown table",color:"#3B82F6"},json:{label:"JSON",description:"Structured data",color:"#F59E0B"},full:{label:"Full",description:"Everything incl. history",color:"#6B7280"}};j();import{definePersistedSetting as bh,devToolsStorageKeys as vh}from"@buoy-gg/shared-ui/web";var Ga=bh(vh.highlightUpdates.copySettings(),Jr,{sanitize:(e,t)=>({...e,filterCauses:t?.filterCauses??Jr.filterCauses})});async function Ch(e){await Ga.save(e)}async function Th(){return Ga.loadOrNull()}import{Fragment as wh,jsx as zt,jsxs as Sh}from"react/jsx-runtime";var xh=50*1024,Ih=200*1024,Rh=[{value:"mount",label:"Mount"},{value:"props",label:"Props"},{value:"hooks",label:"Hooks"},{value:"state",label:"State"},{value:"parent",label:"Parent"},{value:"context",label:"Context"},{value:"unknown",label:"Unknown"}];function Dh(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function kh(){let e=Date.now();return[{id:"1",nativeTag:1,viewType:"RCTView",displayName:"View",componentName:"PokemonListItem",renderCount:30,firstRenderTime:e-5e3,lastRenderTime:e,color:"#10B981",lastRenderCause:{type:"parent",timestamp:e,componentCause:"parent"}},{id:"2",nativeTag:2,viewType:"RCTView",displayName:"View",componentName:"CartHeader",renderCount:12,firstRenderTime:e-4e3,lastRenderTime:e,color:"#3B82F6",lastRenderCause:{type:"hooks",timestamp:e,componentCause:"state",hookChanges:[{type:"useState",index:2,previousValue:4,currentValue:5}]}},{id:"3",nativeTag:3,viewType:"RCTView",displayName:"View",componentName:"SearchBar",renderCount:8,firstRenderTime:e-3e3,lastRenderTime:e,color:"#F59E0B",lastRenderCause:{type:"props",timestamp:e,componentCause:"props",changedKeys:["query","onChange"]}}]}function Ph({renders:e}){let[t,n]=Oa(Jr),[r,o]=Oa(false);ch(()=>{let v=true;return Th().then(P=>{v&&P&&n(P)}),()=>{v=false}},[]);let i=Nt(v=>{n(v),Ch(v)},[]),l=e.length>0,a=l?e:kh(),c=Ln(()=>yh(t),[t]),s=Ln(()=>od(a,t),[a,t]),u=Ln(()=>s>=Ih?"danger":s>=xh?"warning":"none",[s]),p=Nt(()=>Hr(a,t),[a,t]),T=Nt(v=>{let P=Ua[v];P&&i({...P,filterCauses:[...P.filterCauses]})},[i]),y=Nt((v,P)=>{let[g,D]=v.split("::");if(g==="preset"){T(D);return}if(g==="format"){i({...t,format:P});return}if(g==="sort"){i({...t,sortBy:P});return}if(g==="topN"){i({...t,topN:P});return}if(g==="minRenders"){i({...t,minRenders:P});return}if(g==="cause"){let k=P,R=t.filterCauses.includes(k);i({...t,filterCauses:R?t.filterCauses.filter(_=>_!==k):[...t.filterCauses,k]});return}if(g==="signal"){let k=D;i({...t,[k]:!t[k]});return}},[t,i,T]),b=Nt(()=>{let{totalComponents:v,totalRenders:P}=sa(a);return zt(fh,{expanded:r,onExpandedChange:o,summary:`${v} component${v!==1?"s":""} \xB7 ${P} renders \xB7 ~${Dh(s)}${l?"":" (mock data)"}`,warningLevel:u,warningText:{warning:"Large payload \u2014 preview may be slow",danger:"Very large payload \u2014 try a smaller topN or turn off history"},testIDs:{expand:"buoy-highlight-copy-preview-show",collapse:"buoy-highlight-copy-preview-hide",summary:"buoy-highlight-copy-preview-summary",warning:"buoy-highlight-copy-size-warning"},renderBody:()=>{let g=p();return zt(Be,{testID:"buoy-highlight-copy-preview-scroll",style:Yr.previewScroll,nestedScrollEnabled:true,children:zt(h,{testID:"buoy-highlight-copy-preview-text",style:Yr.previewText,selectable:true,children:g})})}})},[r,a,s,u,l,p]),f=Nt(()=>{let{totalComponents:v}=sa(a),P=l?`${v} components`:"Mock data (no renders captured)";return Sh(wh,{children:[zt(h,{testID:"buoy-highlight-copy-status",style:Yr.statusLabel,children:P}),zt(ph,{value:p})]})},[l,a,p]),S=Ln(()=>({sections:[{id:"presets",title:"Presets",type:"custom",data:[{id:"preset::llm",label:Ie.llm.label,icon:ja,color:Ie.llm.color,value:"llm",isActive:c==="llm",description:Ie.llm.description},{id:"preset::table",label:Ie.table.label,icon:_a,color:Ie.table.color,value:"table",isActive:c==="table",description:Ie.table.description},{id:"preset::json",label:Ie.json.label,icon:Wa,color:Ie.json.color,value:"json",isActive:c==="json",description:Ie.json.description},{id:"preset::full",label:Ie.full.label,icon:gh,color:Ie.full.color,value:"full",isActive:c==="full",description:Ie.full.description},{id:"preset::custom",label:"Custom",icon:dh,color:qr.color.textSecondary,value:"custom",isActive:c===null,description:"User-configured"}]},{id:"format",title:"Format",type:"custom",data:[{id:"format::summary",label:"Summary",icon:ja,color:Kr.semantic.success,value:"summary",isActive:t.format==="summary",description:"Compact, LLM-ready"},{id:"format::markdown-table",label:"Table",icon:_a,color:Kr.semantic.info,value:"markdown-table",isActive:t.format==="markdown-table",description:"Markdown table"},{id:"format::json",label:"JSON",icon:Wa,color:Kr.semantic.warning,value:"json",isActive:t.format==="json",description:"Structured data"}]},{id:"sort",title:"Sort By",type:"custom",data:[{id:"sort::renderCount",label:"Count",value:"renderCount",isActive:t.sortBy==="renderCount",description:"Total renders"},{id:"sort::rate",label:"Rate",value:"rate",isActive:t.sortBy==="rate",description:"Renders / sec"},{id:"sort::name",label:"Name",value:"name",isActive:t.sortBy==="name",description:"Alphabetical"}]},{id:"topN",title:"Top N",type:"custom",data:[{id:"topN::10",label:"10",value:10,isActive:t.topN===10},{id:"topN::25",label:"25",value:25,isActive:t.topN===25},{id:"topN::50",label:"50",value:50,isActive:t.topN===50},{id:"topN::100",label:"100",value:100,isActive:t.topN===100},{id:"topN::-1",label:"All",value:-1,isActive:t.topN===-1}]},{id:"minRenders",title:"Min Renders",type:"custom",data:[{id:"minRenders::1",label:"1",value:1,isActive:t.minRenders===1},{id:"minRenders::2",label:"2",value:2,isActive:t.minRenders===2},{id:"minRenders::3",label:"3",value:3,isActive:t.minRenders===3},{id:"minRenders::5",label:"5",value:5,isActive:t.minRenders===5},{id:"minRenders::10",label:"10",value:10,isActive:t.minRenders===10}]},{id:"causes",title:"Filter Causes",type:"custom",description:t.filterCauses.length===0?"All causes shown":"Only the selected causes shown",data:Rh.map(v=>({id:`cause::${v.value}`,label:v.label,value:v.value,isActive:t.filterCauses.includes(v.value)}))},{id:"signal",title:"Signal Extraction",type:"custom",data:[{id:"signal::groupByName",label:"Group by name",value:"groupByName",isActive:t.groupByName,description:"Collapse list items"},{id:"signal::aggregateCauses",label:"Aggregate causes",value:"aggregateCauses",isActive:t.aggregateCauses,description:"Hook x N"},{id:"signal::includeHistory",label:"Include history",value:"includeHistory",isActive:t.includeHistory,description:"JSON only \u2014 large"}]}],previewSection:{enabled:true,title:"PREVIEW",icon:hh,content:b,headerActions:f},onFilterChange:y}),[t,c,y,b,f]);return zt(uh,{...S})}var Yr=be.create({previewScroll:{maxHeight:360},previewText:{fontFamily:mh,fontSize:11,color:qr.color.text,lineHeight:18},statusLabel:{fontSize:11,fontWeight:"600",color:qr.color.textTertiary,marginRight:8}});import{Fragment as Lh,jsx as re,jsxs as Xr}from"react/jsx-runtime";var Nh=Vu.memo(function(){return Xr(d,{testID:"buoy-highlight-disabled-banner",style:tn.disabledBanner,children:[re(Au,{size:14,color:Kt.color.warning}),re(h,{testID:"buoy-highlight-disabled-text",style:tn.disabledText,children:"Render tracking is disabled"})]})});function Qr({visible:e,onClose:t,onBack:n,onMinimize:r,enableSharedModalDimensions:o=false,initialNativeTag:i,onInitialNativeTagHandled:l,onRenderSelect:a,inline:c=false}){let s=Mu(),[u,p]=ue(false),[T,y]=ue(()=>M.getFrozen()),[b,f]=ue(()=>V.getStats().totalComponents>0),[S,v]=ue(null),[P,g]=ue(0),[D,k]=ue(false),[R,_]=ue(false),[Q,z]=ue([]),[W,w]=ue("filters"),[N,le]=ue("details"),[ge,Ae]=ue(0),[me,On]=ue(""),[ut,Bt]=ue(false),ho=et(null),Ht=et([]),go=et(V.getFilters()),[_n,po]=ue(()=>{let O=V.getFilters();return O.includePatterns.length+O.excludePatterns.length}),[ye,fo]=ue(()=>V.getFilters()),[Wn,mo]=ue(()=>V.getSettings()),yo=et(false),jn=et(false),an=et(false);xe(()=>{!e||yo.current||(yo.current=true)},[e]),xe(()=>{if(!e||jn.current)return;(async()=>{try{let O=await xn.getItem(Tt.highlightUpdates.filters());if(O){let U=JSON.parse(O),oe={includeTestID:new Set(U.includeTestID||[]),includeNativeID:new Set(U.includeNativeID||[]),includeViewType:new Set(U.includeViewType||[]),includeComponent:new Set(U.includeComponent||[]),excludeTestID:new Set(U.excludeTestID||[]),excludeNativeID:new Set(U.excludeNativeID||[]),excludeViewType:new Set(U.excludeViewType||[]),excludeComponent:new Set(U.excludeComponent||[]),includePatterns:U.includePatterns||[],excludePatterns:U.excludePatterns||[]};V.setFilters(oe);let ke=V.getFilters();go.current=ke,fo(ke),po(ke.includePatterns.length+ke.excludePatterns.length)}jn.current=true}catch{}})()},[e]),xe(()=>{if(!jn.current)return;(async()=>{try{let O={includeTestID:Array.from(ye.includeTestID),includeNativeID:Array.from(ye.includeNativeID),includeViewType:Array.from(ye.includeViewType),includeComponent:Array.from(ye.includeComponent),excludeTestID:Array.from(ye.excludeTestID),excludeNativeID:Array.from(ye.excludeNativeID),excludeViewType:Array.from(ye.excludeViewType),excludeComponent:Array.from(ye.excludeComponent),includePatterns:ye.includePatterns,excludePatterns:ye.excludePatterns};await xn.setItem(Tt.highlightUpdates.filters(),JSON.stringify(O))}catch{}})()},[ye]),xe(()=>{if(!e||an.current)return;(async()=>{try{let O=await xn.getItem(Tt.highlightUpdates.settings());if(O){let U=JSON.parse(O),{performanceLogging:oe,excludeDevTools:ke,...Ue}=U;V.setSettings(Ue),mo(V.getSettings())}an.current=true}catch{an.current=true}})()},[e]),xe(()=>{if(!an.current)return;(async()=>{try{let{performanceLogging:O,excludeDevTools:U,...oe}=Wn;await xn.setItem(Tt.highlightUpdates.settings(),JSON.stringify(oe))}catch{}})()},[Wn]),xe(()=>{let O=V.subscribeToState(U=>{p(U.isTracking)});return()=>{O()}},[]),xe(()=>{let O=M.subscribeToFreeze(U=>{y(U)});return()=>{O()}},[]),xe(()=>{ut&&requestAnimationFrame(()=>{ho.current?.focus()})},[ut]),xe(()=>{e||M.setSpotlight(null)},[e]),xe(()=>{if(e&&i!=null){let O=V.getRender(String(i));O&&(v(O),g(0),k(false),M.setSpotlight(O.nativeTag)),l?.()}},[e,i,l]);let bo=te(()=>{M.isInitialized()||M.initialize(),M.toggle()},[]),vo=te(()=>{M.toggleFreeze()},[]),Co=te(()=>{M.clearRenderCounts(),f(false)},[]),To=te(()=>{z(V.getFilteredRenders(me)),_(true)},[me]),wo=te(()=>{_(false)},[]),So=te(O=>{On(O)},[]),fl=te((O,U,oe)=>{v(O),g(U),le("details"),Ae(0),Ht.current=oe,M.setSpotlight(O.nativeTag)},[]);xe(()=>{if(!S)return;let O=String(S.nativeTag);return V.subscribe(()=>{let U=V.getRender(O);U&&v({...U})})},[S?.nativeTag]);let xo=et(null);xe(()=>{!a||!S||xo.current!==S.nativeTag&&(xo.current=S.nativeTag,a(S))},[S,a]);let ml=te(O=>{Ht.current=O},[]),Io=te(()=>{v(null),g(0),me&&Bt(true),M.setSpotlight(null)},[me]),yl=te(()=>{let O=Ht.current;if(P>0){let U=P-1,oe=O[U];oe&&(v(oe),g(U),M.setSpotlight(oe.nativeTag))}},[P]),bl=te(()=>{let O=Ht.current;if(P<O.length-1){let U=P+1,oe=O[U];oe&&(v(oe),g(U),M.setSpotlight(oe.nativeTag))}},[P]),Ro=te(()=>{k(false)},[]),Do=te(()=>{k(true)},[]),ko=te(()=>{Bt(true)},[]),Po=te(()=>{Bt(false)},[]),Un=te(O=>{V.setFilters(O);let U=V.getFilters();go.current=U,fo(U),po(U.includePatterns.length+U.excludePatterns.length)},[]),vl=te((O,U)=>{let oe=V.getFilters(),ke={};U==="include"?oe.includePatterns.some(Ue=>Ue.type===O.type&&Ue.value===O.value)||(ke.includePatterns=[...oe.includePatterns,O]):oe.excludePatterns.some(Ue=>Ue.type===O.type&&Ue.value===O.value)||(ke.excludePatterns=[...oe.excludePatterns,O]),Object.keys(ke).length>0&&(Un(ke),v(null),g(0),M.setSpotlight(null))},[Un]),Cl=te(O=>{V.setSettings(O),mo(V.getSettings())},[]),Tl=te(O=>{f(O.totalComponents>0)},[]),Lo=te(()=>R?re(th,{onBack:wo}):D?re(Zd,{onBack:Ro,activeTab:W,onTabChange:w,activeFilterCount:_n}):S?re(eh,{onBack:Io,activeTab:N,onTabChange:le,hasHistory:(S.renderHistory?.length??0)>0}):re(Qd,{onBack:n,isSearchActive:ut,searchText:me,onSearchChange:So,onSearchToggle:ko,onSearchClose:Po,onFilterToggle:Do,onToggleTracking:bo,onToggleFreeze:vo,onClear:Co,onOpenCopySettings:To,isTracking:u,isFrozen:T,activeFilterCount:_n,hasRenders:b,searchInputRef:ho}),[R,D,S,n,ut,me,u,T,_n,b,W,N,Ro,Io,wo,So,ko,Po,Do,bo,vo,Co,To]),wl=o?Tt.modal.root():Tt.highlightUpdates.modal();if(!e)return null;let Sl=Ht.current.length,No=S?N==="details"?re(ud,{currentIndex:P,totalItems:Sl,onPrevious:yl,onNext:bl,itemLabel:"Component",subtitle:S.componentName||S.displayName||S.viewType}):re(Ea,{render:S,selectedEventIndex:ge,onEventIndexChange:Ae,isPro:s}):null,zo=re(d,{nativeID:"__rn_buoy__highlight-modal",testID:"buoy-highlight-body",style:tn.container,children:R?re(Ph,{renders:Q}):S?N==="details"?re(ca,{render:S,disableInternalFooter:true,onAddFilter:vl,isPro:s}):re(Fa,{render:S,disableInternalFooter:true,selectedEventIndex:ge,onEventIndexChange:Ae,isPro:s}):D?re(Sa,{filters:ye,onFilterChange:Un,settings:Wn,onSettingsChange:Cl,availableProps:V.getAvailableProps(),activeTab:W}):Xr(Lh,{children:[!u&&re(Nh,{}),re(Vd,{searchText:me,filters:ye,onSelectRender:fl,onStatsChange:Tl,onRendersChange:ml,isTracking:u,isPro:s})]})});return c?re(Yi,{children:Xr(d,{style:tn.inlineRoot,children:[re(d,{style:tn.inlineHeader,...Hu,children:Lo()}),zo,No]})}):re(Yi,{children:re(Bu,{visible:e,onClose:t,onMinimize:r,persistenceKey:wl,header:{showToggleButton:true,customContent:Lo()},enablePersistence:true,initialMode:"bottomSheet",enableGlitchEffects:true,disableScrollWrapper:Jo.OS==="web",styles:{},footer:No,footerHeight:S&&(N==="details"||(S.renderHistory?.length??0)>1)?68:0,children:zo})})}function zh(e={}){return re(Qr,{...e,inline:true,visible:true,onClose:()=>{}})}var tn=be.create({inlineRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},inlineHeader:{paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:Kt.color.border,backgroundColor:"transparent"},container:{flex:1,backgroundColor:"transparent"},disabledBanner:{flexDirection:"row",alignItems:"center",gap:8,padding:10,marginHorizontal:12,marginTop:8,backgroundColor:Kt.color.warningSoft,borderRadius:8,borderWidth:1,borderColor:Kt.color.warning+"20"},disabledText:{color:Kt.color.warning,fontSize:11,flex:1}});import{jsx as nn}from"react/jsx-runtime";function Vh({size:e}){let[t,n]=Xn(()=>M.isEnabled());return Qn(()=>M.subscribe(r=>{n(r)}),[]),nn(_o,{size:e,color:t?"#10b981":"#6b7280"})}function Ka(){return null}function qa(e){let[t,n]=Xn(null);Qn(()=>(e.visible&&M.setBadgePressCallback(o=>{n(o)}),()=>{e.visible||M.setBadgePressCallback(null)}),[e.visible]);let r=Ml(()=>{n(null)},[]);return nn(Qr,{...e,initialNativeTag:t,onInitialNativeTagHandled:r})}var Ah={id:"highlight-updates",name:"TOGGLE HIGHLIGHT",description:"Toggle component render highlights",slot:"row",icon:Vh,component:Ka,props:{},launchMode:"toggle-only",onPress:()=>{M.isInitialized()||M.initialize(),M.toggle()}};function Bh(e){let t=e?.enabledColor||"#10b981",n=e?.disabledColor||"#6b7280";e?.autoInitialize&&setTimeout(()=>{M.initialize()},1e3);let r=({size:o})=>{let[i,l]=Xn(()=>M.isEnabled());return Qn(()=>M.subscribe(a=>{l(a)}),[]),nn(_o,{size:o,color:i?t:n})};return{id:e?.id||"highlight-updates",name:e?.name||"TOGGLE HIGHLIGHT",description:e?.description||"Toggle component render highlights",slot:"row",icon:r,component:Ka,props:{},launchMode:"toggle-only",onPress:()=>{M.isInitialized()||M.initialize(),M.toggle()}}}var Hh={id:"highlight-updates-modal",name:"HIGHLIGHT",description:"View component render tracking modal",slot:"both",icon:({size:e})=>nn(Oo,{size:e}),component:qa,props:{enableSharedModalDimensions:false}};function Mh(e){let t=e?.enabledColor||"#10b981",n=e?.disabledColor||"#6b7280";return e?.autoInitialize&&setTimeout(()=>{M.initialize()},1e3),{id:e?.id||"highlight-updates-modal",name:e?.name||"HIGHLIGHT",description:e?.description||"View component render tracking modal",slot:"both",icon:({size:r})=>nn(Oo,{size:r,color:t}),component:qa,props:{enableSharedModalDimensions:false}}}j();j();import{getDOMFiber as $h,getDOMNodeHandle as Fh}from"@buoy-gg/shared-ui/web/utils";var Eh=new Set(["View","Text","TextImpl","Image","ScrollView","FlatList","SectionList","Pressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","TextInput","Switch","ActivityIndicator","Modal","SafeAreaView","SafeAreaProvider","KeyboardAvoidingView","VirtualizedList","Screen","ScreenContainer","ScreenStack","ScreenContentWrapper","GestureHandlerRootView","GestureDetector","Wrapper"]);function Zr(e){let t=e.return,n=t?.elementType??t?.type;return t&&n?.$$typeof===Symbol.for("react.memo")&&(n.type===e.type||n.type===e.elementType)?t:null}function eo(e){let t="",n=e.tag===14||e.tag===15,r=e.tag===11,o=new Set,i=a=>{!a||o.has(a)||o.size>20||(o.add(a),t||(t=a.displayName||(typeof a=="function"?a.name:"")),a.$$typeof===Symbol.for("react.memo")&&(n=true,i(a.type)),a.$$typeof===Symbol.for("react.forward_ref")&&(r=true,i(a.render)))};i(e.elementType),i(e.type);let l=Zr(e);return l&&i(l.elementType??l.type),{name:t||"Anonymous",memo:n,forwardRef:r}}function Ja(e){if(!e||typeof e.type=="string"||![0,1,2,11,14,15].includes(e.tag))return false;let{name:t}=eo(e),n=e._debugSource?.fileName??"";return!Eh.has(t)&&!/^(Animated|RCT|Reanimated|Buoy|DevTools|FloatingDevTools|HighlightUpdates)/.test(t)&&!/[@/]buoy-gg\/|\/react-native\//.test(n)&&!e.memoizedProps?.__buoyDevToolsRoot}function Oh(e){let t=eo(e),n=Zr(e),r=e._debugSource??n?._debugSource;if(typeof r?.fileName=="string"&&r.fileName)t.source={fileName:r.fileName},Number.isFinite(r.lineNumber)&&(t.source.lineNumber=r.lineNumber),Number.isFinite(r.columnNumber)&&(t.source.columnNumber=r.columnNumber);else{let o=e._debugStack??n?._debugStack;typeof o?.stack=="string"&&(t.rawStack=o.stack)}return t}function _h(e){let t=e.child?[e.child]:[],n=0;for(;t.length&&n++<300;){let r=t.shift();if(r._debugOwner===e){let o=r._debugSource;if(typeof o?.fileName=="string"&&o.fileName)return{source:{fileName:o.fileName,...Number.isFinite(o.lineNumber)?{lineNumber:o.lineNumber}:{},...Number.isFinite(o.columnNumber)?{columnNumber:o.columnNumber}:{}}};if(typeof r._debugStack?.stack=="string")return{rawStack:r._debugStack.stack}}r.child&&t.push(r.child),r.sibling&&t.push(r.sibling)}}function Wh(e){let t=[],n=null,r=new Set,o=e;for(;o&&!r.has(o)&&r.size<400&&t.length<7;){r.add(o),Ja(o)&&(t.length||(n=o),t.push(Oh(o)));let l=Zr(o);o=o._debugOwner||l?._debugOwner||l?.return||o.return,l&&o===l&&(o=l._debugOwner||l.return)}if(!t.length)return{found:false,reason:"No app component was found for this view."};let i=n?_h(n):void 0;return{found:true,component:i?{...t[0],definedIn:i}:t[0],owners:t.slice(1)}}function jh(e){return e?.canonical?.internalInstanceHandle||e?._internalInstanceHandle||e?._internalFiberInstanceHandleDEV||$h(e)||null}function Uh(e){return Fh(e)??e?.__nativeTag??e?._nativeTag??e?.nativeTag??e?.canonical?.__nativeTag??e?.canonical?._nativeTag??e?.canonical?.nativeTag??null}var Gh=1e5;function Kh(e){let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__,n=[],r=l=>{try{t?.getFiberRoots?.(l)?.forEach(a=>n.push(a.current))}catch{}};t?.renderers?.forEach((l,a)=>r(a)),n.length||r(1);let o=[...n],i=new Set;for(;o.length;){if(i.size>=Gh)return{fiber:null,capped:true,any:true};let l=o.pop();if(!l||i.has(l))continue;i.add(l),l.sibling&&o.push(l.sibling);let a=l.memoizedProps??{};if(!(l.tag===22&&l.memoizedState!=null||a.__buoyDevToolsRoot||a.activityState===0||a.activityState===1||a.isPageFocused===false||a["aria-hidden"]===true&&(a.activityState!==void 0||"shouldFreeze"in a)||a.isFocused===false&&(a.routeKey!==void 0||"freezeContents"in a))){if(e(l))return{fiber:l,capped:false,any:true};l.child&&o.push(l.child)}}return{fiber:null,capped:false,any:n.length>0}}async function qh(e={}){try{let{nativeTag:t,query:n}=e??{};if(t!==void 0&&(!Number.isInteger(t)||t<0)||n!==void 0&&typeof n!="string")return{found:false,reason:"Pass a valid nativeTag or a text query."};let r=n?.trim();if(t==null&&!r)return{found:false,reason:"Pass a query or nativeTag."};let o=false,i=false,l=s=>{let u=Kh(s);return o||(o=u.capped),i||(i=u.any),u.fiber??void 0},a=s=>l(u=>u.stateNode&&Uh(u.stateNode)===s),c=t!=null?a(t):void 0;if(t==null&&r&&(c=l(s=>Ja(s)&&eo(s).name.toLowerCase()===r.toLowerCase()),!c)){let s=(await dr({})).elements.map(u=>({el:u,score:un(u,{query:r})})).filter(({score:u})=>u>0).sort((u,p)=>p.score-u.score)[0]?.el;s?.nativeTag!=null&&(c=a(s.nativeTag))}return!c&&!i?{found:false,reason:"No React tree was found. Use a dev build."}:c?Wh(jh(c.stateNode)??c):{found:false,reason:o?"The React tree is too big to search fully, and no view matched in the part searched. Pass the nativeTag from describe_screen.":"No view matched. Check describe_screen for its name or tag."}}catch{return{found:false,reason:"Could not read the React tree. Try again in a dev build."}}}Ne();j();j();import{resolveDOMEventEmitter as Jh}from"@buoy-gg/shared-ui/web/utils";var Yh=14,Xh=550,Qh=4e3,Zh=8e3,Ya=600,to=null,Xa=false,no=null,Nn=[],We="idle",je=[],ro=0,De=null;function eg(){if(Xa)return to;Xa=true;let e=Jh();return to=e.emitter,no=e.reason,to}function Vt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Qa(e){let t=e?.nativeEvent;return t?Vt(t.target)??Vt(t.tag):null}function oo(e){let t=e?.nativeEvent;if(!t)return null;let n={x:Vt(t.pageX),y:Vt(t.pageY)};if(n.x!==null&&n.y!==null)return{x:n.x,y:n.y};for(let r of["changedTouches","touches"]){let o=t[r];if(Array.isArray(o)&&o.length){let i=o[0],l=Vt(i?.pageX),a=Vt(i?.pageY);if(l!==null&&a!==null)return{x:l,y:a}}}return null}function Za(e){je.push({...e,seq:++ro}),je.length>Ya&&(je=je.slice(-Ya))}function tg(e){let t=Qa(e);if(t===null)return;let n=oo(e),r=null;try{r=pr(t)}catch{}De={tag:t,x:n?.x??0,y:n?.y??0,t:Date.now(),drift:0,target:r}}function ng(e){if(!De)return;let t=oo(e);if(!t)return;let n=t.x-De.x,r=t.y-De.y;De.drift=Math.max(De.drift,Math.sqrt(n*n+r*r))}function rg(e){let t=De;if(De=null,!t||!t.target)return;let n=oo(e);if(n){let o=n.x-t.x,i=n.y-t.y;t.drift=Math.max(t.drift,Math.sqrt(o*o+i*i))}if(t.drift>Yh)return;let r=Date.now()-t.t;r>Qh||t.target.control!=="text"&&(t.target.control==="toggle"||t.target.control==="slider"||Za({t:Date.now(),kind:r>=Xh?"longPress":"press",target:t.target}))}function og(){De=null}function io(e){let t=Qa(e);if(t===null)return;let n=e.nativeEvent,r,o;if(typeof n.text=="string")r="text",o=n.text;else if(typeof n.value=="boolean")r="toggle",o=n.value;else if(typeof n.value=="number")r="slider",o=n.value;else return;let i=je[je.length-1];if(i&&i.kind===r&&i.target.nativeTag===t&&Date.now()-i.t<Zh){i.value=o,i.t=Date.now();return}let l=null;try{l=pr(t)}catch{}l&&Za({t:Date.now(),kind:r,target:l,value:o})}function ig(){if(We==="capturing")return rn();let e=eg();if(!e)return We="unavailable",rn();try{Nn=[e.addListener("topTouchStart",tg),e.addListener("topTouchMove",ng),e.addListener("topTouchEnd",rg),e.addListener("topTouchCancel",og),e.addListener("topChange",io),e.addListener("topValueChange",io),e.addListener("topSlidingComplete",io)],De=null,We="capturing"}catch(t){Nn=[],We="unavailable",no=t?.message??"addListener failed"}return rn()}function ag(){Nn.forEach(e=>{try{e.remove()}catch{}}),Nn=[],De=null,We==="capturing"&&(We="idle")}function lg(){je=[],ro=0}function rn(){return{status:We,reason:We==="unavailable"?no:null}}function sg(e=0){return{...rn(),records:je.filter(t=>t.seq>e),seq:ro}}j();var el=0,tl=1,nl=11,rl=14,ol=15,zn=1,cg=1e4,ug=300,dg=20,il=false,on=false,ao=false,Vn=false,An=0,it=0,Bn=0,at={},lt=new Map;function al(){return typeof globalThis>"u"?null:globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__??null}function lo(e){let t=e.flags??e.effectTag;return typeof t=="number"?t:0}function ll(e){return e===el||e===tl||e===nl||e===rl||e===ol}function so(e){let t=e.type;try{switch(e.tag){case el:case tl:return t?.displayName||t?.name||"Anonymous";case nl:return t?.displayName||t?.render?.displayName||t?.render?.name||"ForwardRef";case rl:case ol:{let n=t?.type??e.elementType?.type;return t?.displayName||n?.displayName||n?.name||"Memo"}default:return"Anonymous"}}catch{return"Anonymous"}}function hg(e){let t=e.actualDuration;if(typeof t!="number")return null;let n=t;for(let r=e.child;r!=null;r=r.sibling)typeof r.actualDuration=="number"&&(n-=r.actualDuration);return n>0?n:0}var gg=new Set(["View","Text","Image","ImageBackground","ScrollView","FlatList","SectionList","SafeAreaView","KeyboardAvoidingView","StatusBar","ActivityIndicator","RefreshControl","Modal","Switch","Pressable","PlatformPressable","TouchableOpacity","TouchableHighlight","TouchableWithoutFeedback","TouchableNativeFeedback","PressabilityDebugView","AnimatedComponent","Wrapper"]),sl=["Animated(","Pressability","Virtualized","CellRenderer"];function cl(e){if(gg.has(e))return true;for(let t=0;t<sl.length;t++)if(e.startsWith(sl[t]))return true;return false}var ul=40,dl=5;function pg(e,t){if(Object.is(e,t))return true;let n=typeof e;if(n!==typeof t)return false;if(n==="function")return true;if(e===null||t===null||n!=="object")return false;let r=Array.isArray(e);if(r!==Array.isArray(t))return false;if(r){if(e.length!==t.length)return false;for(let l=0;l<e.length;l++)if(!Object.is(e[l],t[l]))return false;return true}let o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return false;for(let l=0;l<o.length;l++){let a=o[l];if(!Object.prototype.hasOwnProperty.call(t,a)||!Object.is(e[a],t[a]))return false}return true}function fg(e,t){let n=e.alternate;if(!n)return{cause:"mount"};let r=e.memoizedProps,o=n.memoizedProps;if(r!==o&&r&&o){let i=false,l=false,a,c=Object.keys(r),s=c.length<ul?c.length:ul;for(let u=0;u<s;u++){let p=c[u],T=o[p],y=r[p];if(!Object.is(T,y)&&(i=true,t&&(a||(a=[]),a.length<dl&&a.push(p)),!pg(T,y)&&(l=true,!t)))break}if(!l&&Object.keys(o).length!==c.length&&(i=true,l=true),i)return{cause:l?"props":"propsUnstable",changedKeys:a}}return Sc(n,e)?{cause:"hooks"}:{cause:"parent"}}function mg(e){for(let t=e.return;t!=null;t=t.return){if(!ll(t.tag)||(lo(t)&zn)===0)continue;let n=so(t);if(!cl(n))return n}}function yg(e,t){let n=so(e),r=hg(e);r!==null&&(ao=true);let o=r??0;it+=1,Bn+=o;let{cause:i,changedKeys:l}=fg(e,Vn);if(at[i]=(at[i]??0)+1,cl(n))return;let a=lt.get(n);if(!a){if(lt.size>=ug)return;a={renders:0,totalSelfMs:0,maxSelfMs:0,causes:{}},lt.set(n,a)}if(a.renders+=1,a.totalSelfMs+=o,o>a.maxSelfMs&&(a.maxSelfMs=o),a.causes[i]=(a.causes[i]??0)+1,Vn){if(l){a.changedProps||(a.changedProps=new Set);for(let c=0;c<l.length&&!(a.changedProps.size>=dl);c++)a.changedProps.add(l[c])}t&&!a.parentName&&(a.parentName=t)}}function bg(e){let t=e?.current;if(!t)return;let n=it,r=0,o=t;for(;o!=null&&(r+=1,!(r>cg));){let i=false,l=ll(o.tag);if(o.memoizedProps?.__buoyDevToolsRoot)i=true;else if(l){let a=so(o);qc(a)?i=true:Kc(a)||(lo(o)&zn)!==0&&yg(o,Vn?mg(o):void 0)}if(!i){let a=o.subtreeFlags;if(!(typeof a=="number"&&(a&zn)===0&&(lo(o)&zn)===0)&&o.child!=null){o=o.child;continue}}for(;o!=null;){if(o===t)return hl(n);if(o.sibling!=null){o=o.sibling;break}o=o.return}}hl(n)}function hl(e){it>e&&(An+=1)}function vg(){if(il)return true;let e=al();if(!e)return false;let t=e.onCommitFiberRoot;return e.onCommitFiberRoot=function(n,r,...o){if(on)try{bg(r)}catch{}return typeof t=="function"?t.call(e,n,r,...o):void 0},il=true,true}function Cg(){if(typeof Z<"u"&&!Z)return false;let e=al();return!!(e&&e.renderers&&e.renderers.size>0)}function Tg(){return on}function wg(e){vg()&&(lt=new Map,ao=false,Vn=e?.detail===true,An=0,it=0,Bn=0,at={},on=true)}function Sg(){if(!on&&it===0&<.size===0)return null;on=false;let e=Array.from(lt.entries()).sort((n,r)=>{let o=r[1].totalSelfMs-n[1].totalSelfMs;return o!==0?o:r[1].renders-n[1].renders}).slice(0,dg).map(([n,r])=>({name:n,renders:r.renders,totalMs:Hn(r.totalSelfMs),maxMs:Hn(r.maxSelfMs),avgMs:r.renders>0?Hn(r.totalSelfMs/r.renders):0,causes:r.causes,...r.changedProps&&r.changedProps.size>0?{changedProps:Array.from(r.changedProps)}:null,...r.parentName?{parentName:r.parentName}:null})),t={totalCommits:An,totalRenders:it,capturedDurations:ao,totalRenderMs:Hn(Bn),wastedRenders:(at.parent??0)+(at.propsUnstable??0),causes:at,topComponents:e};return lt=new Map,An=0,it=0,Bn=0,at={},t}function Hn(e){return Math.round(e*100)/100}var st={isSupported:Cg,isCapturing:Tg,startCapture:wg,stopCapture:Sg};function Mn(){M.isInitialized()||M.initialize()}function co(e){if(!e)return;let{hookChanges:t,...n}=e;return n}function xg(e){let{renderHistory:t,lastRenderCause:n,...r}=e;return{...r,lastRenderCause:co(n),historyCount:t?.length??0}}function Ig(e){try{return JSON.stringify(e),e}catch{return{...e,lastRenderCause:co(e.lastRenderCause),renderHistory:e.renderHistory?.map(t=>({...t,capturedProps:void 0,capturedState:void 0,cause:co(t.cause)??t.cause}))}}}function Rg(){return st.isSupported()?(st.startCapture({detail:true}),{ok:true}):{ok:false,reason:"render capture needs a dev build with the React DevTools hook available"}}function Dg(){return{summary:st.stopCapture()}}var kg={version:3,getSnapshot:()=>({enabled:M.isEnabled(),frozen:M.getFrozen(),highlightsSuppressed:M.getHighlightsSuppressed(),renders:V.getRenders().map(xg),trackerState:V.getState()}),subscribe:e=>{let t=M.subscribe(e),n=M.subscribeToFreeze(e),r=V.subscribe(e),o=V.subscribeToState(e);return()=>{t(),n(),r(),o()}},actions:{getComponentSource:async e=>{try{return await qh(e)}catch(t){return{found:false,reason:`Could not read the component's source: ${t instanceof Error?t.message:String(t)}`}}},beginMeasurement:()=>Rg(),endMeasurement:()=>Dg(),getRenderDetail:e=>{let{nativeTag:t}=e??{};if(t==null)return{found:false,reason:"missing nativeTag"};let n=V.getRender(String(t));return n?{found:true,nativeTag:t,render:Ig(n)}:{found:false,reason:"unknown nativeTag"}},toggle:()=>{Mn(),M.toggle()},setEnabled:e=>{Mn(),M.setEnabled(e.enabled)},toggleFreeze:()=>{M.toggleFreeze()},clearRenderCounts:()=>{M.clearRenderCounts()},setSpotlight:e=>{M.setSpotlight(e.nativeTag)},locateComponent:e=>(Mn(),M.locateComponent(e??{})),setSilentTracking:e=>{Mn(),M.setSilentTracking(e.enabled??false)},describeScreen:e=>dr(e??{}),tapElement:e=>rc(e??{}),waitFor:e=>sc(e??{}),hitTest:e=>Cc(e??{x:.5,y:.5}),readMaps:()=>Tc(),startTouchCapture:()=>ig(),stopTouchCapture:()=>(ag(),rn()),clearTouchCapture:()=>(lg(),{ok:true}),readTouchCapture:e=>sg(e?.sinceSeq??0)}};j();import{useEffect as $n,useState as uo,useRef as Fn,useCallback as gl,useLayoutEffect as Pg}from"react";import{night as En,monoFont as Lg}from"@buoy-gg/shared-ui/web";ln();Ne();import{Fragment as Ng,jsx as At,jsxs as pl}from"react/jsx-runtime";var zg=1e3;function Vg({onBadgePress:e}={}){let[t,n]=uo([]),[r,o]=uo(()=>M.getFrozen()),[i,l]=uo(null),a=Fn(null),c=Fn(0),s=Fn(0),u=Fn(r);u.current=r,Ke.isEnabled()&&(c.current=performance.now(),s.current=t.length),Pg(()=>{if(Ke.isEnabled()&&c.current>0&&s.current>0){let f=performance.now()-c.current;Al(s.current,f)}}),$n(()=>M.subscribeToFreeze(f=>{o(f)}),[]),$n(()=>V.subscribeToFilters(()=>{n(f=>f.filter(S=>{let v=V.getRender(String(S.id));return v?V.shouldShowRender(v):true}))}),[]),$n(()=>(M.setSpotlightCallback(f=>{l(f)}),()=>{M.setSpotlightCallback(null)}),[]);let p=gl(f=>{let S=Date.now(),v=f.map(P=>({...P,timestamp:S}));n(P=>{let g=[...P];for(let D of v){let k=g.findIndex(R=>R.id===D.id);k>=0?g[k]=D:g.push(D)}return g})},[]);$n(()=>(M.setHighlightCallback(p),a.current=setInterval(()=>{if(u.current)return;let f=Date.now();n(S=>S.filter(v=>f-v.timestamp<zg))},50),()=>{M.setHighlightCallback(null),a.current&&clearInterval(a.current)}),[p]);let T=e||M.getBadgePressCallback(),y=gl(f=>{e?e(f):M.handleBadgePress(f)},[e]),b=i?V.getRender(String(i)):null;return t.length===0&&!b?.measurements?null:pl(d,{style:ct.overlay,pointerEvents:"box-none",nativeID:"highlight-updates-overlay",children:[b?.measurements&&pl(Ng,{children:[At(d,{pointerEvents:"none",nativeID:"__spotlight_highlight__",style:[ct.spotlightHighlight,{left:b.measurements.x-3,top:b.measurements.y-3,width:b.measurements.width+6,height:b.measurements.height+6}]}),At(d,{pointerEvents:"none",style:[ct.spotlightLabel,{left:b.measurements.x,top:b.measurements.y+b.measurements.height+4}],children:At(h,{style:ct.spotlightLabelText,children:b.componentName||b.displayName||b.viewType})})]}),t.map(f=>At(d,{pointerEvents:"box-none",nativeID:`__highlight_rect_${f.id}__`,style:[ct.highlight,{left:f.x,top:f.y,width:f.width,height:f.height,borderColor:f.color}],children:f.count>0&&At(d,{style:[ct.badge,{backgroundColor:f.color}],nativeID:`__highlight_badge_${f.id}__`,pointerEvents:T?"auto":"none",hitSlop:{top:8,bottom:8,left:8,right:8},onStartShouldSetResponder:()=>!!T,onResponderGrant:()=>y(f.id),children:At(h,{style:ct.badgeText,nativeID:`__highlight_text_${f.id}__`,children:f.count})})},`highlight-${f.id}`))]})}var ct=be.create({overlay:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:999999,elevation:999999,borderWidth:0},highlight:{position:"absolute",borderWidth:2,borderStyle:"solid",backgroundColor:"transparent"},badge:{position:"absolute",top:0,right:0,height:14,borderRadius:0,justifyContent:"center",alignItems:"center",paddingHorizontal:2},badgeText:{color:"#000",fontSize:9,fontWeight:"bold"},spotlightHighlight:{position:"absolute",borderWidth:2,borderStyle:"dashed",borderColor:En.color.accent,backgroundColor:"transparent"},spotlightLabel:{position:"absolute",backgroundColor:En.color.surface,borderWidth:1,borderColor:En.color.accent,paddingHorizontal:8,paddingVertical:3,borderRadius:4},spotlightLabelText:{color:En.color.accent,fontSize:11,fontWeight:"600",fontFamily:Lg}});import{setRenderCaptureProvider as Ag}from"@buoy-gg/shared-ui/web";Ne();ln();Ao();j();function Bg(e){let t={exportedAt:new Date().toISOString(),totalComponents:e.length,totalRenders:e.reduce((n,r)=>n+r.renderCount,0),components:e.map(n=>({componentName:n.componentName||n.displayName,viewType:n.viewType,nativeTag:n.nativeTag,testID:n.testID,nativeID:n.nativeID,accessibilityLabel:n.accessibilityLabel,renderCount:n.renderCount,firstRenderTime:n.firstRenderTime,lastRenderTime:n.lastRenderTime,lastRenderCause:n.lastRenderCause?{type:n.lastRenderCause.type,componentCause:n.lastRenderCause.componentCause,changedKeys:n.lastRenderCause.changedKeys,hookChanges:n.lastRenderCause.hookChanges?.map(r=>({type:r.type,index:r.index,description:r.description}))}:null,renderHistory:n.renderHistory?.map(r=>({renderNumber:r.renderNumber,timestamp:r.timestamp,cause:{type:r.cause.type,componentCause:r.cause.componentCause,changedKeys:r.cause.changedKeys}}))}))};return JSON.stringify(t,null,2)}try{Ag({isSupported:st.isSupported,start:st.startCapture,stop:st.stopCapture,startLiveHighlights:()=>{try{let e=M.isEnabled(),t=M.getHighlightsSuppressed();return M.enable(),()=>{try{e?t&&M.setHighlightsSuppressed(true):M.disable()}catch{}}}catch{return null}}})}catch{}var Hg=e=>{let{RenderTracker:t}=(Ne(),kl(Mo));return t.onRenderEvent(e)};export{Oe as CAUSE_CONFIG,Jt as COMPONENT_CAUSE_CONFIG,st as CommitProfiler,Sa as HighlightFilterView,zh as HighlightToolView,M as HighlightUpdatesController,Qr as HighlightUpdatesModal,Vg as HighlightUpdatesOverlay,Ke as PerformanceLogger,Qi as RenderCauseBadge,ca as RenderDetailView,Ea as RenderHistoryFooter,Fa as RenderHistoryViewer,ka as RenderListItem,V as RenderTracker,Ku as TwoLevelCauseBadge,Ge as VIEW_TYPE_MAP,Oc as capturePropsSnapshot,_c as captureStateSnapshot,Ii as clearRenderCauseState,Mh as createHighlightUpdatesModalTool,Bh as createHighlightUpdatesTool,Cr as detectRenderCause,ba as detectedItemTestID,Ul as disableProfilerLogging,jl as enableProfilerLogging,Bg as generateRendersJson,zl as getAllComponentNames,Nl as getAllNativeViewTypes,qn as getComponentDisplayName,Pl as getNativeViewType,Fc as getRenderCauseStats,Hh as highlightUpdatesModalPreset,Ah as highlightUpdatesPreset,kg as highlightUpdatesSyncAdapter,It as identifierSlug,Go as installProfilerInterceptor,Li as isCapturingBuoyToolRenders,Wl as isInterceptorInstalled,Ll as isKnownViewType,Gl as isLoggingEnabled,Hg as onRenderEvent,va as patternChipTestID,$c as removeRenderCauseState,ya as renderRowTestID,$e as safeCloneForHistory,Wc as setCaptureBuoyToolRenders,Uo as setComparisonCallback,Rt as settingTestID,Ko as uninstallProfilerInterceptor};
|