import { useTranslation, withTranslation } from "react-i18next"; import defined from "terriajs-cesium/Source/Core/defined"; import CatalogMemberMixin from "../../ModelMixins/CatalogMemberMixin"; import { BaseModel } from "../../Models/Definition/Model"; import { useViewState } from "../Context"; import SearchHeader from "../Search/SearchHeader"; import Styles from "./data-catalog.scss"; import DataCatalogMember from "./DataCatalogMember"; import { observer } from "mobx-react"; interface DataCatalogProps { items?: readonly BaseModel[]; hideActionButton?: boolean; onActionButtonClicked?: (item: CatalogMemberMixin.Instance) => void; removable?: boolean; } export const DataCatalog = observer( ({ items, hideActionButton, onActionButtonClicked, removable }: DataCatalogProps) => { const viewState = useViewState(); const { t } = useTranslation(); const { terria } = viewState; const searchState = viewState.searchState; const isSearching = searchState.catalogSearchText.length > 0; const catalogSearchProvider = searchState.catalogSearchProvider; const unfilteredItems = isSearching && catalogSearchProvider && searchState.catalogSearchProvider?.searchResult.results ? searchState.catalogSearchProvider.searchResult.results.map( (result) => result.catalogItem ) : items; const filteredItems = (unfilteredItems || []).filter(defined); return ( ); } ); export default withTranslation()(DataCatalog);