@buoy-gg/highlight-updates 7.0.40 → 7.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +11 -67
  2. package/lib/commonjs/highlight-updates/HighlightUpdatesOverlay.js +1 -281
  3. package/lib/commonjs/highlight-updates/components/HighlightFilterView.js +1 -1474
  4. package/lib/commonjs/highlight-updates/components/HighlightUpdatesModal.js +1 -641
  5. package/lib/commonjs/highlight-updates/components/IdentifierBadge.js +1 -273
  6. package/lib/commonjs/highlight-updates/components/IsolatedRenderList.js +1 -188
  7. package/lib/commonjs/highlight-updates/components/ModalHeaderContent.js +1 -293
  8. package/lib/commonjs/highlight-updates/components/RenderCauseBadge.js +1 -508
  9. package/lib/commonjs/highlight-updates/components/RenderDetailView.js +1 -846
  10. package/lib/commonjs/highlight-updates/components/RenderHistoryViewer.js +1 -915
  11. package/lib/commonjs/highlight-updates/components/RenderListItem.js +1 -235
  12. package/lib/commonjs/highlight-updates/components/RendersCopySettingsView.js +1 -469
  13. package/lib/commonjs/highlight-updates/components/StatsDisplay.js +1 -73
  14. package/lib/commonjs/highlight-updates/types/copySettings.js +1 -107
  15. package/lib/commonjs/highlight-updates/utils/CommitProfiler.js +1 -446
  16. package/lib/commonjs/highlight-updates/utils/HighlightUpdatesController.js +1 -1920
  17. package/lib/commonjs/highlight-updates/utils/PerformanceLogger.js +26 -359
  18. package/lib/commonjs/highlight-updates/utils/ProfilerInterceptor.js +1 -371
  19. package/lib/commonjs/highlight-updates/utils/RenderCauseDetector.js +5 -1840
  20. package/lib/commonjs/highlight-updates/utils/RenderTracker.js +1 -952
  21. package/lib/commonjs/highlight-updates/utils/ViewTypeMapper.js +1 -264
  22. package/lib/commonjs/highlight-updates/utils/copySettingsStorage.js +1 -32
  23. package/lib/commonjs/highlight-updates/utils/devtoolsComponentNames.js +1 -188
  24. package/lib/commonjs/highlight-updates/utils/namedComposite.js +1 -41
  25. package/lib/commonjs/highlight-updates/utils/ownStateChanged.js +1 -103
  26. package/lib/commonjs/highlight-updates/utils/rawEventEmitter.js +1 -50
  27. package/lib/commonjs/highlight-updates/utils/rawEventEmitter.web.js +1 -0
  28. package/lib/commonjs/highlight-updates/utils/renderExportFormatter.js +1 -58
  29. package/lib/commonjs/highlight-updates/utils/rendersExportFormatter.js +1 -485
  30. package/lib/commonjs/highlight-updates/utils/screenElements.js +1 -1248
  31. package/lib/commonjs/highlight-updates/utils/tapMatch.js +1 -83
  32. package/lib/commonjs/highlight-updates/utils/testIDs.js +1 -68
  33. package/lib/commonjs/highlight-updates/utils/touchCapture.js +1 -277
  34. package/lib/commonjs/index.js +1 -429
  35. package/lib/commonjs/preset.js +1 -278
  36. package/lib/commonjs/sync/highlightUpdatesSyncAdapter.js +1 -235
  37. package/lib/module/highlight-updates/HighlightUpdatesOverlay.js +1 -274
  38. package/lib/module/highlight-updates/components/HighlightFilterView.js +1 -1468
  39. package/lib/module/highlight-updates/components/HighlightUpdatesModal.js +1 -634
  40. package/lib/module/highlight-updates/components/IdentifierBadge.js +1 -265
  41. package/lib/module/highlight-updates/components/IsolatedRenderList.js +1 -183
  42. package/lib/module/highlight-updates/components/ModalHeaderContent.js +1 -288
  43. package/lib/module/highlight-updates/components/RenderCauseBadge.js +1 -499
  44. package/lib/module/highlight-updates/components/RenderDetailView.js +1 -840
  45. package/lib/module/highlight-updates/components/RenderHistoryViewer.js +1 -908
  46. package/lib/module/highlight-updates/components/RenderListItem.js +1 -230
  47. package/lib/module/highlight-updates/components/RendersCopySettingsView.js +1 -465
  48. package/lib/module/highlight-updates/components/StatsDisplay.js +1 -70
  49. package/lib/module/highlight-updates/types/copySettings.js +1 -102
  50. package/lib/module/highlight-updates/utils/CommitProfiler.js +1 -442
  51. package/lib/module/highlight-updates/utils/HighlightUpdatesController.js +1 -1916
  52. package/lib/module/highlight-updates/utils/PerformanceLogger.js +26 -353
  53. package/lib/module/highlight-updates/utils/ProfilerInterceptor.js +1 -358
  54. package/lib/module/highlight-updates/utils/RenderCauseDetector.js +5 -1830
  55. package/lib/module/highlight-updates/utils/RenderTracker.js +1 -949
  56. package/lib/module/highlight-updates/utils/ViewTypeMapper.js +1 -255
  57. package/lib/module/highlight-updates/utils/copySettingsStorage.js +1 -26
  58. package/lib/module/highlight-updates/utils/devtoolsComponentNames.js +1 -178
  59. package/lib/module/highlight-updates/utils/namedComposite.js +1 -36
  60. package/lib/module/highlight-updates/utils/ownStateChanged.js +1 -98
  61. package/lib/module/highlight-updates/utils/rawEventEmitter.js +1 -46
  62. package/lib/module/highlight-updates/utils/rawEventEmitter.web.js +1 -0
  63. package/lib/module/highlight-updates/utils/renderExportFormatter.js +1 -54
  64. package/lib/module/highlight-updates/utils/rendersExportFormatter.js +1 -478
  65. package/lib/module/highlight-updates/utils/screenElements.js +1 -1242
  66. package/lib/module/highlight-updates/utils/tapMatch.js +1 -76
  67. package/lib/module/highlight-updates/utils/testIDs.js +1 -60
  68. package/lib/module/highlight-updates/utils/touchCapture.js +1 -270
  69. package/lib/module/index.js +1 -130
  70. package/lib/module/preset.js +1 -272
  71. package/lib/module/sync/highlightUpdatesSyncAdapter.js +1 -230
  72. package/lib/typescript/highlight-updates/utils/HighlightUpdatesController.d.ts +0 -26
  73. package/lib/typescript/highlight-updates/utils/rawEventEmitter.web.d.ts +3 -0
  74. package/lib/typescript/highlight-updates/utils/screenElements.d.ts +0 -19
  75. package/lib/web/index.mjs +38 -0
  76. package/package.json +34 -14
  77. package/lib/typescript/highlight-updates/HighlightUpdatesOverlay.d.ts.map +0 -1
  78. package/lib/typescript/highlight-updates/components/HighlightFilterView.d.ts.map +0 -1
  79. package/lib/typescript/highlight-updates/components/HighlightUpdatesModal.d.ts.map +0 -1
  80. package/lib/typescript/highlight-updates/components/IdentifierBadge.d.ts.map +0 -1
  81. package/lib/typescript/highlight-updates/components/IsolatedRenderList.d.ts.map +0 -1
  82. package/lib/typescript/highlight-updates/components/ModalHeaderContent.d.ts.map +0 -1
  83. package/lib/typescript/highlight-updates/components/RenderCauseBadge.d.ts.map +0 -1
  84. package/lib/typescript/highlight-updates/components/RenderDetailView.d.ts.map +0 -1
  85. package/lib/typescript/highlight-updates/components/RenderHistoryViewer.d.ts.map +0 -1
  86. package/lib/typescript/highlight-updates/components/RenderListItem.d.ts.map +0 -1
  87. package/lib/typescript/highlight-updates/components/RendersCopySettingsView.d.ts.map +0 -1
  88. package/lib/typescript/highlight-updates/components/StatsDisplay.d.ts.map +0 -1
  89. package/lib/typescript/highlight-updates/types/copySettings.d.ts.map +0 -1
  90. package/lib/typescript/highlight-updates/utils/CommitProfiler.d.ts.map +0 -1
  91. package/lib/typescript/highlight-updates/utils/HighlightUpdatesController.d.ts.map +0 -1
  92. package/lib/typescript/highlight-updates/utils/PerformanceLogger.d.ts.map +0 -1
  93. package/lib/typescript/highlight-updates/utils/ProfilerInterceptor.d.ts.map +0 -1
  94. package/lib/typescript/highlight-updates/utils/RenderCauseDetector.d.ts.map +0 -1
  95. package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts.map +0 -1
  96. package/lib/typescript/highlight-updates/utils/ViewTypeMapper.d.ts.map +0 -1
  97. package/lib/typescript/highlight-updates/utils/copySettingsStorage.d.ts.map +0 -1
  98. package/lib/typescript/highlight-updates/utils/devtoolsComponentNames.d.ts.map +0 -1
  99. package/lib/typescript/highlight-updates/utils/namedComposite.d.ts.map +0 -1
  100. package/lib/typescript/highlight-updates/utils/ownStateChanged.d.ts.map +0 -1
  101. package/lib/typescript/highlight-updates/utils/rawEventEmitter.d.ts.map +0 -1
  102. package/lib/typescript/highlight-updates/utils/renderExportFormatter.d.ts.map +0 -1
  103. package/lib/typescript/highlight-updates/utils/rendersExportFormatter.d.ts.map +0 -1
  104. package/lib/typescript/highlight-updates/utils/screenElements.d.ts.map +0 -1
  105. package/lib/typescript/highlight-updates/utils/tapMatch.d.ts.map +0 -1
  106. package/lib/typescript/highlight-updates/utils/testIDs.d.ts.map +0 -1
  107. package/lib/typescript/highlight-updates/utils/touchCapture.d.ts.map +0 -1
  108. package/lib/typescript/index.d.ts.map +0 -1
  109. package/lib/typescript/preset.d.ts.map +0 -1
  110. package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts.map +0 -1
