@buoy-gg/storage 7.0.3 → 7.0.5

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 (148) hide show
  1. package/lib/commonjs/index.js +77 -1
  2. package/lib/commonjs/storage/components/DiffViewer/TreeDiffViewer.js +10 -3
  3. package/lib/commonjs/storage/components/DiffViewer/modes/ThemedSplitView.js +26 -8
  4. package/lib/commonjs/storage/components/GameUIStorageBrowser.js +263 -115
  5. package/lib/commonjs/storage/components/GameUIStorageStats.js +7 -7
  6. package/lib/commonjs/storage/components/MMKVInstanceInfoPanel.js +1 -1
  7. package/lib/commonjs/storage/components/MMKVInstanceSelector.js +1 -1
  8. package/lib/commonjs/storage/components/SelectionActionBar.js +2 -36
  9. package/lib/commonjs/storage/components/StorageActions.js +6 -6
  10. package/lib/commonjs/storage/components/StorageBrowserMode.js +16 -2
  11. package/lib/commonjs/storage/components/StorageEventDetailContent.js +106 -149
  12. package/lib/commonjs/storage/components/StorageEventListener.js +13 -13
  13. package/lib/commonjs/storage/components/StorageFilterCards.js +13 -135
  14. package/lib/commonjs/storage/components/StorageKeyCard.js +1 -1
  15. package/lib/commonjs/storage/components/StorageKeyEditorScreen.js +392 -0
  16. package/lib/commonjs/storage/components/StorageKeyRow.js +53 -15
  17. package/lib/commonjs/storage/components/StorageKeySection.js +10 -4
  18. package/lib/commonjs/storage/components/StorageKeyStats.js +10 -10
  19. package/lib/commonjs/storage/components/StorageModalWithTabs.js +272 -129
  20. package/lib/commonjs/storage/components/StorageScalarKeyEditor.js +46 -0
  21. package/lib/commonjs/storage/components/StorageTypeFilterBar.js +141 -0
  22. package/lib/commonjs/storage/components/StorageValueEditModal.js +361 -0
  23. package/lib/commonjs/storage/hooks/useKeyEditor.js +104 -0
  24. package/lib/commonjs/storage/hooks/useMeasuredWidth.js +74 -0
  25. package/lib/commonjs/storage/hooks/useSecureStoreKeys.js +70 -15
  26. package/lib/commonjs/storage/hooks/useTreeDraft.js +107 -0
  27. package/lib/commonjs/storage/index.js +29 -0
  28. package/lib/commonjs/storage/stores/storageEventStore.js +4 -2
  29. package/lib/commonjs/storage/sync/storageSyncAdapter.js +125 -3
  30. package/lib/commonjs/storage/utils/AsyncStorageListener.js +76 -12
  31. package/lib/commonjs/storage/utils/MMKVInstanceRegistry.js +10 -9
  32. package/lib/commonjs/storage/utils/MMKVListener.js +40 -4
  33. package/lib/commonjs/storage/utils/SecureStoreRegistry.js +52 -1
  34. package/lib/commonjs/storage/utils/deleteStorageKeys.js +53 -0
  35. package/lib/commonjs/storage/utils/index.js +13 -0
  36. package/lib/commonjs/storage/utils/lineDiff.js +21 -354
  37. package/lib/commonjs/storage/utils/setStorageValue.js +218 -0
  38. package/lib/commonjs/storage/utils/storageBrowserRefresh.js +49 -0
  39. package/lib/commonjs/storage/utils/storageOps.js +53 -0
  40. package/lib/commonjs/storage/utils/storageTimeTravelUtils.js +60 -38
  41. package/lib/commonjs/storage/utils/valueType.js +24 -0
  42. package/lib/module/index.js +18 -1
  43. package/lib/module/storage/components/DiffViewer/TreeDiffViewer.js +10 -3
  44. package/lib/module/storage/components/DiffViewer/modes/ThemedSplitView.js +26 -8
  45. package/lib/module/storage/components/GameUIStorageBrowser.js +266 -118
  46. package/lib/module/storage/components/GameUIStorageStats.js +7 -7
  47. package/lib/module/storage/components/MMKVInstanceInfoPanel.js +1 -1
  48. package/lib/module/storage/components/MMKVInstanceSelector.js +1 -1
  49. package/lib/module/storage/components/SelectionActionBar.js +2 -36
  50. package/lib/module/storage/components/StorageActions.js +7 -7
  51. package/lib/module/storage/components/StorageBrowserMode.js +16 -2
  52. package/lib/module/storage/components/StorageEventDetailContent.js +110 -151
  53. package/lib/module/storage/components/StorageEventListener.js +14 -14
  54. package/lib/module/storage/components/StorageFilterCards.js +13 -135
  55. package/lib/module/storage/components/StorageKeyCard.js +1 -1
  56. package/lib/module/storage/components/StorageKeyEditorScreen.js +388 -0
  57. package/lib/module/storage/components/StorageKeyRow.js +55 -17
  58. package/lib/module/storage/components/StorageKeySection.js +11 -5
  59. package/lib/module/storage/components/StorageKeyStats.js +11 -10
  60. package/lib/module/storage/components/StorageModalWithTabs.js +272 -130
  61. package/lib/module/storage/components/StorageScalarKeyEditor.js +42 -0
  62. package/lib/module/storage/components/StorageTypeFilterBar.js +136 -0
  63. package/lib/module/storage/components/StorageValueEditModal.js +357 -0
  64. package/lib/module/storage/hooks/useKeyEditor.js +100 -0
  65. package/lib/module/storage/hooks/useMeasuredWidth.js +71 -0
  66. package/lib/module/storage/hooks/useSecureStoreKeys.js +71 -16
  67. package/lib/module/storage/hooks/useTreeDraft.js +103 -0
  68. package/lib/module/storage/index.js +3 -0
  69. package/lib/module/storage/stores/storageEventStore.js +4 -2
  70. package/lib/module/storage/sync/storageSyncAdapter.js +125 -3
  71. package/lib/module/storage/utils/AsyncStorageListener.js +76 -12
  72. package/lib/module/storage/utils/MMKVInstanceRegistry.js +8 -7
  73. package/lib/module/storage/utils/MMKVListener.js +40 -4
  74. package/lib/module/storage/utils/SecureStoreRegistry.js +52 -1
  75. package/lib/module/storage/utils/deleteStorageKeys.js +49 -0
  76. package/lib/module/storage/utils/index.js +3 -0
  77. package/lib/module/storage/utils/lineDiff.js +7 -354
  78. package/lib/module/storage/utils/setStorageValue.js +209 -0
  79. package/lib/module/storage/utils/storageBrowserRefresh.js +44 -0
  80. package/lib/module/storage/utils/storageOps.js +46 -0
  81. package/lib/module/storage/utils/storageTimeTravelUtils.js +61 -40
  82. package/lib/module/storage/utils/valueType.js +23 -0
  83. package/lib/typescript/index.d.ts +12 -1
  84. package/lib/typescript/index.d.ts.map +1 -1
  85. package/lib/typescript/storage/components/DiffViewer/TreeDiffViewer.d.ts +4 -1
  86. package/lib/typescript/storage/components/DiffViewer/TreeDiffViewer.d.ts.map +1 -1
  87. package/lib/typescript/storage/components/DiffViewer/modes/ThemedSplitView.d.ts +7 -1
  88. package/lib/typescript/storage/components/DiffViewer/modes/ThemedSplitView.d.ts.map +1 -1
  89. package/lib/typescript/storage/components/GameUIStorageBrowser.d.ts +27 -1
  90. package/lib/typescript/storage/components/GameUIStorageBrowser.d.ts.map +1 -1
  91. package/lib/typescript/storage/components/SelectionActionBar.d.ts.map +1 -1
  92. package/lib/typescript/storage/components/StorageBrowserMode.d.ts +17 -1
  93. package/lib/typescript/storage/components/StorageBrowserMode.d.ts.map +1 -1
  94. package/lib/typescript/storage/components/StorageEventDetailContent.d.ts +4 -1
  95. package/lib/typescript/storage/components/StorageEventDetailContent.d.ts.map +1 -1
  96. package/lib/typescript/storage/components/StorageFilterCards.d.ts +9 -3
  97. package/lib/typescript/storage/components/StorageFilterCards.d.ts.map +1 -1
  98. package/lib/typescript/storage/components/StorageKeyEditorScreen.d.ts +42 -0
  99. package/lib/typescript/storage/components/StorageKeyEditorScreen.d.ts.map +1 -0
  100. package/lib/typescript/storage/components/StorageKeyRow.d.ts +17 -0
  101. package/lib/typescript/storage/components/StorageKeyRow.d.ts.map +1 -1
  102. package/lib/typescript/storage/components/StorageKeySection.d.ts +7 -1
  103. package/lib/typescript/storage/components/StorageKeySection.d.ts.map +1 -1
  104. package/lib/typescript/storage/components/StorageKeyStats.d.ts.map +1 -1
  105. package/lib/typescript/storage/components/StorageModalWithTabs.d.ts +28 -1
  106. package/lib/typescript/storage/components/StorageModalWithTabs.d.ts.map +1 -1
  107. package/lib/typescript/storage/components/StorageScalarKeyEditor.d.ts +24 -0
  108. package/lib/typescript/storage/components/StorageScalarKeyEditor.d.ts.map +1 -0
  109. package/lib/typescript/storage/components/StorageTypeFilterBar.d.ts +29 -0
  110. package/lib/typescript/storage/components/StorageTypeFilterBar.d.ts.map +1 -0
  111. package/lib/typescript/storage/components/StorageValueEditModal.d.ts +36 -0
  112. package/lib/typescript/storage/components/StorageValueEditModal.d.ts.map +1 -0
  113. package/lib/typescript/storage/hooks/useKeyEditor.d.ts +51 -0
  114. package/lib/typescript/storage/hooks/useKeyEditor.d.ts.map +1 -0
  115. package/lib/typescript/storage/hooks/useMeasuredWidth.d.ts +37 -0
  116. package/lib/typescript/storage/hooks/useMeasuredWidth.d.ts.map +1 -0
  117. package/lib/typescript/storage/hooks/useSecureStoreKeys.d.ts +8 -1
  118. package/lib/typescript/storage/hooks/useSecureStoreKeys.d.ts.map +1 -1
  119. package/lib/typescript/storage/hooks/useTreeDraft.d.ts +67 -0
  120. package/lib/typescript/storage/hooks/useTreeDraft.d.ts.map +1 -0
  121. package/lib/typescript/storage/index.d.ts +2 -0
  122. package/lib/typescript/storage/index.d.ts.map +1 -1
  123. package/lib/typescript/storage/sync/storageSyncAdapter.d.ts +41 -0
  124. package/lib/typescript/storage/sync/storageSyncAdapter.d.ts.map +1 -1
  125. package/lib/typescript/storage/utils/AsyncStorageListener.d.ts +15 -0
  126. package/lib/typescript/storage/utils/AsyncStorageListener.d.ts.map +1 -1
  127. package/lib/typescript/storage/utils/MMKVInstanceRegistry.d.ts.map +1 -1
  128. package/lib/typescript/storage/utils/MMKVListener.d.ts +7 -0
  129. package/lib/typescript/storage/utils/MMKVListener.d.ts.map +1 -1
  130. package/lib/typescript/storage/utils/SecureStoreRegistry.d.ts +20 -0
  131. package/lib/typescript/storage/utils/SecureStoreRegistry.d.ts.map +1 -1
  132. package/lib/typescript/storage/utils/deleteStorageKeys.d.ts +27 -0
  133. package/lib/typescript/storage/utils/deleteStorageKeys.d.ts.map +1 -0
  134. package/lib/typescript/storage/utils/index.d.ts +1 -0
  135. package/lib/typescript/storage/utils/index.d.ts.map +1 -1
  136. package/lib/typescript/storage/utils/lineDiff.d.ts +7 -31
  137. package/lib/typescript/storage/utils/lineDiff.d.ts.map +1 -1
  138. package/lib/typescript/storage/utils/setStorageValue.d.ts +64 -0
  139. package/lib/typescript/storage/utils/setStorageValue.d.ts.map +1 -0
  140. package/lib/typescript/storage/utils/storageBrowserRefresh.d.ts +28 -0
  141. package/lib/typescript/storage/utils/storageBrowserRefresh.d.ts.map +1 -0
  142. package/lib/typescript/storage/utils/storageOps.d.ts +25 -0
  143. package/lib/typescript/storage/utils/storageOps.d.ts.map +1 -0
  144. package/lib/typescript/storage/utils/storageTimeTravelUtils.d.ts +15 -5
  145. package/lib/typescript/storage/utils/storageTimeTravelUtils.d.ts.map +1 -1
  146. package/lib/typescript/storage/utils/valueType.d.ts +13 -0
  147. package/lib/typescript/storage/utils/valueType.d.ts.map +1 -1
  148. package/package.json +5 -5
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "MMKVInstanceSelector", {
15
15
  return _MMKVInstanceSelector.MMKVInstanceSelector;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "STORAGE_OPS", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _storageOps.STORAGE_OPS;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "StorageBrowserMode", {
19
25
  enumerable: true,
20
26
  get: function () {
@@ -75,6 +81,18 @@ Object.defineProperty(exports, "StorageSection", {
75
81
  return _StorageSection.StorageSection;
76
82
  }
77
83
  });
84
+ Object.defineProperty(exports, "StorageToolView", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _StorageModalWithTabs.StorageToolView;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "StorageTypeFilterBar", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _StorageTypeFilterBar.StorageTypeFilterBar;
94
+ }
95
+ });
78
96
  Object.defineProperty(exports, "canUndo", {
79
97
  enumerable: true,
80
98
  get: function () {
@@ -87,6 +105,12 @@ Object.defineProperty(exports, "clearAllAppStorage", {
87
105
  return _clearAllStorage.clearAllAppStorage;
88
106
  }
89
107
  });
108
+ Object.defineProperty(exports, "countByStorageType", {
109
+ enumerable: true,
110
+ get: function () {
111
+ return _StorageTypeFilterBar.countByStorageType;
112
+ }
113
+ });
90
114
  Object.defineProperty(exports, "createStorageTool", {
91
115
  enumerable: true,
92
116
  get: function () {
@@ -123,6 +147,12 @@ Object.defineProperty(exports, "getValueType", {
123
147
  return _StorageEventCard.getValueType;
124
148
  }
125
149
  });
150
+ Object.defineProperty(exports, "isInitialScan", {
151
+ enumerable: true,
152
+ get: function () {
153
+ return _storageOps.isInitialScan;
154
+ }
155
+ });
126
156
  Object.defineProperty(exports, "isMMKVAvailable", {
127
157
  enumerable: true,
128
158
  get: function () {
@@ -153,12 +183,42 @@ Object.defineProperty(exports, "registerSecureStoreKeys", {
153
183
  return _SecureStoreRegistry.registerSecureStoreKeys;
154
184
  }
155
185
  });
186
+ Object.defineProperty(exports, "requestStorageBrowserRefresh", {
187
+ enumerable: true,
188
+ get: function () {
189
+ return _storageBrowserRefresh.requestStorageBrowserRefresh;
190
+ }
191
+ });
192
+ Object.defineProperty(exports, "setStorageValue", {
193
+ enumerable: true,
194
+ get: function () {
195
+ return _setStorageValue.setStorageValue;
196
+ }
197
+ });
198
+ Object.defineProperty(exports, "storageEditBlockedReason", {
199
+ enumerable: true,
200
+ get: function () {
201
+ return _setStorageValue.storageEditBlockedReason;
202
+ }
203
+ });
156
204
  Object.defineProperty(exports, "storageEventStore", {
157
205
  enumerable: true,
158
206
  get: function () {
159
207
  return _storageEventStore.storageEventStore;
160
208
  }
161
209
  });
210
+ Object.defineProperty(exports, "storageOpDot", {
211
+ enumerable: true,
212
+ get: function () {
213
+ return _storageOps.storageOpDot;
214
+ }
215
+ });
216
+ Object.defineProperty(exports, "storageOpOf", {
217
+ enumerable: true,
218
+ get: function () {
219
+ return _storageOps.storageOpOf;
220
+ }
221
+ });
162
222
  Object.defineProperty(exports, "storageSyncAdapter", {
163
223
  enumerable: true,
164
224
  get: function () {
@@ -171,6 +231,12 @@ Object.defineProperty(exports, "storageToolPreset", {
171
231
  return _preset.storageToolPreset;
172
232
  }
173
233
  });
234
+ Object.defineProperty(exports, "storageValueToEditableText", {
235
+ enumerable: true,
236
+ get: function () {
237
+ return _setStorageValue.storageValueToEditableText;
238
+ }
239
+ });
174
240
  Object.defineProperty(exports, "undoOperation", {
175
241
  enumerable: true,
176
242
  get: function () {
@@ -231,6 +297,12 @@ Object.defineProperty(exports, "useStorageEvents", {
231
297
  return _useStorageEvents.useStorageEvents;
232
298
  }
233
299
  });
300
+ Object.defineProperty(exports, "validateStorageValue", {
301
+ enumerable: true,
302
+ get: function () {
303
+ return _setStorageValue.validateStorageValue;
304
+ }
305
+ });
234
306
  var _preset = require("./preset");
235
307
  var _StorageSection = require("./storage/components/StorageSection");
236
308
  var _StorageModalWithTabs = require("./storage/components/StorageModalWithTabs");
@@ -238,7 +310,9 @@ var _StorageKeyCard = require("./storage/components/StorageKeyCard");
238
310
  var _StorageKeyStats = require("./storage/components/StorageKeyStats");
239
311
  var _StorageKeySection = require("./storage/components/StorageKeySection");
240
312
  var _StorageBrowserMode = require("./storage/components/StorageBrowserMode");
313
+ var _StorageTypeFilterBar = require("./storage/components/StorageTypeFilterBar");
241
314
  var _StorageEventsSection = require("./storage/components/StorageEventsSection");
315
+ var _storageOps = require("./storage/utils/storageOps");
242
316
  var _StorageEventCard = require("./storage/components/StorageEventCard");
243
317
  var _StorageEventDetailContent = require("./storage/components/StorageEventDetailContent");
244
318
  var _MMKVInstanceSelector = require("./storage/components/MMKVInstanceSelector");
@@ -248,10 +322,12 @@ var _useMMKVKeys = require("./storage/hooks/useMMKVKeys");
248
322
  var _useMMKVInstances = require("./storage/hooks/useMMKVInstances");
249
323
  var _useStorageEvents = require("./storage/hooks/useStorageEvents");
250
324
  var _clearAllStorage = require("./storage/utils/clearAllStorage");
325
+ var _setStorageValue = require("./storage/utils/setStorageValue");
251
326
  var _mmkvAvailability = require("./storage/utils/mmkvAvailability");
252
327
  var _mmkvTypeDetection = require("./storage/utils/mmkvTypeDetection");
253
328
  var _storageTimeTravelUtils = require("./storage/utils/storageTimeTravelUtils");
254
329
  var _MMKVInstanceRegistry = require("./storage/utils/MMKVInstanceRegistry");
255
330
  var _SecureStoreRegistry = require("./storage/utils/SecureStoreRegistry");
256
331
  var _storageSyncAdapter = require("./storage/sync/storageSyncAdapter");
257
- var _storageEventStore = require("./storage/stores/storageEventStore");
332
+ var _storageEventStore = require("./storage/stores/storageEventStore");
333
+ var _storageBrowserRefresh = require("./storage/utils/storageBrowserRefresh");
@@ -10,14 +10,16 @@ var _dataViewer = require("@buoy-gg/shared-ui/dataViewer");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  function TreeDiffViewer({
12
12
  oldValue,
13
- newValue
13
+ newValue,
14
+ scrollEnabled = true
14
15
  }) {
15
16
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
16
- style: styles.container,
17
+ style: scrollEnabled ? styles.container : styles.containerInline,
17
18
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.TreeDiffViewer, {
18
19
  oldValue: oldValue,
19
20
  newValue: newValue,
20
- theme: "dark"
21
+ theme: "dark",
22
+ scrollEnabled: scrollEnabled
21
23
  })
22
24
  });
23
25
  }
@@ -25,5 +27,10 @@ const styles = _reactNative.StyleSheet.create({
25
27
  container: {
26
28
  flex: 1,
27
29
  backgroundColor: _sharedUi.gameUIColors.background
30
+ },
31
+ // Inline: size to the tree so the page scroll reveals it, rather than
32
+ // stretching to the pane and clipping the rows.
33
+ containerInline: {
34
+ backgroundColor: _sharedUi.gameUIColors.background
28
35
  }
29
36
  });
@@ -22,9 +22,12 @@ function ThemedSplitView({
22
22
  newValue,
23
23
  theme,
24
24
  options = DEFAULT_OPTIONS,
25
- showThemeName = false
25
+ showThemeName = false,
26
+ scrollEnabled = true
26
27
  }) {
27
- const dynamicStyles = (0, _react.useMemo)(() => createDynamicStyles(theme), [theme]);
28
+ // Inline mode drops the fixed 400pt pane so the container grows with the
29
+ // rows; the ancestor ScrollView is what scrolls them.
30
+ const dynamicStyles = (0, _react.useMemo)(() => createDynamicStyles(theme, scrollEnabled), [theme, scrollEnabled]);
28
31
  const diffComputeOptions = (0, _react.useMemo)(() => ({
29
32
  compareMethod: options.compareMethod,
30
33
  disableWordDiff: options.disableWordDiff,
@@ -73,9 +76,7 @@ function ThemedSplitView({
73
76
  });
74
77
  }, []);
75
78
  const keyExtractor = (0, _react.useCallback)(item => item.kind === "row" ? `r:${item.diffIndex}` : `f:${item.foldId}`, []);
76
- const renderItem = (0, _react.useCallback)(({
77
- item
78
- }) => {
79
+ const renderSplitItem = (0, _react.useCallback)(item => {
79
80
  if (item.kind === "fold") {
80
81
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(FoldHeader, {
81
82
  foldId: item.foldId,
@@ -94,6 +95,9 @@ function ThemedSplitView({
94
95
  styles: dynamicStyles
95
96
  });
96
97
  }, [theme, options, dynamicStyles, toggleFold]);
98
+ const renderItem = (0, _react.useCallback)(({
99
+ item
100
+ }) => renderSplitItem(item), [renderSplitItem]);
97
101
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
98
102
  style: [dynamicStyles.container, theme.glowColor && {
99
103
  shadowColor: theme.glowColor,
@@ -141,7 +145,7 @@ function ThemedSplitView({
141
145
  style: dynamicStyles.emptyText,
142
146
  children: options.showDiffOnly ? "No differences found" : "No content to display"
143
147
  })
144
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
148
+ }) : scrollEnabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
145
149
  style: dynamicStyles.scrollView,
146
150
  contentContainerStyle: dynamicStyles.scrollContent,
147
151
  data: items,
@@ -152,6 +156,16 @@ function ThemedSplitView({
152
156
  maxToRenderPerBatch: 20,
153
157
  windowSize: 7,
154
158
  removeClippedSubviews: true
159
+ }) :
160
+ /*#__PURE__*/
161
+ // A FlatList can't virtualize inside a page ScrollView — it has no
162
+ // viewport of its own to measure against — so render the rows directly.
163
+ // Folding already keeps this list short (unchanged runs collapse).
164
+ (0, _jsxRuntime.jsx)(_reactNative.View, {
165
+ style: dynamicStyles.scrollContent,
166
+ children: items.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {
167
+ children: renderSplitItem(item)
168
+ }, keyExtractor(item)))
155
169
  })]
156
170
  });
157
171
  }
@@ -403,10 +417,14 @@ function getDiffColors(type, theme) {
403
417
  }
404
418
 
405
419
  // Create dynamic styles based on theme
406
- function createDynamicStyles(theme) {
420
+ function createDynamicStyles(theme, scrollEnabled) {
407
421
  return _reactNative.StyleSheet.create({
408
422
  container: {
409
- height: 400,
423
+ // Fixed pane only when the rows scroll themselves; inline mode sizes to
424
+ // content so the page scroll reveals it.
425
+ ...(scrollEnabled ? {
426
+ height: 400
427
+ } : null),
410
428
  backgroundColor: theme.background,
411
429
  borderRadius: 8,
412
430
  overflow: "hidden",