/**
* WordPress dependencies
*/
import domReady from '@safe-wordpress/dom-ready';
import { render } from '@safe-wordpress/element';
import { addQueryArgs } from '@safe-wordpress/url';
/**
* External dependencies
*/
import { map } from 'lodash';
/**
* Internal dependencies
*/
import { ButtonProps, ContextualHelp, ContentProps } from './contextual-help';
import type { Question, TutorialStep } from './types';
type Args = {
readonly screen: string;
readonly questions: ReadonlyArray< Question >;
readonly walkthrough?: ReadonlyArray< TutorialStep >;
};
export * from './types';
export type ContextualHelpContentProps = Omit< ContentProps, 'mode' >;
export const ContextualHelpContent = (
props: ContextualHelpContentProps
): JSX.Element => ;
export type ContextualHelpButtonProps = Omit< ButtonProps, 'mode' >;
export const ContextualHelpButton = (
props: ContextualHelpButtonProps
): JSX.Element => ;
export function appendContextualHelp( {
screen,
questions,
walkthrough = [],
}: Args ): void {
domReady( () => {
const helpTab = document.getElementById( 'tab-panel-nelio-ab-testing' );
const wrapper = document.createElement( 'div' );
if ( helpTab ) {
helpTab.innerHTML = '';
helpTab.appendChild( wrapper );
} else {
document.body.appendChild( wrapper );
}
const closeHelpTab = () => {
const button = document.querySelector< HTMLAnchorElement >(
'#contextual-help-link.screen-meta-active'
);
button?.click();
};
render(
helpTab ? (
) : (
),
wrapper
);
} );
}
// =======
// HELPERS
// =======
const addUtmArgs = ( screen: string ) => ( question: Question ) => ( {
...question,
link: addQueryArgs( question.link, {
utm_source: 'nelio-ab-testing',
utm_medium: 'plugin',
utm_campaign: 'support',
utm_content: `${ screen }-page`,
} ),
} );