@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
43 lines • 1.54 kB
JavaScript
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);
};