plugin updates

This commit is contained in:
Tony Volpe
2024-11-20 22:40:39 -05:00
parent 0238f0c4ca
commit 3362947c6e
434 changed files with 13405 additions and 9202 deletions
@@ -250,7 +250,7 @@ class WPSEO_Admin_Init {
* @return void
*/
private function load_xml_sitemaps_admin() {
if ( WPSEO_Options::get( 'enable_xml_sitemap', false ) ) {
if ( WPSEO_Options::get( 'enable_xml_sitemap', false, [ 'wpseo' ] ) ) {
new WPSEO_Sitemaps_Admin();
}
}
@@ -43,15 +43,11 @@ class WPSEO_Admin {
WPSEO_Options::maybe_set_multisite_defaults( false );
}
if ( WPSEO_Options::get( 'stripcategorybase' ) === true ) {
add_action( 'created_category', [ $this, 'schedule_rewrite_flush' ] );
add_action( 'edited_category', [ $this, 'schedule_rewrite_flush' ] );
add_action( 'delete_category', [ $this, 'schedule_rewrite_flush' ] );
}
add_action( 'created_category', [ $this, 'schedule_rewrite_flush' ] );
add_action( 'edited_category', [ $this, 'schedule_rewrite_flush' ] );
add_action( 'delete_category', [ $this, 'schedule_rewrite_flush' ] );
if ( WPSEO_Options::get( 'disable-attachment' ) === true ) {
add_filter( 'wpseo_accessible_post_types', [ 'WPSEO_Post_Type', 'filter_attachment_post_type' ] );
}
add_filter( 'wpseo_accessible_post_types', [ 'WPSEO_Post_Type', 'filter_attachment_post_type' ] );
add_filter( 'plugin_action_links_' . WPSEO_BASENAME, [ $this, 'add_action_link' ], 10, 2 );
add_filter( 'network_admin_plugin_action_links_' . WPSEO_BASENAME, [ $this, 'add_action_link' ], 10, 2 );
@@ -75,8 +71,6 @@ class WPSEO_Admin {
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] );
}
$this->set_upsell_notice();
$this->initialize_cornerstone_content();
if ( WPSEO_Utils::is_plugin_network_active() ) {
@@ -119,6 +113,10 @@ class WPSEO_Admin {
* @return void
*/
public function schedule_rewrite_flush() {
if ( WPSEO_Options::get( 'stripcategorybase' ) !== true ) {
return;
}
// Bail if this is a multisite installation and the site has been switched.
if ( is_multisite() && ms_is_switched() ) {
return;
@@ -367,17 +365,6 @@ class WPSEO_Admin {
);
}
/**
* Sets the upsell notice.
*
* @return void
*/
protected function set_upsell_notice() {
$upsell = new WPSEO_Product_Upsell_Notice();
$upsell->dismiss_notice_listener();
$upsell->initialize();
}
/**
* Whether we are on the admin dashboard page.
*
@@ -15,14 +15,14 @@ class WPSEO_Gutenberg_Compatibility {
*
* @var string
*/
public const CURRENT_RELEASE = '19.5.0';
public const CURRENT_RELEASE = '19.6.1';
/**
* The minimally supported version of Gutenberg by the plugin.
*
* @var string
*/
public const MINIMUM_SUPPORTED = '19.5.0';
public const MINIMUM_SUPPORTED = '19.6.1';
/**
* Holds the current version.
@@ -61,7 +61,7 @@ abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration
add_action( 'restrict_manage_posts', [ $this, 'render_hidden_input' ] );
}
if ( $this->is_filter_active() && $this->get_explanation() !== null ) {
if ( $this->is_filter_active() ) {
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_explanation_assets' ] );
}
}
@@ -83,13 +83,19 @@ abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration
* @return void
*/
public function enqueue_explanation_assets() {
$explanation = $this->get_explanation();
if ( $explanation === null ) {
return;
}
$asset_manager = new WPSEO_Admin_Asset_Manager();
$asset_manager->enqueue_script( 'filter-explanation' );
$asset_manager->enqueue_style( 'filter-explanation' );
$asset_manager->localize_script(
'filter-explanation',
'yoastFilterExplanation',
[ 'text' => $this->get_explanation() ]
[ 'text' => $explanation ]
);
}
@@ -82,8 +82,8 @@ class WPSEO_Metabox extends WPSEO_Meta {
$this->editor = new WPSEO_Metabox_Editor();
$this->editor->register_hooks();
$this->social_is_enabled = WPSEO_Options::get( 'opengraph', false ) || WPSEO_Options::get( 'twitter', false );
$this->is_advanced_metadata_enabled = WPSEO_Capability_Utils::current_user_can( 'wpseo_edit_advanced_metadata' ) || WPSEO_Options::get( 'disableadvanced_meta' ) === false;
$this->social_is_enabled = WPSEO_Options::get( 'opengraph', false, [ 'wpseo_social' ] ) || WPSEO_Options::get( 'twitter', false, [ 'wpseo_social' ] );
$this->is_advanced_metadata_enabled = WPSEO_Capability_Utils::current_user_can( 'wpseo_edit_advanced_metadata' ) || WPSEO_Options::get( 'disableadvanced_meta', null, [ 'wpseo' ] ) === false;
$this->seo_analysis = new WPSEO_Metabox_Analysis_SEO();
$this->readability_analysis = new WPSEO_Metabox_Analysis_Readability();
@@ -21,8 +21,8 @@ $yoast_seo_i18n_title = __( 'Problems', 'wordpress-seo' );
$yoast_seo_i18n_issues = __( 'We have detected the following issues that affect the SEO of your site.', 'wordpress-seo' );
$yoast_seo_i18n_no_issues = __( 'Good job! We could detect no serious SEO problems.', 'wordpress-seo' );
$yoast_seo_i18n_muted_issues_title = sprintf(
/* translators: %d expands the amount of hidden problems. */
_n( 'You have %d hidden problem:', 'You have %d hidden problems:', $yoast_seo_dismissed_total, 'wordpress-seo' ),
/* translators: %d expands the amount of hidden notifications. */
_n( 'You have %d hidden notification:', 'You have %d hidden notifications:', $yoast_seo_dismissed_total, 'wordpress-seo' ),
$yoast_seo_dismissed_total
);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -51,7 +51,9 @@ class WPSEO_Post_Type {
* @return array The filtered array.
*/
public static function filter_attachment_post_type( array $post_types ) {
unset( $post_types['attachment'] );
if ( WPSEO_Options::get( 'disable-attachment' ) === true ) {
unset( $post_types['attachment'] );
}
return $post_types;
}
@@ -17,7 +17,7 @@ class WPSEO_Rewrite {
add_filter( 'query_vars', [ $this, 'query_vars' ] );
add_filter( 'term_link', [ $this, 'no_category_base' ], 10, 3 );
add_filter( 'request', [ $this, 'request' ] );
add_filter( 'category_rewrite_rules', [ $this, 'category_rewrite_rules' ] );
add_filter( 'category_rewrite_rules', [ $this, 'category_rewrite_rules_wrapper' ] );
add_action( 'created_category', [ $this, 'schedule_flush' ] );
add_action( 'edited_category', [ $this, 'schedule_flush' ] );
@@ -32,7 +32,9 @@ class WPSEO_Rewrite {
* @return void
*/
public function schedule_flush() {
add_action( 'shutdown', 'flush_rewrite_rules' );
if ( WPSEO_Options::get( 'stripcategorybase' ) === true ) {
add_action( 'shutdown', 'flush_rewrite_rules' );
}
}
/**
@@ -45,6 +47,10 @@ class WPSEO_Rewrite {
* @return string
*/
public function no_category_base( $link, $term, $taxonomy ) {
if ( WPSEO_Options::get( 'stripcategorybase' ) !== true ) {
return $link;
}
if ( $taxonomy !== 'category' ) {
return $link;
}
@@ -91,6 +97,10 @@ class WPSEO_Rewrite {
* @return array<string> The query vars.
*/
public function request( $query_vars ) {
if ( WPSEO_Options::get( 'stripcategorybase' ) !== true ) {
return $query_vars;
}
if ( ! isset( $query_vars['wpseo_category_redirect'] ) ) {
return $query_vars;
}
@@ -99,6 +109,21 @@ class WPSEO_Rewrite {
return [];
}
/**
* Wrapper for the category_rewrite_rules() below, so we can add the $rules param in a BC way.
*
* @param array<string> $rules Rewrite rules generated for the current permastruct, keyed by their regex pattern.
*
* @return array<string> The category rewrite rules.
*/
public function category_rewrite_rules_wrapper( $rules ) {
if ( WPSEO_Options::get( 'stripcategorybase' ) !== true ) {
return $rules;
}
return $this->category_rewrite_rules();
}
/**
* This function taken and only slightly adapted from WP No Category Base plugin by Saurabh Gupta.
*
@@ -103,10 +103,6 @@ class WPSEO_Upgrade {
add_action( 'init', [ $this, 'upgrade_125' ] );
}
// Since 3.7.
$upsell_notice = new WPSEO_Product_Upsell_Notice();
$upsell_notice->set_upgrade_notice();
/**
* Filter: 'wpseo_run_upgrade' - Runs the upgrade hook which are dependent on Yoast SEO.
*
@@ -154,9 +150,9 @@ class WPSEO_Upgrade {
*/
protected function finish_up( $previous_version = null ) {
if ( $previous_version ) {
WPSEO_Options::set( 'previous_version', $previous_version );
WPSEO_Options::set( 'previous_version', $previous_version, 'wpseo' );
}
WPSEO_Options::set( 'version', WPSEO_VERSION );
WPSEO_Options::set( 'version', WPSEO_VERSION, 'wpseo' );
// Just flush rewrites, always, to at least make them work after an upgrade.
add_action( 'shutdown', 'flush_rewrite_rules' );
@@ -240,7 +240,7 @@ class WPSEO_Meta {
*/
public static function init() {
foreach ( self::$social_networks as $option => $network ) {
if ( WPSEO_Options::get( $option, false ) === true ) {
if ( WPSEO_Options::get( $option, false, [ 'wpseo_social' ] ) === true ) {
foreach ( self::$social_fields as $box => $type ) {
self::$meta_fields['social'][ $network . '-' . $box ] = [
'type' => $type,
@@ -107,7 +107,7 @@ class WPSEO_Option_Social extends WPSEO_Option {
* @return void
*/
public function translate_defaults() {
self::$twitter_card_types['summary_large_image'] = __( 'Summary with large image', 'wordpress-seo' );
self::$twitter_card_types['summary_large_image'] = 'Summary with large image';
}
/**
@@ -212,10 +212,13 @@ class WPSEO_Options {
/**
* Retrieve all the options for the SEO plugin in one go.
*
* @param array<string> $specific_options The option groups of the option you want to get.
*
* @return array Array combining the values of all the options.
*/
public static function get_all() {
static::$option_values = static::get_options( static::get_option_names() );
public static function get_all( $specific_options = [] ) {
$option_names = ( empty( $specific_options ) ) ? static::get_option_names() : $specific_options;
static::$option_values = static::get_options( $option_names );
return static::$option_values;
}
@@ -269,14 +272,15 @@ class WPSEO_Options {
/**
* Retrieve a single field from any option for the SEO plugin. Keys are always unique.
*
* @param string $key The key it should return.
* @param mixed $default_value The default value that should be returned if the key isn't set.
* @param string $key The key it should return.
* @param mixed $default_value The default value that should be returned if the key isn't set.
* @param array<string> $option_groups The option groups to retrieve the option from.
*
* @return mixed Returns value if found, $default_value if not.
*/
public static function get( $key, $default_value = null ) {
if ( static::$option_values === null ) {
static::prime_cache();
public static function get( $key, $default_value = null, $option_groups = [] ) {
if ( ! isset( static::$option_values[ $key ] ) ) {
static::prime_cache( $option_groups );
}
if ( isset( static::$option_values[ $key ] ) ) {
return static::$option_values[ $key ];
@@ -297,23 +301,26 @@ class WPSEO_Options {
/**
* Primes our cache.
*
* @param array<string> $option_groups The option groups to prime the cache with.
*
* @return void
*/
private static function prime_cache() {
static::$option_values = static::get_all();
private static function prime_cache( $option_groups = [] ) {
static::$option_values = static::get_all( $option_groups );
static::$option_values = static::add_ms_option( static::$option_values );
}
/**
* Retrieve a single field from an option for the SEO plugin.
*
* @param string $key The key to set.
* @param mixed $value The value to set.
* @param string $key The key to set.
* @param mixed $value The value to set.
* @param string $option_group The lookup table which represents the option_group where the key is stored.
*
* @return mixed|null Returns value if found, $default if not.
*/
public static function set( $key, $value ) {
$lookup_table = static::get_lookup_table();
public static function set( $key, $value, $option_group = '' ) {
$lookup_table = static::get_lookup_table( $option_group );
if ( isset( $lookup_table[ $key ] ) ) {
return static::save_option( $lookup_table[ $key ], $key, $value );
@@ -562,12 +569,15 @@ class WPSEO_Options {
/**
* Retrieves a lookup table to find in which option_group a key is stored.
*
* @param string $option_group The option_group where the key is stored.
*
* @return array The lookup table.
*/
private static function get_lookup_table() {
$lookup_table = [];
private static function get_lookup_table( $option_group = '' ) {
$lookup_table = [];
$option_groups = ( $option_group === '' ) ? static::$options : [ $option_group => static::$options[ $option_group ] ];
foreach ( array_keys( static::$options ) as $option_name ) {
foreach ( array_keys( $option_groups ) as $option_name ) {
$full_option = static::get_option( $option_name );
foreach ( $full_option as $key => $value ) {
$lookup_table[ $key ] = $option_name;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -247,8 +247,8 @@
(0,s.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,i.createInterpolateElement)((0,s.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */
(0,s.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"<br/>","<a>","<ArrowNarrowRightIcon />","</a>"),d))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,t.createElement)(me.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:n,target:"_blank",ref:c},(0,t.createElement)(nt,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),a,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */
(0,s.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,t.createElement)(me.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:l},(0,s.__)("Close","wordpress-seo"))))};Gt.propTypes={learnMoreLink:l().string.isRequired,upsellLink:l().string.isRequired,thumbnail:l().shape({src:l().string.isRequired,width:l().string,height:l().string}).isRequired,wistiaEmbedPermission:l().shape({value:l().bool.isRequired,status:l().string.isRequired,set:l().func.isRequired}).isRequired,upsellLabel:l().string},Gt.defaultProps={upsellLabel:(0,s.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */
(0,s.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),l().bool.isRequired,l().func,l().string.isRequired,l().string.isRequired,l().func.isRequired,l().string.isRequired,l().string.isRequired;const Vt="yoast-seo/editor",Qt=()=>{const e=(0,E.useSelect)((e=>e(Vt).selectLink("https://yoa.st/ai-fix-assessments-upsell-learn-more")),[]),r={upsellLink:(0,E.useSelect)((e=>e(Vt).selectLink("https://yoa.st/ai-fix-assessments-upsell")),[]),title:(0,s.__)("Fix assessments with AI!","wordpress-seo"),upsellLabel:(0,s.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */
(0,s.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},o=(0,E.useSelect)((e=>e(Vt).selectImageLink("ai-fix-assessments-thumbnail.png")),[]),n=(0,i.useMemo)((()=>({src:o,width:"432",height:"244"})),[o]),a=(0,E.useSelect)((e=>e(Vt).selectWistiaEmbedPermissionValue()),[]),l=(0,E.useSelect)((e=>e(Vt).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:c}=(0,E.useDispatch)(Vt),d=(0,i.useMemo)((()=>({value:a,status:l,set:c})),[a,l,c]);return(0,t.createElement)(Gt,{learnMoreLink:e,thumbnail:n,wistiaEmbedPermission:d,...r})},Zt=e=>{let t=[...e];return e.forEach((e=>{e.innerBlocks&&e.innerBlocks.length>0&&(t=[...t,...Zt(e.innerBlocks)])})),t},Jt=({id:e,isPremium:r})=>{const n=e+"AIFixes",[a,,,l,c]=(0,me.useToggleState)(!1),d=(0,E.useSelect)((e=>e("yoast-seo/editor").getActiveAIFixesButton()),[]),p=(0,E.useSelect)((e=>e("yoast-seo/editor").getActiveMarker()),[]),{setActiveAIFixesButton:u,setActiveMarker:m,setMarkerPauseStatus:h,setMarkerStatus:y}=(0,E.useDispatch)("yoast-seo/editor"),g=(0,i.useRef)(null),[w,b]=(0,i.useState)(""),f=(0,s.__)("Optimize with AI","wordpress-seo"),k=(0,s.__)("Please switch to the visual editor to optimize with AI.","wordpress-seo"),x=d===n,{isEnabled:_,ariaLabel:v}=(0,E.useSelect)((e=>{if(null!==d&&!x)return{isEnabled:!1,ariaLabel:null};const t=e("yoast-seo/editor").getDisabledAIFixesButtons();if(Object.keys(t).includes(n))return{isEnabled:!1,ariaLabel:t[n]};if("visual"!==e("core/edit-post").getEditorMode())return{isEnabled:!1,ariaLabel:k};const s=Zt(e("core/block-editor").getBlocks()).every((t=>"visual"===e("core/block-editor").getBlockMode(t.clientId)));return{isEnabled:s,ariaLabel:s?f:k}}),[x,d]),R=()=>{p&&(m(null),h(!1),window.YoastSEO.analysis.applyMarks(new oe.Paper("",{}),[])),n===d?(u(null),y("enabled")):(u(n),y("disabled")),b("")},N=(0,i.useCallback)((()=>{r?((0,ye.doAction)("yoast.ai.fixAssessments",n),R()):l()}),[R,l]),S=(0,i.useCallback)((()=>{v&&b("yoast-tooltip yoast-tooltip-multiline "+(_?"yoast-tooltip-w":"yoast-tooltip-nw"))}),[_,v]),B=(0,i.useCallback)((()=>{b("")}),[]);return(0,t.createElement)(o.IconAIFixesButton,{onClick:N,ariaLabel:v,onPointerEnter:S,onPointerLeave:B,id:n,className:`ai-button ${w}`,pressed:x,disabled:!_},!r&&(0,t.createElement)(he,{className:"yst-fixes-button__lock-icon yst-text-amber-900"}),(0,t.createElement)(o.SparklesIcon,{pressed:x}),a&&(0,t.createElement)(me.Modal,{className:"yst-introduction-modal",isOpen:a,onClose:c,initialFocus:g},(0,t.createElement)(me.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl yst-introduction-modal-panel"},(0,t.createElement)(Qt,{onClose:c,focusElementRef:g}))))};Jt.propTypes={id:l().string.isRequired,isPremium:l().bool},Jt.defaultProps={isPremium:!1};const Xt=Jt,es=d().span`
(0,s.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),l().bool.isRequired,l().func,l().func,l().string.isRequired,l().string.isRequired,l().string.isRequired,l().string.isRequired;const Vt="yoast-seo/editor",Qt=()=>{const e=(0,E.useSelect)((e=>e(Vt).selectLink("https://yoa.st/ai-fix-assessments-upsell-learn-more")),[]),r={upsellLink:(0,E.useSelect)((e=>e(Vt).selectLink("https://yoa.st/ai-fix-assessments-upsell")),[]),title:(0,s.__)("Fix assessments with AI!","wordpress-seo"),upsellLabel:(0,s.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */
(0,s.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},o=(0,E.useSelect)((e=>e(Vt).selectImageLink("ai-fix-assessments-thumbnail.png")),[]),n=(0,i.useMemo)((()=>({src:o,width:"432",height:"244"})),[o]),a=(0,E.useSelect)((e=>e(Vt).selectWistiaEmbedPermissionValue()),[]),l=(0,E.useSelect)((e=>e(Vt).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:c}=(0,E.useDispatch)(Vt),d=(0,i.useMemo)((()=>({value:a,status:l,set:c})),[a,l,c]);return(0,t.createElement)(Gt,{learnMoreLink:e,thumbnail:n,wistiaEmbedPermission:d,...r})},Zt=e=>{let t=[...e];return e.forEach((e=>{e.innerBlocks&&e.innerBlocks.length>0&&(t=[...t,...Zt(e.innerBlocks)])})),t},Jt=({id:e,isPremium:r})=>{const n=e+"AIFixes",[a,,,l,c]=(0,me.useToggleState)(!1),d=(0,E.useSelect)((e=>e("yoast-seo/editor").getActiveAIFixesButton()),[]),p=(0,E.useSelect)((e=>e("yoast-seo/editor").getActiveMarker()),[]),{setActiveAIFixesButton:u,setActiveMarker:m,setMarkerPauseStatus:h,setMarkerStatus:y}=(0,E.useDispatch)("yoast-seo/editor"),g=(0,i.useRef)(null),[w,b]=(0,i.useState)(""),f=(0,s.__)("Optimize with AI","wordpress-seo"),k=(0,s.__)("Please switch to the visual editor to optimize with AI.","wordpress-seo"),x=d===n,_=(0,E.useSelect)((e=>e("core/edit-post").getEditorMode()),[]),{isEnabled:v,ariaLabel:R}=(0,E.useSelect)((e=>{if(null!==d&&!x)return{isEnabled:!1,ariaLabel:null};const t=e("yoast-seo/editor").getDisabledAIFixesButtons();if(Object.keys(t).includes(n))return{isEnabled:!1,ariaLabel:t[n]};if("visual"!==_)return{isEnabled:!1,ariaLabel:k};const s=Zt(e("core/block-editor").getBlocks()).every((t=>"visual"===e("core/block-editor").getBlockMode(t.clientId)));return{isEnabled:s,ariaLabel:s?f:k}}),[x,d,_]);(0,i.useEffect)((()=>(y("visual"!==_||d?"disabled":"enabled"),()=>{y("disabled")})),[_,d,y]);const N=()=>{p&&(m(null),h(!1),window.YoastSEO.analysis.applyMarks(new oe.Paper("",{}),[])),n===d?(u(null),y("enabled")):(u(n),y("disabled")),b("")},S=(0,i.useCallback)((()=>{r?((0,ye.doAction)("yoast.ai.fixAssessments",n),N()):l()}),[N,l]),B=(0,i.useCallback)((()=>{R&&b("yoast-tooltip yoast-tooltip-multiline "+(v?"yoast-tooltip-w":"yoast-tooltip-nw"))}),[v,R]),C=(0,i.useCallback)((()=>{b("")}),[]);return(0,t.createElement)(o.IconAIFixesButton,{onClick:S,ariaLabel:R,onPointerEnter:B,onPointerLeave:C,id:n,className:`ai-button ${w}`,pressed:x,disabled:!v},!r&&(0,t.createElement)(he,{className:"yst-fixes-button__lock-icon yst-text-amber-900"}),(0,t.createElement)(o.SparklesIcon,{pressed:x}),a&&(0,t.createElement)(me.Modal,{className:"yst-introduction-modal",isOpen:a,onClose:c,initialFocus:g},(0,t.createElement)(me.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl yst-introduction-modal-panel"},(0,t.createElement)(Qt,{onClose:c,focusElementRef:g}))))};Jt.propTypes={id:l().string.isRequired,isPremium:l().bool},Jt.defaultProps={isPremium:!1};const Xt=Jt,es=d().span`
font-size: 1em;
font-weight: bold;
margin: 1.5em 0 1em;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{AnalysisList:()=>I,AnalysisResult:()=>R,ContentAnalysis:()=>A,SiteSEOReport:()=>F,renderRatingToColor:()=>w});const s=window.React;var r=e.n(s);const o=window.wp.i18n,n=window.yoast.styledComponents;var i=e.n(n);const a=window.yoast.propTypes;var l=e.n(a);const u=window.lodash.noop;var d=e.n(u);const m=window.yoast.styleGuide,p=window.lodash,g=window.yoast.componentsNew,c=window.yoast.helpers,{stripTagsFromHtmlString:h}=c.strings,B=["a","b","strong","em","i"],k=i().div`
(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{AnalysisList:()=>I,AnalysisResult:()=>R,ContentAnalysis:()=>A,SiteSEOReport:()=>F,renderRatingToColor:()=>w});const s=window.React;var r=e.n(s);const o=window.wp.i18n,n=window.yoast.styledComponents;var i=e.n(n);const a=window.yoast.propTypes;var l=e.n(a);const u=window.lodash.noop;var d=e.n(u);const g=window.yoast.styleGuide,m=window.lodash,p=window.yoast.componentsNew,c=window.yoast.helpers,{stripTagsFromHtmlString:h}=c.strings,B=["a","b","strong","em","i"],k=i().div`
display: grid;
grid-template-rows: 1fr;
max-width: 32px;
@@ -13,32 +13,32 @@
align-items: flex-start;
position: relative;
gap: 12px;
`,C=i()(g.SvgIcon)`
`,C=i()(p.SvgIcon)`
margin: 3px 0 0 0;
`,x=i().p`
margin: 0;
flex: 1 1 auto;
color: ${e=>e.suppressedText?"rgba(30,30,30,0.5)":"inherit"};
`,y=({ariaLabel:e,id:t,className:r,status:o,onClick:n,isPressed:i})=>(0,s.createElement)(g.IconButtonToggle,{marksButtonStatus:o,className:r,onClick:n,id:t,icon:"eye",pressed:i,ariaLabel:e}),f=({markButtonFactory:e,...t})=>{const[r,o]=(0,s.useState)(!1),n=(0,s.useCallback)((()=>o(!1)),[]),i=(0,s.useCallback)((()=>o(!0)),[]);e=e||y;const{id:a,marker:l,hasMarksButton:u}=t;let d=null;return function(e){return!e.hasMarksButton||"hidden"===e.marksButtonStatus}(t)||(d=e({onClick:t.shouldUpsellHighlighting?i:t.onButtonClickMarks,status:t.marksButtonStatus,className:t.marksButtonClassName,id:t.buttonIdMarks,isPressed:t.pressed,ariaLabel:t.ariaLabelMarks})),(0,s.useEffect)((()=>{t.onResultChange(a,l,u)}),[a,l,u]),(0,s.createElement)(b,null,(0,s.createElement)(C,{icon:"circle",color:t.bulletColor,size:"13px"}),(0,s.createElement)(x,{suppressedText:t.suppressedText},t.hasBetaBadgeLabel&&(0,s.createElement)(g.BetaBadge,null),(0,s.createElement)("span",{dangerouslySetInnerHTML:{__html:h(t.text,B)}})),(0,s.createElement)(k,null,d,t.renderHighlightingUpsell(r,n),t.hasEditButton&&t.isPremium&&(0,s.createElement)(g.IconCTAEditButton,{className:t.editButtonClassName,onClick:t.onButtonClickEdit,id:t.buttonIdEdit,icon:"edit",ariaLabel:t.ariaLabelEdit}),t.renderAIFixesButton(t.hasAIFixes,t.id)))};f.propTypes={text:l().string.isRequired,suppressedText:l().bool,bulletColor:l().string.isRequired,hasMarksButton:l().bool.isRequired,hasEditButton:l().bool,hasAIButton:l().bool,hasAIFixes:l().bool,buttonIdMarks:l().string.isRequired,buttonIdEdit:l().string,pressed:l().bool.isRequired,ariaLabelMarks:l().string.isRequired,ariaLabelEdit:l().string,onButtonClickMarks:l().func.isRequired,onButtonClickEdit:l().func,marksButtonStatus:l().string,marksButtonClassName:l().string,markButtonFactory:l().func,editButtonClassName:l().string,hasBetaBadgeLabel:l().bool,isPremium:l().bool,onResultChange:l().func,id:l().string,marker:l().oneOfType([l().func,l().array]),shouldUpsellHighlighting:l().bool,renderHighlightingUpsell:l().func,renderAIFixesButton:l().func},f.defaultProps={suppressedText:!1,marksButtonStatus:"enabled",marksButtonClassName:"",editButtonClassName:"",hasBetaBadgeLabel:!1,hasEditButton:!1,hasAIFixes:!1,buttonIdEdit:"",ariaLabelEdit:"",onButtonClickEdit:p.noop,isPremium:!1,onResultChange:p.noop,id:"",marker:p.noop,shouldUpsellHighlighting:!1,renderHighlightingUpsell:p.noop,renderAIFixesButton:p.noop};const R=f,E=i().ul`
`,y=({ariaLabel:e,id:t,className:r,status:o,onClick:n,isPressed:i})=>(0,s.createElement)(p.IconButtonToggle,{marksButtonStatus:o,className:r,onClick:n,id:t,icon:"eye",pressed:i,ariaLabel:e}),f=({markButtonFactory:e,...t})=>{const[r,o]=(0,s.useState)(!1),n=(0,s.useCallback)((()=>o(!1)),[]),i=(0,s.useCallback)((()=>o(!0)),[]);e=e||y;const{id:a,marker:l,hasMarksButton:u}=t;let d=null;return function(e){return!e.hasMarksButton||"hidden"===e.marksButtonStatus}(t)||(d=e({onClick:t.shouldUpsellHighlighting?i:t.onButtonClickMarks,status:t.marksButtonStatus,className:t.marksButtonClassName,id:t.buttonIdMarks,isPressed:t.pressed,ariaLabel:t.ariaLabelMarks})),(0,s.useEffect)((()=>{t.onResultChange(a,l,u)}),[a,l,u]),(0,s.createElement)(b,null,(0,s.createElement)(C,{icon:"circle",color:t.bulletColor,size:"13px"}),(0,s.createElement)(x,{suppressedText:t.suppressedText},t.hasBetaBadgeLabel&&(0,s.createElement)(p.BetaBadge,null),(0,s.createElement)("span",{dangerouslySetInnerHTML:{__html:h(t.text,B)}})),(0,s.createElement)(k,null,d,t.renderHighlightingUpsell(r,n),t.hasEditButton&&t.isPremium&&(0,s.createElement)(p.IconCTAEditButton,{className:t.editButtonClassName,onClick:t.onButtonClickEdit,id:t.buttonIdEdit,icon:"edit",ariaLabel:t.ariaLabelEdit}),t.renderAIFixesButton(t.hasAIFixes,t.id)))};f.propTypes={text:l().string.isRequired,suppressedText:l().bool,bulletColor:l().string.isRequired,hasMarksButton:l().bool.isRequired,hasEditButton:l().bool,hasAIButton:l().bool,hasAIFixes:l().bool,buttonIdMarks:l().string.isRequired,buttonIdEdit:l().string,pressed:l().bool.isRequired,ariaLabelMarks:l().string.isRequired,ariaLabelEdit:l().string,onButtonClickMarks:l().func.isRequired,onButtonClickEdit:l().func,marksButtonStatus:l().string,marksButtonClassName:l().string,markButtonFactory:l().func,editButtonClassName:l().string,hasBetaBadgeLabel:l().bool,isPremium:l().bool,onResultChange:l().func,id:l().string,marker:l().oneOfType([l().func,l().array]),shouldUpsellHighlighting:l().bool,renderHighlightingUpsell:l().func,renderAIFixesButton:l().func},f.defaultProps={suppressedText:!1,marksButtonStatus:"enabled",marksButtonClassName:"",editButtonClassName:"",hasBetaBadgeLabel:!1,hasEditButton:!1,hasAIFixes:!1,buttonIdEdit:"",ariaLabelEdit:"",onButtonClickEdit:m.noop,isPremium:!1,onResultChange:m.noop,id:"",marker:m.noop,shouldUpsellHighlighting:!1,renderHighlightingUpsell:m.noop,renderAIFixesButton:m.noop};const R=f,E=i().ul`
margin: 8px 0;
padding: 0;
list-style: none;
`;function w(e){switch(e){case"good":return m.colors.$color_good;case"OK":return m.colors.$color_ok;case"bad":return m.colors.$color_bad;default:return m.colors.$color_score_icon}}function I(e){return(0,s.createElement)(E,{role:"list"},e.results.map((t=>{const r=w(t.rating),n=t.markerId===e.marksButtonActivatedResult,i=t.id+"Mark",a=t.id+"Edit";let l="";l="disabled"===e.marksButtonStatus?(0,o.__)("Marks are disabled in current view","wordpress-seo"):n?(0,o.__)("Remove highlight from the text","wordpress-seo"):(0,o.__)("Highlight this result in the text","wordpress-seo");const u=t.editFieldName,d=""===u?"":(0,o.sprintf)(
`;function w(e){switch(e){case"good":return g.colors.$color_good;case"OK":return g.colors.$color_ok;case"bad":return g.colors.$color_bad;default:return g.colors.$color_score_icon}}function I(e){return(0,s.createElement)(E,{role:"list"},e.results.map((t=>{const r=w(t.rating),n=t.markerId===e.marksButtonActivatedResult,i=t.id+"Mark",a=t.id+"Edit";let l="";l="disabled"===e.marksButtonStatus?(0,o.__)("Highlighting is currently disabled","wordpress-seo"):n?(0,o.__)("Remove highlight from the text","wordpress-seo"):(0,o.__)("Highlight this result in the text","wordpress-seo");const u=t.editFieldName,d=""===u?"":(0,o.sprintf)(
/* Translators: %1$s refers to the name of the field that should be edited (keyphrase, meta description,
slug or SEO title). */
(0,o.__)("Edit your %1$s","wordpress-seo"),u);return(0,s.createElement)(R,{key:t.id,id:t.id,text:t.text,marker:t.marker,bulletColor:r,hasMarksButton:t.hasMarks,hasEditButton:t.hasJumps,hasAIFixes:t.hasAIFixes,ariaLabelMarks:l,ariaLabelEdit:d,pressed:n,suppressedText:"upsell"===t.rating,buttonIdMarks:i,buttonIdEdit:a,onButtonClickMarks:()=>e.onMarksButtonClick(t.id,t.marker),onButtonClickEdit:()=>e.onEditButtonClick(t.id),marksButtonClassName:e.marksButtonClassName,editButtonClassName:e.editButtonClassName,marksButtonStatus:e.marksButtonStatus,hasBetaBadgeLabel:t.hasBetaBadge,isPremium:e.isPremium,onResultChange:e.onResultChange,markButtonFactory:e.markButtonFactory,shouldUpsellHighlighting:e.shouldUpsellHighlighting,renderAIFixesButton:e.renderAIFixesButton,renderHighlightingUpsell:e.renderHighlightingUpsell})})))}I.propTypes={results:l().array.isRequired,marksButtonActivatedResult:l().string,marksButtonStatus:l().string,marksButtonClassName:l().string,editButtonClassName:l().string,markButtonFactory:l().func,onMarksButtonClick:l().func,onEditButtonClick:l().func,isPremium:l().bool,onResultChange:l().func,shouldUpsellHighlighting:l().bool,renderHighlightingUpsell:l().func,renderAIFixesButton:l().func},I.defaultProps={marksButtonActivatedResult:"",marksButtonStatus:"enabled",marksButtonClassName:"",editButtonClassName:"",onMarksButtonClick:d(),onEditButtonClick:d(),isPremium:!1,onResultChange:d(),shouldUpsellHighlighting:!1,renderHighlightingUpsell:d(),renderAIFixesButton:d()};const v=i().div`
width: 100%;
background-color: white;
border-bottom: 1px solid transparent; // Avoid parent and child margin collapsing.
`,N=i()(g.Collapsible)`
`,N=i()(p.Collapsible)`
margin-bottom: 8px;
${g.StyledIconsButton} {
${p.StyledIconsButton} {
padding: 8px 0;
color: ${m.colors.$color_blue};
color: ${g.colors.$color_blue};
margin: -2px 8px 0 -2px; // Compensate icon size set to 18px.
}
`;class _ extends r().Component{renderCollapsible(e,t,r){return(0,s.createElement)(N,{initialIsOpen:!0,title:`${e} (${r.length})`,prefixIcon:{icon:"angle-up",color:m.colors.$color_grey_dark,size:"18px"},prefixIconCollapsed:{icon:"angle-down",color:m.colors.$color_grey_dark,size:"18px"},suffixIcon:null,suffixIconCollapsed:null,headingProps:{level:t,fontSize:"13px",fontWeight:"500",color:"#1e1e1e"}},(0,s.createElement)(I,{results:r,marksButtonActivatedResult:this.props.activeMarker,marksButtonStatus:this.props.marksButtonStatus,marksButtonClassName:this.props.marksButtonClassName,editButtonClassName:this.props.editButtonClassName,markButtonFactory:this.props.markButtonFactory,onMarksButtonClick:this.props.onMarkButtonClick,onEditButtonClick:this.props.onEditButtonClick,renderAIFixesButton:this.props.renderAIFixesButton,isPremium:this.props.isPremium,onResultChange:this.props.onResultChange,shouldUpsellHighlighting:this.props.shouldUpsellHighlighting,renderHighlightingUpsell:this.props.renderHighlightingUpsell}))}render(){const{problemsResults:e,improvementsResults:t,goodResults:r,considerationsResults:n,errorsResults:i,upsellResults:a,headingLevel:l,resultCategoryLabels:u}=this.props,d=i.length,m=e.length,p=t.length,g=n.length,c=r.length,h=a.length,B={errors:(0,o.__)("Errors","wordpress-seo"),problems:(0,o.__)("Problems","wordpress-seo"),improvements:(0,o.__)("Improvements","wordpress-seo"),considerations:(0,o.__)("Considerations","wordpress-seo"),goodResults:(0,o.__)("Good results","wordpress-seo")},k=Object.assign(B,u);return(0,s.createElement)(v,null,d>0&&this.renderCollapsible(k.errors,l,i),m+h>0&&this.renderCollapsible(k.problems,l,[...a,...e]),p>0&&this.renderCollapsible(k.improvements,l,t),g>0&&this.renderCollapsible(k.considerations,l,n),c>0&&this.renderCollapsible(k.goodResults,l,r))}}_.propTypes={onMarkButtonClick:l().func,onEditButtonClick:l().func,problemsResults:l().array,improvementsResults:l().array,goodResults:l().array,considerationsResults:l().array,errorsResults:l().array,upsellResults:l().array,headingLevel:l().number,marksButtonStatus:l().string,marksButtonClassName:l().string,markButtonFactory:l().func,editButtonClassName:l().string,activeMarker:l().string,isPremium:l().bool,resultCategoryLabels:l().shape({errors:l().string,problems:l().string,improvements:l().string,considerations:l().string,goodResults:l().string}),onResultChange:l().func,shouldUpsellHighlighting:l().bool,renderHighlightingUpsell:l().func,renderAIFixesButton:l().func},_.defaultProps={onMarkButtonClick:()=>{},onEditButtonClick:()=>{},problemsResults:[],improvementsResults:[],goodResults:[],considerationsResults:[],errorsResults:[],upsellResults:[],headingLevel:4,marksButtonStatus:"enabled",marksButtonClassName:"",markButtonFactory:null,editButtonClassName:"",activeMarker:"",isPremium:!1,resultCategoryLabels:{},onResultChange:()=>{},shouldUpsellHighlighting:!1,renderHighlightingUpsell:()=>{},renderAIFixesButton:()=>{}};const A=_,M=i().div`
`;class _ extends r().Component{renderCollapsible(e,t,r){return(0,s.createElement)(N,{initialIsOpen:!0,title:`${e} (${r.length})`,prefixIcon:{icon:"angle-up",color:g.colors.$color_grey_dark,size:"18px"},prefixIconCollapsed:{icon:"angle-down",color:g.colors.$color_grey_dark,size:"18px"},suffixIcon:null,suffixIconCollapsed:null,headingProps:{level:t,fontSize:"13px",fontWeight:"500",color:"#1e1e1e"}},(0,s.createElement)(I,{results:r,marksButtonActivatedResult:this.props.activeMarker,marksButtonStatus:this.props.marksButtonStatus,marksButtonClassName:this.props.marksButtonClassName,editButtonClassName:this.props.editButtonClassName,markButtonFactory:this.props.markButtonFactory,onMarksButtonClick:this.props.onMarkButtonClick,onEditButtonClick:this.props.onEditButtonClick,renderAIFixesButton:this.props.renderAIFixesButton,isPremium:this.props.isPremium,onResultChange:this.props.onResultChange,shouldUpsellHighlighting:this.props.shouldUpsellHighlighting,renderHighlightingUpsell:this.props.renderHighlightingUpsell}))}render(){const{problemsResults:e,improvementsResults:t,goodResults:r,considerationsResults:n,errorsResults:i,upsellResults:a,headingLevel:l,resultCategoryLabels:u}=this.props,d=i.length,g=e.length,m=t.length,p=n.length,c=r.length,h=a.length,B={errors:(0,o.__)("Errors","wordpress-seo"),problems:(0,o.__)("Problems","wordpress-seo"),improvements:(0,o.__)("Improvements","wordpress-seo"),considerations:(0,o.__)("Considerations","wordpress-seo"),goodResults:(0,o.__)("Good results","wordpress-seo")},k=Object.assign(B,u);return(0,s.createElement)(v,null,d>0&&this.renderCollapsible(k.errors,l,i),g+h>0&&this.renderCollapsible(k.problems,l,[...a,...e]),m>0&&this.renderCollapsible(k.improvements,l,t),p>0&&this.renderCollapsible(k.considerations,l,n),c>0&&this.renderCollapsible(k.goodResults,l,r))}}_.propTypes={onMarkButtonClick:l().func,onEditButtonClick:l().func,problemsResults:l().array,improvementsResults:l().array,goodResults:l().array,considerationsResults:l().array,errorsResults:l().array,upsellResults:l().array,headingLevel:l().number,marksButtonStatus:l().string,marksButtonClassName:l().string,markButtonFactory:l().func,editButtonClassName:l().string,activeMarker:l().string,isPremium:l().bool,resultCategoryLabels:l().shape({errors:l().string,problems:l().string,improvements:l().string,considerations:l().string,goodResults:l().string}),onResultChange:l().func,shouldUpsellHighlighting:l().bool,renderHighlightingUpsell:l().func,renderAIFixesButton:l().func},_.defaultProps={onMarkButtonClick:()=>{},onEditButtonClick:()=>{},problemsResults:[],improvementsResults:[],goodResults:[],considerationsResults:[],errorsResults:[],upsellResults:[],headingLevel:4,marksButtonStatus:"enabled",marksButtonClassName:"",markButtonFactory:null,editButtonClassName:"",activeMarker:"",isPremium:!1,resultCategoryLabels:{},onResultChange:()=>{},shouldUpsellHighlighting:!1,renderHighlightingUpsell:()=>{},renderAIFixesButton:()=>{}};const A=_,H=i().div`
`,S=i().p`
font-size: 14px;
`,H=e=>(0,s.createElement)(M,{className:e.className},(0,s.createElement)(S,{className:`${e.className}__text`},e.seoAssessmentText),(0,s.createElement)(g.StackedProgressBar,{className:"progress",items:e.seoAssessmentItems,barHeight:e.barHeight}),(0,s.createElement)(g.ScoreAssessments,{className:"assessments",items:e.seoAssessmentItems}));H.propTypes={className:l().string,seoAssessmentText:l().string,seoAssessmentItems:l().arrayOf(l().shape({html:l().string.isRequired,value:l().number.isRequired,color:l().string.isRequired})),barHeight:l().string},H.defaultProps={className:"seo-assessment",seoAssessmentText:"SEO Assessment",seoAssessmentItems:null,barHeight:"24px"};const F=H;(window.yoast=window.yoast||{}).analysisReport=t})();
`,M=e=>(0,s.createElement)(H,{className:e.className},(0,s.createElement)(S,{className:`${e.className}__text`},e.seoAssessmentText),(0,s.createElement)(p.StackedProgressBar,{className:"progress",items:e.seoAssessmentItems,barHeight:e.barHeight}),(0,s.createElement)(p.ScoreAssessments,{className:"assessments",items:e.seoAssessmentItems}));M.propTypes={className:l().string,seoAssessmentText:l().string,seoAssessmentItems:l().arrayOf(l().shape({html:l().string.isRequired,value:l().number.isRequired,color:l().string.isRequired})),barHeight:l().string},M.defaultProps={className:"seo-assessment",seoAssessmentText:"SEO Assessment",seoAssessmentItems:null,barHeight:"24px"};const F=M;(window.yoast=window.yoast||{}).analysisReport=t})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -10,4 +10,4 @@
(0,Y.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */
(0,Y.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"<br/>","<a>","<ArrowNarrowRightIcon />","</a>"),d))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,t.createElement)(l.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:c},(0,t.createElement)(D,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),i,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */
(0,Y.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,t.createElement)(l.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:o},(0,Y.__)("Close","wordpress-seo"))))};Ce.propTypes={learnMoreLink:V().string.isRequired,upsellLink:V().string.isRequired,thumbnail:V().shape({src:V().string.isRequired,width:V().string,height:V().string}).isRequired,wistiaEmbedPermission:V().shape({value:V().bool.isRequired,status:V().string.isRequired,set:V().func.isRequired}).isRequired,upsellLabel:V().string},Ce.defaultProps={upsellLabel:(0,Y.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */
(0,Y.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),V().bool.isRequired,V().func,V().string.isRequired,V().string.isRequired,V().func.isRequired,V().string.isRequired,V().string.isRequired;const qe="yoast-seo/introductions",$e=()=>{const e=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell-learn-more")),[]),r=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell")),[]),a=(0,s.useSelect)((e=>e(qe).selectImageLink("ai-fix-assessments-thumbnail.png")),[]),i=(0,n.useMemo)((()=>({src:a,width:"432",height:"244"})),[a]),l=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionValue()),[]),o=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:c}=(0,s.useDispatch)(qe),d=(0,n.useMemo)((()=>({value:l,status:o,set:c})),[l,o,c]);return(0,t.createElement)(Ce,{learnMoreLink:e,upsellLink:r,thumbnail:i,wistiaEmbedPermission:d})};window.YoastSEO=window.YoastSEO||{};const je=(0,n.createContext)({}),Ae=({children:e,initialComponents:r})=>{const[a,i]=(0,n.useState)(r),l=(0,s.useSelect)((e=>e(qe).selectIntroductions()),[]),c=(0,n.useCallback)(((e,t)=>{(0,o.find)(l,{id:e})?i((s=>({...s,[e]:t}))):console.error("Warning: Introductions received a registration for an unknown key:",e)}),[l,i]);return(0,n.useEffect)((()=>{window.YoastSEO._registerIntroductionComponent=c}),[c]),(0,t.createElement)(je.Provider,{value:a},e)};Ae.propTypes={children:V().node.isRequired,initialComponents:V().object.isRequired};const Me=()=>{const e=(0,s.useSelect)((e=>e(qe).selectCurrentIntroduction()),[]),r=(0,n.useContext)(je),a=(0,n.useMemo)((()=>null==r?void 0:r[null==e?void 0:e.id]),[e,r]);return a?(0,t.createElement)(a,null):null},Be=({children:e})=>{const[s,r]=(0,n.useState)(!0),a=(0,n.useRef)(null),i=(0,n.useCallback)((()=>r(!1)),[]);return(0,t.createElement)(l.Modal,{className:"yst-introduction-modal yst-h-[calc(100vh - 1rem)] sm:yst-h-[calc(100vh - 2rem)] md:yst-h-[calc(100vh - 5rem)]) yst-overflow-y-auto",isOpen:s,onClose:i,initialFocus:a},(0,t.createElement)(l.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl"},e))};Be.propTypes={children:V().node.isRequired};const ze="introductions",Te=(0,c.createEntityAdapter)({selectId:e=>e.id,sortComparer:(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1}),Ue=e=>({id:e.id||(0,c.nanoid)(),priority:e.priority||0}),Fe=(0,c.createSlice)({name:ze,initialState:Te.getInitialState({current:0}),reducers:{addIntroduction:{reducer:Te.addOne,prepare:e=>({payload:Ue(e)})},addIntroductions:{reducer:Te.addMany,prepare:e=>({payload:(0,o.map)(e,Ue)})},setIntroductions:{reducer:Te.setAll,prepare:e=>({payload:(0,o.map)(e,Ue)})}}}),We=Fe.getInitialState,Ye=Te.getSelectors((e=>(0,o.get)(e,ze,{}))),He={selectCurrentIntroductionIndex:e=>(0,o.get)(e,[ze,"current"],0),selectIntroduction:Ye.selectById,selectIntroductions:Ye.selectAll};He.selectCurrentIntroduction=(0,c.createSelector)([He.selectCurrentIntroductionIndex,He.selectIntroductions],((e,t)=>t[e]));const Ve=Fe.actions,De=Fe.reducer,Ze="wpseoIntroductions";a()((()=>{const e=(0,o.get)(window,`${Ze}.introductions`,[]);if((0,o.isEmpty)(e))return;((e={})=>{(0,s.register)((e=>(0,s.createReduxStore)(qe,{actions:{...Ve,...f,...k,...U},selectors:{...He,...h,...N,...T},initialState:(0,o.merge)({},{[ze]:We(),[p]:g(),[b]:_(),[M]:z()},e),reducer:(0,s.combineReducers)({[ze]:De,[p]:E,[b]:S,[M]:W}),controls:{...F}}))(e))})({[p]:(0,o.get)(window,`${Ze}.linkParams`,{}),[b]:(0,o.get)(window,`${Ze}.pluginUrl`,""),[M]:{value:"1"===(0,o.get)(window,`${Ze}.wistiaEmbedPermission`,!1)}}),(0,s.dispatch)(qe).setIntroductions(e);const r={isRtl:Boolean((0,o.get)(window,`${Ze}.isRtl`,!1))},a={"ai-fix-assessments-upsell":$e},c=document.createElement("div");c.id="wpseo-introductions",document.body.appendChild(c),(0,n.render)((0,t.createElement)(l.Root,{context:r},(0,t.createElement)(Ae,{initialComponents:a},(0,t.createElement)(Be,null,(0,t.createElement)(Me,null)))),c,(()=>{(0,i.doAction)("yoast.introductions.ready")}))}))})();
(0,Y.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),V().bool.isRequired,V().func,V().func,V().string.isRequired,V().string.isRequired,V().string.isRequired,V().string.isRequired;const qe="yoast-seo/introductions",$e=()=>{const e=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell-learn-more")),[]),r=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell")),[]),a=(0,s.useSelect)((e=>e(qe).selectImageLink("ai-fix-assessments-thumbnail.png")),[]),i=(0,n.useMemo)((()=>({src:a,width:"432",height:"244"})),[a]),l=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionValue()),[]),o=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:c}=(0,s.useDispatch)(qe),d=(0,n.useMemo)((()=>({value:l,status:o,set:c})),[l,o,c]);return(0,t.createElement)(Ce,{learnMoreLink:e,upsellLink:r,thumbnail:i,wistiaEmbedPermission:d})};window.YoastSEO=window.YoastSEO||{};const je=(0,n.createContext)({}),Ae=({children:e,initialComponents:r})=>{const[a,i]=(0,n.useState)(r),l=(0,s.useSelect)((e=>e(qe).selectIntroductions()),[]),c=(0,n.useCallback)(((e,t)=>{(0,o.find)(l,{id:e})?i((s=>({...s,[e]:t}))):console.error("Warning: Introductions received a registration for an unknown key:",e)}),[l,i]);return(0,n.useEffect)((()=>{window.YoastSEO._registerIntroductionComponent=c}),[c]),(0,t.createElement)(je.Provider,{value:a},e)};Ae.propTypes={children:V().node.isRequired,initialComponents:V().object.isRequired};const Me=()=>{const e=(0,s.useSelect)((e=>e(qe).selectCurrentIntroduction()),[]),r=(0,n.useContext)(je),a=(0,n.useMemo)((()=>null==r?void 0:r[null==e?void 0:e.id]),[e,r]);return a?(0,t.createElement)(a,null):null},Be=({children:e})=>{const[s,r]=(0,n.useState)(!0),a=(0,n.useRef)(null),i=(0,n.useCallback)((()=>r(!1)),[]);return(0,t.createElement)(l.Modal,{className:"yst-introduction-modal yst-h-[calc(100vh - 1rem)] sm:yst-h-[calc(100vh - 2rem)] md:yst-h-[calc(100vh - 5rem)]) yst-overflow-y-auto",isOpen:s,onClose:i,initialFocus:a},(0,t.createElement)(l.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl"},e))};Be.propTypes={children:V().node.isRequired};const ze="introductions",Te=(0,c.createEntityAdapter)({selectId:e=>e.id,sortComparer:(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1}),Ue=e=>({id:e.id||(0,c.nanoid)(),priority:e.priority||0}),Fe=(0,c.createSlice)({name:ze,initialState:Te.getInitialState({current:0}),reducers:{addIntroduction:{reducer:Te.addOne,prepare:e=>({payload:Ue(e)})},addIntroductions:{reducer:Te.addMany,prepare:e=>({payload:(0,o.map)(e,Ue)})},setIntroductions:{reducer:Te.setAll,prepare:e=>({payload:(0,o.map)(e,Ue)})}}}),We=Fe.getInitialState,Ye=Te.getSelectors((e=>(0,o.get)(e,ze,{}))),He={selectCurrentIntroductionIndex:e=>(0,o.get)(e,[ze,"current"],0),selectIntroduction:Ye.selectById,selectIntroductions:Ye.selectAll};He.selectCurrentIntroduction=(0,c.createSelector)([He.selectCurrentIntroductionIndex,He.selectIntroductions],((e,t)=>t[e]));const Ve=Fe.actions,De=Fe.reducer,Ze="wpseoIntroductions";a()((()=>{const e=(0,o.get)(window,`${Ze}.introductions`,[]);if((0,o.isEmpty)(e))return;((e={})=>{(0,s.register)((e=>(0,s.createReduxStore)(qe,{actions:{...Ve,...f,...k,...U},selectors:{...He,...h,...N,...T},initialState:(0,o.merge)({},{[ze]:We(),[p]:g(),[b]:_(),[M]:z()},e),reducer:(0,s.combineReducers)({[ze]:De,[p]:E,[b]:S,[M]:W}),controls:{...F}}))(e))})({[p]:(0,o.get)(window,`${Ze}.linkParams`,{}),[b]:(0,o.get)(window,`${Ze}.pluginUrl`,""),[M]:{value:"1"===(0,o.get)(window,`${Ze}.wistiaEmbedPermission`,!1)}}),(0,s.dispatch)(qe).setIntroductions(e);const r={isRtl:Boolean((0,o.get)(window,`${Ze}.isRtl`,!1))},a={"ai-fix-assessments-upsell":$e},c=document.createElement("div");c.id="wpseo-introductions",document.body.appendChild(c),(0,n.render)((0,t.createElement)(l.Root,{context:r},(0,t.createElement)(Ae,{initialComponents:a},(0,t.createElement)(Be,null,(0,t.createElement)(Me,null)))),c,(()=>{(0,i.doAction)("yoast.introductions.ready")}))}))})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More