@@ -3,6 +3,7 @@ import { useEffect, useState, useCallback, CSSProperties, useRef } from 'react';
33import events from './events' ;
44import { usePreferences } from './hooks/usePreferences' ;
55import { useLoadSpectra } from './hooks/useLoadSpectra' ;
6+ import { useWhiteList } from './hooks/useWhiteList' ;
67
78const styles : Record < 'container' | 'loadingContainer' , CSSProperties > = {
89 container : {
@@ -30,11 +31,12 @@ const styles: Record<'container' | 'loadingContainer', CSSProperties> = {
3031export type { NMRiumData } ;
3132
3233export default function NMRiumWrapper ( ) {
34+ const { allowedOrigins, isFetchAllowedOriginsPending } = useWhiteList ( ) ;
3335 const nmriumRef = useRef < NMRiumRef > ( null ) ;
3436 const [ data , setDate ] = useState < NMRiumData > ( ) ;
3537 const { workspace, preferences } = usePreferences ( ) ;
3638 const dataChangeHandler = useCallback < OnNMRiumChange > ( ( state , source ) => {
37- events . trigger ( 'data-change' , { data : state , source } ) ;
39+ events . trigger ( 'data-change' , { state, source } ) ;
3840 } , [ ] ) ;
3941
4042 const { load : loadSpectra , isLoading, data : loadedData } = useLoadSpectra ( ) ;
@@ -46,44 +48,52 @@ export default function NMRiumWrapper() {
4648 } , [ isLoading , loadedData ] ) ;
4749
4850 useEffect ( ( ) => {
49- const clearActionListener = events . on ( 'action-request' , ( request ) => {
50- switch ( request . type ) {
51- case 'exportSpectraViewerAsBlob' : {
52- const blob = nmriumRef . current ?. getSpectraViewerAsBlob ( ) ;
53- if ( blob ) {
54- events . trigger ( 'action-response' , {
55- type : request . type ,
56- data : blob ,
57- } ) ;
51+ const clearActionListener = events . on (
52+ 'action-request' ,
53+ ( request ) => {
54+ switch ( request . type ) {
55+ case 'exportSpectraViewerAsBlob' : {
56+ const blob = nmriumRef . current ?. getSpectraViewerAsBlob ( ) ;
57+ if ( blob ) {
58+ events . trigger ( 'action-response' , {
59+ type : request . type ,
60+ data : blob ,
61+ } ) ;
62+ }
63+ break ;
64+ }
65+ default : {
66+ throw new Error (
67+ `ERROR! Property 'type' accept only 'exportViewerAsBlob'.` ,
68+ ) ;
5869 }
59- break ;
60- }
61- default : {
62- throw new Error (
63- `ERROR! Property 'type' accept only 'exportViewerAsBlob'.` ,
64- ) ;
6570 }
66- }
67- } ) ;
68- const clearLoadListener = events . on ( 'load' , ( loadData ) => {
69- switch ( loadData . type ) {
70- case 'nmrium' :
71- setDate ( loadData . data ) ;
72- break ;
73- case 'file' :
74- loadSpectra ( { files : loadData . data } ) ;
75- break ;
76- case 'url' :
77- loadSpectra ( { urls : loadData . data } ) ;
78- break ;
71+ } ,
72+ { allowedOrigins } ,
73+ ) ;
74+ const clearLoadListener = events . on (
75+ 'load' ,
76+ ( loadData ) => {
77+ switch ( loadData . type ) {
78+ case 'nmrium' :
79+ setDate ( loadData . data ) ;
80+ break ;
81+ case 'file' :
82+ loadSpectra ( { files : loadData . data } ) ;
83+ break ;
84+ case 'url' :
85+ loadSpectra ( { urls : loadData . data } ) ;
86+ break ;
7987
80- default : {
81- throw new Error (
82- `ERROR! Property 'type' accept only nmrium, url or file.` ,
83- ) ;
88+ default : {
89+ throw new Error (
90+ `ERROR! Property 'type' accept only nmrium, url or file.` ,
91+ ) ;
92+ }
8493 }
85- }
86- } ) ;
94+ } ,
95+ { allowedOrigins } ,
96+ ) ;
8797
8898 return ( ) => {
8999 clearLoadListener ( ) ;
@@ -93,11 +103,12 @@ export default function NMRiumWrapper() {
93103
94104 return (
95105 < div style = { styles . container } >
96- { isLoading && (
97- < div style = { styles . loadingContainer } >
98- < span > Loading .... </ span >
99- </ div >
100- ) }
106+ { isLoading ||
107+ ( isFetchAllowedOriginsPending && (
108+ < div style = { styles . loadingContainer } >
109+ < span > Loading .... </ span >
110+ </ div >
111+ ) ) }
101112 < NMRium
102113 ref = { nmriumRef }
103114 data = { data }
0 commit comments