/** * @upsetjs/react * https://github.com/upsetjs/upsetjs * * Copyright (c) 2021 Samuel Gratzl */ import { queryOverlap, UpSetQuery } from '@upsetjs/model'; import React, { PropsWithChildren, ReactElement, useMemo } from 'react'; import KMapSelectionChart from './KMapSelectionChart'; import type { KMapDataInfo } from '../derive/deriveDataDependent'; import type { KMapStyleInfo } from '../derive/deriveStyleDependent'; export type KMapQueriesProps = PropsWithChildren<{ style: KMapStyleInfo; data: KMapDataInfo; hasHover?: boolean; secondary: boolean; queries: readonly UpSetQuery[]; }>; const KMapQueries = /*!#__PURE__*/ React.memo(function KMapQueries({ data, style, hasHover, secondary, queries, }: KMapQueriesProps) { const qs = useMemo( () => queries.map((q) => ({ ...q, overlap: queryOverlap(q, 'intersection', data.toElemKey), })), [queries, data.toElemKey] ); return ( {qs.map((q, i) => ( 0} tooltip={hasHover && !(secondary || i > 0) ? undefined : q.name} /> ))} ); }); export default KMapQueries as (props: KMapQueriesProps) => ReactElement;