UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

43 lines 1.54 kB
import React, { useCallback, useEffect } from 'react'; import { useAnalyticsEvents } from '@atlaskit/analytics-next/useAnalyticsEvents'; import { Pulse } from '@atlaskit/linking-common'; import { isLocalStorageKeyDiscovered, markLocalStorageKeyDiscovered } from '../local-storage'; export const DiscoveryPulse = ({ children, localStorageKey, localStorageKeyExpirationInMs, discoveryMode = 'iteration', shouldShowPulse, testId, isInline }) => { const discovered = isLocalStorageKeyDiscovered(localStorageKey); const showPulse = shouldShowPulse !== null && shouldShowPulse !== void 0 ? shouldShowPulse : !discovered; const { createAnalyticsEvent } = useAnalyticsEvents(); useEffect(() => { if (showPulse) { createAnalyticsEvent({ action: 'viewed', actionSubject: 'pulse', eventType: 'ui', attributes: { pulseIdentifier: localStorageKey } }).fire('media'); } }, [createAnalyticsEvent, discovered, localStorageKey, showPulse]); const onDiscovery = useCallback(() => { if (!discovered) { markLocalStorageKeyDiscovered(localStorageKey, localStorageKeyExpirationInMs); } }, [discovered, localStorageKey, localStorageKeyExpirationInMs]); return /*#__PURE__*/React.createElement(Pulse, { onAnimationIteration: discoveryMode === 'iteration' ? onDiscovery : undefined, onAnimationStart: discoveryMode === 'start' ? onDiscovery : undefined, showPulse: showPulse, testId: testId, isInline: isInline }, children); };