@@ -96,7 +96,10 @@ export function JsonViewer({
96
96
extraTools,
97
97
collapsedInitially,
98
98
} : JsonViewerProps ) {
99
- const [ caseSensitiveSearch ] = useSetting ( CASE_SENSITIVE_JSON_SEARCH , false ) ;
99
+ const [ caseSensitiveSearch , setCaseSensitiveSearch ] = useSetting (
100
+ CASE_SENSITIVE_JSON_SEARCH ,
101
+ false ,
102
+ ) ;
100
103
101
104
const [ collapsedState , setCollapsedState ] = React . useState < CollapsedState > ( ( ) => {
102
105
if ( collapsedInitially ) {
@@ -155,13 +158,16 @@ export function JsonViewer({
155
158
} ;
156
159
157
160
const updateState = (
158
- changedState : Partial < Pick < State , 'collapsedState' | 'filter' | 'matchIndex' > > ,
161
+ changedState : Partial < Pick < State , 'collapsedState' | 'filter' | 'matchIndex' > > & {
162
+ caseSensitive ?: boolean ;
163
+ } ,
159
164
cb ?: ( ) => void ,
160
165
) => {
161
166
const {
162
167
collapsedState : newCollapsedState ,
163
168
matchIndex : newMatchIndex ,
164
169
filter : newFilter ,
170
+ caseSensitive : newCaseSensitive ,
165
171
} = changedState ;
166
172
167
173
if ( newCollapsedState !== undefined ) {
@@ -173,7 +179,15 @@ export function JsonViewer({
173
179
if ( newFilter !== undefined ) {
174
180
setFilter ( newFilter ) ;
175
181
}
176
- setState ( calculateState ( value , newCollapsedState ?? collapsedState , newFilter ?? filter ) ) ;
182
+ const caseSensitive = newCaseSensitive ?? caseSensitiveSearch ;
183
+ setState (
184
+ calculateState (
185
+ value ,
186
+ newCollapsedState ?? collapsedState ,
187
+ newFilter ?? filter ,
188
+ caseSensitive ,
189
+ ) ,
190
+ ) ;
177
191
178
192
cb ?.( ) ;
179
193
} ;
@@ -254,6 +268,12 @@ export function JsonViewer({
254
268
}
255
269
} ;
256
270
271
+ const handleUpdateCaseSensitive = ( ) => {
272
+ const newCaseSensitive = ! caseSensitiveSearch ;
273
+ setCaseSensitiveSearch ( newCaseSensitive ) ;
274
+ updateState ( { caseSensitive : newCaseSensitive } ) ;
275
+ } ;
276
+
257
277
const renderToolbar = ( ) => {
258
278
return (
259
279
< Flex gap = { 2 } wrap = "nowrap" className = { block ( 'toolbar' ) } >
@@ -279,6 +299,8 @@ export function JsonViewer({
279
299
onKeyDown = { onEnterKeyDown }
280
300
onNextMatch = { onNextMatch }
281
301
onPrevMatch = { onPrevMatch }
302
+ caseSensitive = { caseSensitiveSearch }
303
+ onUpdateCaseSensitive = { handleUpdateCaseSensitive }
282
304
/>
283
305
) }
284
306
< span className = { block ( 'extra-tools' ) } > { extraTools } </ span >
0 commit comments