@@ -1,293 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.SearchSection = exports.MainListHeader = exports.HeaderActions = exports.FilterViewHeader = exports.DetailViewHeader = exports.CopySettingsViewHeader = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _sharedUi = require("@buoy-gg/shared-ui");
10
- var _StatsDisplay = require("./StatsDisplay");
11
- var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
- /**
14
- * ModalHeaderContent
15
- *
16
- * Memoized header content components for the HighlightUpdatesModal.
17
- * Extracted to prevent re-renders when parent state changes unrelated to header.
18
- *
19
- * Following the optimization guide: extract inline JSX to memoized components.
20
- */
21
-
22
- // ============================================================================
23
- // Search Section - isolated component for search UI
24
- // ============================================================================
25
-
26
- const SearchSectionInner = /*#__PURE__*/(0, _react.memo)(function SearchSection({
27
- isActive,
28
- searchText,
29
- onSearchChange,
30
- onSearchClose
31
- }) {
32
- if (!isActive) return null;
33
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Search, {
34
- value: searchText,
35
- onChangeText: onSearchChange,
36
- onCancel: () => {
37
- onSearchChange("");
38
- onSearchClose();
39
- },
40
- onDismiss: onSearchClose,
41
- dismissOnBlur: true,
42
- clearOnlyWhenText: true,
43
- placeholder: "Search testID, nativeID, component...",
44
- accessibilityLabel: "Search renders",
45
- iconSize: 14,
46
- testID: "buoy-highlight-search-field",
47
- containerTestID: "buoy-highlight-search-container",
48
- containerNativeID: "__rn_buoy__search-container",
49
- clearTestID: "buoy-highlight-search-clear"
50
- });
51
- });
52
- const SearchSection = exports.SearchSection = SearchSectionInner;
53
-
54
- // ============================================================================
55
- // Header Actions - isolated component for action buttons
56
- // ============================================================================
57
-
58
- const HeaderActionsInner = /*#__PURE__*/(0, _react.memo)(function HeaderActions({
59
- onSearchToggle,
60
- onFilterToggle,
61
- onToggleTracking,
62
- onToggleFreeze,
63
- onClear,
64
- onOpenCopySettings,
65
- isTracking,
66
- isFrozen,
67
- activeFilterCount,
68
- hasRenders
69
- }) {
70
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions, {
71
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
72
- testID: "buoy-highlight-search",
73
- accessibilityRole: "button",
74
- accessibilityLabel: "Search renders",
75
- onPress: onSearchToggle,
76
- style: styles.headerActionButton,
77
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
78
- size: 14,
79
- color: _sharedUi.night.color.textSecondary
80
- })
81
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
82
- testID: "buoy-highlight-filters",
83
- accessibilityRole: "button",
84
- accessibilityLabel: activeFilterCount > 0 ? `Filters, ${activeFilterCount} active` : "Filters",
85
- onPress: onFilterToggle,
86
- style: [styles.headerActionButton, activeFilterCount > 0 && styles.activeFilterButton],
87
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Filter, {
88
- size: 14,
89
- color: activeFilterCount > 0 ? _sharedUi.night.color.accent : _sharedUi.night.color.textTertiary
90
- })
91
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
92
- testID: "buoy-highlight-copy",
93
- accessibilityRole: "button",
94
- onPress: onOpenCopySettings,
95
- style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
96
- disabled: !hasRenders,
97
- accessibilityLabel: "Open copy settings",
98
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Copy, {
99
- size: 14,
100
- color: hasRenders ? _sharedUi.night.color.textSecondary : _sharedUi.night.color.textTertiary
101
- })
102
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
103
- testID: "buoy-highlight-freeze",
104
- accessibilityRole: "button",
105
- accessibilityLabel: isFrozen ? "Unfreeze frame" : "Freeze frame",
106
- onPress: onToggleFreeze,
107
- style: [styles.headerActionButton, isFrozen && styles.freezeButton, !isTracking && styles.headerActionButtonDisabled],
108
- disabled: !isTracking,
109
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Pause, {
110
- size: 14,
111
- color: !isTracking ? _sharedUi.night.color.textTertiary : isFrozen ? _sharedUi.night.color.accent : _sharedUi.night.color.textTertiary
112
- })
113
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.PowerToggleButton, {
114
- testID: "buoy-highlight-power",
115
- isEnabled: isTracking,
116
- onToggle: onToggleTracking,
117
- accessibilityLabel: "Toggle render tracking"
118
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
119
- testID: "buoy-highlight-clear",
120
- accessibilityRole: "button",
121
- accessibilityLabel: "Clear tracked renders",
122
- onPress: onClear,
123
- style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
124
- disabled: !hasRenders,
125
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Trash2, {
126
- size: 14,
127
- color: hasRenders ? _sharedUi.night.color.textTertiary : _sharedUi.night.color.textTertiary
128
- })
129
- })]
130
- });
131
- });
132
- const HeaderActions = exports.HeaderActions = HeaderActionsInner;
133
-
134
- // ============================================================================
135
- // Main List Header - complete header for main list view
136
- // ============================================================================
137
-
138
- const MainListHeader = exports.MainListHeader = /*#__PURE__*/(0, _react.memo)(function MainListHeader({
139
- onBack,
140
- isSearchActive,
141
- searchText,
142
- onSearchChange,
143
- onSearchToggle,
144
- onSearchClose,
145
- onFilterToggle,
146
- onToggleTracking,
147
- onToggleFreeze,
148
- onClear,
149
- onOpenCopySettings,
150
- isTracking,
151
- isFrozen,
152
- activeFilterCount,
153
- hasRenders,
154
- searchInputRef
155
- }) {
156
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
157
- children: [onBack && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
158
- onBack: onBack
159
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
160
- title: "",
161
- children: isSearchActive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(SearchSection, {
162
- isActive: isSearchActive,
163
- searchText: searchText,
164
- onSearchChange: onSearchChange,
165
- onSearchClose: onSearchClose,
166
- searchInputRef: searchInputRef
167
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_StatsDisplay.StatsDisplay, {})
168
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(HeaderActions, {
169
- onSearchToggle: onSearchToggle,
170
- onFilterToggle: onFilterToggle,
171
- onToggleTracking: onToggleTracking,
172
- onToggleFreeze: onToggleFreeze,
173
- onClear: onClear,
174
- onOpenCopySettings: onOpenCopySettings,
175
- isTracking: isTracking,
176
- isFrozen: isFrozen,
177
- activeFilterCount: activeFilterCount,
178
- hasRenders: hasRenders
179
- })]
180
- });
181
- });
182
-
183
- // ============================================================================
184
- // Filter View Header
185
- // ============================================================================
186
-
187
- const FilterViewHeader = exports.FilterViewHeader = /*#__PURE__*/(0, _react.memo)(function FilterViewHeader({
188
- onBack,
189
- activeTab,
190
- onTabChange,
191
- activeFilterCount = 0
192
- }) {
193
- const tabs = [{
194
- key: "filters",
195
- label: `Filters${activeFilterCount > 0 ? ` (${activeFilterCount})` : ""}`
196
- }, {
197
- key: "settings",
198
- label: "Settings"
199
- }];
200
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
201
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
202
- onBack: onBack
203
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
204
- title: "",
205
- noMargin: true,
206
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
207
- tabs: tabs,
208
- activeTab: activeTab,
209
- onTabChange: tab => onTabChange(tab),
210
- testIDPrefix: "buoy-highlight-filter-tab"
211
- })
212
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Actions, {})]
213
- });
214
- });
215
-
216
- // ============================================================================
217
- // Detail View Header
218
- // ============================================================================
219
-
220
- const DetailViewHeader = exports.DetailViewHeader = /*#__PURE__*/(0, _react.memo)(function DetailViewHeader({
221
- onBack,
222
- activeTab,
223
- onTabChange,
224
- hasHistory = true
225
- }) {
226
- const tabs = [{
227
- key: "details",
228
- label: "Details"
229
- }, {
230
- key: "history",
231
- label: "History",
232
- disabled: !hasHistory
233
- }];
234
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
235
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
236
- onBack: onBack
237
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
238
- title: "",
239
- noMargin: true,
240
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
241
- tabs: tabs,
242
- activeTab: activeTab,
243
- onTabChange: tab => onTabChange(tab),
244
- testIDPrefix: "buoy-highlight-detail-tab"
245
- })
246
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Actions, {})]
247
- });
248
- });
249
-
250
- // ============================================================================
251
- // Copy Settings View Header
252
- // ============================================================================
253
-
254
- const CopySettingsViewHeader = exports.CopySettingsViewHeader = /*#__PURE__*/(0, _react.memo)(function CopySettingsViewHeader({
255
- onBack
256
- }) {
257
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
258
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
259
- onBack: onBack
260
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
261
- title: "Copy Settings",
262
- testID: "buoy-highlight-copy-title"
263
- })]
264
- });
265
- });
266
-
267
- // ============================================================================
268
- // Styles
269
- // ============================================================================
270
-
271
- const styles = _reactNative.StyleSheet.create({
272
- headerActionButton: {
273
- width: 32,
274
- height: 32,
275
- borderRadius: 8,
276
- backgroundColor: _sharedUi.night.color.buttonSurface,
277
- borderWidth: 1,
278
- borderColor: _sharedUi.night.color.border,
279
- alignItems: "center",
280
- justifyContent: "center"
281
- },
282
- headerActionButtonDisabled: {
283
- opacity: 0.55
284
- },
285
- activeFilterButton: {
286
- backgroundColor: _sharedUi.night.color.accentSoft,
287
- borderColor: _sharedUi.night.color.accentBorderStrong
288
- },
289
- freezeButton: {
290
- backgroundColor: _sharedUi.night.color.accentSoft,
291
- borderColor: _sharedUi.night.color.accentBorderStrong
292
- }
293
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SearchSection=exports.MainListHeader=exports.HeaderActions=exports.FilterViewHeader=exports.DetailViewHeader=exports.CopySettingsViewHeader=void 0;var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _sharedUi=require("@buoy-gg/shared-ui");var _StatsDisplay=require("./StatsDisplay");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(d,t){if("function"==typeof WeakMap)var i=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,c){if(!c&&e&&e.__esModule)return e;var r,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(r=c?a:i){if(r.has(e))return r.get(e);r.set(e,s)}for(const o in e)"default"!==o&&{}.hasOwnProperty.call(e,o)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,o))&&(n.get||n.set)?r(s,o,n):s[o]=e[o]);return s})(d,t)}const SearchSectionInner=(0,_react.memo)(function d({isActive:t,searchText:i,onSearchChange:a,onSearchClose:e}){if(!t)return null;return(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Search,{value:i,onChangeText:a,onCancel:()=>{a("");e()},onDismiss:e,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"})});const SearchSection=exports.SearchSection=SearchSectionInner;const HeaderActionsInner=(0,_react.memo)(function d({onSearchToggle:t,onFilterToggle:i,onToggleTracking:a,onToggleFreeze:e,onClear:c,onOpenCopySettings:r,isTracking:n,isFrozen:s,activeFilterCount:o,hasRenders:l}){return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions,{children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{testID:"buoy-highlight-search",accessibilityRole:"button",accessibilityLabel:"Search renders",onPress:t,style:styles.headerActionButton,children:(0,_jsxRuntime.jsx)(_sharedUi.Search,{size:14,color:_sharedUi.night.color.textSecondary})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{testID:"buoy-highlight-filters",accessibilityRole:"button",accessibilityLabel:o>0?`Filters, ${o} active`:"Filters",onPress:i,style:[styles.headerActionButton,o>0&&styles.activeFilterButton],children:(0,_jsxRuntime.jsx)(_sharedUi.Filter,{size:14,color:o>0?_sharedUi.night.color.accent:_sharedUi.night.color.textTertiary})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{testID:"buoy-highlight-copy",accessibilityRole:"button",onPress:r,style:[styles.headerActionButton,!l&&styles.headerActionButtonDisabled],disabled:!l,accessibilityLabel:"Open copy settings",children:(0,_jsxRuntime.jsx)(_sharedUi.Copy,{size:14,color:l?_sharedUi.night.color.textSecondary:_sharedUi.night.color.textTertiary})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{testID:"buoy-highlight-freeze",accessibilityRole:"button",accessibilityLabel:s?"Unfreeze frame":"Freeze frame",onPress:e,style:[styles.headerActionButton,s&&styles.freezeButton,!n&&styles.headerActionButtonDisabled],disabled:!n,children:(0,_jsxRuntime.jsx)(_sharedUi.Pause,{size:14,color:!n?_sharedUi.night.color.textTertiary:s?_sharedUi.night.color.accent:_sharedUi.night.color.textTertiary})}),(0,_jsxRuntime.jsx)(_sharedUi.PowerToggleButton,{testID:"buoy-highlight-power",isEnabled:n,onToggle:a,accessibilityLabel:"Toggle render tracking"}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{testID:"buoy-highlight-clear",accessibilityRole:"button",accessibilityLabel:"Clear tracked renders",onPress:c,style:[styles.headerActionButton,!l&&styles.headerActionButtonDisabled],disabled:!l,children:(0,_jsxRuntime.jsx)(_sharedUi.Trash2,{size:14,color:l?_sharedUi.night.color.textTertiary:_sharedUi.night.color.textTertiary})})]})});const HeaderActions=exports.HeaderActions=HeaderActionsInner;const MainListHeader=exports.MainListHeader=(0,_react.memo)(function d({onBack:t,isSearchActive:i,searchText:a,onSearchChange:e,onSearchToggle:c,onSearchClose:r,onFilterToggle:n,onToggleTracking:s,onToggleFreeze:o,onClear:l,onOpenCopySettings:h,isTracking:u,isFrozen:g,activeFilterCount:b,hasRenders:y,searchInputRef:x}){return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[t&&(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:t}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"",children:i?(0,_jsxRuntime.jsx)(SearchSection,{isActive:i,searchText:a,onSearchChange:e,onSearchClose:r,searchInputRef:x}):(0,_jsxRuntime.jsx)(_StatsDisplay.StatsDisplay,{})}),(0,_jsxRuntime.jsx)(HeaderActions,{onSearchToggle:c,onFilterToggle:n,onToggleTracking:s,onToggleFreeze:o,onClear:l,onOpenCopySettings:h,isTracking:u,isFrozen:g,activeFilterCount:b,hasRenders:y})]})});const FilterViewHeader=exports.FilterViewHeader=(0,_react.memo)(function d({onBack:t,activeTab:i,onTabChange:a,activeFilterCount:e=0}){const c=[{key:"filters",label:`Filters${e>0?` (${e})`:""}`},{key:"settings",label:"Settings"}];return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:t}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"",noMargin:true,children:(0,_jsxRuntime.jsx)(_sharedUi.TabSelector,{tabs:c,activeTab:i,onTabChange:r=>a(r),testIDPrefix:"buoy-highlight-filter-tab"})}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Actions,{})]})});const DetailViewHeader=exports.DetailViewHeader=(0,_react.memo)(function d({onBack:t,activeTab:i,onTabChange:a,hasHistory:e=true}){const c=[{key:"details",label:"Details"},{key:"history",label:"History",disabled:!e}];return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:t}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"",noMargin:true,children:(0,_jsxRuntime.jsx)(_sharedUi.TabSelector,{tabs:c,activeTab:i,onTabChange:r=>a(r),testIDPrefix:"buoy-highlight-detail-tab"})}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Actions,{})]})});const CopySettingsViewHeader=exports.CopySettingsViewHeader=(0,_react.memo)(function d({onBack:t}){return(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:t}),(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:"Copy Settings",testID:"buoy-highlight-copy-title"})]})});const styles=_reactNative.StyleSheet.create({headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:_sharedUi.night.color.buttonSurface,borderWidth:1,borderColor:_sharedUi.night.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},activeFilterButton:{backgroundColor:_sharedUi.night.color.accentSoft,borderColor:_sharedUi.night.color.accentBorderStrong},freezeButton:{backgroundColor:_sharedUi.night.color.accentSoft,borderColor:_sharedUi.night.color.accentBorderStrong}});