File: //wordpress/plugins/jetpack/latest/_inc/content-guidelines-ai.js
/**
* Content Guidelines AI — Entry point.
*
* Injects Jetpack AI-powered generate/improve buttons into the
* Content Guidelines admin page (Gutenberg experimental feature).
*/
import { mapAiFeatureResponseToAiFeatureProps } from '@automattic/jetpack-shared-stores';
import '@automattic/jetpack-shared-extension-utils/store/wordpress-com';
import { dispatch } from '@wordpress/data';
import './content-guidelines-ai/store';
import './content-guidelines-ai/style.scss';
import { startInjection } from './content-guidelines-ai/lib/inject';
// The AI feature state is resolved server-side and preloaded into the page
// (see _inc/content-guidelines-ai.php), so components render the correct
// locked/unlocked state on first paint with no client-side plan fetch.
// Without the preload (server-side lookup failed) render no AI UI at all —
// the store's optimistic hasFeature default would show unlocked buttons
// whose requests are destined to fail.
const aiFeature = window.jetpackContentGuidelinesAi?.aiFeature;
if ( aiFeature ) {
const plansDispatch = dispatch( 'wordpress-com/plans' );
plansDispatch.storeAiAssistantFeature( mapAiFeatureResponseToAiFeatureProps( aiFeature ) );
// Mark the selector resolved so its resolver never fires a redundant
// fetch when components select getAiAssistantFeature.
plansDispatch.finishResolution( 'getAiAssistantFeature', [] );
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', startInjection );
} else {
startInjection();
}
}