@@ -96,7 +96,10 @@ export function JsonViewer({
9696 extraTools,
9797 collapsedInitially,
9898} : JsonViewerProps ) {
99- const [ caseSensitiveSearch ] = useSetting ( CASE_SENSITIVE_JSON_SEARCH , false ) ;
99+ const [ caseSensitiveSearch , setCaseSensitiveSearch ] = useSetting (
100+ CASE_SENSITIVE_JSON_SEARCH ,
101+ false ,
102+ ) ;
100103
101104 const [ collapsedState , setCollapsedState ] = React . useState < CollapsedState > ( ( ) => {
102105 if ( collapsedInitially ) {
@@ -155,13 +158,16 @@ export function JsonViewer({
155158 } ;
156159
157160 const updateState = (
158- changedState : Partial < Pick < State , 'collapsedState' | 'filter' | 'matchIndex' > > ,
161+ changedState : Partial < Pick < State , 'collapsedState' | 'filter' | 'matchIndex' > > & {
162+ caseSensitive ?: boolean ;
163+ } ,
159164 cb ?: ( ) => void ,
160165 ) => {
161166 const {
162167 collapsedState : newCollapsedState ,
163168 matchIndex : newMatchIndex ,
164169 filter : newFilter ,
170+ caseSensitive : newCaseSensitive ,
165171 } = changedState ;
166172
167173 if ( newCollapsedState !== undefined ) {
@@ -173,7 +179,15 @@ export function JsonViewer({
173179 if ( newFilter !== undefined ) {
174180 setFilter ( newFilter ) ;
175181 }
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+ ) ;
177191
178192 cb ?.( ) ;
179193 } ;
@@ -254,6 +268,12 @@ export function JsonViewer({
254268 }
255269 } ;
256270
271+ const handleUpdateCaseSensitive = ( ) => {
272+ const newCaseSensitive = ! caseSensitiveSearch ;
273+ setCaseSensitiveSearch ( newCaseSensitive ) ;
274+ updateState ( { caseSensitive : newCaseSensitive } ) ;
275+ } ;
276+
257277 const renderToolbar = ( ) => {
258278 return (
259279 < Flex gap = { 2 } wrap = "nowrap" className = { block ( 'toolbar' ) } >
@@ -279,6 +299,8 @@ export function JsonViewer({
279299 onKeyDown = { onEnterKeyDown }
280300 onNextMatch = { onNextMatch }
281301 onPrevMatch = { onPrevMatch }
302+ caseSensitive = { caseSensitiveSearch }
303+ onUpdateCaseSensitive = { handleUpdateCaseSensitive }
282304 />
283305 ) }
284306 < span className = { block ( 'extra-tools' ) } > { extraTools } </ span >
0 commit comments