@@ -299,7 +299,14 @@ export type PreviewTabData = {
299299} ;
300300
301301function Preview ( ) {
302- const previewContext = useFeatureSetPreviewContext ( ) ;
302+ const {
303+ previewData,
304+ updatePreviewData,
305+ updating,
306+ setUpdating,
307+ currentTab,
308+ setCurrentTab,
309+ } = useFeatureSetPreviewContext ( ) ;
303310 const featureSet = useFeatureSet ( ) ;
304311 const underlaySource = useUnderlaySource ( ) ;
305312 const underlay = useUnderlay ( ) ;
@@ -324,22 +331,20 @@ function Preview() {
324331 newPreviewOccurrences . sort ( ( a , b ) => a . id . localeCompare ( b . id ) ) ;
325332 let previewOccurrencesToLoad : PreviewOccurrence [ ] = [ ] ;
326333 let updateExisting = false ;
327- if ( newPreviewOccurrences . length > previewContext . previewData ?. length ) {
334+ if ( newPreviewOccurrences . length > previewData ?. length ) {
328335 previewOccurrencesToLoad = newPreviewOccurrences . filter (
329- ( npo ) => ! previewContext . previewData . some ( ( po ) => po . name === npo . id )
336+ ( npo ) => ! previewData . some ( ( po ) => po . name === npo . id )
330337 ) ;
331- } else if (
332- newPreviewOccurrences . length === previewContext . previewData ?. length
333- ) {
338+ } else if ( newPreviewOccurrences . length === previewData ?. length ) {
334339 const updatedPreviewOccurrences = newPreviewOccurrences . filter (
335340 ( npo , n ) =>
336341 JSON . stringify ( npo . sourceCriteria ) !==
337- JSON . stringify ( previewContext . previewData [ n ] . sourceCriteria )
342+ JSON . stringify ( previewData [ n ] . sourceCriteria )
338343 ) ;
339344 if ( updatedPreviewOccurrences . length > 0 ) {
340345 previewOccurrencesToLoad = updatedPreviewOccurrences ;
341- previewContext . updatePreviewData (
342- previewContext . previewData . map ( ( pd ) => {
346+ updatePreviewData (
347+ previewData . map ( ( pd ) => {
343348 const updatedIndex = updatedPreviewOccurrences . findIndex (
344349 ( upo ) => upo . id === pd . name
345350 ) ;
@@ -356,13 +361,11 @@ function Preview() {
356361 ) ;
357362 updateExisting = true ;
358363 }
359- } else if (
360- newPreviewOccurrences . length < previewContext . previewData ?. length
361- ) {
362- const newPreviewData = previewContext . previewData . filter ( ( pd ) =>
364+ } else if ( newPreviewOccurrences . length < previewData ?. length ) {
365+ const newPreviewData = previewData . filter ( ( pd ) =>
363366 newPreviewOccurrences . some ( ( npo ) => npo . id === pd . name )
364367 ) ;
365- previewContext . updatePreviewData ( newPreviewData ) ;
368+ updatePreviewData ( newPreviewData ) ;
366369 }
367370 if ( previewOccurrencesToLoad ?. length > 0 ) {
368371 loadNewPreviewData (
@@ -387,7 +390,7 @@ function Preview() {
387390 allOccurrences : PreviewOccurrence [ ] ,
388391 updateExisting ?: boolean
389392 ) => {
390- previewContext . setUpdating ( true ) ;
393+ setUpdating ( true ) ;
391394 const newOccurrenceData = await Promise . all (
392395 newOccurrences . map ( async ( params ) => {
393396 const res = await underlaySource . exportPreview (
@@ -420,14 +423,14 @@ function Preview() {
420423 } )
421424 ) ;
422425 if ( ! updateExisting ) {
423- const updatedPreviewData = [
424- ...previewContext . previewData ,
425- ...newOccurrenceData ,
426- ] ;
426+ const updatedPreviewData = [ ...previewData , ...newOccurrenceData ] ;
427427 updatedPreviewData . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
428- previewContext . updatePreviewData ( updatedPreviewData ) ;
428+ updatePreviewData ( updatedPreviewData ) ;
429+ if ( ! currentTab ) {
430+ setCurrentTab ( updatedPreviewData [ 0 ] . name ) ;
431+ }
429432 }
430- previewContext . setUpdating ( false ) ;
433+ setUpdating ( false ) ;
431434 allOccurrences . sort ( ( a , b ) => a . id . localeCompare ( b . id ) ) ;
432435 setPreviewOccurrences ( allOccurrences ) ;
433436 } ;
@@ -438,14 +441,12 @@ function Preview() {
438441 featureSet . predefinedCriteria . length > 0 ? (
439442 < Loading
440443 status = { { } }
441- isLoading = {
442- occurrenceFiltersState . isLoading || previewContext . updating
443- }
444+ isLoading = { occurrenceFiltersState . isLoading || updating }
444445 showLoadingMessage = { true }
445446 >
446447 < Tabs
447448 configs = {
448- ( previewContext . previewData ?? [ ] ) . map ( ( data ) => ( {
449+ ( previewData ?? [ ] ) . map ( ( data ) => ( {
449450 id : data . name ,
450451 title : data . name ,
451452 render : ( ) => {
@@ -472,6 +473,8 @@ function Preview() {
472473 } ,
473474 } ) ) ?? [ ]
474475 }
476+ currentTab = { currentTab }
477+ setCurrentTab = { setCurrentTab }
475478 />
476479 </ Loading >
477480 ) : (
0 commit comments