import React, { useCallback, useEffect, useMemo, useState } from 'react'; import PropTypes from 'prop-types'; import { EVENT_BUS_TYPE, PRIVATE_COLUMN_KEY, VIEW_TYPE } from '../../../constants'; import { FilterSetter, GalleryGroupBySetter, GallerySliderSetter, MapTypeSetter, SortSetter } from '../../data-process-setter'; import { gettext } from '../../../../utils/constants'; const MapViewToolBar = ({ isCustomPermission, readOnly, collaborators, modifyFilters, onToggleDetail, }) => { const [showGalleryToolbar, setShowGalleryToolbar] = useState(false); const [view, setView] = useState({}); const viewType = useMemo(() => view.type, [view]); const viewColumns = useMemo(() => { if (!view) return []; return view.columns; }, [view]); const filterColumns = useMemo(() => { return viewColumns && viewColumns.filter(c => c.key !== PRIVATE_COLUMN_KEY.FILE_TYPE); }, [viewColumns]); const onToggle = useCallback((value) => { setShowGalleryToolbar(value); }, []); const modifySorts = useCallback((sorts) => { window.sfMetadataContext.eventBus.dispatch(EVENT_BUS_TYPE.MAP_GALLERY_VIEW_CHANGE, { sorts }); }, []); const setMapView = useCallback(view => setView(view), []); useEffect(() => { const unsubscribeToggleViewToolbarMode = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.TOGGLE_MAP_VIEW_TOOLBAR, onToggle); const unsubscribeView = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.MAP_VIEW, setMapView); return () => { unsubscribeToggleViewToolbarMode(); unsubscribeView(); }; }, [setMapView, onToggle]); useEffect(() => { setView(window.sfMetadataStore.data.view); }, []); return ( <> {showGalleryToolbar ? (