Version Description
Download this release
Release Info
Developer | Yoast |
Plugin | Yoast SEO |
Version | 11.9 |
Comparing to | |
See all releases |
Code changes from version 11.8 to 11.9
- admin/ajax.php +25 -19
- admin/ajax/class-recalculate-scores-ajax.php +2 -0
- admin/ajax/class-shortcode-filter.php +1 -0
- admin/class-admin-init.php +15 -23
- admin/class-bulk-description-editor-list-table.php +3 -0
- admin/class-bulk-editor-list-table.php +8 -3
- admin/class-bulk-title-editor-list-table.php +4 -1
- admin/class-export.php +29 -30
- admin/class-gutenberg-compatibility.php +2 -2
- admin/class-meta-columns.php +3 -1
- admin/class-option-tabs-formatter.php +1 -1
- admin/class-premium-upsell-admin-block.php +3 -2
- admin/class-social-admin.php +2 -2
- admin/class-yoast-alerts.php +2 -0
- admin/class-yoast-notification-center.php +1 -0
- admin/links/class-link-reindex-dashboard.php +7 -38
- admin/metabox/class-metabox-addon-section.php +0 -39
- admin/metabox/class-metabox-collapsibles-section.php +5 -1
- admin/metabox/class-metabox-section-additional.php +95 -0
- admin/metabox/class-metabox-section-react.php +11 -7
- admin/metabox/class-metabox.php +46 -12
- admin/notifiers/class-configuration-notifier.php +1 -1
- admin/taxonomy/class-taxonomy-metabox.php +22 -1
- admin/views/licenses.php +4 -4
- css/dist/{admin-global-1180-rtl.min.css → admin-global-1190-rtl.min.css} +0 -0
- css/dist/{admin-global-1180.min.css → admin-global-1190.min.css} +0 -0
- css/dist/{adminbar-1180-rtl.min.css → adminbar-1190-rtl.min.css} +0 -0
- css/dist/{adminbar-1180.min.css → adminbar-1190.min.css} +0 -0
- css/dist/{alerts-1180-rtl.min.css → alerts-1190-rtl.min.css} +0 -0
- css/dist/{alerts-1180.min.css → alerts-1190.min.css} +0 -0
- css/dist/{dashboard-1180-rtl.min.css → dashboard-1190-rtl.min.css} +0 -0
- css/dist/{dashboard-1180.min.css → dashboard-1190.min.css} +0 -0
- css/dist/{edit-page-1180-rtl.min.css → edit-page-1190-rtl.min.css} +0 -0
- css/dist/{edit-page-1180.min.css → edit-page-1190.min.css} +0 -0
- css/dist/{featured-image-1180-rtl.min.css → featured-image-1190-rtl.min.css} +0 -0
- css/dist/{featured-image-1180.min.css → featured-image-1190.min.css} +0 -0
- css/dist/{filter-explanation-1180-rtl.min.css → filter-explanation-1190-rtl.min.css} +0 -0
- css/dist/{filter-explanation-1180.min.css → filter-explanation-1190.min.css} +0 -0
- css/dist/{inside-editor-1180-rtl.min.css → inside-editor-1190-rtl.min.css} +0 -0
- css/dist/{inside-editor-1180.min.css → inside-editor-1190.min.css} +0 -0
- css/dist/{metabox-1180-rtl.min.css → metabox-1190-rtl.min.css} +0 -0
- css/dist/{metabox-1180.min.css → metabox-1190.min.css} +0 -0
- css/dist/{metabox-primary-category-1180-rtl.min.css → metabox-primary-category-1190-rtl.min.css} +0 -0
- css/dist/{metabox-primary-category-1180.min.css → metabox-primary-category-1190.min.css} +0 -0
- css/dist/{search-appearance-1180-rtl.min.css → search-appearance-1190-rtl.min.css} +0 -0
- css/dist/{search-appearance-1180.min.css → search-appearance-1190.min.css} +0 -0
- css/dist/{structured-data-blocks-1180-rtl.min.css → structured-data-blocks-1190-rtl.min.css} +0 -0
- css/dist/{structured-data-blocks-1180.min.css → structured-data-blocks-1190.min.css} +0 -0
- css/dist/{toggle-switch-1180-rtl.min.css → toggle-switch-1190-rtl.min.css} +0 -0
- css/dist/{toggle-switch-1180.min.css → toggle-switch-1190.min.css} +0 -0
- css/dist/{wpseo-dismissible-1180-rtl.min.css → wpseo-dismissible-1190-rtl.min.css} +0 -0
- css/dist/{wpseo-dismissible-1180.min.css → wpseo-dismissible-1190.min.css} +0 -0
- css/dist/{yoast-components-1180-rtl.min.css → yoast-components-1190-rtl.min.css} +0 -0
- css/dist/{yoast-components-1180.min.css → yoast-components-1190.min.css} +0 -0
- css/dist/{yoast-extensions-1180-rtl.min.css → yoast-extensions-1190-rtl.min.css} +0 -0
- css/dist/{yoast-extensions-1180.min.css → yoast-extensions-1190.min.css} +0 -0
- css/dist/{yst_plugin_tools-1180-rtl.min.css → yst_plugin_tools-1190-rtl.min.css} +0 -0
- css/dist/{yst_plugin_tools-1180.min.css → yst_plugin_tools-1190.min.css} +0 -0
- css/dist/{yst_seo_score-1180-rtl.min.css → yst_seo_score-1190-rtl.min.css} +0 -0
- css/dist/{yst_seo_score-1180.min.css → yst_seo_score-1190.min.css} +0 -0
- deprecated/class-metabox-addon-section.php +69 -0
- frontend/schema/class-schema-author.php +1 -7
- inc/class-wpseo-shortlinker.php +1 -1
- inc/class-wpseo-utils.php +149 -0
- js/dist/{analysis-1180.min.js → analysis-1190.min.js} +0 -0
- js/dist/{babel-polyfill-1180.min.js → babel-polyfill-1190.min.js} +0 -0
- js/dist/{commons-1180.min.js → commons-1190.min.js} +0 -0
- js/dist/{components-1180.min.js → components-1190.min.js} +0 -0
- js/dist/{configuration-wizard-1180.min.js → configuration-wizard-1190.min.js} +0 -0
- js/dist/{search-appearance-1180.min.js → search-appearance-1190.min.js} +0 -0
- js/dist/{styled-components-1180.min.js → styled-components-1190.min.js} +0 -0
- js/dist/{wp-apiFetch-1180.min.js → wp-apiFetch-1190.min.js} +0 -0
- js/dist/{wp-components-1180.min.js → wp-components-1190.min.js} +0 -0
- js/dist/{wp-compose-1180.min.js → wp-compose-1190.min.js} +0 -0
- js/dist/{wp-data-1180.min.js → wp-data-1190.min.js} +0 -0
- js/dist/{wp-element-1180.min.js → wp-element-1190.min.js} +0 -0
- js/dist/{wp-i18n-1180.min.js → wp-i18n-1190.min.js} +0 -0
- js/dist/{wp-richText-1180.min.js → wp-richText-1190.min.js} +0 -0
- js/dist/{wp-seo-admin-1180.min.js → wp-seo-admin-1190.min.js} +0 -0
- js/dist/{wp-seo-admin-global-1180.min.js → wp-seo-admin-global-1190.min.js} +0 -0
- js/dist/{wp-seo-admin-gsc-1180.min.js → wp-seo-admin-gsc-1190.min.js} +0 -0
- js/dist/{wp-seo-admin-media-1180.min.js → wp-seo-admin-media-1190.min.js} +0 -0
- js/dist/{wp-seo-analysis-worker-1180.min.js → wp-seo-analysis-worker-1190.min.js} +0 -0
- js/dist/{wp-seo-api-1180.min.js → wp-seo-api-1190.min.js} +0 -0
- js/dist/{wp-seo-bulk-editor-1180.min.js → wp-seo-bulk-editor-1190.min.js} +0 -0
- js/dist/{wp-seo-courses-overview-1180.min.js → wp-seo-courses-overview-1190.min.js} +0 -0
- js/dist/{wp-seo-dashboard-widget-1180.min.js → wp-seo-dashboard-widget-1190.min.js} +0 -0
- js/dist/{wp-seo-edit-page-1180.min.js → wp-seo-edit-page-1190.min.js} +0 -0
- js/dist/{wp-seo-featured-image-1180.min.js → wp-seo-featured-image-1190.min.js} +0 -0
- js/dist/{wp-seo-filter-explanation-1180.min.js → wp-seo-filter-explanation-1190.min.js} +0 -0
- js/dist/{wp-seo-help-center-1180.min.js → wp-seo-help-center-1190.min.js} +0 -0
- js/dist/{wp-seo-metabox-1180.min.js → wp-seo-metabox-1190.min.js} +0 -0
- js/dist/{wp-seo-metabox-category-1180.min.js → wp-seo-metabox-category-1190.min.js} +0 -0
- js/dist/{wp-seo-modal-1180.min.js → wp-seo-modal-1190.min.js} +0 -0
- js/dist/{wp-seo-network-admin-1180.min.js → wp-seo-network-admin-1190.min.js} +0 -0
- js/dist/{wp-seo-post-scraper-1180.min.js → wp-seo-post-scraper-1190.min.js} +1 -1
- js/dist/{wp-seo-quick-edit-handler-1180.min.js → wp-seo-quick-edit-handler-1190.min.js} +0 -0
- js/dist/{wp-seo-recalculate-1180.min.js → wp-seo-recalculate-1190.min.js} +0 -0
- js/dist/{wp-seo-reindex-links-1180.min.js → wp-seo-reindex-links-1190.min.js} +0 -0
- js/dist/{wp-seo-replacevar-plugin-1180.min.js → wp-seo-replacevar-plugin-1190.min.js} +0 -0
- js/dist/{wp-seo-shortcode-plugin-1180.min.js → wp-seo-shortcode-plugin-1190.min.js} +0 -0
- js/dist/{wp-seo-structured-data-blocks-1180.min.js → wp-seo-structured-data-blocks-1190.min.js} +0 -0
- js/dist/{wp-seo-term-scraper-1180.min.js → wp-seo-term-scraper-1190.min.js} +1 -1
- js/dist/{wp-seo-used-keywords-assessment-1180.min.js → wp-seo-used-keywords-assessment-1190.min.js} +0 -0
- languages/wordpress-seo-nl_NL.json +1 -1
- languages/wordpress-seo-pt_BR.json +1 -1
- languages/wordpress-seo-sv_SE.json +1 -1
- languages/wordpress-seojs-hr.json +1 -1
- languages/wordpress-seojs-nl_NL.json +1 -1
- languages/wordpress-seojs-pt_PT.json +1 -1
- languages/wordpress-seojs-sv_SE.json +1 -1
- languages/wordpress-seojs.php +2 -2
- languages/yoast-components-bg_BG.json +1 -1
- languages/yoast-components-bs_BA.json +1 -1
- languages/yoast-components-ca.json +1 -1
- languages/yoast-components-cs_CZ.json +1 -1
- languages/yoast-components-da_DK.json +1 -1
- languages/yoast-components-de_CH.json +1 -1
- languages/yoast-components-de_DE.json +1 -1
- languages/yoast-components-el.json +1 -1
- languages/yoast-components-en_AU.json +1 -1
- languages/yoast-components-en_CA.json +1 -1
- languages/yoast-components-en_GB.json +1 -1
- languages/yoast-components-en_NZ.json +1 -1
- languages/yoast-components-en_ZA.json +1 -1
- languages/yoast-components-es_AR.json +1 -1
- languages/yoast-components-es_ES.json +1 -1
- languages/yoast-components-es_MX.json +1 -1
- languages/yoast-components-es_PE.json +1 -1
admin/ajax.php
CHANGED
@@ -17,6 +17,7 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
|
|
17 |
* @param array $results Results array for encoding.
|
18 |
*/
|
19 |
function wpseo_ajax_json_echo_die( $results ) {
|
|
|
20 |
echo WPSEO_Utils::format_json_encode( $results );
|
21 |
die();
|
22 |
}
|
@@ -82,25 +83,6 @@ function wpseo_dismiss_tagline_notice() {
|
|
82 |
|
83 |
add_action( 'wp_ajax_wpseo_dismiss_tagline_notice', 'wpseo_dismiss_tagline_notice' );
|
84 |
|
85 |
-
/**
|
86 |
-
* Used in the editor to replace vars for the snippet preview.
|
87 |
-
*/
|
88 |
-
function wpseo_ajax_replace_vars() {
|
89 |
-
global $post;
|
90 |
-
check_ajax_referer( 'wpseo-replace-vars' );
|
91 |
-
|
92 |
-
$post = get_post( intval( filter_input( INPUT_POST, 'post_id' ) ) );
|
93 |
-
global $wp_query;
|
94 |
-
$wp_query->queried_object = $post;
|
95 |
-
$wp_query->queried_object_id = $post->ID;
|
96 |
-
|
97 |
-
$omit = array( 'excerpt', 'excerpt_only', 'title' );
|
98 |
-
echo wpseo_replace_vars( stripslashes( filter_input( INPUT_POST, 'string' ) ), $post, $omit );
|
99 |
-
die;
|
100 |
-
}
|
101 |
-
|
102 |
-
add_action( 'wp_ajax_wpseo_replace_vars', 'wpseo_ajax_replace_vars' );
|
103 |
-
|
104 |
/**
|
105 |
* Save an individual SEO title from the Bulk Editor.
|
106 |
*/
|
@@ -293,6 +275,7 @@ function ajax_get_keyword_usage() {
|
|
293 |
}
|
294 |
|
295 |
wp_die(
|
|
|
296 |
WPSEO_Utils::format_json_encode( WPSEO_Meta::keyword_usage( $keyword, $post_id ) )
|
297 |
);
|
298 |
}
|
@@ -323,6 +306,7 @@ function ajax_get_term_keyword_usage() {
|
|
323 |
$usage = $usage[ $keyword ];
|
324 |
|
325 |
wp_die(
|
|
|
326 |
WPSEO_Utils::format_json_encode( $usage )
|
327 |
);
|
328 |
}
|
@@ -398,3 +382,25 @@ function wpseo_add_fb_admin() {
|
|
398 |
_deprecated_function( __FUNCTION__, 'WPSEO 7.0', 'This method is deprecated.' );
|
399 |
wpseo_ajax_json_echo_die( '' );
|
400 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
* @param array $results Results array for encoding.
|
18 |
*/
|
19 |
function wpseo_ajax_json_echo_die( $results ) {
|
20 |
+
// phpcs:ignore WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe.
|
21 |
echo WPSEO_Utils::format_json_encode( $results );
|
22 |
die();
|
23 |
}
|
83 |
|
84 |
add_action( 'wp_ajax_wpseo_dismiss_tagline_notice', 'wpseo_dismiss_tagline_notice' );
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
/**
|
87 |
* Save an individual SEO title from the Bulk Editor.
|
88 |
*/
|
275 |
}
|
276 |
|
277 |
wp_die(
|
278 |
+
// phpcs:ignore WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe.
|
279 |
WPSEO_Utils::format_json_encode( WPSEO_Meta::keyword_usage( $keyword, $post_id ) )
|
280 |
);
|
281 |
}
|
306 |
$usage = $usage[ $keyword ];
|
307 |
|
308 |
wp_die(
|
309 |
+
// phpcs:ignore WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe.
|
310 |
WPSEO_Utils::format_json_encode( $usage )
|
311 |
);
|
312 |
}
|
382 |
_deprecated_function( __FUNCTION__, 'WPSEO 7.0', 'This method is deprecated.' );
|
383 |
wpseo_ajax_json_echo_die( '' );
|
384 |
}
|
385 |
+
|
386 |
+
/**
|
387 |
+
* Used in the editor to replace vars for the snippet preview.
|
388 |
+
*
|
389 |
+
* @deprecated 11.9
|
390 |
+
* @codeCoverageIgnore
|
391 |
+
*/
|
392 |
+
function wpseo_ajax_replace_vars() {
|
393 |
+
_deprecated_function( __METHOD__, 'WPSEO 11.9' );
|
394 |
+
|
395 |
+
global $post;
|
396 |
+
check_ajax_referer( 'wpseo-replace-vars' );
|
397 |
+
|
398 |
+
$post = get_post( intval( filter_input( INPUT_POST, 'post_id' ) ) );
|
399 |
+
global $wp_query;
|
400 |
+
$wp_query->queried_object = $post;
|
401 |
+
$wp_query->queried_object_id = $post->ID;
|
402 |
+
|
403 |
+
$omit = array( 'excerpt', 'excerpt_only', 'title' );
|
404 |
+
echo wpseo_replace_vars( stripslashes( filter_input( INPUT_POST, 'string' ) ), $post, $omit );
|
405 |
+
die;
|
406 |
+
}
|
admin/ajax/class-recalculate-scores-ajax.php
CHANGED
@@ -28,6 +28,7 @@ class WPSEO_Recalculate_Scores_Ajax {
|
|
28 |
check_ajax_referer( 'wpseo_recalculate', 'nonce' );
|
29 |
|
30 |
wp_die(
|
|
|
31 |
WPSEO_Utils::format_json_encode(
|
32 |
array(
|
33 |
'posts' => $this->calculate_posts(),
|
@@ -49,6 +50,7 @@ class WPSEO_Recalculate_Scores_Ajax {
|
|
49 |
$response = $fetch_object->get_items_to_recalculate( $paged );
|
50 |
|
51 |
if ( ! empty( $response ) ) {
|
|
|
52 |
wp_die( WPSEO_Utils::format_json_encode( $response ) );
|
53 |
}
|
54 |
}
|
28 |
check_ajax_referer( 'wpseo_recalculate', 'nonce' );
|
29 |
|
30 |
wp_die(
|
31 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: WPSEO_Utils::format_json_encode is considered safe.
|
32 |
WPSEO_Utils::format_json_encode(
|
33 |
array(
|
34 |
'posts' => $this->calculate_posts(),
|
50 |
$response = $fetch_object->get_items_to_recalculate( $paged );
|
51 |
|
52 |
if ( ! empty( $response ) ) {
|
53 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: WPSEO_Utils::format_json_encode is considered safe.
|
54 |
wp_die( WPSEO_Utils::format_json_encode( $response ) );
|
55 |
}
|
56 |
}
|
admin/ajax/class-shortcode-filter.php
CHANGED
@@ -36,6 +36,7 @@ class WPSEO_Shortcode_Filter {
|
|
36 |
);
|
37 |
}
|
38 |
|
|
|
39 |
wp_die( WPSEO_Utils::format_json_encode( $parsed_shortcodes ) );
|
40 |
}
|
41 |
}
|
36 |
);
|
37 |
}
|
38 |
|
39 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: WPSEO_Utils::format_json_encode is considered safe.
|
40 |
wp_die( WPSEO_Utils::format_json_encode( $parsed_shortcodes ) );
|
41 |
}
|
42 |
}
|
admin/class-admin-init.php
CHANGED
@@ -679,22 +679,6 @@ class WPSEO_Admin_Init {
|
|
679 |
|
680 |
// WordPress hooks that have been deprecated since a Yoast SEO version.
|
681 |
$deprecated_filters = array(
|
682 |
-
'wpseo_metakey' => array(
|
683 |
-
'version' => '6.3',
|
684 |
-
'alternative' => null,
|
685 |
-
),
|
686 |
-
'wpseo_metakeywords' => array(
|
687 |
-
'version' => '6.3',
|
688 |
-
'alternative' => null,
|
689 |
-
),
|
690 |
-
'wpseo_stopwords' => array(
|
691 |
-
'version' => '7.0',
|
692 |
-
'alternative' => null,
|
693 |
-
),
|
694 |
-
'wpseo_redirect_orphan_attachment' => array(
|
695 |
-
'version' => '7.0',
|
696 |
-
'alternative' => null,
|
697 |
-
),
|
698 |
'wpseo_genesis_force_adjacent_rel_home' => array(
|
699 |
'version' => '9.4',
|
700 |
'alternative' => null,
|
@@ -710,11 +694,13 @@ class WPSEO_Admin_Init {
|
|
710 |
// Show notice for each deprecated filter or action that has been registered.
|
711 |
foreach ( $deprecated_notices as $deprecated_filter ) {
|
712 |
$deprecation_info = $deprecated_filters[ $deprecated_filter ];
|
|
|
713 |
_deprecated_hook(
|
714 |
$deprecated_filter,
|
715 |
'WPSEO ' . $deprecation_info['version'],
|
716 |
$deprecation_info['alternative']
|
717 |
);
|
|
|
718 |
}
|
719 |
}
|
720 |
|
@@ -734,13 +720,19 @@ class WPSEO_Admin_Init {
|
|
734 |
global $pagenow;
|
735 |
|
736 |
if ( $pagenow === 'options-permalink.php' ) {
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
744 |
}
|
745 |
}
|
746 |
}
|
679 |
|
680 |
// WordPress hooks that have been deprecated since a Yoast SEO version.
|
681 |
$deprecated_filters = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
682 |
'wpseo_genesis_force_adjacent_rel_home' => array(
|
683 |
'version' => '9.4',
|
684 |
'alternative' => null,
|
694 |
// Show notice for each deprecated filter or action that has been registered.
|
695 |
foreach ( $deprecated_notices as $deprecated_filter ) {
|
696 |
$deprecation_info = $deprecated_filters[ $deprecated_filter ];
|
697 |
+
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped -- only uses the hardcoded values from above.
|
698 |
_deprecated_hook(
|
699 |
$deprecated_filter,
|
700 |
'WPSEO ' . $deprecation_info['version'],
|
701 |
$deprecation_info['alternative']
|
702 |
);
|
703 |
+
// phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped.
|
704 |
}
|
705 |
}
|
706 |
|
720 |
global $pagenow;
|
721 |
|
722 |
if ( $pagenow === 'options-permalink.php' ) {
|
723 |
+
printf(
|
724 |
+
'<div class="notice notice-warning"><p><strong>%1$s</strong><br>%2$s<br><a href="%3$s" target="_blank">%4$s</a></p></div>',
|
725 |
+
esc_html__( 'WARNING:', 'wordpress-seo' ),
|
726 |
+
sprintf(
|
727 |
+
/* translators: %1$s and %2$s expand to <em> items to emphasize the word in the middle. */
|
728 |
+
esc_html__( 'Changing your permalinks settings can seriously impact your search engine visibility. It should almost %1$s never %2$s be done on a live website.', 'wordpress-seo' ),
|
729 |
+
'<em>',
|
730 |
+
'</em>'
|
731 |
+
),
|
732 |
+
esc_url( WPSEO_Shortlinker::get( 'https://yoa.st/why-permalinks/' ) ),
|
733 |
+
// The link's content.
|
734 |
+
esc_html__( 'Learn about why permalinks are important for SEO.', 'wordpress-seo' )
|
735 |
+
);
|
736 |
}
|
737 |
}
|
738 |
}
|
admin/class-bulk-description-editor-list-table.php
CHANGED
@@ -70,6 +70,9 @@ class WPSEO_Bulk_Description_List_Table extends WPSEO_Bulk_List_Table {
|
|
70 |
|
71 |
case 'col_existing_yoast_seo_metadesc':
|
72 |
// @todo Inconsistent return/echo behavior R.
|
|
|
|
|
|
|
73 |
echo $this->parse_meta_data_field( $record->ID, $attributes );
|
74 |
break;
|
75 |
}
|
70 |
|
71 |
case 'col_existing_yoast_seo_metadesc':
|
72 |
// @todo Inconsistent return/echo behavior R.
|
73 |
+
// I traced the escaping of the attributes to WPSEO_Bulk_List_Table::column_attributes. Alexander.
|
74 |
+
// The output of WPSEO_Bulk_List_Table::parse_meta_data_field is properly escaped.
|
75 |
+
// phpcs:ignore WordPress.Security.EscapeOutput
|
76 |
echo $this->parse_meta_data_field( $record->ID, $attributes );
|
77 |
break;
|
78 |
}
|
admin/class-bulk-editor-list-table.php
CHANGED
@@ -409,11 +409,12 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
|
|
409 |
);
|
410 |
printf(
|
411 |
'<select name="post_type_filter" id="%2$s">%1$s</select>',
|
|
|
412 |
$options,
|
413 |
esc_attr( 'post-type-filter-' . $instance_type )
|
414 |
);
|
415 |
|
416 |
-
submit_button(
|
417 |
echo '</div>';
|
418 |
}
|
419 |
}
|
@@ -770,7 +771,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
|
|
770 |
}
|
771 |
|
772 |
if ( ! empty( $class ) ) {
|
773 |
-
$attributes = 'class="' . implode( ' ', $class ) . '"';
|
774 |
}
|
775 |
|
776 |
$attributes .= ' data-colname="' . esc_attr( $column_display_name ) . '"';
|
@@ -910,7 +911,11 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
|
|
910 |
$meta_value = $values[ $meta_value ];
|
911 |
}
|
912 |
|
913 |
-
|
|
|
|
|
|
|
|
|
914 |
}
|
915 |
|
916 |
/**
|
409 |
);
|
410 |
printf(
|
411 |
'<select name="post_type_filter" id="%2$s">%1$s</select>',
|
412 |
+
// phpcs:ignore WordPress.Security.EscapeOutput -- Reason: $options is properly escaped above.
|
413 |
$options,
|
414 |
esc_attr( 'post-type-filter-' . $instance_type )
|
415 |
);
|
416 |
|
417 |
+
submit_button( esc_html__( 'Filter', 'wordpress-seo' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
|
418 |
echo '</div>';
|
419 |
}
|
420 |
}
|
771 |
}
|
772 |
|
773 |
if ( ! empty( $class ) ) {
|
774 |
+
$attributes = 'class="' . esc_attr( implode( ' ', $class ) ) . '"';
|
775 |
}
|
776 |
|
777 |
$attributes .= ' data-colname="' . esc_attr( $column_display_name ) . '"';
|
911 |
$meta_value = $values[ $meta_value ];
|
912 |
}
|
913 |
|
914 |
+
$id = "wpseo-existing-$record_id-$this->target_db_field";
|
915 |
+
|
916 |
+
// $attributes correctly escaped, verified by Alexander. See WPSEO_Bulk_Description_List_Table::parse_page_specific_column.
|
917 |
+
// phpcs:ignore WordPress.Security.EscapeOutput
|
918 |
+
return sprintf( '<td %2$s id="%3$s">%1$s</td>', esc_html( $meta_value ), $attributes, esc_attr( $id ) );
|
919 |
}
|
920 |
|
921 |
/**
|
admin/class-bulk-title-editor-list-table.php
CHANGED
@@ -69,7 +69,10 @@ class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
|
|
69 |
|
70 |
switch ( $column_name ) {
|
71 |
case 'col_existing_yoast_seo_title':
|
72 |
-
// @todo Inconsistent echo
|
|
|
|
|
|
|
73 |
echo $this->parse_meta_data_field( $record->ID, $attributes );
|
74 |
break;
|
75 |
|
69 |
|
70 |
switch ( $column_name ) {
|
71 |
case 'col_existing_yoast_seo_title':
|
72 |
+
// @todo Inconsistent return/echo behavior R.
|
73 |
+
// I traced the escaping of the attributes to WPSEO_Bulk_List_Table::column_attributes.
|
74 |
+
// The output of WPSEO_Bulk_List_Table::parse_meta_data_field is properly escaped.
|
75 |
+
// phpcs:ignore WordPress.Security.EscapeOutput
|
76 |
echo $this->parse_meta_data_field( $record->ID, $attributes );
|
77 |
break;
|
78 |
|
admin/class-export.php
CHANGED
@@ -26,13 +26,6 @@ class WPSEO_Export {
|
|
26 |
*/
|
27 |
private $export = '';
|
28 |
|
29 |
-
/**
|
30 |
-
* Holds the export error message.
|
31 |
-
*
|
32 |
-
* @var string
|
33 |
-
*/
|
34 |
-
private $error = '';
|
35 |
-
|
36 |
/**
|
37 |
* Holds whether the export was a success.
|
38 |
*
|
@@ -71,29 +64,7 @@ class WPSEO_Export {
|
|
71 |
)
|
72 |
);
|
73 |
echo '</p>';
|
74 |
-
echo '<textarea id="wpseo-export" rows="20" cols="100">' . $this->export . '</textarea>';
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* Returns true when the property error has a value.
|
79 |
-
*
|
80 |
-
* @return bool
|
81 |
-
*/
|
82 |
-
public function has_error() {
|
83 |
-
return ( $this->error !== '' );
|
84 |
-
}
|
85 |
-
|
86 |
-
/**
|
87 |
-
* Sets the error hook, to display the error to the user.
|
88 |
-
*/
|
89 |
-
public function set_error_hook() {
|
90 |
-
/* translators: %1$s expands to Yoast SEO */
|
91 |
-
$message = sprintf( __( 'Error creating %1$s export: ', 'wordpress-seo' ), 'Yoast SEO' ) . $this->error;
|
92 |
-
|
93 |
-
printf(
|
94 |
-
'<div class="notice notice-error"><p>%1$s</p></div>',
|
95 |
-
$message
|
96 |
-
);
|
97 |
}
|
98 |
|
99 |
/**
|
@@ -173,4 +144,32 @@ class WPSEO_Export {
|
|
173 |
}
|
174 |
$this->write_line( $key . ' = ' . $val );
|
175 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
}
|
26 |
*/
|
27 |
private $export = '';
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
/**
|
30 |
* Holds whether the export was a success.
|
31 |
*
|
64 |
)
|
65 |
);
|
66 |
echo '</p>';
|
67 |
+
echo '<textarea id="wpseo-export" rows="20" cols="100">' . esc_textarea( $this->export ) . '</textarea>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
144 |
}
|
145 |
$this->write_line( $key . ' = ' . $val );
|
146 |
}
|
147 |
+
|
148 |
+
/* ********************* DEPRECATED METHODS ********************* */
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Returns true when the property error has a value.
|
152 |
+
*
|
153 |
+
* @deprecated 11.9 Obsolete since the export setting refactor in 9.2.
|
154 |
+
*
|
155 |
+
* @codeCoverageIgnore
|
156 |
+
*
|
157 |
+
* @return bool
|
158 |
+
*/
|
159 |
+
public function has_error() {
|
160 |
+
_deprecated_function( __METHOD__, 'WPSEO 11.9' );
|
161 |
+
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Sets the error hook, to display the error to the user.
|
167 |
+
*
|
168 |
+
* @deprecated 11.9 Obsolete since the export setting refactor in 9.2.
|
169 |
+
*
|
170 |
+
* @codeCoverageIgnore
|
171 |
+
*/
|
172 |
+
public function set_error_hook() {
|
173 |
+
_deprecated_function( __METHOD__, 'WPSEO 11.9' );
|
174 |
+
}
|
175 |
}
|
admin/class-gutenberg-compatibility.php
CHANGED
@@ -15,14 +15,14 @@ class WPSEO_Gutenberg_Compatibility {
|
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
-
const CURRENT_RELEASE = '6.
|
19 |
|
20 |
/**
|
21 |
* The minimally supported version of Gutenberg by the plugin.
|
22 |
*
|
23 |
* @var string
|
24 |
*/
|
25 |
-
const MINIMUM_SUPPORTED = '6.
|
26 |
|
27 |
/**
|
28 |
* Holds the current version.
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
+
const CURRENT_RELEASE = '6.3.0';
|
19 |
|
20 |
/**
|
21 |
* The minimally supported version of Gutenberg by the plugin.
|
22 |
*
|
23 |
* @var string
|
24 |
*/
|
25 |
+
const MINIMUM_SUPPORTED = '6.3.0';
|
26 |
|
27 |
/**
|
28 |
* Holds the current version.
|
admin/class-meta-columns.php
CHANGED
@@ -98,10 +98,12 @@ class WPSEO_Meta_Columns {
|
|
98 |
|
99 |
switch ( $column_name ) {
|
100 |
case 'wpseo-score':
|
|
|
101 |
echo $this->parse_column_score( $post_id );
|
102 |
return;
|
103 |
|
104 |
case 'wpseo-score-readability':
|
|
|
105 |
echo $this->parse_column_score_readability( $post_id );
|
106 |
return;
|
107 |
|
@@ -733,7 +735,7 @@ class WPSEO_Meta_Columns {
|
|
733 |
$title = $rank->get_label();
|
734 |
}
|
735 |
|
736 |
-
return '<div aria-hidden="true" title="' . esc_attr( $title ) . '" class="wpseo-score-icon ' .
|
737 |
}
|
738 |
|
739 |
/**
|
98 |
|
99 |
switch ( $column_name ) {
|
100 |
case 'wpseo-score':
|
101 |
+
// @phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Correctly escaped in render_score_indicator() method.
|
102 |
echo $this->parse_column_score( $post_id );
|
103 |
return;
|
104 |
|
105 |
case 'wpseo-score-readability':
|
106 |
+
// @phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Correctly escaped in render_score_indicator() method.
|
107 |
echo $this->parse_column_score_readability( $post_id );
|
108 |
return;
|
109 |
|
735 |
$title = $rank->get_label();
|
736 |
}
|
737 |
|
738 |
+
return '<div aria-hidden="true" title="' . esc_attr( $title ) . '" class="' . esc_attr( 'wpseo-score-icon ' . $rank->get_css_class() ) . '"></div><span class="screen-reader-text wpseo-score-text">' . esc_html( $title ) . '</span>';
|
739 |
}
|
740 |
|
741 |
/**
|
admin/class-option-tabs-formatter.php
CHANGED
@@ -64,7 +64,7 @@ class WPSEO_Option_Tabs_Formatter {
|
|
64 |
*/
|
65 |
$option_tab_content = apply_filters( 'wpseo_option_tab-' . $tab_filter_name, null, $option_tabs, $tab );
|
66 |
if ( ! empty( $option_tab_content ) ) {
|
67 |
-
echo $option_tab_content;
|
68 |
}
|
69 |
|
70 |
if ( empty( $option_tab_content ) ) {
|
64 |
*/
|
65 |
$option_tab_content = apply_filters( 'wpseo_option_tab-' . $tab_filter_name, null, $option_tabs, $tab );
|
66 |
if ( ! empty( $option_tab_content ) ) {
|
67 |
+
echo wp_kses_post( $option_tab_content );
|
68 |
}
|
69 |
|
70 |
if ( empty( $option_tab_content ) ) {
|
admin/class-premium-upsell-admin-block.php
CHANGED
@@ -74,8 +74,8 @@ class WPSEO_Premium_Upsell_Admin_Block {
|
|
74 |
'<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
|
75 |
|
76 |
$upgrade_button = sprintf(
|
77 |
-
'<a id="
|
78 |
-
$this->identifier,
|
79 |
esc_url( $url ),
|
80 |
$button_text
|
81 |
);
|
@@ -98,6 +98,7 @@ class WPSEO_Premium_Upsell_Admin_Block {
|
|
98 |
'</h2>';
|
99 |
echo '<ul class="' . esc_attr( $class . '--motivation' ) . '">' . $arguments_html . '</ul>';
|
100 |
|
|
|
101 |
echo '<p>' . $upgrade_button . '</p>';
|
102 |
echo '</div>';
|
103 |
|
74 |
'<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
|
75 |
|
76 |
$upgrade_button = sprintf(
|
77 |
+
'<a id="%1$s" class="yoast-button-upsell" href="%2$s" target="_blank">%3$s</a>',
|
78 |
+
esc_attr( 'wpseo-' . $this->identifier . '-popup-button' ),
|
79 |
esc_url( $url ),
|
80 |
$button_text
|
81 |
);
|
98 |
'</h2>';
|
99 |
echo '<ul class="' . esc_attr( $class . '--motivation' ) . '">' . $arguments_html . '</ul>';
|
100 |
|
101 |
+
// @phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Correctly escaped in $upgrade_button and $button_text above.
|
102 |
echo '<p>' . $upgrade_button . '</p>';
|
103 |
echo '</div>';
|
104 |
|
admin/class-social-admin.php
CHANGED
@@ -132,11 +132,11 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
|
|
132 |
$tab_content .= $this->do_meta_box( $meta_field_defs[ $field_name ], $field_name );
|
133 |
}
|
134 |
|
135 |
-
$features = new WPSEO_Features();
|
136 |
/**
|
137 |
* If premium hide the form to show the social preview instead, we still need the fields to be output because
|
138 |
* the values of the social preview are saved in the hidden field.
|
139 |
*/
|
|
|
140 |
if ( $features->is_premium() ) {
|
141 |
return $this->hide_form( $tab_content );
|
142 |
}
|
@@ -151,7 +151,7 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
|
|
151 |
*
|
152 |
* @return string The content.
|
153 |
*/
|
154 |
-
|
155 |
return '<div class="hidden">' . $tab_content . '</div>';
|
156 |
}
|
157 |
|
132 |
$tab_content .= $this->do_meta_box( $meta_field_defs[ $field_name ], $field_name );
|
133 |
}
|
134 |
|
|
|
135 |
/**
|
136 |
* If premium hide the form to show the social preview instead, we still need the fields to be output because
|
137 |
* the values of the social preview are saved in the hidden field.
|
138 |
*/
|
139 |
+
$features = new WPSEO_Features();
|
140 |
if ( $features->is_premium() ) {
|
141 |
return $this->hide_form( $tab_content );
|
142 |
}
|
151 |
*
|
152 |
* @return string The content.
|
153 |
*/
|
154 |
+
private function hide_form( $tab_content ) {
|
155 |
return '<div class="hidden">' . $tab_content . '</div>';
|
156 |
}
|
157 |
|
admin/class-yoast-alerts.php
CHANGED
@@ -141,12 +141,14 @@ class Yoast_Alerts {
|
|
141 |
private function output_ajax_response( $type ) {
|
142 |
|
143 |
$html = $this->get_view_html( $type );
|
|
|
144 |
echo WPSEO_Utils::format_json_encode(
|
145 |
array(
|
146 |
'html' => $html,
|
147 |
'total' => self::get_active_alert_count(),
|
148 |
)
|
149 |
);
|
|
|
150 |
}
|
151 |
|
152 |
/**
|
141 |
private function output_ajax_response( $type ) {
|
142 |
|
143 |
$html = $this->get_view_html( $type );
|
144 |
+
// phpcs:disable WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe.
|
145 |
echo WPSEO_Utils::format_json_encode(
|
146 |
array(
|
147 |
'html' => $html,
|
148 |
'total' => self::get_active_alert_count(),
|
149 |
)
|
150 |
);
|
151 |
+
// phpcs:enable -- Reason: WPSEO_Utils::format_json_encode is safe.
|
152 |
}
|
153 |
|
154 |
/**
|
admin/class-yoast-notification-center.php
CHANGED
@@ -369,6 +369,7 @@ class Yoast_Notification_Center {
|
|
369 |
$notification_json[] = $notification->render();
|
370 |
}
|
371 |
|
|
|
372 |
echo WPSEO_Utils::format_json_encode( $notification_json );
|
373 |
|
374 |
return;
|
369 |
$notification_json[] = $notification->render();
|
370 |
}
|
371 |
|
372 |
+
// phpcs:ignore WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe.
|
373 |
echo WPSEO_Utils::format_json_encode( $notification_json );
|
374 |
|
375 |
return;
|
admin/links/class-link-reindex-dashboard.php
CHANGED
@@ -65,10 +65,12 @@ class WPSEO_Link_Reindex_Dashboard {
|
|
65 |
echo '<strong>' . esc_html__( 'Text link counter', 'wordpress-seo' ) . '</strong><br/>';
|
66 |
|
67 |
if ( ! $this->has_unprocessed() ) {
|
|
|
68 |
echo $this->message_already_indexed();
|
69 |
}
|
70 |
|
71 |
if ( $this->has_unprocessed() ) {
|
|
|
72 |
printf( '<span id="reindexLinks">%s</span>', $this->message_start_indexing() );
|
73 |
}
|
74 |
|
@@ -100,7 +102,7 @@ class WPSEO_Link_Reindex_Dashboard {
|
|
100 |
if ( $this->has_unprocessed() ) {
|
101 |
$progress = sprintf(
|
102 |
/* translators: 1: expands to a <span> containing the number of items recalculated. 2: expands to a <strong> containing the total number of items. */
|
103 |
-
|
104 |
'<span id="wpseo_count_index_links">0</span>',
|
105 |
sprintf( '<strong id="wpseo_count_total">%d</strong>', $this->get_unprocessed_count() )
|
106 |
);
|
@@ -116,7 +118,10 @@ class WPSEO_Link_Reindex_Dashboard {
|
|
116 |
);
|
117 |
?>
|
118 |
<div id="wpseo_index_links_wrapper" class="hidden">
|
119 |
-
<?php
|
|
|
|
|
|
|
120 |
<button onclick="tb_remove();" type="button"
|
121 |
class="button"><?php esc_html_e( 'Stop counting', 'wordpress-seo' ); ?></button>
|
122 |
</div>
|
@@ -199,40 +204,4 @@ class WPSEO_Link_Reindex_Dashboard {
|
|
199 |
esc_attr__( 'Count links in your texts', 'wordpress-seo' )
|
200 |
);
|
201 |
}
|
202 |
-
|
203 |
-
/* ********************* DEPRECATED METHODS ********************* */
|
204 |
-
|
205 |
-
/**
|
206 |
-
* Add the indexing interface for links to the dashboard.
|
207 |
-
*
|
208 |
-
* @deprecated 7.0
|
209 |
-
* @codeCoverageIgnore
|
210 |
-
*
|
211 |
-
* @return void
|
212 |
-
*/
|
213 |
-
public function add_link_index_interface() {
|
214 |
-
_deprecated_function( __METHOD__, 'WPSEO 7.0' );
|
215 |
-
|
216 |
-
$html = '';
|
217 |
-
$html .= '<h2>' . esc_html__( 'Text link counter', 'wordpress-seo' ) . '</h2>';
|
218 |
-
$html .= '<p>' . sprintf(
|
219 |
-
/* translators: 1: link to yoast.com post about internal linking suggestion. 4: is Yoast.com 3: is anchor closing. */
|
220 |
-
__( 'The links in all your public texts need to be counted. This will provide insights of which texts need more links to them. If you want to know more about the why and how of internal linking, check out %1$sthe article about internal linking on %2$s%3$s.', 'wordpress-seo' ),
|
221 |
-
'<a href="' . WPSEO_Shortlinker::get( 'https://yoa.st/15n' ) . '" target="_blank">',
|
222 |
-
'Yoast.com',
|
223 |
-
'</a>'
|
224 |
-
) . '</p>';
|
225 |
-
|
226 |
-
if ( ! $this->has_unprocessed() ) {
|
227 |
-
$html .= '<p>' . $this->message_already_indexed() . '</p>';
|
228 |
-
}
|
229 |
-
|
230 |
-
if ( $this->has_unprocessed() ) {
|
231 |
-
$html .= '<p id="reindexLinks">' . $this->message_start_indexing() . '</p>';
|
232 |
-
}
|
233 |
-
|
234 |
-
$html .= '<br />';
|
235 |
-
|
236 |
-
echo $html;
|
237 |
-
}
|
238 |
}
|
65 |
echo '<strong>' . esc_html__( 'Text link counter', 'wordpress-seo' ) . '</strong><br/>';
|
66 |
|
67 |
if ( ! $this->has_unprocessed() ) {
|
68 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: `message_already_indexed` is considered a safe method.
|
69 |
echo $this->message_already_indexed();
|
70 |
}
|
71 |
|
72 |
if ( $this->has_unprocessed() ) {
|
73 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: `message_start_indexing` is considered a safe method.
|
74 |
printf( '<span id="reindexLinks">%s</span>', $this->message_start_indexing() );
|
75 |
}
|
76 |
|
102 |
if ( $this->has_unprocessed() ) {
|
103 |
$progress = sprintf(
|
104 |
/* translators: 1: expands to a <span> containing the number of items recalculated. 2: expands to a <strong> containing the total number of items. */
|
105 |
+
esc_html__( 'Text %1$s of %2$s processed.', 'wordpress-seo' ),
|
106 |
'<span id="wpseo_count_index_links">0</span>',
|
107 |
sprintf( '<strong id="wpseo_count_total">%d</strong>', $this->get_unprocessed_count() )
|
108 |
);
|
118 |
);
|
119 |
?>
|
120 |
<div id="wpseo_index_links_wrapper" class="hidden">
|
121 |
+
<?php
|
122 |
+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: All inputs are escaped properly.
|
123 |
+
echo implode( '<hr />', $blocks );
|
124 |
+
?>
|
125 |
<button onclick="tb_remove();" type="button"
|
126 |
class="button"><?php esc_html_e( 'Stop counting', 'wordpress-seo' ); ?></button>
|
127 |
</div>
|
204 |
esc_attr__( 'Count links in your texts', 'wordpress-seo' )
|
205 |
);
|
206 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
admin/metabox/class-metabox-addon-section.php
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* WPSEO plugin file.
|
4 |
-
*
|
5 |
-
* @package WPSEO\Admin
|
6 |
-
*/
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Generates and displays a section containing metabox tabs that have been added by other plugins through the
|
10 |
-
* `wpseo_tab_header` and `wpseo_tab_content` actions.
|
11 |
-
*/
|
12 |
-
class WPSEO_Metabox_Addon_Tab_Section extends WPSEO_Metabox_Tab_Section {
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Applies the actions for adding a tab to the metabox.
|
16 |
-
*/
|
17 |
-
public function display_content() {
|
18 |
-
?>
|
19 |
-
<div role="tabpanel" id="wpseo-meta-section-addons" aria-labelledby="wpseo-meta-tab-addons" tabindex="0" class="wpseo-meta-section">
|
20 |
-
<div class="wpseo-metabox-tabs-div">
|
21 |
-
<ul class="wpseo-metabox-tabs">
|
22 |
-
<?php do_action( 'wpseo_tab_header' ); ?>
|
23 |
-
</ul>
|
24 |
-
<?php do_action( 'wpseo_tab_content' ); ?>
|
25 |
-
</div>
|
26 |
-
</div>
|
27 |
-
<?php
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* `WPSEO_Metabox_Addon_Section` always has "tabs", represented by registered actions. If this is not the case,
|
32 |
-
* it should not be instantiated.
|
33 |
-
*
|
34 |
-
* @return bool
|
35 |
-
*/
|
36 |
-
protected function has_sections() {
|
37 |
-
return true;
|
38 |
-
}
|
39 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/metabox/class-metabox-collapsibles-section.php
CHANGED
@@ -40,9 +40,13 @@ class WPSEO_Metabox_Collapsibles_Sections extends WPSEO_Abstract_Metabox_Tab_Wit
|
|
40 |
printf( '<div id="%1$s" class="wpseo-meta-section">', esc_attr( 'wpseo-meta-section-' . $this->name ) );
|
41 |
echo '<div class="wpseo_content_wrapper">';
|
42 |
|
|
|
|
|
43 |
foreach ( $this->collapsibles as $collapsible ) {
|
44 |
-
echo $collapsible->content();
|
45 |
}
|
|
|
|
|
46 |
|
47 |
echo '</div></div>';
|
48 |
}
|
40 |
printf( '<div id="%1$s" class="wpseo-meta-section">', esc_attr( 'wpseo-meta-section-' . $this->name ) );
|
41 |
echo '<div class="wpseo_content_wrapper">';
|
42 |
|
43 |
+
add_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_forms' ) );
|
44 |
+
add_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_a11y' ) );
|
45 |
foreach ( $this->collapsibles as $collapsible ) {
|
46 |
+
echo wp_kses_post( $collapsible->content() );
|
47 |
}
|
48 |
+
remove_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_forms' ) );
|
49 |
+
remove_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_a11y' ) );
|
50 |
|
51 |
echo '</div></div>';
|
52 |
}
|
admin/metabox/class-metabox-section-additional.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WPSEO plugin file.
|
4 |
+
*
|
5 |
+
* @package WPSEO\Admin\Metabox
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Generates and displays an additional metabox section.
|
10 |
+
*/
|
11 |
+
class WPSEO_Metabox_Section_Additional implements WPSEO_Metabox_Section {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Name of the section, used as an identifier in the HTML.
|
15 |
+
*
|
16 |
+
* @var string
|
17 |
+
*/
|
18 |
+
public $name;
|
19 |
+
/**
|
20 |
+
* Content of the tab's section.
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
public $content;
|
25 |
+
/**
|
26 |
+
* HTML to use in the tab header.
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
private $link_content;
|
31 |
+
/**
|
32 |
+
* Class to add to the link.
|
33 |
+
*
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
private $link_class;
|
37 |
+
/**
|
38 |
+
* Aria label to use for the link.
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
private $link_aria_label;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Constructor.
|
46 |
+
*
|
47 |
+
* @param string $name The name of the section, used as an identifier in the html.
|
48 |
+
* Can only contain URL safe characters.
|
49 |
+
* @param string $link_content The text content of the section link.
|
50 |
+
* @param string $content Optional. Content to use above the React root element.
|
51 |
+
* @param array $options Optional link attributes.
|
52 |
+
*/
|
53 |
+
public function __construct( $name, $link_content, $content = '', array $options = array() ) {
|
54 |
+
$this->name = $name;
|
55 |
+
$this->content = $content;
|
56 |
+
$default_options = array(
|
57 |
+
'link_class' => '',
|
58 |
+
'link_aria_label' => '',
|
59 |
+
);
|
60 |
+
$options = wp_parse_args( $options, $default_options );
|
61 |
+
$this->link_content = $link_content;
|
62 |
+
$this->link_class = $options['link_class'];
|
63 |
+
$this->link_aria_label = $options['link_aria_label'];
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Outputs the section link.
|
68 |
+
*
|
69 |
+
* @return void
|
70 |
+
*/
|
71 |
+
public function display_link() {
|
72 |
+
printf(
|
73 |
+
'<li role="presentation"><a role="tab" href="#wpseo-meta-section-%1$s" id="wpseo-meta-tab-%1$s" aria-controls="wpseo-meta-section-%1$s" class="wpseo-meta-section-link %2$s"%3$s>%4$s</a></li>',
|
74 |
+
esc_attr( $this->name ),
|
75 |
+
esc_attr( $this->link_class ),
|
76 |
+
( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
|
77 |
+
$this->link_content
|
78 |
+
);
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Outputs the section content.
|
83 |
+
*
|
84 |
+
* @return void
|
85 |
+
*/
|
86 |
+
public function display_content() {
|
87 |
+
$html = sprintf(
|
88 |
+
'<div role="tabpanel" id="wpseo-meta-section-%1$s" aria-labelledby="wpseo-meta-tab-%1$s" tabindex="0" class="wpseo-meta-section wpseo-form">',
|
89 |
+
esc_attr( $this->name )
|
90 |
+
);
|
91 |
+
$html .= $this->content;
|
92 |
+
$html .= '</div>';
|
93 |
+
echo $html;
|
94 |
+
}
|
95 |
+
}
|
admin/metabox/class-metabox-section-react.php
CHANGED
@@ -90,7 +90,7 @@ class WPSEO_Metabox_Section_React implements WPSEO_Metabox_Section {
|
|
90 |
esc_attr( $this->name ),
|
91 |
esc_attr( $this->link_class ),
|
92 |
( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
|
93 |
-
$this->link_content
|
94 |
);
|
95 |
}
|
96 |
|
@@ -100,15 +100,19 @@ class WPSEO_Metabox_Section_React implements WPSEO_Metabox_Section {
|
|
100 |
* @return void
|
101 |
*/
|
102 |
public function display_content() {
|
103 |
-
|
|
|
|
|
|
|
104 |
'<div role="tabpanel" id="wpseo-meta-section-%1$s" aria-labelledby="wpseo-meta-tab-%1$s" tabindex="0" class="wpseo-meta-section">',
|
105 |
esc_attr( $this->name )
|
106 |
);
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
|
112 |
-
|
|
|
113 |
}
|
114 |
}
|
90 |
esc_attr( $this->name ),
|
91 |
esc_attr( $this->link_class ),
|
92 |
( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
|
93 |
+
wp_kses_post( $this->link_content )
|
94 |
);
|
95 |
}
|
96 |
|
100 |
* @return void
|
101 |
*/
|
102 |
public function display_content() {
|
103 |
+
add_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_forms' ) );
|
104 |
+
add_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_a11y' ) );
|
105 |
+
|
106 |
+
printf(
|
107 |
'<div role="tabpanel" id="wpseo-meta-section-%1$s" aria-labelledby="wpseo-meta-tab-%1$s" tabindex="0" class="wpseo-meta-section">',
|
108 |
esc_attr( $this->name )
|
109 |
);
|
110 |
+
echo wp_kses_post( $this->content );
|
111 |
+
echo '<div id="wpseo-metabox-root" class="wpseo-metabox-root"></div>';
|
112 |
+
echo wp_kses_post( $this->html_after );
|
113 |
+
echo '</div>';
|
114 |
|
115 |
+
remove_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_forms' ) );
|
116 |
+
remove_filter( 'wp_kses_allowed_html', array( 'WPSEO_Utils', 'extend_kses_post_with_a11y' ) );
|
117 |
}
|
118 |
}
|
admin/metabox/class-metabox.php
CHANGED
@@ -315,9 +315,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
|
|
315 |
$content_sections[] = $this->social_admin->get_meta_section();
|
316 |
}
|
317 |
|
318 |
-
|
319 |
-
$content_sections[] = $this->get_addons_meta_section();
|
320 |
-
}
|
321 |
|
322 |
return $content_sections;
|
323 |
}
|
@@ -381,16 +379,53 @@ class WPSEO_Metabox extends WPSEO_Meta {
|
|
381 |
}
|
382 |
|
383 |
/**
|
384 |
-
* Returns
|
385 |
-
* `wpseo_tab_header` and `wpseo_tab_content` actions.
|
386 |
*
|
387 |
-
* @return
|
388 |
*/
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
394 |
}
|
395 |
|
396 |
/**
|
@@ -738,7 +773,6 @@ class WPSEO_Metabox extends WPSEO_Meta {
|
|
738 |
$asset_manager->enqueue_script( 'metabox' );
|
739 |
$asset_manager->enqueue_script( 'admin-media' );
|
740 |
|
741 |
-
|
742 |
$asset_manager->enqueue_script( 'post-scraper' );
|
743 |
$asset_manager->enqueue_script( 'replacevar-plugin' );
|
744 |
$asset_manager->enqueue_script( 'shortcode-plugin' );
|
315 |
$content_sections[] = $this->social_admin->get_meta_section();
|
316 |
}
|
317 |
|
318 |
+
$content_sections = array_merge( $content_sections, $this->get_additional_meta_sections() );
|
|
|
|
|
319 |
|
320 |
return $content_sections;
|
321 |
}
|
379 |
}
|
380 |
|
381 |
/**
|
382 |
+
* Returns metabox sections that have been added by other plugins.
|
|
|
383 |
*
|
384 |
+
* @return WPSEO_Metabox_Section_Additional[]
|
385 |
*/
|
386 |
+
protected function get_additional_meta_sections() {
|
387 |
+
$sections = array();
|
388 |
+
|
389 |
+
/**
|
390 |
+
* Private filter: 'yoast_free_additional_metabox_sections'.
|
391 |
+
*
|
392 |
+
* Meant for internal use only. Allows adding additional tabs to the Yoast SEO metabox.
|
393 |
+
*
|
394 |
+
* @since 11.9
|
395 |
+
*
|
396 |
+
* @param array[] $sections {
|
397 |
+
* An array of arrays with tab specifications.
|
398 |
+
*
|
399 |
+
* @type array $section {
|
400 |
+
* A tab specification.
|
401 |
+
*
|
402 |
+
* @type string $name The name of the tab. Used in the HTML IDs, href and aria properties.
|
403 |
+
* @type string $link_content The content of the tab link.
|
404 |
+
* @type string $content The content of the tab.
|
405 |
+
* @type array $options {
|
406 |
+
* Optional. Extra options.
|
407 |
+
*
|
408 |
+
* @type string $link_class Optional. The class for the tab link.
|
409 |
+
* @type string $link_aria_label Optional. The aria label of the tab link.
|
410 |
+
* }
|
411 |
+
* }
|
412 |
+
* }
|
413 |
+
*/
|
414 |
+
$requested_sections = apply_filters( 'yoast_free_additional_metabox_sections', array() );
|
415 |
+
|
416 |
+
foreach ( $requested_sections as $section ) {
|
417 |
+
if ( is_array( $section ) && array_key_exists( 'name', $section ) && array_key_exists( 'link_content', $section ) && array_key_exists( 'content', $section ) ) {
|
418 |
+
$options = array_key_exists( 'options', $section ) ? $section['options'] : array();
|
419 |
+
$sections[] = new WPSEO_Metabox_Section_Additional(
|
420 |
+
$section['name'],
|
421 |
+
$section['link_content'],
|
422 |
+
$section['content'],
|
423 |
+
$options
|
424 |
+
);
|
425 |
+
}
|
426 |
+
}
|
427 |
+
|
428 |
+
return $sections;
|
429 |
}
|
430 |
|
431 |
/**
|
773 |
$asset_manager->enqueue_script( 'metabox' );
|
774 |
$asset_manager->enqueue_script( 'admin-media' );
|
775 |
|
|
|
776 |
$asset_manager->enqueue_script( 'post-scraper' );
|
777 |
$asset_manager->enqueue_script( 'replacevar-plugin' );
|
778 |
$asset_manager->enqueue_script( 'shortcode-plugin' );
|
admin/notifiers/class-configuration-notifier.php
CHANGED
@@ -146,7 +146,7 @@ class WPSEO_Configuration_Notifier implements WPSEO_Listener {
|
|
146 |
private function notification( $title, $content, $show_dismissal = false ) {
|
147 |
$notification = '<div class="yoast-container yoast-container__configuration-wizard">';
|
148 |
$notification .= sprintf(
|
149 |
-
'<img src="%1$s" height="%2$s" width="%3$d" />',
|
150 |
esc_url( plugin_dir_url( WPSEO_FILE ) . 'images/new-to-configuration-notice.svg' ),
|
151 |
60,
|
152 |
60
|
146 |
private function notification( $title, $content, $show_dismissal = false ) {
|
147 |
$notification = '<div class="yoast-container yoast-container__configuration-wizard">';
|
148 |
$notification .= sprintf(
|
149 |
+
'<img src="%1$s" height="%2$s" width="%3$d" alt="" />',
|
150 |
esc_url( plugin_dir_url( WPSEO_FILE ) . 'images/new-to-configuration-notice.svg' ),
|
151 |
60,
|
152 |
60
|
admin/taxonomy/class-taxonomy-metabox.php
CHANGED
@@ -202,13 +202,34 @@ class WPSEO_Taxonomy_Metabox {
|
|
202 |
}
|
203 |
|
204 |
$meta_fields = $this->taxonomy_social_fields->get_by_network( $network );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
|
206 |
$tab_settings = new WPSEO_Metabox_Collapsible(
|
207 |
$name,
|
208 |
-
$this->social_admin->get_premium_notice( $network ) . $
|
209 |
$label
|
210 |
);
|
211 |
|
212 |
return $tab_settings;
|
213 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
}
|
202 |
}
|
203 |
|
204 |
$meta_fields = $this->taxonomy_social_fields->get_by_network( $network );
|
205 |
+
$content = $this->taxonomy_tab_content->html( $meta_fields );
|
206 |
+
|
207 |
+
/**
|
208 |
+
* If premium hide the form to show the social preview instead, we still need the fields to be output because
|
209 |
+
* the values of the social preview are saved in the hidden field.
|
210 |
+
*/
|
211 |
+
$features = new WPSEO_Features();
|
212 |
+
if ( $features->is_premium() ) {
|
213 |
+
$content = $this->hide_form( $content );
|
214 |
+
}
|
215 |
|
216 |
$tab_settings = new WPSEO_Metabox_Collapsible(
|
217 |
$name,
|
218 |
+
$this->social_admin->get_premium_notice( $network ) . $content,
|
219 |
$label
|
220 |
);
|
221 |
|
222 |
return $tab_settings;
|
223 |
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Hides the given output when rendered to HTML.
|
227 |
+
*
|
228 |
+
* @param string $tab_content The social tab content.
|
229 |
+
*
|
230 |
+
* @return string The content.
|
231 |
+
*/
|
232 |
+
private function hide_form( $tab_content ) {
|
233 |
+
return '<div class="hidden">' . $tab_content . '</div>';
|
234 |
+
}
|
235 |
}
|
admin/views/licenses.php
CHANGED
@@ -158,7 +158,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
158 |
class="yoast-link--license">
|
159 |
<?php
|
160 |
/* translators: %s expands to the extension title */
|
161 |
-
printf(
|
162 |
echo $new_tab_message;
|
163 |
?>
|
164 |
</a>
|
@@ -168,7 +168,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
168 |
class="yoast-link--license">
|
169 |
<?php
|
170 |
/* translators: %s expands to the extension title */
|
171 |
-
printf(
|
172 |
echo $new_tab_message;
|
173 |
?>
|
174 |
</a>
|
@@ -242,7 +242,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
242 |
class="yoast-link--license">
|
243 |
<?php
|
244 |
/* translators: %s expands to the extension title */
|
245 |
-
printf(
|
246 |
echo $new_tab_message;
|
247 |
?>
|
248 |
</a>
|
@@ -252,7 +252,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
252 |
class="yoast-link--license">
|
253 |
<?php
|
254 |
/* translators: %s expands to the extension title */
|
255 |
-
printf(
|
256 |
echo $new_tab_message;
|
257 |
?>
|
258 |
</a>
|
158 |
class="yoast-link--license">
|
159 |
<?php
|
160 |
/* translators: %s expands to the extension title */
|
161 |
+
printf( esc_html__( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
|
162 |
echo $new_tab_message;
|
163 |
?>
|
164 |
</a>
|
168 |
class="yoast-link--license">
|
169 |
<?php
|
170 |
/* translators: %s expands to the extension title */
|
171 |
+
printf( esc_html__( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
|
172 |
echo $new_tab_message;
|
173 |
?>
|
174 |
</a>
|
242 |
class="yoast-link--license">
|
243 |
<?php
|
244 |
/* translators: %s expands to the extension title */
|
245 |
+
printf( esc_html__( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $extension->get_title() );
|
246 |
echo $new_tab_message;
|
247 |
?>
|
248 |
</a>
|
252 |
class="yoast-link--license">
|
253 |
<?php
|
254 |
/* translators: %s expands to the extension title */
|
255 |
+
printf( esc_html__( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $extension->get_title() );
|
256 |
echo $new_tab_message;
|
257 |
?>
|
258 |
</a>
|
css/dist/{admin-global-1180-rtl.min.css → admin-global-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{admin-global-1180.min.css → admin-global-1190.min.css}
RENAMED
File without changes
|
css/dist/{adminbar-1180-rtl.min.css → adminbar-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{adminbar-1180.min.css → adminbar-1190.min.css}
RENAMED
File without changes
|
css/dist/{alerts-1180-rtl.min.css → alerts-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{alerts-1180.min.css → alerts-1190.min.css}
RENAMED
File without changes
|
css/dist/{dashboard-1180-rtl.min.css → dashboard-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{dashboard-1180.min.css → dashboard-1190.min.css}
RENAMED
File without changes
|
css/dist/{edit-page-1180-rtl.min.css → edit-page-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{edit-page-1180.min.css → edit-page-1190.min.css}
RENAMED
File without changes
|
css/dist/{featured-image-1180-rtl.min.css → featured-image-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{featured-image-1180.min.css → featured-image-1190.min.css}
RENAMED
File without changes
|
css/dist/{filter-explanation-1180-rtl.min.css → filter-explanation-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{filter-explanation-1180.min.css → filter-explanation-1190.min.css}
RENAMED
File without changes
|
css/dist/{inside-editor-1180-rtl.min.css → inside-editor-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{inside-editor-1180.min.css → inside-editor-1190.min.css}
RENAMED
File without changes
|
css/dist/{metabox-1180-rtl.min.css → metabox-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{metabox-1180.min.css → metabox-1190.min.css}
RENAMED
File without changes
|
css/dist/{metabox-primary-category-1180-rtl.min.css → metabox-primary-category-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{metabox-primary-category-1180.min.css → metabox-primary-category-1190.min.css}
RENAMED
File without changes
|
css/dist/{search-appearance-1180-rtl.min.css → search-appearance-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{search-appearance-1180.min.css → search-appearance-1190.min.css}
RENAMED
File without changes
|
css/dist/{structured-data-blocks-1180-rtl.min.css → structured-data-blocks-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{structured-data-blocks-1180.min.css → structured-data-blocks-1190.min.css}
RENAMED
File without changes
|
css/dist/{toggle-switch-1180-rtl.min.css → toggle-switch-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{toggle-switch-1180.min.css → toggle-switch-1190.min.css}
RENAMED
File without changes
|
css/dist/{wpseo-dismissible-1180-rtl.min.css → wpseo-dismissible-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{wpseo-dismissible-1180.min.css → wpseo-dismissible-1190.min.css}
RENAMED
File without changes
|
css/dist/{yoast-components-1180-rtl.min.css → yoast-components-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yoast-components-1180.min.css → yoast-components-1190.min.css}
RENAMED
File without changes
|
css/dist/{yoast-extensions-1180-rtl.min.css → yoast-extensions-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yoast-extensions-1180.min.css → yoast-extensions-1190.min.css}
RENAMED
File without changes
|
css/dist/{yst_plugin_tools-1180-rtl.min.css → yst_plugin_tools-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yst_plugin_tools-1180.min.css → yst_plugin_tools-1190.min.css}
RENAMED
File without changes
|
css/dist/{yst_seo_score-1180-rtl.min.css → yst_seo_score-1190-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yst_seo_score-1180.min.css → yst_seo_score-1190.min.css}
RENAMED
File without changes
|
deprecated/class-metabox-addon-section.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WPSEO plugin file.
|
4 |
+
*
|
5 |
+
* @package WPSEO\Admin
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Generates and displays a section containing metabox tabs that have been added by other plugins through the
|
10 |
+
* `wpseo_tab_header` and `wpseo_tab_content` actions.
|
11 |
+
*
|
12 |
+
* @deprecated 11.9
|
13 |
+
*/
|
14 |
+
class WPSEO_Metabox_Addon_Tab_Section extends WPSEO_Metabox_Tab_Section {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* WPSEO_Metabox_Addon_Tab_Section constructor.
|
18 |
+
*
|
19 |
+
* @deprecated 11.9
|
20 |
+
*
|
21 |
+
* @param string $name The name of the section, used as an identifier in the html.
|
22 |
+
* Can only contain URL safe characters.
|
23 |
+
* @param string $link_content The text content of the section link.
|
24 |
+
* @param array $tabs The metabox tabs (`WPSEO_Metabox_Tabs[]`) to be included in the section.
|
25 |
+
* @param array $options Optional link attributes.
|
26 |
+
*/
|
27 |
+
public function __construct( $name, $link_content, array $tabs = array(), array $options = array() ) {
|
28 |
+
_deprecated_constructor( 'WPSEO_Metabox_Addon_Tab_Section', '11.9' );
|
29 |
+
parent::__construct( $name, $link_content, $tabs, $options );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Applies the actions for adding a tab to the metabox.
|
34 |
+
*
|
35 |
+
* @deprecated 11.9
|
36 |
+
*/
|
37 |
+
public function display_content() {
|
38 |
+
_deprecated_function( __METHOD__, '11.9' );
|
39 |
+
?>
|
40 |
+
<div role="tabpanel" id="wpseo-meta-section-addons" aria-labelledby="wpseo-meta-tab-addons" tabindex="0" class="wpseo-meta-section">
|
41 |
+
<div class="wpseo-metabox-tabs-div">
|
42 |
+
<ul class="wpseo-metabox-tabs">
|
43 |
+
<?php
|
44 |
+
// @deprecated 11.9 This functionality has been replaced by the filter: `yoast_free_additional_metabox_sections`.
|
45 |
+
do_action_deprecated( 'wpseo_tab_header', array(), '11.9' );
|
46 |
+
?>
|
47 |
+
</ul>
|
48 |
+
<?php
|
49 |
+
// @deprecated 11.9 This functionality has been replaced by the filter: `yoast_free_additional_metabox_sections`.
|
50 |
+
do_action_deprecated( 'wpseo_tab_content', array(), '11.9' );
|
51 |
+
?>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
<?php
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* `WPSEO_Metabox_Addon_Section` always has "sections", represented by registered actions. If this is not the case,
|
59 |
+
* it should not be instantiated.
|
60 |
+
*
|
61 |
+
* @deprecated 11.9
|
62 |
+
*
|
63 |
+
* @return bool
|
64 |
+
*/
|
65 |
+
protected function has_sections() {
|
66 |
+
_deprecated_function( __METHOD__, '11.9' );
|
67 |
+
return true;
|
68 |
+
}
|
69 |
+
}
|
frontend/schema/class-schema-author.php
CHANGED
@@ -91,13 +91,7 @@ class WPSEO_Schema_Author extends WPSEO_Schema_Person implements WPSEO_Graph_Pie
|
|
91 |
* @return bool
|
92 |
*/
|
93 |
protected function is_post_author() {
|
94 |
-
|
95 |
-
* Filter: 'wpseo_schema_article_post_type' - Allow changing for which post types we output Article schema.
|
96 |
-
*
|
97 |
-
* @api array $post_types The post types for which we output Article.
|
98 |
-
*/
|
99 |
-
$post_types = apply_filters( 'wpseo_schema_article_post_type', array( 'post' ) );
|
100 |
-
if ( is_singular( $post_types ) ) {
|
101 |
return true;
|
102 |
}
|
103 |
|
91 |
* @return bool
|
92 |
*/
|
93 |
protected function is_post_author() {
|
94 |
+
if ( is_singular() && WPSEO_Schema_Article::is_article_post_type() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
return true;
|
96 |
}
|
97 |
|
inc/class-wpseo-shortlinker.php
CHANGED
@@ -116,7 +116,7 @@ class WPSEO_Shortlinker {
|
|
116 |
$cohort = '6-30';
|
117 |
break;
|
118 |
default:
|
119 |
-
$cohort = '
|
120 |
}
|
121 |
return $cohort;
|
122 |
}
|
116 |
$cohort = '6-30';
|
117 |
break;
|
118 |
default:
|
119 |
+
$cohort = '30plus';
|
120 |
}
|
121 |
return $cohort;
|
122 |
}
|
inc/class-wpseo-utils.php
CHANGED
@@ -1216,6 +1216,155 @@ SVG;
|
|
1216 |
return "<script type='application/ld+json' class='" . esc_attr( $class ) . "'>" . self::format_json_encode( $output ) . '</script>' . "\n";
|
1217 |
}
|
1218 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1219 |
/* ********************* DEPRECATED METHODS ********************* */
|
1220 |
|
1221 |
/**
|
1216 |
return "<script type='application/ld+json' class='" . esc_attr( $class ) . "'>" . self::format_json_encode( $output ) . '</script>' . "\n";
|
1217 |
}
|
1218 |
|
1219 |
+
/**
|
1220 |
+
* Extends the allowed post tags with accessibility-related attributes.
|
1221 |
+
*
|
1222 |
+
* @param array $allowed_post_tags The allowed post tags.
|
1223 |
+
* @codeCoverageIgnore
|
1224 |
+
*
|
1225 |
+
* @return array The allowed tags including post tags, input tags and select tags.
|
1226 |
+
*/
|
1227 |
+
public static function extend_kses_post_with_a11y( $allowed_post_tags ) {
|
1228 |
+
static $a11y_tags;
|
1229 |
+
|
1230 |
+
if ( isset( $a11y_tags ) === false ) {
|
1231 |
+
$a11y_tags = array(
|
1232 |
+
'button' => array(
|
1233 |
+
'aria-expanded' => true,
|
1234 |
+
),
|
1235 |
+
'div' => array(
|
1236 |
+
'tabindex' => true,
|
1237 |
+
),
|
1238 |
+
// Below are attributes that are needed for backwards compatibility (WP < 5.1).
|
1239 |
+
'span' => array(
|
1240 |
+
'aria-hidden' => true,
|
1241 |
+
),
|
1242 |
+
'input' => array(
|
1243 |
+
'aria-describedby' => true,
|
1244 |
+
),
|
1245 |
+
'select' => array(
|
1246 |
+
'aria-describedby' => true,
|
1247 |
+
),
|
1248 |
+
'textarea' => array(
|
1249 |
+
'aria-describedby' => true,
|
1250 |
+
),
|
1251 |
+
);
|
1252 |
+
|
1253 |
+
// Add the global allowed attributes to each html element.
|
1254 |
+
$a11y_tags = array_map( '_wp_add_global_attributes', $a11y_tags );
|
1255 |
+
}
|
1256 |
+
|
1257 |
+
return array_merge_recursive( $allowed_post_tags, $a11y_tags );
|
1258 |
+
}
|
1259 |
+
|
1260 |
+
/**
|
1261 |
+
* Extends the allowed post tags with input, select and option tags.
|
1262 |
+
*
|
1263 |
+
* @param array $allowed_post_tags The allowed post tags.
|
1264 |
+
* @codeCoverageIgnore
|
1265 |
+
*
|
1266 |
+
* @return array The allowed tags including post tags, input tags, select tags and option tags.
|
1267 |
+
*/
|
1268 |
+
public static function extend_kses_post_with_forms( $allowed_post_tags ) {
|
1269 |
+
static $input_tags;
|
1270 |
+
|
1271 |
+
if ( isset( $input_tags ) === false ) {
|
1272 |
+
$input_tags = array(
|
1273 |
+
'input' => array(
|
1274 |
+
'accept' => true,
|
1275 |
+
'accesskey' => true,
|
1276 |
+
'align' => true,
|
1277 |
+
'alt' => true,
|
1278 |
+
'autocomplete' => true,
|
1279 |
+
'autofocus' => true,
|
1280 |
+
'checked' => true,
|
1281 |
+
'contenteditable' => true,
|
1282 |
+
'dirname' => true,
|
1283 |
+
'disabled' => true,
|
1284 |
+
'draggable' => true,
|
1285 |
+
'dropzone' => true,
|
1286 |
+
'form' => true,
|
1287 |
+
'formaction' => true,
|
1288 |
+
'formenctype' => true,
|
1289 |
+
'formmethod' => true,
|
1290 |
+
'formnovalidate' => true,
|
1291 |
+
'formtarget' => true,
|
1292 |
+
'height' => true,
|
1293 |
+
'hidden' => true,
|
1294 |
+
'lang' => true,
|
1295 |
+
'list' => true,
|
1296 |
+
'max' => true,
|
1297 |
+
'maxlength' => true,
|
1298 |
+
'min' => true,
|
1299 |
+
'multiple' => true,
|
1300 |
+
'name' => true,
|
1301 |
+
'pattern' => true,
|
1302 |
+
'placeholder' => true,
|
1303 |
+
'readonly' => true,
|
1304 |
+
'required' => true,
|
1305 |
+
'size' => true,
|
1306 |
+
'spellcheck' => true,
|
1307 |
+
'src' => true,
|
1308 |
+
'step' => true,
|
1309 |
+
'tabindex' => true,
|
1310 |
+
'translate' => true,
|
1311 |
+
'type' => true,
|
1312 |
+
'value' => true,
|
1313 |
+
'width' => true,
|
1314 |
+
|
1315 |
+
/*
|
1316 |
+
* Below are attributes that are needed for backwards compatibility (WP < 5.1).
|
1317 |
+
* They are used for the social media image in the metabox.
|
1318 |
+
* These can be removed once we move to the React versions of the social previews.
|
1319 |
+
*/
|
1320 |
+
'data-target' => true,
|
1321 |
+
'data-target-id' => true,
|
1322 |
+
),
|
1323 |
+
'select' => array(
|
1324 |
+
'accesskey' => true,
|
1325 |
+
'autofocus' => true,
|
1326 |
+
'contenteditable' => true,
|
1327 |
+
'disabled' => true,
|
1328 |
+
'draggable' => true,
|
1329 |
+
'dropzone' => true,
|
1330 |
+
'form' => true,
|
1331 |
+
'hidden' => true,
|
1332 |
+
'lang' => true,
|
1333 |
+
'multiple' => true,
|
1334 |
+
'name' => true,
|
1335 |
+
'onblur' => true,
|
1336 |
+
'onchange' => true,
|
1337 |
+
'oncontextmenu' => true,
|
1338 |
+
'onfocus' => true,
|
1339 |
+
'oninput' => true,
|
1340 |
+
'oninvalid' => true,
|
1341 |
+
'onreset' => true,
|
1342 |
+
'onsearch' => true,
|
1343 |
+
'onselect' => true,
|
1344 |
+
'onsubmit' => true,
|
1345 |
+
'required' => true,
|
1346 |
+
'size' => true,
|
1347 |
+
'spellcheck' => true,
|
1348 |
+
'tabindex' => true,
|
1349 |
+
'translate' => true,
|
1350 |
+
),
|
1351 |
+
'option' => array(
|
1352 |
+
'class' => true,
|
1353 |
+
'disabled' => true,
|
1354 |
+
'id' => true,
|
1355 |
+
'label' => true,
|
1356 |
+
'selected' => true,
|
1357 |
+
'value' => true,
|
1358 |
+
),
|
1359 |
+
);
|
1360 |
+
|
1361 |
+
// Add the global allowed attributes to each html element.
|
1362 |
+
$input_tags = array_map( '_wp_add_global_attributes', $input_tags );
|
1363 |
+
}
|
1364 |
+
|
1365 |
+
return array_merge_recursive( $allowed_post_tags, $input_tags );
|
1366 |
+
}
|
1367 |
+
|
1368 |
/* ********************* DEPRECATED METHODS ********************* */
|
1369 |
|
1370 |
/**
|
js/dist/{analysis-1180.min.js → analysis-1190.min.js}
RENAMED
File without changes
|
js/dist/{babel-polyfill-1180.min.js → babel-polyfill-1190.min.js}
RENAMED
File without changes
|
js/dist/{commons-1180.min.js → commons-1190.min.js}
RENAMED
File without changes
|
js/dist/{components-1180.min.js → components-1190.min.js}
RENAMED
File without changes
|
js/dist/{configuration-wizard-1180.min.js → configuration-wizard-1190.min.js}
RENAMED
File without changes
|
js/dist/{search-appearance-1180.min.js → search-appearance-1190.min.js}
RENAMED
File without changes
|
js/dist/{styled-components-1180.min.js → styled-components-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-apiFetch-1180.min.js → wp-apiFetch-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-components-1180.min.js → wp-components-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-compose-1180.min.js → wp-compose-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-data-1180.min.js → wp-data-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-element-1180.min.js → wp-element-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-i18n-1180.min.js → wp-i18n-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-richText-1180.min.js → wp-richText-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-admin-1180.min.js → wp-seo-admin-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-admin-global-1180.min.js → wp-seo-admin-global-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-admin-gsc-1180.min.js → wp-seo-admin-gsc-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-admin-media-1180.min.js → wp-seo-admin-media-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-analysis-worker-1180.min.js → wp-seo-analysis-worker-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-api-1180.min.js → wp-seo-api-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-bulk-editor-1180.min.js → wp-seo-bulk-editor-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-courses-overview-1180.min.js → wp-seo-courses-overview-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-dashboard-widget-1180.min.js → wp-seo-dashboard-widget-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-edit-page-1180.min.js → wp-seo-edit-page-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-featured-image-1180.min.js → wp-seo-featured-image-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-filter-explanation-1180.min.js → wp-seo-filter-explanation-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-help-center-1180.min.js → wp-seo-help-center-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-metabox-1180.min.js → wp-seo-metabox-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-metabox-category-1180.min.js → wp-seo-metabox-category-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-modal-1180.min.js → wp-seo-modal-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-network-admin-1180.min.js → wp-seo-network-admin-1190.min.js}
RENAMED
File without changes
|
js/dist/{wp-seo-post-scraper-1180.min.js → wp-seo-post-scraper-1190.min.js}
RENAMED
@@ -2,4 +2,4 @@
|
|
2 |
/**
|
3 |
* @preserve jed.js https://github.com/SlexAxton/Jed
|
4 |
*/
|
5 |
-
!function(n,r){var o=Array.prototype,i=Object.prototype,a=o.slice,s=i.hasOwnProperty,u=o.forEach,l={},c={forEach:function(e,t,n){var r,o,i;if(null!==e)if(u&&e.forEach===u)e.forEach(t,n);else if(e.length===+e.length){for(r=0,o=e.length;r<o;r++)if(r in e&&t.call(n,e[r],r,e)===l)return}else for(i in e)if(s.call(e,i)&&t.call(n,e[i],i,e)===l)return},extend:function(e){return this.forEach(a.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e}},p=function(e){if(this.defaults={locale_data:{messages:{"":{domain:"messages",lang:"en",plural_forms:"nplurals=2; plural=(n != 1);"}}},domain:"messages",debug:!1},this.options=c.extend({},this.defaults,e),this.textdomain(this.options.domain),e.domain&&!this.options.locale_data[this.options.domain])throw new Error("Text domain set to non-existent domain: `"+e.domain+"`")};function f(e){return p.PF.compile(e||"nplurals=2; plural=(n != 1);")}function d(e,t){this._key=e,this._i18n=t}p.context_delimiter=String.fromCharCode(4),c.extend(d.prototype,{onDomain:function(e){return this._domain=e,this},withContext:function(e){return this._context=e,this},ifPlural:function(e,t){return this._val=e,this._pkey=t,this},fetch:function(e){return"[object Array]"!={}.toString.call(e)&&(e=[].slice.call(arguments,0)),(e&&e.length?p.sprintf:function(e){return e})(this._i18n.dcnpgettext(this._domain,this._context,this._key,this._pkey,this._val),e)}}),c.extend(p.prototype,{translate:function(e){return new d(e,this)},textdomain:function(e){if(!e)return this._textdomain;this._textdomain=e},gettext:function(e){return this.dcnpgettext.call(this,void 0,void 0,e)},dgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},dcgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},ngettext:function(e,t,n){return this.dcnpgettext.call(this,void 0,void 0,e,t,n)},dngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},dcngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},pgettext:function(e,t){return this.dcnpgettext.call(this,void 0,e,t)},dpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},dcpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},npgettext:function(e,t,n,r){return this.dcnpgettext.call(this,void 0,e,t,n,r)},dnpgettext:function(e,t,n,r,o){return this.dcnpgettext.call(this,e,t,n,r,o)},dcnpgettext:function(e,t,n,r,o){var i;if(r=r||n,e=e||this._textdomain,!this.options)return(i=new p).dcnpgettext.call(i,void 0,void 0,n,r,o);if(!this.options.locale_data)throw new Error("No locale data provided.");if(!this.options.locale_data[e])throw new Error("Domain `"+e+"` was not found.");if(!this.options.locale_data[e][""])throw new Error("No locale meta information provided.");if(!n)throw new Error("No translation key found.");var a,s,u,l=t?t+p.context_delimiter+n:n,c=this.options.locale_data,d=c[e],h=(c.messages||this.defaults.locale_data.messages)[""],y=d[""].plural_forms||d[""]["Plural-Forms"]||d[""]["plural-forms"]||h.plural_forms||h["Plural-Forms"]||h["plural-forms"];if(void 0===o)u=0;else{if("number"!=typeof o&&(o=parseInt(o,10),isNaN(o)))throw new Error("The number that was passed in is not a number.");u=f(y)(o)}if(!d)throw new Error("No domain named `"+e+"` could be found.");return!(a=d[l])||u>a.length?(this.options.missing_key_callback&&this.options.missing_key_callback(l,e),s=[n,r],!0===this.options.debug&&console.log(s[f(y)(o)]),s[f()(o)]):(s=a[u])||(s=[n,r])[f()(o)]}});var h=function(){function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}var n=function(){return n.cache.hasOwnProperty(arguments[0])||(n.cache[arguments[0]]=n.parse(arguments[0])),n.format.call(null,n.cache[arguments[0]],arguments)};return n.format=function(n,r){var o,i,a,s,u,l,c,p=1,f=n.length,d="",y=[];for(i=0;i<f;i++)if("string"===(d=e(n[i])))y.push(n[i]);else if("array"===d){if((s=n[i])[2])for(o=r[p],a=0;a<s[2].length;a++){if(!o.hasOwnProperty(s[2][a]))throw h('[sprintf] property "%s" does not exist',s[2][a]);o=o[s[2][a]]}else o=s[1]?r[s[1]]:r[p++];if(/[^s]/.test(s[8])&&"number"!=e(o))throw h("[sprintf] expecting number but found %s",e(o));switch(void 0!==o&&null!==o||(o=""),s[8]){case"b":o=o.toString(2);break;case"c":o=String.fromCharCode(o);break;case"d":o=parseInt(o,10);break;case"e":o=s[7]?o.toExponential(s[7]):o.toExponential();break;case"f":o=s[7]?parseFloat(o).toFixed(s[7]):parseFloat(o);break;case"o":o=o.toString(8);break;case"s":o=(o=String(o))&&s[7]?o.substring(0,s[7]):o;break;case"u":o=Math.abs(o);break;case"x":o=o.toString(16);break;case"X":o=o.toString(16).toUpperCase()}o=/[def]/.test(s[8])&&s[3]&&o>=0?"+"+o:o,l=s[4]?"0"==s[4]?"0":s[4].charAt(1):" ",c=s[6]-String(o).length,u=s[6]?t(l,c):"",y.push(s[5]?o+u:u+o)}return y.join("")},n.cache={},n.parse=function(e){for(var t=e,n=[],r=[],o=0;t;){if(null!==(n=/^[^\x25]+/.exec(t)))r.push(n[0]);else if(null!==(n=/^\x25{2}/.exec(t)))r.push("%");else{if(null===(n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t)))throw"[sprintf] huh?";if(n[2]){o|=1;var i=[],a=n[2],s=[];if(null===(s=/^([a-z_][a-z_\d]*)/i.exec(a)))throw"[sprintf] huh?";for(i.push(s[1]);""!==(a=a.substring(s[0].length));)if(null!==(s=/^\.([a-z_][a-z_\d]*)/i.exec(a)))i.push(s[1]);else{if(null===(s=/^\[(\d+)\]/.exec(a)))throw"[sprintf] huh?";i.push(s[1])}n[2]=i}else o|=2;if(3===o)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";r.push(n)}t=t.substring(n[0].length)}return r},n}();p.parse_plural=function(e,t){return e=e.replace(/n/g,t),p.parse_expression(e)},p.sprintf=function(e,t){return"[object Array]"=={}.toString.call(t)?function(e,t){return t.unshift(e),h.apply(null,t)}(e,[].slice.call(t)):h.apply(this,[].slice.call(arguments))},p.prototype.sprintf=function(){return p.sprintf.apply(this,arguments)},p.PF={},p.PF.parse=function(e){var t=p.PF.extractPluralExpr(e);return p.PF.parser.parse.call(p.PF.parser,t)},p.PF.compile=function(e){var t=p.PF.parse(e);return function(e){return function(e){return!0===e?1:e||0}(p.PF.interpreter(t)(e))}},p.PF.interpreter=function(e){return function(t){switch(e.type){case"GROUP":return p.PF.interpreter(e.expr)(t);case"TERNARY":return p.PF.interpreter(e.expr)(t)?p.PF.interpreter(e.truthy)(t):p.PF.interpreter(e.falsey)(t);case"OR":return p.PF.interpreter(e.left)(t)||p.PF.interpreter(e.right)(t);case"AND":return p.PF.interpreter(e.left)(t)&&p.PF.interpreter(e.right)(t);case"LT":return p.PF.interpreter(e.left)(t)<p.PF.interpreter(e.right)(t);case"GT":return p.PF.interpreter(e.left)(t)>p.PF.interpreter(e.right)(t);case"LTE":return p.PF.interpreter(e.left)(t)<=p.PF.interpreter(e.right)(t);case"GTE":return p.PF.interpreter(e.left)(t)>=p.PF.interpreter(e.right)(t);case"EQ":return p.PF.interpreter(e.left)(t)==p.PF.interpreter(e.right)(t);case"NEQ":return p.PF.interpreter(e.left)(t)!=p.PF.interpreter(e.right)(t);case"MOD":return p.PF.interpreter(e.left)(t)%p.PF.interpreter(e.right)(t);case"VAR":return t;case"NUM":return e.val;default:throw new Error("Invalid Token found.")}}},p.PF.extractPluralExpr=function(e){e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,""),/;\s*$/.test(e)||(e=e.concat(";"));var t,n=/nplurals\=(\d+);/,r=e.match(n);if(!(r.length>1))throw new Error("nplurals not found in plural_forms string: "+e);if(r[1],!((t=(e=e.replace(n,"")).match(/plural\=(.*);/))&&t.length>1))throw new Error("`plural` expression not found: "+e);return t[1]},p.PF.parser=function(){var e={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,n:19,NUMBER:20,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function(e,t,n,r,o,i,a){var s=i.length-1;switch(o){case 1:return{type:"GROUP",expr:i[s-1]};case 2:this.$={type:"TERNARY",expr:i[s-4],truthy:i[s-2],falsey:i[s]};break;case 3:this.$={type:"OR",left:i[s-2],right:i[s]};break;case 4:this.$={type:"AND",left:i[s-2],right:i[s]};break;case 5:this.$={type:"LT",left:i[s-2],right:i[s]};break;case 6:this.$={type:"LTE",left:i[s-2],right:i[s]};break;case 7:this.$={type:"GT",left:i[s-2],right:i[s]};break;case 8:this.$={type:"GTE",left:i[s-2],right:i[s]};break;case 9:this.$={type:"NEQ",left:i[s-2],right:i[s]};break;case 10:this.$={type:"EQ",left:i[s-2],right:i[s]};break;case 11:this.$={type:"MOD",left:i[s-2],right:i[s]};break;case 12:this.$={type:"GROUP",expr:i[s-1]};break;case 13:this.$={type:"VAR"};break;case 14:this.$={type:"NUM",val:Number(e)}}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function(e,t){throw new Error(e)},parse:function(e){var t=this,n=[0],r=[null],o=[],i=this.table,a="",s=0,u=0,l=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var c=this.lexer.yylloc;function p(e){n.length=n.length-2*e,r.length=r.length-e,o.length=o.length-e}function f(){var e;return"number"!=typeof(e=t.lexer.lex()||1)&&(e=t.symbols_[e]||e),e}o.push(c),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,h,y,g,m,v,b,_,w,x={};;){if(y=n[n.length-1],this.defaultActions[y]?g=this.defaultActions[y]:(null==d&&(d=f()),g=i[y]&&i[y][d]),void 0===g||!g.length||!g[0]){if(!l){for(v in w=[],i[y])this.terminals_[v]&&v>2&&w.push("'"+this.terminals_[v]+"'");var E="";E=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+this.terminals_[d]+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:c,expected:w})}if(3==l){if(1==d)throw new Error(E||"Parsing halted.");u=this.lexer.yyleng,a=this.lexer.yytext,s=this.lexer.yylineno,c=this.lexer.yylloc,d=f()}for(;!(2..toString()in i[y]);){if(0==y)throw new Error(E||"Parsing halted.");p(1),y=n[n.length-1]}h=d,d=2,g=i[y=n[n.length-1]]&&i[y][2],l=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+d);switch(g[0]){case 1:n.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),n.push(g[1]),d=null,h?(d=h,h=null):(u=this.lexer.yyleng,a=this.lexer.yytext,s=this.lexer.yylineno,c=this.lexer.yylloc,l>0&&l--);break;case 2:if(b=this.productions_[g[1]][1],x.$=r[r.length-b],x._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},void 0!==(m=this.performAction.call(x,a,u,s,this.yy,g[1],r,o)))return m;b&&(n=n.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),n.push(this.productions_[g[1]][0]),r.push(x.$),o.push(x._$),_=i[n[n.length-2]][n[n.length-1]],n.push(_);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;var e,t;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if(e=this._input.match(this.rules[n[r]]))return(t=e[0].match(/\n.*/g))&&(this.yylineno+=t.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:t?t[t.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],this.performAction.call(this,this.yy,this,n[r],this.conditionStack[this.conditionStack.length-1])||void 0;if(""===this._input)return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)},performAction:function(e,t,n,r){switch(n){case 0:break;case 1:return 20;case 2:return 19;case 3:return 8;case 4:return 9;case 5:return 6;case 6:return 7;case 7:return 11;case 8:return 13;case 9:return 10;case 10:return 12;case 11:return 14;case 12:return 15;case 13:return 16;case 14:return 17;case 15:return 18;case 16:return 5;case 17:return"INVALID"}},rules:[/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^</,/^>/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};return e}();return e.lexer=t,e}(),void 0!==e&&e.exports&&(t=e.exports=p),t.Jed=p}()},function(e,t,n){var r=n(109),o=n(58),i=n(40),a=n(3),s=n(27),u=n(44),l=n(57),c=n(56),p="[object Map]",f="[object Set]",d=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||u(e)||c(e)||i(e)))return!e.length;var t=o(e);if(t==p||t==f)return!e.size;if(l(e))return!r(e).length;for(var n in e)if(d.call(e,n))return!1;return!0}},,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";(function(e,r){Object.defineProperty(t,"__esModule",{value:!0});var o,i=function(e){return e&&e.__esModule?e:{default:e}}(n(304));o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=(0,i.default)(o);t.default=a}).call(this,n(20),n(41)(e))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,n=e.Symbol;"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable";return t}},,,,,function(e,t,n){var r=n(31),o=n(116),i=n(310),a=n(3);e.exports=function(e,t){return(a(e)?r:i)(e,o(t,3))}},function(e,t,n){var r=n(104),o=n(27);e.exports=function(e,t){var n=-1,i=o(e)?Array(e.length):[];return r(e,function(e,r,o){i[++n]=t(e,r,o)}),i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});s(n(0));var r=s(n(2)),o=s(n(11)),i=n(19),a=n(23);function s(e){return e&&e.__esModule?e:{default:e}}var u=(0,o.default)(i.StyledSection).withConfig({displayName:"SnippetPreviewSection__Section",componentId:"gjy5w5-0"})(["max-width:640px;&","{padding-left:0;padding-right:0;& ","{",":20px;margin-left:",";}}"],i.StyledSectionBase,i.StyledHeading,(0,a.getDirectionalStyle)("padding-left","padding-right"),(0,a.getDirectionalStyle)("0","20px")),l=function(e){var t=e.children,n=e.title,r=e.icon,o=e.hasPaperStyle;return wp.element.createElement(u,{headingLevel:3,headingText:n,headingIcon:r,headingIconColor:"#555",hasPaperStyle:o},t)};l.propTypes={children:r.default.element,title:r.default.string,icon:r.default.string,hasPaperStyle:r.default.bool},l.defaultProps={hasPaperStyle:!0},t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=n(48),i=function(e){return e&&e.__esModule?e:{default:e}}(n(279)),a=n(39),s=n(194);t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{mode:o.DEFAULT_MODE,data:{title:"",slug:"",description:""},wordsToHighlight:[],replacementVariables:(0,i.default)(),uniqueRefreshValue:""},t=arguments[1];switch(t.type){case a.SWITCH_MODE:return r({},e,{mode:t.mode});case a.UPDATE_DATA:return r({},e,{data:r({},e.data,t.data)});case a.UPDATE_REPLACEMENT_VARIABLE:var n=!0,u=e.replacementVariables.map(function(e){return e.name===t.name?(n=!1,{name:t.name,label:t.label||e.label,value:t.value}):e});return n&&(u=(0,s.pushNewReplaceVar)(u,t)),r({},e,{replacementVariables:u});case a.REMOVE_REPLACEMENT_VARIABLE:return r({},e,{replacementVariables:e.replacementVariables.filter(function(e){return e.name!==t.name})});case a.REFRESH:return r({},e,{uniqueRefreshValue:t.time});case a.UPDATE_WORDS_TO_HIGHLIGHT:return r({},e,{wordsToHighlight:t.wordsToHighlight})}return e}},function(e,t,n){var r=n(31),o=n(238),i=n(327),a=n(25),s=n(88),u=n(330),l=n(280),c=n(160),p=l(function(e,t){var n={};if(null==e)return n;var l=!1;t=r(t,function(t){return t=a(t,e),l||(l=t.length>1),t}),s(e,c(e),n),l&&(n=o(n,7,u));for(var p=t.length;p--;)i(n,t[p]);return n});e.exports=p},function(e,t,n){var r=n(88),o=n(36);e.exports=function(e,t){return e&&r(t,o(t),e)}},function(e,t,n){var r=n(88),o=n(101);e.exports=function(e,t){return e&&r(t,o(t),e)}},function(e,t,n){var r=n(88),o=n(106);e.exports=function(e,t){return r(e,o(e),t)}},function(e,t,n){var r=n(88),o=n(216);e.exports=function(e,t){return r(e,o(e),t)}},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},function(e,t,n){var r=n(145),o=n(320),i=n(321),a=n(322),s=n(242),u="[object Boolean]",l="[object Date]",c="[object Map]",p="[object Number]",f="[object RegExp]",d="[object Set]",h="[object String]",y="[object Symbol]",g="[object ArrayBuffer]",m="[object DataView]",v="[object Float32Array]",b="[object Float64Array]",_="[object Int8Array]",w="[object Int16Array]",x="[object Int32Array]",E="[object Uint8Array]",k="[object Uint8ClampedArray]",O="[object Uint16Array]",S="[object Uint32Array]";e.exports=function(e,t,n){var P=e.constructor;switch(t){case g:return r(e);case u:case l:return new P(+e);case m:return o(e,n);case v:case b:case _:case w:case x:case E:case k:case O:case S:return s(e,n);case c:return new P;case p:case h:return new P(e);case f:return i(e);case d:return new P;case y:return a(e)}}},function(e,t,n){var r=n(145);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},function(e,t){var n=/\w*$/;e.exports=function(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}},function(e,t,n){var r=n(9),o=r?r.prototype:void 0,i=o?o.valueOf:void 0;e.exports=function(e){return i?Object(i.call(e)):{}}},function(e,t,n){var r=n(324),o=n(90),i=n(96),a=i&&i.isMap,s=a?o(a):r;e.exports=s},function(e,t,n){var r=n(58),o=n(7),i="[object Map]";e.exports=function(e){return o(e)&&r(e)==i}},function(e,t,n){var r=n(326),o=n(90),i=n(96),a=i&&i.isSet,s=a?o(a):r;e.exports=s},function(e,t,n){var r=n(58),o=n(7),i="[object Set]";e.exports=function(e){return o(e)&&r(e)==i}},function(e,t,n){var r=n(25),o=n(328),i=n(329),a=n(18);e.exports=function(e,t){return t=r(t,e),null==(e=i(e,t))||delete e[a(o(t))]}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var r=n(33),o=n(245);e.exports=function(e,t){return t.length<2?e:r(e,o(t,0,-1))}},function(e,t,n){var r=n(246);e.exports=function(e){return r(e)?void 0:e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.firstToUpperCase=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},t.stripHTML=function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""}},function(e,t){e.exports=window.yoast.analysisReport},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setActiveMarker=function(e){return{type:r,activeMarker:e}};var r=t.SET_ACTIVE_MARKER="WPSEO_SET_ACTIVE_MARKER"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateAnalysisData=function(e){return{type:r,data:e}};var r=t.UPDATE_SNIPPET_DATA="SNIPPET_EDITOR_UPDATE_ANALYSIS_DATA"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.SET_PRIMARY_TAXONOMY="WPSEO_SET_PRIMARY_TAXONOMY";t.setPrimaryTaxonomyId=function(e,t){return{type:r,taxonomy:e,termId:t}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.SET_SETTINGS="SET_SETTINGS";t.setSettings=function(e){return{type:r,settings:e}}},function(e,t,n){var r=n(206),o=n(24),i=n(255),a=n(101),s=Object.prototype,u=s.hasOwnProperty,l=r(function(e,t){e=Object(e);var n=-1,r=t.length,l=r>2?t[2]:void 0;for(l&&i(t[0],t[1],l)&&(r=1);++n<r;)for(var c=t[n],p=a(c),f=-1,d=p.length;++f<d;){var h=p[f],y=e[h];(void 0===y||o(y,s[h])&&!u.call(e,h))&&(e[h]=c[h])}return e});e.exports=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(51),o=function(e){return e&&e.__esModule?e:{default:e}}(n(486)),i=n(217);t.default=(0,r.connect)(function(e){return{isCornerstone:e.isCornerstone}},function(e){return{onChange:function(){e((0,i.toggleCornerstoneContent)())}}})(o.default)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(51),o=n(19);t.default=(0,r.connect)(function(e){return{message:e.warning.message}})(o.Warning)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(22),i=n(5),a=h(n(2)),s=n(51),u=n(48),l=h(n(11)),c=n(202),p=n(254),f=h(n(341)),d=n(151);function h(e){return e&&e.__esModule?e:{default:e}}var y=l.default.div.withConfig({displayName:"KeywordInput__KeywordInputContainer",componentId:"sc-16tnggn-0"})(["padding:16px;border-bottom:1px solid transparent;"]),g=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.Component),r(t,[{key:"render",value:function(){var e=this;return wp.element.createElement(d.LocationConsumer,null,function(n){return wp.element.createElement(y,null,wp.element.createElement(u.KeywordInput,{id:"focus-keyword-input-"+n,onChange:e.props.onFocusKeywordChange,keyword:e.props.keyword,label:(0,i.__)("Focus keyphrase","wordpress-seo"),helpLink:t.renderHelpLink(),onBlurKeyword:e.props.onBlurKeyword,onFocusKeyword:e.props.onFocusKeyword}))})}}],[{key:"renderHelpLink",value:function(){return wp.element.createElement(f.default,{href:wpseoAdminL10n["shortlinks.focus_keyword_info"],className:"dashicons"},wp.element.createElement("span",{className:"screen-reader-text"},(0,i.__)("Help on choosing the perfect focus keyphrase","wordpress-seo")))}}]),t}();g.propTypes={keyword:a.default.string,onFocusKeywordChange:a.default.func.isRequired,onFocusKeyword:a.default.func.isRequired,onBlurKeyword:a.default.func.isRequired},g.defaultProps={keyword:""},t.default=(0,s.connect)(function(e){return{keyword:e.focusKeyword}},function(e){return{onFocusKeywordChange:function(t){e((0,c.setFocusKeyword)(t))},onFocusKeyword:function(){e((0,p.setMarkerPauseStatus)(!0))},onBlurKeyword:function(){e((0,p.setMarkerPauseStatus)(!1))}}})(g)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(107),o=n(23),i=function(e){return e&&e.__esModule?e:{default:e}}(n(11));var a=(0,o.makeOutboundLink)(i.default.a.withConfig({displayName:"HelpLink",componentId:"sc-1ue6ao6-0"})(["display:inline-block;position:relative;outline:none;text-decoration:none;border-radius:100%;width:24px;height:24px;margin:-4px 0;vertical-align:middle;color:",";&:hover,&:focus{color:",";}&:active{color:",';}&::before{position:absolute;top:0;left:0;padding:2px;content:"\f223";}'],r.colors.$color_help_text,r.colors.$color_snippet_focus,r.colors.$color_help_text));t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(22),i=m(n(2)),a=n(51),s=m(n(11)),u=n(5),l=m(n(121)),c=m(n(343)),p=m(n(344)),f=m(n(207)),d=m(n(209)),h=n(208),y=n(151),g=m(n(341));function m(e){return e&&e.__esModule?e:{default:e}}var v=s.default.span.withConfig({displayName:"ReadabilityAnalysis__AnalysisHeader",componentId:"z9f9eh-0"})(["font-size:1em;font-weight:bold;margin:0 0 8px;display:block;"]),b=s.default.div.withConfig({displayName:"ReadabilityAnalysis__ReadabilityResultsTabContainer",componentId:"z9f9eh-1"})(["padding:16px;"]),_={};window.wpseoPostScraperL10n?_=wpseoPostScraperL10n:window.wpseoTermScraperL10n&&(_=wpseoTermScraperL10n);var w=(0,s.default)(g.default).withConfig({displayName:"ReadabilityAnalysis__StyledHelpLink",componentId:"z9f9eh-2"})(["margin:-8px 0 -4px 4px;"]),x=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.Component),r(t,[{key:"renderResults",value:function(){return wp.element.createElement(o.Fragment,null,wp.element.createElement(v,null,(0,u.__)("Analysis results","wordpress-seo"),wp.element.createElement(w,{href:wpseoAdminL10n["shortlinks.readability_analysis_info"],className:"dashicons"},wp.element.createElement("span",{className:"screen-reader-text"},(0,u.__)("Learn more about the readability analysis","wordpress-seo")))),wp.element.createElement(p.default,{canChangeLanguage:!(""===_.settings_link),showLanguageNotice:!1,changeLanguageLink:_.settings_link,language:_.language,results:this.props.results,marksButtonClassName:"yoast-tooltip yoast-tooltip-w",marksButtonStatus:this.props.marksButtonStatus}))}},{key:"render",value:function(){var e=this,t=(0,d.default)(this.props.overallScore);return(0,l.default)(this.props.overallScore)&&(t.className="loading"),wp.element.createElement(y.LocationConsumer,null,function(n){return"sidebar"===n?wp.element.createElement(f.default,{title:(0,u.__)("Readability analysis","wordpress-seo"),titleScreenReaderText:t.screenReaderReadabilityText,prefixIcon:(0,h.getIconForScore)(t.className),prefixIconCollapsed:(0,h.getIconForScore)(t.className),id:"yoast-readability-analysis-collapsible-"+n},e.renderResults()):"metabox"===n?(0,o.createPortal)(wp.element.createElement(b,null,wp.element.createElement(c.default,{scoreIndicator:t.className,elementId:"wpseo-readability-score-icon"}),e.renderResults()),document.getElementById("wpseo-metabox-readability-root")):void 0})}}]),t}();x.propTypes={results:i.default.array.isRequired,marksButtonStatus:i.default.string.isRequired,hideMarksButtons:i.default.bool.isRequired,overallScore:i.default.number},x.defaultProps={overallScore:null},t.default=(0,a.connect)(function(e,t){var n=t.hideMarksButtons?"disabled":e.marksButtonStatus;return{results:e.analysis.readability.results,marksButtonStatus:n,overallScore:e.analysis.readability.overallScore}})(x)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22),o=n(19),i=function(e){return e&&e.__esModule?e:{default:e}}(n(2)),a=n(208);var s=function(e){var t=e.elementId,n=e.scoreIndicator,i=document.getElementById(t);return i?(0,r.createPortal)(wp.element.createElement(o.SvgIcon,(0,a.getIconForScore)(n)),i):null};s.propTypes={elementId:i.default.string.isRequired,scoreIndicator:i.default.string.isRequired},t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=d(n(0)),i=d(n(2)),a=n(19),s=n(332),u=n(22),l=n(345),c=n(120),p=n(45),f=d(n(208));function d(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),r=n.props.results;return n.state={mappedResults:{}},null!==r&&(n.state={mappedResults:(0,f.default)(r,n.props.keywordKey)}),n.handleMarkButtonClick=n.handleMarkButtonClick.bind(n),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.default.Component),r(t,[{key:"componentDidUpdate",value:function(e){null!==this.props.results&&this.props.results!==e.results&&this.setState({mappedResults:(0,f.default)(this.props.results,this.props.keywordKey)})}},{key:"handleMarkButtonClick",value:function(e,t){var n=this.props.keywordKey.length>0?this.props.keywordKey+":"+e:e;n===this.props.activeMarker?(this.props.setActiveMarker(null),this.props.setMarkerPauseStatus(!1),this.removeMarkers()):(this.props.setActiveMarker(n),t())}},{key:"removeMarkers",value:function(){window.YoastSEO.analysis.applyMarks(new p.Paper("",{}),[])}},{key:"render",value:function(){var e=this.state.mappedResults,t=e.errorsResults,n=e.improvementsResults,r=e.goodResults,o=e.considerationsResults,i=e.problemsResults;return wp.element.createElement(u.Fragment,null,wp.element.createElement(a.LanguageNotice,{changeLanguageLink:this.props.changeLanguageLink,language:this.props.language,showLanguageNotice:this.props.showLanguageNotice,canChangeLanguage:this.props.canChangeLanguage}),wp.element.createElement(s.ContentAnalysis,{errorsResults:t,problemsResults:i,improvementsResults:n,considerationsResults:o,goodResults:r,activeMarker:this.props.activeMarker,onMarkButtonClick:this.handleMarkButtonClick,marksButtonClassName:this.props.marksButtonClassName,marksButtonStatus:this.props.marksButtonStatus,headingLevel:3,keywordKey:this.props.keywordKey}))}}]),t}();h.propTypes={results:i.default.array,language:i.default.string,changeLanguageLink:i.default.string,showLanguageNotice:i.default.bool.isRequired,canChangeLanguage:i.default.bool,marksButtonClassName:i.default.string,marksButtonStatus:i.default.string,setActiveMarker:i.default.func.isRequired,setMarkerPauseStatus:i.default.func.isRequired,activeMarker:i.default.string,keywordKey:i.default.string},h.defaultProps={results:null,language:"",changeLanguageLink:"#",canChangeLanguage:!1,marksButtonStatus:"enabled",marksButtonClassName:"",activeMarker:null,keywordKey:""},t.default=(0,l.compose)([(0,c.withSelect)(function(e){return{activeMarker:(0,e("yoast-seo/editor").getActiveMarker)()}}),(0,c.withDispatch)(function(e){var t=e("yoast-seo/editor");return{setActiveMarker:t.setActiveMarker,setMarkerPauseStatus:t.setMarkerPauseStatus}})])(h)},function(e,t){e.exports=window.wp.compose},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(22),i=E(n(2)),a=n(51),s=E(n(11)),u=n(98),l=n(5),c=n(19),p=n(107),f=E(n(343)),d=E(n(207)),h=E(n(344)),y=E(n(209)),g=n(208),m=E(n(488)),v=E(n(347)),b=E(n(489)),_=n(151),w=E(n(490)),x=n(348);function E(e){return e&&e.__esModule?e:{default:e}}var k=s.default.span.withConfig({displayName:"SeoAnalysis__AnalysisHeader",componentId:"sc-18qlxmf-0"})(["font-size:1em;font-weight:bold;margin:1.5em 0 1em;display:block;"]),O=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.Component),r(t,[{key:"renderSynonymsUpsell",value:function(e){var t={classes:{openButton:"wpseo-keyword-synonyms button-link"},labels:{open:"+ "+(0,l.__)("Add synonyms","wordpress-seo"),modalAriaLabel:(0,l.sprintf)((0,l.__)("Get %s","wordpress-seo"),"Yoast SEO Premium"),heading:(0,l.sprintf)((0,l.__)("Get %s","wordpress-seo"),"Yoast SEO Premium")}},n=wpseoAdminL10n["shortlinks.upsell.metabox.focus_keyword_synonyms_link"],r=wpseoAdminL10n["shortlinks.upsell.metabox.focus_keyword_synonyms_button"];return"sidebar"===e.toLowerCase()&&(n=wpseoAdminL10n["shortlinks.upsell.sidebar.focus_keyword_synonyms_link"],r=wpseoAdminL10n["shortlinks.upsell.sidebar.focus_keyword_synonyms_button"]),wp.element.createElement(v.default,t,wp.element.createElement(x.ModalContainer,null,wp.element.createElement(x.ModalIcon,{icon:c.YoastSeoIcon}),wp.element.createElement("h2",null,(0,l.__)("Would you like to add keyphrase synonyms?","wordpress-seo")),wp.element.createElement(m.default,{link:n,buyLink:r})))}},{key:"renderMultipleKeywordsUpsell",value:function(e){var t={classes:{openButton:"wpseo-multiple-keywords button-link"},labels:{open:"+ "+(0,l.__)("Add related keyphrase","wordpress-seo"),modalAriaLabel:(0,l.sprintf)((0,l.__)("Get %s","wordpress-seo"),"Yoast SEO Premium"),heading:(0,l.sprintf)((0,l.__)("Get %s","wordpress-seo"),"Yoast SEO Premium")}},n=wpseoAdminL10n["shortlinks.upsell.metabox.focus_keyword_additional_link"],r=wpseoAdminL10n["shortlinks.upsell.metabox.focus_keyword_additional_button"];return"sidebar"===e.toLowerCase()&&(n=wpseoAdminL10n["shortlinks.upsell.sidebar.focus_keyword_additional_link"],r=wpseoAdminL10n["shortlinks.upsell.sidebar.focus_keyword_additional_button"]),wp.element.createElement(v.default,t,wp.element.createElement(x.ModalContainer,null,wp.element.createElement(x.ModalIcon,{icon:c.YoastSeoIcon}),wp.element.createElement("h2",null,(0,l.__)("Would you like to add a related keyphrase?","wordpress-seo")),wp.element.createElement(b.default,{link:n,buyLink:r})))}},{key:"renderKeywordUpsell",value:function(e){var t=wpseoAdminL10n["shortlinks.upsell.metabox.additional_link"],n=wpseoAdminL10n["shortlinks.upsell.metabox.additional_button"];return"sidebar"===e.toLowerCase()&&(t=wpseoAdminL10n["shortlinks.upsell.sidebar.additional_link"],n=wpseoAdminL10n["shortlinks.upsell.sidebar.additional_button"]),wp.element.createElement(d.default,{prefixIcon:{icon:"plus",color:p.colors.$color_grey_medium_dark},prefixIconCollapsed:{icon:"plus",color:p.colors.$color_grey_medium_dark},title:(0,l.__)("Add related keyphrase","wordpress-seo"),id:"yoast-additional-keyphrase-collapsible-"+e},wp.element.createElement(b.default,{link:t,buyLink:n}))}},{key:"renderWordFormsUpsell",value:function(e){return wp.element.createElement(w.default,{url:"sidebar"===e?wpseoAdminL10n["shortlinks.upsell.sidebar.morphology_upsell_sidebar"]:wpseoAdminL10n["shortlinks.upsell.sidebar.morphology_upsell_metabox"],alignment:"sidebar"===e?"vertical":"horizontal"})}},{key:"renderTabIcon",value:function(e,t){return"metabox"!==e?null:wp.element.createElement(f.default,{elementId:"wpseo-seo-score-icon",scoreIndicator:t})}},{key:"render",value:function(){var e=this,t=(0,y.default)(this.props.overallScore);return"loading"!==t.className&&""===this.props.keyword&&(t.className="na",t.screenReaderReadabilityText=(0,l.__)("Enter a focus keyphrase to calculate the SEO score","wordpress-seo")),wp.element.createElement(_.LocationConsumer,null,function(n){return wp.element.createElement(o.Fragment,null,wp.element.createElement(d.default,{title:(0,l.__)("SEO analysis","wordpress-seo"),titleScreenReaderText:t.screenReaderReadabilityText,prefixIcon:(0,g.getIconForScore)(t.className),prefixIconCollapsed:(0,g.getIconForScore)(t.className),subTitle:e.props.keyword,id:"yoast-seo-analysis-collapsible-"+n},wp.element.createElement(u.Slot,{name:"yoast-synonyms-"+n}),e.props.shouldUpsell&&wp.element.createElement(o.Fragment,null,e.renderSynonymsUpsell(n),e.renderMultipleKeywordsUpsell(n)),e.props.shouldUpsellWordFormRecognition&&e.renderWordFormsUpsell(n),wp.element.createElement(k,null,(0,l.__)("Analysis results","wordpress-seo")),wp.element.createElement(h.default,{showLanguageNotice:!1,results:e.props.results,marksButtonClassName:"yoast-tooltip yoast-tooltip-w",marksButtonStatus:e.props.marksButtonStatus})),e.props.shouldUpsell&&e.renderKeywordUpsell(n),e.renderTabIcon(n,t.className))})}}]),t}();O.propTypes={results:i.default.array,marksButtonStatus:i.default.string,keyword:i.default.string,shouldUpsell:i.default.bool,shouldUpsellWordFormRecognition:i.default.bool,overallScore:i.default.number},O.defaultProps={results:[],marksButtonStatus:null,keyword:"",shouldUpsell:!1,shouldUpsellWordFormRecognition:!1,overallScore:null},t.default=(0,a.connect)(function(e,t){var n=t.hideMarksButtons?"disabled":e.marksButtonStatus,r=e.focusKeyword,o=[],i=null;return e.analysis.seo[r]&&(o=e.analysis.seo[r].results,i=e.analysis.seo[r].overallScore),{results:o,marksButtonStatus:n,keyword:r,overallScore:i}})(O)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=l(n(0)),i=l(n(2)),a=l(n(11)),s=n(5),u=n(19);function l(e){return e&&e.__esModule?e:{default:e}}var c=a.default.button.withConfig({displayName:"Modal__StyledButton",componentId:"sc-1fwm34s-0"})(["&&{display:flex;align-items:center;}.yoast-svg-icon{margin:1px 7px 0 0;fill:currentColor;}"]),p=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={modalIsOpen:!1},n.openModal=n.openModal.bind(n),n.closeModal=n.closeModal.bind(n),n.appElement=document.querySelector(n.props.appElement),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.default.Component),r(t,[{key:"openModal",value:function(){this.setState({modalIsOpen:!0})}},{key:"closeModal",value:function(){this.setState({modalIsOpen:!1})}},{key:"render",value:function(){var e={open:(0,s.__)("Open","wordpress-seo"),heading:"",closeIconButton:(0,s.__)("Close","wordpress-seo"),closeButton:""},t=Object.assign({},e,this.props.labels);return wp.element.createElement(o.default.Fragment,null,wp.element.createElement(c,{type:"button",onClick:this.openModal,className:this.props.classes.openButton+" yoast-modal__button-open"},this.props.openButtonIcon&&wp.element.createElement(u.SvgIcon,{icon:this.props.openButtonIcon,size:"13px"}),t.open),wp.element.createElement(u.Modal,{isOpen:this.state.modalIsOpen,onClose:this.closeModal,className:this.props.className,modalAriaLabel:t.modalAriaLabel,appElement:this.appElement,heading:t.heading,closeIconButton:t.closeIconButton,closeIconButtonClassName:this.props.classes.closeIconButton,closeButton:t.closeButton,closeButtonClassName:this.props.classes.closeButton},this.props.children))}}]),t}();p.propTypes={appElement:i.default.string,openButtonIcon:i.default.string,labels:i.default.shape({open:i.default.string,modalAriaLabel:i.default.string.isRequired,heading:i.default.string,closeIconButton:i.default.string,closeButton:i.default.string}).isRequired,classes:i.default.shape({openButton:i.default.string,closeIconButton:i.default.string,closeButton:i.default.string}),className:i.default.string,children:i.default.any.isRequired},p.defaultProps={className:"",appElement:"#wpwrap",openButtonIcon:"",classes:{}},t.default=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalIcon=t.ModalContainer=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(11)),o=n(19),i=n(23);t.ModalContainer=r.default.div.withConfig({displayName:"Container__ModalContainer",componentId:"sc-1onoh63-0"})(["min-width:600px;@media screen and ( max-width:680px ){min-width:0;width:86vw;}"]),t.ModalIcon=(0,r.default)(o.Icon).withConfig({displayName:"Container__ModalIcon",componentId:"sc-1onoh63-1"})(["float:",";margin:",";&&{width:150px;height:150px;@media screen and ( max-width:680px ){width:80px;height:80px;}}"],(0,i.getDirectionalStyle)("right","left"),(0,i.getDirectionalStyle)("0 0 16px 16px","0 16px 16px 0"))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(n(0));function r(e){return e&&e.__esModule?e:{default:e}}var o=(0,r(n(491)).default)(function(e){var t=e.children;return wp.element.createElement("div",null,t)});t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mapEditorDataToPreview=void 0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.mapStateToProps=b,t.mapDispatchToProps=_;var o=y(n(0)),i=n(51),a=n(237),s=y(n(42)),u=y(n(16)),l=n(5),c=n(120),p=y(n(45)),f=n(39),d=n(334),h=y(n(311));function y(e){return e&&e.__esModule?e:{default:e}}var g=p.default.string.stripHTMLTags,m=function(e){var t=(0,u.default)(window,["YoastSEO","app","pluggable"],!1);if(!t||!(0,u.default)(window,["YoastSEO","app","pluggable","loaded"],!1))return function(e){var t=(0,u.default)(window,["YoastSEO","wp","replaceVarsPlugin","replaceVariables"],s.default);return{url:e.url,title:g(t(e.title)),description:g(t(e.description))}}(e);var n=t._applyModifications.bind(t);return{url:e.url,title:g(n("data_page_title",e.title)),description:g(n("data_meta_desc",e.description))}},v=t.mapEditorDataToPreview=function(e,t){var n=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(n=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[n]&&(e.url=e.url.slice(0,n)+e.url.slice(n+1)),m(e)};function b(e){return e.snippetEditor.replacementVariables.forEach(function(e){""!==e.value||["title","excerpt","excerpt_only"].includes(e.name)||(e.value="%%"+e.name+"%%")}),r({},e.snippetEditor,{keyword:e.focusKeyword,baseUrl:e.settings.snippetEditor.baseUrl,date:e.settings.snippetEditor.date,recommendedReplacementVariables:e.settings.snippetEditor.recommendedReplacementVariables})}function _(e){return{onChange:function(t,n){var r=(0,f.updateData)(function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t,n));if("mode"===t&&(r=(0,f.switchMode)(n)),e(r),"slug"===t){var o=(0,c.dispatch)("core/editor");o&&o.editPost({slug:n})}},onChangeAnalysisData:function(t){e((0,d.updateAnalysisData)(t))}}}t.default=(0,i.connect)(b,_)(function(e){return wp.element.createElement(o.default.Fragment,null,wp.element.createElement(h.default,{icon:"eye",hasPaperStyle:e.hasPaperStyle},wp.element.createElement(a.SnippetEditor,r({},e,{descriptionPlaceholder:(0,l.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:v}))))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(2)),o=n(51),i=n(11),a=n(151);var s=function(e){var t=e.store,n=e.theme,r=e.location,s=e.children;return wp.element.createElement(a.LocationProvider,{value:r},wp.element.createElement(i.ThemeProvider,{theme:n},wp.element.createElement(o.Provider,{store:t},s)))};s.propTypes={store:r.default.object.isRequired,theme:r.default.object.isRequired,location:r.default.oneOf(["sidebar","metabox"]).isRequired,children:r.default.element.isRequired},t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.target,n=e.store,s=e.theme,u=document.getElementById(t);if(!u)return null;return(0,o.createPortal)(wp.element.createElement(o.Fragment,null,wp.element.createElement(r.Slot,{name:"YoastMetabox"},function(e){return(0,a.default)(e)}),wp.element.createElement(i.default,{store:n,theme:s})),u)};var r=n(98),o=n(22),i=s(n(493)),a=s(n(353));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e.length)return e;return(0,r.default)(e).sort(function(e,t){return void 0===e.props.renderPriority?1:e.props.renderPriority-t.props.renderPriority})};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(195))},function(e,t,n){var r=n(502),o=n(143);e.exports=function(e,t){return null!=e&&o(e,t,r)}},function(e,t,n){var r=n(115);e.exports=function(e,t){return!(null==e||!e.length)&&r(e,t,0)>-1}},function(e,t){e.exports=function(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r]))return!0;return!1}},function(e,t,n){"use strict";e.exports={update:function(e){var t=jQuery(".yst-traffic-light"),n=t.closest(".wpseo-meta-section-link"),r=jQuery("#wpseo-traffic-light-desc"),o=e.className||"na";t.attr("class","yst-traffic-light "+o),n.attr("aria-describedby","wpseo-traffic-light-desc"),r.length>0?r.text(e.screenReaderText):n.closest("li").append("<span id='wpseo-traffic-light-desc' class='screen-reader-text'>"+e.screenReaderText+"</span>")}}},function(e,t,n){"use strict";e.exports={update:function(e){jQuery(".adminbar-seo-score").attr("class","wpseo-score-icon adminbar-seo-score "+e.className).find(".adminbar-seo-score-text").text(e.screenReaderText)}}},function(e,t,n){var r=n(159),o=n(24);e.exports=function(e,t,n){(void 0===n||o(e[t],n))&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t,n){var r=n(27),o=n(7);e.exports=function(e){return o(e)&&r(e)}},function(e,t){e.exports=function(e,t){if("__proto__"!=t)return e[t]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=(0,o.default)();return(0,r.default)(e,"contentLocale","en_US")};var r=i(n(16)),o=i(n(108));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=document.getElementById(r);t||(t=function(){var e=document.createElement("div");return e.id=r,e.style.position="absolute",e.style.left="-9999em",e.style.top=0,e.style.height=0,e.style.overflow="hidden",e.style.fontFamily="arial, sans-serif",e.style.fontSize="18px",e.style.fontWeight="400",document.body.appendChild(e),e}());return t.innerHTML=e,t.offsetWidth};var r="yoast-measurement-element"},,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=u(n(337)),i=u(n(148)),a=u(n(482)),s=u(n(483));function u(e){return e&&e.__esModule?e:{default:e}}var l={classicEditorHidden:i.default,classicEditorShown:i.default,pageBuilderLoaded:i.default},c=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.determineActivePageBuilders()}return r(e,[{key:"determineActivePageBuilders",value:function(){a.default.isActive()&&(this.diviActive=!0),s.default.isActive()&&(this.vcActive=!0)}},{key:"isPageBuilderActive",value:function(){return this.diviActive||this.vcActive}},{key:"listen",value:function(e){(this.callbacks=(0,o.default)(e,l),this.diviActive)&&(new a.default).listen(e)}},{key:"isClassicEditorHidden",value:function(){return!(!this.diviActive||!a.default.isTinyMCEHidden())}}]),e}();t.default=c},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){var r=n(4);e.exports=function(){return r.Date.now()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=(O(n(0)),O(n(11))),i=n(22),a=n(98),s=n(120),u=O(n(16)),l=O(n(460)),c=O(n(463)),p=O(n(466)),f=O(n(480)),d=O(n(481)),h=O(n(257)),y=O(n(484)),g=O(n(352)),m=O(n(353)),v=k(n(495)),b=n(500),_=k(b),w=n(336),x=O(n(501)),E=n(252);function k(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function O(e){return e&&e.__esModule?e:{default:e}}var S=(0,o.default)(f.default).withConfig({displayName:"edit__PinnedPluginIcon",componentId:"bs2hdt-0"})(["width:20px;height:20px;"]),P=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._localizedData=this.getLocalizedData(),this._args=t,this._init()}return r(e,[{key:"getLocalizedData",value:function(){return window.wpseoPostScraperL10n||window.wpseoTermScraperL10n||{intl:{},isRtl:!1}}},{key:"_init",value:function(){this._store=this._registerStoreInGutenberg(),this._registerPlugin(),this._data=this._initializeData(),this._store.dispatch((0,w.setSettings)({snippetEditor:{baseUrl:this._args.snippetEditorBaseUrl,date:this._args.snippetEditorDate,recommendedReplacementVariables:this._args.recommendedReplaceVars}}))}},{key:"_registerStoreInGutenberg",value:function(){return(0,s.registerStore)("yoast-seo/editor",{reducer:(0,s.combineReducers)(p.default),selectors:v,actions:(0,l.default)(_,function(e){return"function"==typeof e})})}},{key:"_registerPlugin",value:function(){if((0,h.default)()){var e=wp.editPost,t=e.PluginSidebar,n=e.PluginSidebarMoreMenuItem,r=wp.plugins.registerPlugin,o=this._store,s=this._localizedData.isPremium?"Yoast SEO Premium":"Yoast SEO",u={isRtl:this._localizedData.isRtl};r("yoast-seo",{render:function(){return wp.element.createElement(i.Fragment,null,wp.element.createElement(n,{target:"seo-sidebar",icon:wp.element.createElement(f.default,null)},s),wp.element.createElement(t,{name:"seo-sidebar",title:s},wp.element.createElement(a.Slot,{name:"YoastSidebar"},function(e){return(0,m.default)(e)})),wp.element.createElement(i.Fragment,null,wp.element.createElement(y.default,{store:o,theme:u}),wp.element.createElement(g.default,{target:"wpseo-metabox-root",store:o,theme:u})))},icon:wp.element.createElement(S,null)})}}},{key:"_initializeData",value:function(){var e=this._store,t=this._args,n=(0,u.default)(window,"wp.data");if((0,h.default)()){var r=new c.default(n,t.onRefreshRequest,e);return r.initialize(t.replaceVars),r}var o=new d.default(t.onRefreshRequest,e,t.classicEditorDataSettings);return o.initialize(t.replaceVars),o}},{key:"initializeUsedKeywords",value:function(e,t){var n=this._store,r=this._localizedData,o=(0,u.default)(window,["wpseoAnalysisWorkerL10n","keywords_assessment_url"],"wp-seo-used-keywords-assessment.js"),i=new x.default(t,r,e,o);i.init();var a={};n.subscribe(function(){var e=n.getState()||{};e.focusKeyword!==a.focusKeyword&&(a=e,i.setKeyword(e.focusKeyword))})}},{key:"initializeAnnotations",value:function(){(0,E.isAnnotationAvailable)()&&this._store.dispatch((0,b.setMarkerStatus)("enabled"))}},{key:"getStore",value:function(){return this._store}},{key:"getData",value:function(){return this._data}}]),e}();t.default=P},function(e,t,n){var r=n(31),o=n(116),i=n(461),a=n(160);e.exports=function(e,t){if(null==e)return{};var n=r(a(e),function(e){return[e]});return t=o(t),i(e,n,function(e,n){return t(e,n[0])})}},function(e,t,n){var r=n(33),o=n(462),i=n(25);e.exports=function(e,t,n){for(var a=-1,s=t.length,u={};++a<s;){var l=t[a],c=r(e,l);n(c,l)&&o(u,i(l,e),c)}return u}},function(e,t,n){var r=n(158),o=n(25),i=n(55),a=n(6),s=n(18);e.exports=function(e,t,n,u){if(!a(e))return e;for(var l=-1,c=(t=o(t,e)).length,p=c-1,f=e;null!=f&&++l<c;){var d=s(t[l]),h=n;if(l!=p){var y=f[d];void 0===(h=u?u(y,d,f):void 0)&&(h=a(y)?y:i(t[l+1])?[]:{})}r(f,d,h),f=f[d]}return e}},function(e,t,n){"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(e){return e&&e.__esModule?e:{default:e}}(n(201)),a=n(39),s=n(194),u=n(252);var l=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._wpData=t,this._refresh=n,this._store=r,this._data={},this.getPostAttribute=this.getPostAttribute.bind(this),this.refreshYoastSEO=this.refreshYoastSEO.bind(this)}return o(e,[{key:"initialize",value:function(e){this._data=this.getInitialData(e),(0,s.fillReplacementVariables)(this._data,this._store),this.subscribeToGutenberg(),this.subscribeToYoastSEO()}},{key:"getInitialData",value:function(e){var t=this.collectGutenbergData(this.getPostAttribute);return e=(0,s.mapCustomFields)(e,this._store),e=(0,s.mapCustomTaxonomies)(e,this._store),r({},e,t)}},{key:"setRefresh",value:function(e){this._refresh=e}},{key:"isShallowEqual",value:function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(e.hasOwnProperty(n)&&(!(n in t)||e[n]!==t[n]))return!1;return!0}},{key:"getPostAttribute",value:function(e){return this._coreEditorSelect||(this._coreEditorSelect=this._wpData.select("core/editor")),this._coreEditorSelect.getEditedPostAttribute(e)}},{key:"getSlug",value:function(){if("auto-draft"===this.getPostAttribute("status"))return"";var e=this.getPostAttribute("generated_slu |