/** * WordPress dependencies */ import { useEffect, useState } from '@wordpress/element'; import { useDispatch, useSelect } from '@wordpress/data'; /** * Internal dependencies */ import { store as NAB_CHECKER } from '../store'; import { State } from '../store/types'; export const Tabs = (): JSX.Element => (
); // ===== // VIEWS // ===== function Tab( { name, label }: { name: State[ 'tab' ]; label: string } ) { const activeTab = useSelect( ( select ) => select( NAB_CHECKER ).getTab(), [] ); const { setTab } = useDispatch( NAB_CHECKER ); return ( ); } function EventsTab() { const { activeTab, currentEvents } = useSelect( ( select ) => ( { activeTab: select( NAB_CHECKER ).getTab(), currentEvents: select( NAB_CHECKER ).getEvents(), } ), [] ); const [ previousEvents, setPreviousEvents ] = useState( currentEvents ); useEffect( () => { if ( 'events' === activeTab && currentEvents !== previousEvents ) { setPreviousEvents( currentEvents ); } }, [ activeTab, currentEvents, previousEvents, setPreviousEvents ] ); const label = 'events' !== activeTab && currentEvents !== previousEvents ? 'Events •' : 'Events'; return ; } function HeatmapClicksTab() { const { activeTab, currentClicks, settings } = useSelect( ( select ) => ( { activeTab: select( NAB_CHECKER ).getTab(), currentClicks: select( NAB_CHECKER ).getHeatmapClicks(), settings: select( NAB_CHECKER ).getSettings(), } ), [] ); const [ previousClicks, setPreviousClicks ] = useState( currentClicks ); useEffect( () => { if ( 'heatmap-clicks' === activeTab && currentClicks !== previousClicks ) { setPreviousClicks( currentClicks ); } }, [ activeTab, currentClicks, previousClicks, setPreviousClicks ] ); if ( ! settings.heatmaps.length && ! settings.experiments.some( ( e ) => e.active && e.heatmapTracking ) ) { return null; } const label = 'heatmap-clicks' !== activeTab && currentClicks !== previousClicks ? 'Heatmap •' : 'Heatmap'; return ; } // ====== // STYLES // ====== const TABS_STYLE = { display: 'flex', gap: '0.5em', };