@@ -38,42 +38,46 @@ type MetadataPanelSection = "general" | "data";
3838
3939type MetadataPanelState = {
4040 open : boolean ;
41- setOpen : ( d : boolean ) => void ;
42- toggle : ( ) => void ;
4341 activeSection : MetadataPanelSection ;
44- setActiveSection : ( d : MetadataPanelSection ) => void ;
4542 selectedDimension : DimensionMetadataFragment | undefined ;
46- setSelectedDimension : ( d : DimensionMetadataFragment ) => void ;
47- clearSelectedDimension : ( ) => void ;
48- openDimension : ( d : DimensionMetadataFragment ) => void ;
49- reset : ( ) => void ;
43+ actions : {
44+ setOpen : ( d : boolean ) => void ;
45+ toggle : ( ) => void ;
46+ setActiveSection : ( d : MetadataPanelSection ) => void ;
47+ setSelectedDimension : ( d : DimensionMetadataFragment ) => void ;
48+ clearSelectedDimension : ( ) => void ;
49+ openDimension : ( d : DimensionMetadataFragment ) => void ;
50+ reset : ( ) => void ;
51+ } ;
5052} ;
5153
5254export const createMetadataPanelStore = ( ) =>
5355 createStore < MetadataPanelState > ( ( set , get ) => ( {
5456 open : false ,
55- setOpen : ( d : boolean ) => {
56- set ( { open : d } ) ;
57- } ,
58- toggle : ( ) => {
59- set ( { open : ! get ( ) . open } ) ;
60- } ,
6157 activeSection : "general" ,
62- setActiveSection : ( d : MetadataPanelSection ) => {
63- set ( { activeSection : d } ) ;
64- } ,
6558 selectedDimension : undefined ,
66- setSelectedDimension : ( d : DimensionMetadataFragment ) => {
67- set ( { selectedDimension : d } ) ;
68- } ,
69- clearSelectedDimension : ( ) => {
70- set ( { selectedDimension : undefined } ) ;
71- } ,
72- openDimension : ( d : DimensionMetadataFragment ) => {
73- set ( { open : true , activeSection : "data" , selectedDimension : d } ) ;
74- } ,
75- reset : ( ) => {
76- set ( { activeSection : "general" , selectedDimension : undefined } ) ;
59+ actions : {
60+ setOpen : ( d : boolean ) => {
61+ set ( { open : d } ) ;
62+ } ,
63+ toggle : ( ) => {
64+ set ( { open : ! get ( ) . open } ) ;
65+ } ,
66+ setActiveSection : ( d : MetadataPanelSection ) => {
67+ set ( { activeSection : d } ) ;
68+ } ,
69+ setSelectedDimension : ( d : DimensionMetadataFragment ) => {
70+ set ( { selectedDimension : d } ) ;
71+ } ,
72+ clearSelectedDimension : ( ) => {
73+ set ( { selectedDimension : undefined } ) ;
74+ } ,
75+ openDimension : ( d : DimensionMetadataFragment ) => {
76+ set ( { open : true , activeSection : "data" , selectedDimension : d } ) ;
77+ } ,
78+ reset : ( ) => {
79+ set ( { activeSection : "general" , selectedDimension : undefined } ) ;
80+ } ,
7781 } ,
7882 } ) ) ;
7983
@@ -85,6 +89,12 @@ const useMetadataPanelStore: <T>(
8589 return useStore ( store , selector , shallow ) ;
8690} ;
8791
92+ const useMetadataPanelStoreActions = ( ) => {
93+ const store = React . useContext ( MetadataPanelStoreContext ) ;
94+
95+ return useStore ( store , ( state ) => state . actions ) ;
96+ } ;
97+
8898const defaultStore = createMetadataPanelStore ( ) ;
8999
90100export const MetadataPanelStoreContext = React . createContext ( defaultStore ) ;
@@ -209,7 +219,7 @@ export const OpenMetadataPanelWrapper = ({
209219 children : React . ReactNode ;
210220} ) => {
211221 const classes = useOtherStyles ( ) ;
212- const openDimension = useMetadataPanelStore ( ( state ) => state . openDimension ) ;
222+ const { openDimension } = useMetadataPanelStoreActions ( ) ;
213223 const handleClick = useEvent ( ( ) => {
214224 openDimension ( dim ) ;
215225 } ) ;
@@ -246,15 +256,12 @@ export const MetadataPanel = ({
246256 const router = useRouter ( ) ;
247257 const drawerClasses = useDrawerStyles ( { top } ) ;
248258 const otherClasses = useOtherStyles ( ) ;
249- const { open, setOpen, toggle, activeSection, setActiveSection, reset } =
250- useMetadataPanelStore ( ( state ) => ( {
251- open : state . open ,
252- setOpen : state . setOpen ,
253- toggle : state . toggle ,
254- activeSection : state . activeSection ,
255- setActiveSection : state . setActiveSection ,
256- reset : state . reset ,
257- } ) ) ;
259+ const { open, activeSection } = useMetadataPanelStore ( ( state ) => ( {
260+ open : state . open ,
261+ activeSection : state . activeSection ,
262+ } ) ) ;
263+ const { setOpen, toggle, setActiveSection, reset } =
264+ useMetadataPanelStoreActions ( ) ;
258265 const handleToggle = useEvent ( ( ) => {
259266 toggle ( ) ;
260267 } ) ;
@@ -382,12 +389,11 @@ const TabPanelData = ({
382389 dimensions : DimensionMetadataFragment [ ] ;
383390} ) => {
384391 const classes = useOtherStyles ( ) ;
385- const { selectedDimension, setSelectedDimension, clearSelectedDimension } =
386- useMetadataPanelStore ( ( state ) => ( {
387- selectedDimension : state . selectedDimension ,
388- setSelectedDimension : state . setSelectedDimension ,
389- clearSelectedDimension : state . clearSelectedDimension ,
390- } ) ) ;
392+ const selectedDimension = useMetadataPanelStore (
393+ ( state ) => state . selectedDimension
394+ ) ;
395+ const { setSelectedDimension, clearSelectedDimension } =
396+ useMetadataPanelStoreActions ( ) ;
391397 const [ inputValue , setInputValue ] = React . useState ( "" ) ;
392398
393399 const options = React . useMemo ( ( ) => {
@@ -488,9 +494,7 @@ const TabPanelDataDimension = ({
488494 expandable : boolean ;
489495} ) => {
490496 const classes = useOtherStyles ( ) ;
491- const setSelectedDimension = useMetadataPanelStore (
492- ( state ) => state . setSelectedDimension
493- ) ;
497+ const { setSelectedDimension } = useMetadataPanelStoreActions ( ) ;
494498 const { description, showExpandButton } = React . useMemo ( ( ) => {
495499 if ( expandable && dim . description && dim . description . length > 180 ) {
496500 return {
0 commit comments