Merged in feature/from-pantheon (pull request #16)

code from pantheon

* code from pantheon
This commit is contained in:
Tony Volpe
2024-01-10 17:03:02 +00:00
parent 054b4fffc9
commit 4eb982d7a8
16492 changed files with 3475854 additions and 0 deletions
@@ -0,0 +1,258 @@
<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Admin\Statistics
*/
/**
* Class WPSEO_Statistics_Service.
*/
class WPSEO_Statistics_Service {
/**
* Cache transient id.
*
* @var string
*/
const CACHE_TRANSIENT_KEY = 'wpseo-statistics-totals';
/**
* Class that generates interesting statistics about things.
*
* @var WPSEO_Statistics
*/
protected $statistics;
/**
* Statistics labels.
*
* @var string[]
*/
protected $labels;
/**
* WPSEO_Statistics_Service contructor.
*
* @param WPSEO_Statistics $statistics The statistics class to retrieve statistics from.
*/
public function __construct( WPSEO_Statistics $statistics ) {
$this->statistics = $statistics;
}
/**
* Fetches statistics by REST request.
*
* @return WP_REST_Response The response object.
*/
public function get_statistics() {
// Switch to the user locale with fallback to the site locale.
switch_to_locale( \get_user_locale() );
$this->labels = $this->labels();
$statistics = $this->statistic_items();
$data = [
'header' => $this->get_header_from_statistics( $statistics ),
'seo_scores' => $statistics['scores'],
];
return new WP_REST_Response( $data );
}
/**
* Gets a header summarizing the given statistics results.
*
* @param array $statistics The statistics results.
*
* @return string The header summing up the statistics results.
*/
private function get_header_from_statistics( array $statistics ) {
// Personal interpretation to allow release, should be looked at later.
if ( $statistics['division'] === false ) {
return __( 'You don\'t have any published posts, your SEO scores will appear here once you make your first post!', 'wordpress-seo' );
}
if ( $statistics['division']['good'] > 0.66 ) {
return __( 'Hey, your SEO is doing pretty well! Check out the stats:', 'wordpress-seo' );
}
return __( 'Below are your published posts\' SEO scores. Now is as good a time as any to start improving some of your posts!', 'wordpress-seo' );
}
/**
* An array representing items to be added to the At a Glance dashboard widget.
*
* @return array The statistics for the current user.
*/
private function statistic_items() {
$transient = $this->get_transient();
$user_id = get_current_user_id();
if ( isset( $transient[ $user_id ] ) ) {
return $transient[ $user_id ];
}
return $this->set_statistic_items_for_user( $transient, $user_id );
}
/**
* Gets the statistics transient value. Returns array if transient wasn't set.
*
* @return array|mixed Returns the transient or an empty array if the transient doesn't exist.
*/
private function get_transient() {
$transient = get_transient( self::CACHE_TRANSIENT_KEY );
if ( $transient === false ) {
return [];
}
return $transient;
}
/**
* Set the statistics transient cache for a specific user.
*
* @param array $transient The current stored transient with the cached data.
* @param int $user The user's ID to assign the retrieved values to.
*
* @return array The statistics transient for the user.
*/
private function set_statistic_items_for_user( $transient, $user ) {
$scores = $this->get_seo_scores_with_post_count();
$division = $this->get_seo_score_division( $scores );
$transient[ $user ] = [
// Use array_values because array_filter may return non-zero indexed arrays.
'scores' => array_values( array_filter( $scores, [ $this, 'filter_items' ] ) ),
'division' => $division,
];
set_transient( self::CACHE_TRANSIENT_KEY, $transient, DAY_IN_SECONDS );
return $transient[ $user ];
}
/**
* Gets the division of SEO scores.
*
* @param array $scores The SEO scores.
*
* @return array|bool The division of SEO scores, false if there are no posts.
*/
private function get_seo_score_division( array $scores ) {
$total = 0;
$division = [];
foreach ( $scores as $score ) {
$total += $score['count'];
}
if ( $total === 0 ) {
return false;
}
foreach ( $scores as $score ) {
$division[ $score['seo_rank'] ] = ( $score['count'] / $total );
}
return $division;
}
/**
* Get all SEO ranks and data associated with them.
*
* @return array An array of SEO scores and associated data.
*/
private function get_seo_scores_with_post_count() {
$ranks = WPSEO_Rank::get_all_ranks();
return array_map( [ $this, 'map_rank_to_widget' ], $ranks );
}
/**
* Converts a rank to data usable in the dashboard widget.
*
* @param WPSEO_Rank $rank The rank to map.
*
* @return array The mapped rank.
*/
private function map_rank_to_widget( WPSEO_Rank $rank ) {
return [
'seo_rank' => $rank->get_rank(),
'label' => $this->get_label_for_rank( $rank ),
'count' => $this->statistics->get_post_count( $rank ),
'link' => $this->get_link_for_rank( $rank ),
];
}
/**
* Returns a dashboard widget label to use for a certain rank.
*
* @param WPSEO_Rank $rank The rank to return a label for.
*
* @return string The label for the rank.
*/
private function get_label_for_rank( WPSEO_Rank $rank ) {
return $this->labels[ $rank->get_rank() ];
}
/**
* Determines the labels for the various scoring ranks that are known within Yoast SEO.
*
* @return array Array containing the translatable labels.
*/
private function labels() {
return [
WPSEO_Rank::NO_FOCUS => sprintf(
/* translators: %1$s expands to an opening strong tag, %2$s expands to a closing strong tag */
__( 'Posts %1$swithout%2$s a focus keyphrase', 'wordpress-seo' ),
'<strong>',
'</strong>'
),
WPSEO_Rank::BAD => sprintf(
/* translators: %s expands to the score */
__( 'Posts with the SEO score: %s', 'wordpress-seo' ),
'<strong>' . __( 'Needs improvement', 'wordpress-seo' ) . '</strong>'
),
WPSEO_Rank::OK => sprintf(
/* translators: %s expands to the score */
__( 'Posts with the SEO score: %s', 'wordpress-seo' ),
'<strong>' . __( 'OK', 'wordpress-seo' ) . '</strong>'
),
WPSEO_Rank::GOOD => sprintf(
/* translators: %s expands to the score */
__( 'Posts with the SEO score: %s', 'wordpress-seo' ),
'<strong>' . __( 'Good', 'wordpress-seo' ) . '</strong>'
),
WPSEO_Rank::NO_INDEX => __( 'Posts that should not show up in search results', 'wordpress-seo' ),
];
}
/**
* Filter items if they have a count of zero.
*
* @param array $item The item to potentially filter out.
*
* @return bool Whether or not the count is zero.
*/
private function filter_items( $item ) {
return $item['count'] !== 0;
}
/**
* Returns a link for the overview of posts of a certain rank.
*
* @param WPSEO_Rank $rank The rank to return a link for.
*
* @return string The link that shows an overview of posts with that rank.
*/
private function get_link_for_rank( WPSEO_Rank $rank ) {
if ( current_user_can( 'edit_others_posts' ) === false ) {
return esc_url( admin_url( 'edit.php?post_status=publish&post_type=post&seo_filter=' . $rank->get_rank() . '&author=' . get_current_user_id() ) );
}
return esc_url( admin_url( 'edit.php?post_status=publish&post_type=post&seo_filter=' . $rank->get_rank() ) );
}
}
@@ -0,0 +1 @@
.yst-root .yst-replacevar__use-ai-button{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default)}.yst-root .yst-replacevar__use-ai-button:hover{background-color:#fff;border-color:var(--yoast-color-border--default);color:#000}.yst-root .yst-logo-icon{background-color:var(--yoast-color-primary);display:inline-block;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%}.yst-root .yst-ai-mode .yst-radio-group__options{flex-direction:row;gap:1.5rem}.yst-root .yst-length-progress-bar.yst-score-good .yst-progress-bar__progress{background-color:#7ad03a}.yst-root .yst-length-progress-bar.yst-score-ok .yst-progress-bar__progress{background-color:#ee7c1b}.yst-root .yst-length-progress-bar.yst-score-bad .yst-progress-bar__progress{background-color:#dc3232}.yst-root .yst-suggestions-radio-group .yst-radio-group__options{gap:0}.yst-root .yst-suggestions-radio-group .yst-radio-group__options>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-1px*var(--tw-space-y-reverse));margin-top:calc(-1px*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-introduction-modal .yst-modal__close-button{--tw-text-opacity:1;background-color:initial;color:rgb(107 114 128/var(--tw-text-opacity))}.yst-root .yst-introduction-modal .yst-modal__close-button:focus{--tw-ring-offset-width:0px;outline:2px solid #0000;outline-offset:2px}.yst-root .yst-ai-modal .yst-modal__panel{overflow:visible}.yst-root .yst-revoke-button .yst-animate-spin{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}
@@ -0,0 +1 @@
.yst-root .yst-replacevar__use-ai-button{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default)}.yst-root .yst-replacevar__use-ai-button:hover{background-color:#fff;border-color:var(--yoast-color-border--default);color:#000}.yst-root .yst-logo-icon{background-color:var(--yoast-color-primary);display:inline-block;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%}.yst-root .yst-ai-mode .yst-radio-group__options{flex-direction:row;gap:1.5rem}.yst-root .yst-length-progress-bar.yst-score-good .yst-progress-bar__progress{background-color:#7ad03a}.yst-root .yst-length-progress-bar.yst-score-ok .yst-progress-bar__progress{background-color:#ee7c1b}.yst-root .yst-length-progress-bar.yst-score-bad .yst-progress-bar__progress{background-color:#dc3232}.yst-root .yst-suggestions-radio-group .yst-radio-group__options{gap:0}.yst-root .yst-suggestions-radio-group .yst-radio-group__options>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-1px*var(--tw-space-y-reverse));margin-top:calc(-1px*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-introduction-modal .yst-modal__close-button{--tw-text-opacity:1;background-color:initial;color:rgb(107 114 128/var(--tw-text-opacity))}.yst-root .yst-introduction-modal .yst-modal__close-button:focus{--tw-ring-offset-width:0px;outline:2px solid #0000;outline-offset:2px}.yst-root .yst-ai-modal .yst-modal__panel{overflow:visible}.yst-root .yst-revoke-button .yst-animate-spin{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}
@@ -0,0 +1 @@
.emoji-select-button{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default);width:32px}.emoji-select-button svg{width:100%}.emoji-select-button-pressed,.emoji-select-button:hover{background-color:#fff;border-color:var(--yoast-color-border--default)}.yst-replacevar{position:relative}.yst-replacevar .emoji-select-popover{font-size:15px;margin-top:0;left:0}.rtl .yst-replacevar .emoji-select-popover{right:0;left:unset}.yst-replacevar .emoji-select-popover h3{font-size:1em;margin:0 0 .3em}.yst-replacevar .emoji-select-popover li{margin-bottom:unset}.yst-replacevar .emoji-select-popover .single-emoji{height:37.5px;width:37.5px}.yst-replacevar .emoji-select-popover .single-emoji span{font-size:20px!important}.yst-replacevar{color:#303030}.yst-replacevar .emoji-select-popover-nav{width:auto}.yst-replacevar .emoji-suggestions{padding:6px 0}.rtl .yst-replacevar .emoji-suggestions{left:0}.yst-replacevar .emoji-suggestion-item-wrapper{align-items:center;display:flex;padding:6px 10px}.yst-replacevar .emoji-suggestion-item-wrapper span{font-size:18px;line-height:1}.yst-replacevar .emoji-suggestion-item-wrapper .emoji-suggestion-item-text{font-size:13px}
@@ -0,0 +1 @@
.emoji-select-button{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default);width:32px}.emoji-select-button svg{width:100%}.emoji-select-button-pressed,.emoji-select-button:hover{background-color:#fff;border-color:var(--yoast-color-border--default)}.yst-replacevar{position:relative}.yst-replacevar .emoji-select-popover{font-size:15px;margin-top:0;right:0}.rtl .yst-replacevar .emoji-select-popover{left:0;right:unset}.yst-replacevar .emoji-select-popover h3{font-size:1em;margin:0 0 .3em}.yst-replacevar .emoji-select-popover li{margin-bottom:unset}.yst-replacevar .emoji-select-popover .single-emoji{height:37.5px;width:37.5px}.yst-replacevar .emoji-select-popover .single-emoji span{font-size:20px!important}.yst-replacevar{color:#303030}.yst-replacevar .emoji-select-popover-nav{width:auto}.yst-replacevar .emoji-suggestions{padding:6px 0}.rtl .yst-replacevar .emoji-suggestions{right:0}.yst-replacevar .emoji-suggestion-item-wrapper{align-items:center;display:flex;padding:6px 10px}.yst-replacevar .emoji-suggestion-item-wrapper span{font-size:18px;line-height:1}.yst-replacevar .emoji-suggestion-item-wrapper .emoji-suggestion-item-text{font-size:13px}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-left:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-right:auto}.yoast .notice{border:1px solid #ccd0d4;border-right-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:1px 12px}.yoast .notice-warning{border-right-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice-title,.yoast .notice p{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{color:var(--yoast-color-dark);background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);padding:10px 12px 12px;border-radius:4px;border:1px solid rgba(0,0,0,.2);transition:background-color .15s ease-out 0s;line-height:1.2;font-size:14px;cursor:pointer}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast-links-suggestions-notice .button:not(:disabled):hover,.yoast .yoast-links-suggestions-notice .button:active{background-color:var(--yoast-color-secondary-darker);border:1px solid rgba(0,0,0,.2)}}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-right:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-left:auto}.yoast .notice{border:1px solid #ccd0d4;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:1px 12px}.yoast .notice-warning{border-left-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice-title,.yoast .notice p{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{color:var(--yoast-color-dark);background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);padding:10px 12px 12px;border-radius:4px;border:1px solid rgba(0,0,0,.2);transition:background-color .15s ease-out 0s;line-height:1.2;font-size:14px;cursor:pointer}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast-links-suggestions-notice .button:not(:disabled):hover,.yoast .yoast-links-suggestions-notice .button:active{background-color:var(--yoast-color-secondary-darker);border:1px solid rgba(0,0,0,.2)}}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-left:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-right:auto}.yoast .notice{border:1px solid #ccd0d4;border-right-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:1px 12px}.yoast .notice-warning{border-right-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice-title,.yoast .notice p{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{color:var(--yoast-color-dark);background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);padding:10px 12px 12px;border-radius:4px;border:1px solid rgba(0,0,0,.2);transition:background-color .15s ease-out 0s;line-height:1.2;font-size:14px;cursor:pointer}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast-links-suggestions-notice .button:not(:disabled):hover,.yoast .yoast-links-suggestions-notice .button:active{background-color:var(--yoast-color-secondary-darker);border:1px solid rgba(0,0,0,.2)}}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-right:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-left:auto}.yoast .notice{border:1px solid #ccd0d4;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:1px 12px}.yoast .notice-warning{border-left-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice-title,.yoast .notice p{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{color:var(--yoast-color-dark);background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);padding:10px 12px 12px;border-radius:4px;border:1px solid rgba(0,0,0,.2);transition:background-color .15s ease-out 0s;line-height:1.2;font-size:14px;cursor:pointer}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast-links-suggestions-notice .button:not(:disabled):hover,.yoast .yoast-links-suggestions-notice .button:active{background-color:var(--yoast-color-secondary-darker);border:1px solid rgba(0,0,0,.2)}}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-left:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-right:auto}.yoast .notice{border:1px solid #ccd0d4;border-right-width:4px;box-shadow:0 1px 1px #0000000a;padding:1px 12px}.yoast .notice-warning{border-right-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice p,.yoast .notice-title{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{background-color:var(--yoast-color-secondary);border:1px solid #0003;border-radius:4px;box-shadow:inset 0 -2px 0 #0000001a;color:var(--yoast-color-dark);cursor:pointer;font-size:14px;line-height:1.2;padding:10px 12px 12px;transition:background-color .15s ease-out 0s}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast .yoast-links-suggestions-notice .button:active,.yoast-links-suggestions-notice .button:not(:disabled):hover{background-color:var(--yoast-color-secondary-darker);border:1px solid #0003}}
@@ -0,0 +1 @@
.elementor-panel .yoast-link-suggestions a{color:var(--yoast-color-link)}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container{max-width:100%;padding-right:6px}.yoast-link-suggestion__wrapper .yoast-link-suggestion__container>a{width:-moz-fit-content;width:fit-content}.yoast-link-suggestion__wrapper .yoast-link-suggestion__copy{margin-left:auto}.yoast .notice{border:1px solid #ccd0d4;border-left-width:4px;box-shadow:0 1px 1px #0000000a;padding:1px 12px}.yoast .notice-warning{border-left-color:#ffb900}.yoast .notice-warning.notice-alt{background-color:#fff8e5}.yoast .notice p,.yoast .notice-title{margin:.5em 0;padding:2px}.yoast-links-suggestions-notice .button{background-color:var(--yoast-color-secondary);border:1px solid #0003;border-radius:4px;box-shadow:inset 0 -2px 0 #0000001a;color:var(--yoast-color-dark);cursor:pointer;font-size:14px;line-height:1.2;padding:10px 12px 12px;transition:background-color .15s ease-out 0s}.yoast-links-suggestions-notice .button:focus{box-shadow:var(--yoast-color-focus);outline:none}p.yoast-redirect-notification-modal-url{margin-bottom:0}.yoast .yoast-data-model{color:var(--yoast-elementor-color-paragraph)}@media(hover:hover){.yoast .yoast-links-suggestions-notice .button:active,.yoast-links-suggestions-notice .button:not(:disabled):hover{background-color:var(--yoast-color-secondary-darker);border:1px solid #0003}}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{width:75px;height:75px;display:block;margin:0 auto;padding:3em 0}#yoast_internal_linking .inside{margin-top:0;padding-top:10px;padding-bottom:25px}.yoast-links-suggestions-notice{margin:5px 0 2px}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{display:flex;align-items:center;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-left:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:.9rem;margin:0 -20px 15px;font-family:Open Sans,sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-right:44px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section:after,.yoast-section :after,.yoast-section:before,.yoast-section :before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;width:auto;margin-top:24px}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}#yoast-insights{margin-top:2em}.remove-keyword{display:inline-block;margin:0 -3px 0 0;padding:5px 6px 6px;border:none;background:transparent;cursor:pointer}.remove-keyword span{display:inline-block;width:16px;height:16px;padding:0;border:1px solid transparent;border-radius:100%;color:#686868;font-size:12px;font-weight:400;line-height:15px;text-align:center;vertical-align:top}.remove-keyword:focus{outline:none;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.remove-keyword:focus span,.remove-keyword:hover span{color:#fff;background-color:#dc3232}.wpseo-add-keyword:disabled{display:none}.wpseo_content_tab+.wpseo_keyword_tab .wpseo-keyword{font-weight:600}.wpseo_content_tab+.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{font-weight:400}.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{max-width:1em;max-width:1rem}.wpseo_keyword_tab.active a[data-score=na] .wpseo-keyword{max-width:none}.wpseo-metabox-tabs .wpseo_keyword_tab_hideable .wpseo_tablink{padding-left:0}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}.yoast-zapier-text{display:flex}.yoast-zapier-text__icon{flex:0 0 16px;height:16px;margin:2px 1px 0 9px}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{width:75px;height:75px;display:block;margin:0 auto;padding:3em 0}#yoast_internal_linking .inside{margin-top:0;padding-top:10px;padding-bottom:25px}.yoast-links-suggestions-notice{margin:5px 0 2px}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{display:flex;align-items:center;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-right:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:.9rem;margin:0 -20px 15px;font-family:Open Sans,sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-left:44px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section:after,.yoast-section :after,.yoast-section:before,.yoast-section :before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;width:auto;margin-top:24px}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}#yoast-insights{margin-top:2em}.remove-keyword{display:inline-block;margin:0 0 0 -3px;padding:5px 6px 6px;border:none;background:transparent;cursor:pointer}.remove-keyword span{display:inline-block;width:16px;height:16px;padding:0;border:1px solid transparent;border-radius:100%;color:#686868;font-size:12px;font-weight:400;line-height:15px;text-align:center;vertical-align:top}.remove-keyword:focus{outline:none;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.remove-keyword:focus span,.remove-keyword:hover span{color:#fff;background-color:#dc3232}.wpseo-add-keyword:disabled{display:none}.wpseo_content_tab+.wpseo_keyword_tab .wpseo-keyword{font-weight:600}.wpseo_content_tab+.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{font-weight:400}.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{max-width:1em;max-width:1rem}.wpseo_keyword_tab.active a[data-score=na] .wpseo-keyword{max-width:none}.wpseo-metabox-tabs .wpseo_keyword_tab_hideable .wpseo_tablink{padding-right:0}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}.yoast-zapier-text{display:flex}.yoast-zapier-text__icon{flex:0 0 16px;height:16px;margin:2px 9px 0 1px}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{width:75px;height:75px;display:block;margin:0 auto;padding:3em 0}#yoast_internal_linking .inside{margin-top:0;padding-top:10px;padding-bottom:25px}.yoast-links-suggestions-notice{margin:5px 0 2px}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{display:flex;align-items:center;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-left:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:.9rem;margin:0 -20px 15px;font-family:Open Sans,sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-right:44px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section:after,.yoast-section :after,.yoast-section:before,.yoast-section :before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;width:auto;margin-top:24px}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}#yoast-insights{margin-top:2em}.remove-keyword{display:inline-block;margin:0 -3px 0 0;padding:5px 6px 6px;border:none;background:transparent;cursor:pointer}.remove-keyword span{display:inline-block;width:16px;height:16px;padding:0;border:1px solid transparent;border-radius:100%;color:#686868;font-size:12px;font-weight:400;line-height:15px;text-align:center;vertical-align:top}.remove-keyword:focus{outline:none;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.remove-keyword:focus span,.remove-keyword:hover span{color:#fff;background-color:#dc3232}.wpseo-add-keyword:disabled{display:none}.wpseo_content_tab+.wpseo_keyword_tab .wpseo-keyword{font-weight:600}.wpseo_content_tab+.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{font-weight:400}.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{max-width:1em;max-width:1rem}.wpseo_keyword_tab.active a[data-score=na] .wpseo-keyword{max-width:none}.wpseo-metabox-tabs .wpseo_keyword_tab_hideable .wpseo_tablink{padding-left:0}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}.yoast-zapier-text{display:flex}.yoast-zapier-text__icon{flex:0 0 16px;height:16px;margin:2px 1px 0 9px}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{width:75px;height:75px;display:block;margin:0 auto;padding:3em 0}#yoast_internal_linking .inside{margin-top:0;padding-top:10px;padding-bottom:25px}.yoast-links-suggestions-notice{margin:5px 0 2px}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{display:flex;align-items:center;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-right:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:.9rem;margin:0 -20px 15px;font-family:Open Sans,sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-left:44px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section:after,.yoast-section :after,.yoast-section:before,.yoast-section :before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;width:auto;margin-top:24px}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}#yoast-insights{margin-top:2em}.remove-keyword{display:inline-block;margin:0 0 0 -3px;padding:5px 6px 6px;border:none;background:transparent;cursor:pointer}.remove-keyword span{display:inline-block;width:16px;height:16px;padding:0;border:1px solid transparent;border-radius:100%;color:#686868;font-size:12px;font-weight:400;line-height:15px;text-align:center;vertical-align:top}.remove-keyword:focus{outline:none;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.remove-keyword:focus span,.remove-keyword:hover span{color:#fff;background-color:#dc3232}.wpseo-add-keyword:disabled{display:none}.wpseo_content_tab+.wpseo_keyword_tab .wpseo-keyword{font-weight:600}.wpseo_content_tab+.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{font-weight:400}.wpseo_keyword_tab a[data-score=na] .wpseo-keyword{max-width:1em;max-width:1rem}.wpseo_keyword_tab.active a[data-score=na] .wpseo-keyword{max-width:none}.wpseo-metabox-tabs .wpseo_keyword_tab_hideable .wpseo_tablink{padding-right:0}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}.yoast-zapier-text{display:flex}.yoast-zapier-text__icon{flex:0 0 16px;height:16px;margin:2px 9px 0 1px}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{display:block;height:75px;margin:0 auto;padding:3em 0;width:75px}#yoast_internal_linking .inside{margin-top:0;padding-bottom:25px;padding-top:10px}.yoast-links-suggestions-notice{margin:5px 0 2px}body.is-dark-theme .wp-block .yoast-links-suggestions-notice{color:#000}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{align-items:center;display:flex;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-left:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{background-color:#fff;box-shadow:0 1px 2px #0003;padding:0 20px 15px;position:relative}.yoast-section__heading{color:#555;font-family:Open Sans,sans-serif;font-size:.9rem;font-weight:300;margin:0 -20px 15px;padding:8px 20px}.yoast-section__heading-icon{background-position:right 20px top .6em;background-repeat:no-repeat;background-size:16px;padding-right:44px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;margin-top:24px;width:auto}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}.remove-keyword{background:#0000;border:none;cursor:pointer;display:inline-block;margin:0 -3px 0 0;padding:5px 6px 6px}.remove-keyword span{border:1px solid #0000;border-radius:100%;color:#686868;display:inline-block;font-size:12px;font-weight:400;height:16px;line-height:15px;padding:0;text-align:center;vertical-align:top;width:16px}.remove-keyword:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;outline:none}.remove-keyword:focus span,.remove-keyword:hover span{background-color:#dc3232;color:#fff}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}
@@ -0,0 +1 @@
.yoast-link-suggestion-icon.yoast-link-suggestion-icon{box-sizing:border-box}.yoast-link-suggestions--loading{display:block;height:75px;margin:0 auto;padding:3em 0;width:75px}#yoast_internal_linking .inside{margin-top:0;padding-bottom:25px;padding-top:10px}.yoast-links-suggestions-notice{margin:5px 0 2px}body.is-dark-theme .wp-block .yoast-links-suggestions-notice{color:#000}.yoast-redirect-notification-modal-url{margin:0}.yoast-redirect-notification-modal-buttons{align-items:center;display:flex;margin-top:16px}.yoast-redirect-notification-modal-buttons button{margin-right:16px}#wpseosynonyms{margin-bottom:2em}.yoast-section{background-color:#fff;box-shadow:0 1px 2px #0003;padding:0 20px 15px;position:relative}.yoast-section__heading{color:#555;font-family:Open Sans,sans-serif;font-size:.9rem;font-weight:300;margin:0 -20px 15px;padding:8px 20px}.yoast-section__heading-icon{background-position:left 20px top .6em;background-repeat:no-repeat;background-size:16px;padding-left:44px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.editable-preview h3:first-child{margin-top:0}.wpseo-form .snippet-editor__label{display:inline-block;margin-top:24px;width:auto}.wpseo-form .snippet-editor__label:first-child{margin-top:0}.wpseo-form .yoast_help.yoast-help-button{margin-top:20px}.wpseo-form .snippet-editor__label:first-child+.yoast-help-button{margin-top:-4px}.remove-keyword{background:#0000;border:none;cursor:pointer;display:inline-block;margin:0 0 0 -3px;padding:5px 6px 6px}.remove-keyword span{border:1px solid #0000;border-radius:100%;color:#686868;display:inline-block;font-size:12px;font-weight:400;height:16px;line-height:15px;padding:0;text-align:center;vertical-align:top;width:16px}.remove-keyword:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;outline:none}.remove-keyword:focus span,.remove-keyword:hover span{background-color:#dc3232;color:#fff}.wrap .wpseo-notice-breakout-inside{margin:0 -12px}
@@ -0,0 +1 @@
.fixed th.column-wpseo-cornerstone,.fixed th.column-wpseo-inclusive-language,.fixed th.column-wpseo-linked{padding:0;width:3em}th.column-wpseo-cornerstone .yoast-tooltip,th.column-wpseo-inclusive-language .yoast-tooltip{display:inline-block;overflow:visible;padding:8px 0;vertical-align:middle}th.column-wpseo-cornerstone .yoast-tooltip:after,th.column-wpseo-inclusive-language .yoast-tooltip:after{max-width:60px;white-space:break-spaces}td.column-wpseo-cornerstone,td.column-wpseo-inclusive-language{padding:8px 0 8px 10px}.manage-column .yoast-column-cornerstone:before{background:#0000 url(../../../assets/images/cornerstone-icon.svg) no-repeat 100% 3px;background-size:20px}.manage-column .yoast-column-inclusive-language:before{background:#0000 url(../../../assets/images/inclusive-language-icon.svg) no-repeat 100% 3px;background-size:20px}
@@ -0,0 +1 @@
.fixed th.column-wpseo-cornerstone,.fixed th.column-wpseo-inclusive-language,.fixed th.column-wpseo-linked{padding:0;width:3em}th.column-wpseo-cornerstone .yoast-tooltip,th.column-wpseo-inclusive-language .yoast-tooltip{display:inline-block;overflow:visible;padding:8px 0;vertical-align:middle}th.column-wpseo-cornerstone .yoast-tooltip:after,th.column-wpseo-inclusive-language .yoast-tooltip:after{max-width:60px;white-space:break-spaces}td.column-wpseo-cornerstone,td.column-wpseo-inclusive-language{padding:8px 10px 8px 0}.manage-column .yoast-column-cornerstone:before{background:#0000 url(../../../assets/images/cornerstone-icon.svg) no-repeat 0 3px;background-size:20px}.manage-column .yoast-column-inclusive-language:before{background:#0000 url(../../../assets/images/inclusive-language-icon.svg) no-repeat 0 3px;background-size:20px}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old div:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new div:before,tbody .column-old div:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old div:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new div:before,tbody .column-old div:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old div:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new div:before,tbody .column-old div:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old div:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new div:before,tbody .column-old div:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old .val:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new .val:before,tbody .column-old .val:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}.redirect_htaccess_disabled{opacity:.5}#inline-edit td{padding:0 20px}
@@ -0,0 +1 @@
.redirect_form_row.field_error label{color:#dc3232}.redirect_form_row.field_error input{border-color:#dc3232}tbody .column-old .val:after{color:#d3d3d3;content:"/"}tbody .column-new .has-trailing-slash:after,tbody .column-new .val:before,tbody .column-old .val:before{content:"/"}tbody .column-new .remove-slashes:after,tbody .column-new .remove-slashes:before,tbody .column-old .remove-slashes:after,tbody .column-old .remove-slashes:before{content:none}.wpseo-redirect-clear{clear:both}.redirect_htaccess_disabled{opacity:.5}#inline-edit td{padding:0 20px}
@@ -0,0 +1 @@
.wp-block-yoast-job-posting .yoast-schema-flex{display:flex;line-height:1.25}.wp-block-yoast-job-posting .yoast-schema-select select.components-select-control__input{height:100%;padding:6px 8px 6px 33px}.wp-block-yoast-job-posting .components-text-control__input,.wp-block-yoast-job-posting .yoast-schema-select div.components-input-control__backdrop{border:1px solid #ccc;border-radius:0}.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}
@@ -0,0 +1 @@
.wp-block-yoast-job-posting .yoast-schema-flex{display:flex;line-height:1.25}.wp-block-yoast-job-posting .yoast-schema-select select.components-select-control__input{height:100%;padding:6px 33px 6px 8px}.wp-block-yoast-job-posting .components-text-control__input,.wp-block-yoast-job-posting .yoast-schema-select div.components-input-control__backdrop{border:1px solid #ccc;border-radius:0}.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}
@@ -0,0 +1 @@
.yoast-schema-flex{display:flex;line-height:1.25}.yoast-schema-select select.components-select-control__input{height:100%;padding:6px 8px 6px 33px}.components-text-control__input,.yoast-schema-select div.components-input-control__backdrop{border:1px solid #ccc;border-radius:0}.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}
@@ -0,0 +1 @@
.yoast-schema-flex{display:flex;line-height:1.25}.yoast-schema-select select.components-select-control__input{height:100%;padding:6px 33px 6px 8px}.components-text-control__input,.yoast-schema-select div.components-input-control__backdrop{border:1px solid #ccc;border-radius:0}.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}
@@ -0,0 +1 @@
.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}.yoast-job-block__salary .wp-block-yoast-job-salary-range{max-width:25%}.yoast-job-block__salary .wp-block-yoast-job-salary-range input[type=number]{-moz-appearance:textfield}.editor-styles-wrapper .wp-block-yoast-job-salary [data-block]{margin-bottom:0;margin-top:0}
@@ -0,0 +1 @@
.wp-block-yoast-job-employment-type .components-input-control__container{width:50%}.yoast-job-block__salary .wp-block-yoast-job-salary-range{max-width:25%}.yoast-job-block__salary .wp-block-yoast-job-salary-range input[type=number]{-moz-appearance:textfield}.editor-styles-wrapper .wp-block-yoast-job-salary [data-block]{margin-bottom:0;margin-top:0}
@@ -0,0 +1 @@
#yoast-seo-settings .emoji-select-button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(30 41 59/var(--tw-text-opacity));cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1rem;min-height:34px;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none;width:34px}#yoast-seo-settings .emoji-select-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}#yoast-seo-settings .emoji-select-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}#yoast-seo-settings .emoji-select-button>svg{height:1.25rem;margin-right:auto;margin-left:auto;width:1.25rem}
@@ -0,0 +1 @@
#yoast-seo-settings .emoji-select-button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(30 41 59/var(--tw-text-opacity));cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1rem;min-height:34px;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none;width:34px}#yoast-seo-settings .emoji-select-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}#yoast-seo-settings .emoji-select-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}#yoast-seo-settings .emoji-select-button>svg{height:1.25rem;margin-left:auto;margin-right:auto;width:1.25rem}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.admin_page_wpseo_installation_successful{background:#fff}.admin_page_wpseo_installation_successful h1{color:#a4286a;font-size:40px;font-weight:400;margin-top:0;text-align:center}.admin_page_wpseo_installation_successful .yoast-image{display:block;margin:100px auto 24px;max-width:200px}.admin_page_wpseo_installation_successful #wpcontent{padding-left:20px}@media screen and (max-width:782px){.admin_page_wpseo_installation_successful #wpcontent{padding-left:10px}}.yoast-whats-next{font-size:16px;text-align:center}.yoast-grid{grid-gap:32px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;margin:48px auto 0;max-width:1120px;text-align:center;width:100%}@media screen and (max-width:1250px){.yoast-grid{grid-template-columns:1fr 1fr;max-width:768px}}@media screen and (max-width:600px){.yoast-grid{grid-template-columns:1fr;max-width:480px}}.yoast-grid div{display:flex;flex-direction:column}.yoast-grid h3{color:#a4286a;font-size:19px;font-weight:400;line-height:26px;margin-top:0}.yoast-grid .yoast-button{margin-top:auto;width:calc(100% - 26px)}.yoast-grid img{margin-bottom:16px;max-width:100%}.yoast-grid p{margin:16px 0}
@@ -0,0 +1 @@
.admin_page_wpseo_installation_successful{background:#fff}.admin_page_wpseo_installation_successful h1{color:#a4286a;font-size:40px;font-weight:400;margin-top:0;text-align:center}.admin_page_wpseo_installation_successful .yoast-image{display:block;margin:100px auto 24px;max-width:200px}.admin_page_wpseo_installation_successful #wpcontent{padding-right:20px}@media screen and (max-width:782px){.admin_page_wpseo_installation_successful #wpcontent{padding-right:10px}}.yoast-whats-next{font-size:16px;text-align:center}.yoast-grid{grid-gap:32px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;margin:48px auto 0;max-width:1120px;text-align:center;width:100%}@media screen and (max-width:1250px){.yoast-grid{grid-template-columns:1fr 1fr;max-width:768px}}@media screen and (max-width:600px){.yoast-grid{grid-template-columns:1fr;max-width:480px}}.yoast-grid div{display:flex;flex-direction:column}.yoast-grid h3{color:#a4286a;font-size:19px;font-weight:400;line-height:26px;margin-top:0}.yoast-grid .yoast-button{margin-top:auto;width:calc(100% - 26px)}.yoast-grid img{margin-bottom:16px;max-width:100%}.yoast-grid p{margin:16px 0}
@@ -0,0 +1 @@
#wpseo-workouts-container h1,#wpseo-workouts-container h3{color:#a4286a;font-weight:500}#wpseo-workouts-container h2{font-size:12px;text-transform:uppercase}.workflow tr.cornerstone{font-weight:700}#wpseo-workouts-container hr{margin-bottom:24px}#wpseo-workouts-container progress{margin:16px 0 8px}#wpseo-workouts-container div.card{border:0;border-radius:8px;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;max-width:720px;padding:24px;width:100%}#wpseo-workouts-container div.card>h2{margin:0 0 1em}#wpseo-workouts-container div.card.card-small{display:flex;flex-direction:column;max-width:320px}#wpseo-workouts-container div.card.card-small>span{margin-top:auto}#wpseo-workouts-container table button{margin:2px}.workflow{counter-reset:line-number;list-style:none;margin-right:48px}.workflow li{counter-increment:line-number;padding-bottom:16px;position:relative}.workflow>li:before{background:#a4286a;bottom:-20px;content:"";right:-33px;position:absolute;top:0;width:2px}.workflow>li:last-of-type:before{display:none}.workflow>li:after{background:#fff;border:2px solid #a4286a;border-radius:100%;color:#a4286a;content:counter(line-number);display:block;height:28px;right:-48px;line-height:28px;position:absolute;text-align:center;top:-8px;width:28px}.workflow li.finished:after{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' fill='none' stroke='%23FFF' height='24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5 13 4 4L19 7'/%3E%3C/svg%3E") #a4286a;background-position:50%;background-repeat:no-repeat;background-size:20px 20px;content:""}.workflow li.finished p,.workflow li.finished table{opacity:.5}.workflow li img{max-width:100%}.workflow li img.workflow__image{max-height:100px;max-width:100px}.workflow li #react-select-2-input{box-shadow:none!important}.workflows__index__grid{display:grid;gap:16px;grid-template-columns:320px 320px}.workflow__grid{display:grid;gap:8px;grid-template-columns:auto 100px}.workflow__grid>div:last-of-type{display:flex;flex-wrap:wrap;justify-content:flex-end}table.yoast_help.yoast_link_suggestions thead td{padding:16px 8px}table.yoast_help.yoast_link_suggestions td{vertical-align:middle}table.yoast_help th.divider{text-align:center}.workflow table.yoast_help td{vertical-align:middle}.workflow table.yoast_help.yoast_link_suggestions td div{display:inline-block}.workflow table.yoast_help.yoast_link_suggestions td strong{display:inline-block;margin-left:8px}.components-modal__header{height:72px;padding:0 24px}.components-modal__header .components-modal__header-heading{color:#a4286a;font-size:20px;font-weight:400;line-height:1.2;margin:0}.components-modal__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.components-modal__content{padding:0 24px 24px}.components-modal__content input[type=text]{max-width:400px;width:100%}.components-modal__frame.yoast__workout{max-width:720px}.yoast__redirect-suggestions{line-height:2}
@@ -0,0 +1 @@
#wpseo-workouts-container h1,#wpseo-workouts-container h3{color:#a4286a;font-weight:500}#wpseo-workouts-container h2{font-size:12px;text-transform:uppercase}.workflow tr.cornerstone{font-weight:700}#wpseo-workouts-container hr{margin-bottom:24px}#wpseo-workouts-container progress{margin:16px 0 8px}#wpseo-workouts-container div.card{border:0;border-radius:8px;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;max-width:720px;padding:24px;width:100%}#wpseo-workouts-container div.card>h2{margin:0 0 1em}#wpseo-workouts-container div.card.card-small{display:flex;flex-direction:column;max-width:320px}#wpseo-workouts-container div.card.card-small>span{margin-top:auto}#wpseo-workouts-container table button{margin:2px}.workflow{counter-reset:line-number;list-style:none;margin-left:48px}.workflow li{counter-increment:line-number;padding-bottom:16px;position:relative}.workflow>li:before{background:#a4286a;bottom:-20px;content:"";left:-33px;position:absolute;top:0;width:2px}.workflow>li:last-of-type:before{display:none}.workflow>li:after{background:#fff;border:2px solid #a4286a;border-radius:100%;color:#a4286a;content:counter(line-number);display:block;height:28px;left:-48px;line-height:28px;position:absolute;text-align:center;top:-8px;width:28px}.workflow li.finished:after{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' fill='none' stroke='%23FFF' height='24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5 13 4 4L19 7'/%3E%3C/svg%3E") #a4286a;background-position:50%;background-repeat:no-repeat;background-size:20px 20px;content:""}.workflow li.finished p,.workflow li.finished table{opacity:.5}.workflow li img{max-width:100%}.workflow li img.workflow__image{max-height:100px;max-width:100px}.workflow li #react-select-2-input{box-shadow:none!important}.workflows__index__grid{display:grid;gap:16px;grid-template-columns:320px 320px}.workflow__grid{display:grid;gap:8px;grid-template-columns:auto 100px}.workflow__grid>div:last-of-type{display:flex;flex-wrap:wrap;justify-content:flex-end}table.yoast_help.yoast_link_suggestions thead td{padding:16px 8px}table.yoast_help.yoast_link_suggestions td{vertical-align:middle}table.yoast_help th.divider{text-align:center}.workflow table.yoast_help td{vertical-align:middle}.workflow table.yoast_help.yoast_link_suggestions td div{display:inline-block}.workflow table.yoast_help.yoast_link_suggestions td strong{display:inline-block;margin-right:8px}.components-modal__header{height:72px;padding:0 24px}.components-modal__header .components-modal__header-heading{color:#a4286a;font-size:20px;font-weight:400;line-height:1.2;margin:0}.components-modal__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.components-modal__content{padding:0 24px 24px}.components-modal__content input[type=text]{max-width:400px;width:100%}.components-modal__frame.yoast__workout{max-width:720px}.yoast__redirect-suggestions{line-height:2}
@@ -0,0 +1 @@
<svg role="img" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24.12 19.5"><g fill="#444"><path d="M13.78.98a1.94 1.94 0 0 0-3.38 0L6.75 7.3h10.68L13.78.98ZM8.85 6.26l2.68-4.63c.12-.2.33-.33.56-.33s.45.12.56.33l2.68 4.63H8.85ZM6.55 7.95l-3.69 6.5h.01l-.02.04h8.49V7.95H6.55Zm-1.59 5.47 2.42-4.41h2.71v4.4H4.97ZM12.73 7.95v6.54l8.61-.04-3.69-6.5h-4.92Zm1.26 5.46v-4.4h2.84l2.42 4.41H14ZM2.44 15.33 0 19.5h24.12l-2.26-4.17H2.44Zm18.53 1.09 1.02 1.97-19.87.06 1.1-1.97 17.75-.06Z"/></g></svg>

After

Width:  |  Height:  |  Size: 527 B

@@ -0,0 +1 @@
<svg role="img" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="#444" d="M17 .75H3C1.48.75.25 1.98.25 3.5v8c0 1.52 1.23 2.75 2.75 2.75h4.69l4.78 4.78c.14.14.34.22.53.22a.753.753 0 0 0 .75-.75v-4.25H17c1.52 0 2.75-1.23 2.75-2.75v-8c0-1.52-1.23-2.75-2.75-2.75Zm0 1.5c.69 0 1.25.56 1.25 1.25v8c0 .69-.56 1.25-1.25 1.25h-4c-.41 0-.75.34-.75.75v3.19l-3.72-3.72a.75.75 0 0 0-.53-.22H3c-.69 0-1.25-.56-1.25-1.25v-8c0-.69.56-1.25 1.25-1.25"/><path fill="#444" fill-rule="evenodd" d="M6.29 6.35c0-1.02.87-1.85 1.93-1.85.8 0 1.48.46 1.78 1.13.29-.66.98-1.13 1.78-1.13 1.07 0 1.93.83 1.93 1.85 0 2.98-3.71 4.95-3.71 4.95S6.29 9.33 6.29 6.35Z"/></svg>

After

Width:  |  Height:  |  Size: 695 B

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
!function(l){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],i=0,f=[];i<n.length;i++)t=n[i],p[t]&&f.push(p[t][0]),p[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);f.length;)f.shift()();return c.push.apply(c,u||[]),a()}function a(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=i(i.s=t[0]))}return e}var t={},p={0:0},c=[];function i(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return l[e].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=l,i.c=t,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(r,e){if(1&e&&(r=i(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)i.d(t,n,function(e){return r[e]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="";var r=window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;a()}([]);
@@ -0,0 +1 @@
!function(l){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],i=0,f=[];i<n.length;i++)t=n[i],p[t]&&f.push(p[t][0]),p[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);f.length;)f.shift()();return c.push.apply(c,u||[]),a()}function a(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=i(i.s=t[0]))}return e}var t={},p={0:0},c=[];function i(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return l[e].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=l,i.c=t,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(r,e){if(1&e&&(r=i(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)i.d(t,n,function(e){return r[e]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="";var r=window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;a()}([]);
@@ -0,0 +1 @@
!function(e){function r(r){for(var n,i,f=r[0],l=r[1],a=r[2],c=0,s=[];c<f.length;c++)i=f[c],o[i]&&s.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,f=1;f<t.length;f++){var l=t[f];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={0:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="";var f=window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[],l=f.push.bind(f);f.push=r,f=f.slice();for(var a=0;a<f.length;a++)r(f[a]);var p=l;t()}([]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[15],{221:function(e,r,n){"use strict";var t=n(222);analysisWorker.registerResearch("textFormality",t.getTextFormalityLevel)},222:function(e,r,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.getRequiredFeatures=l,r.getTextFormalityLevel=function(e,r){var n=l(e,r),t=n.charsPerSentence,o=n.wordsPerSentence,a=n.averageFormalPronouns,i=n.averageInformalPronouns;if(i<=.01805790513753891)return t<=90.87325286865234?t<=73.79549026489258?"informal":t<=86.5999984741211?"formal":"informal":t<=172.26373291015625&&a<=.05696944147348404?"formal":"informal";if(i<=.04157066158950329)return o<=24.832167625427246?"informal":a<=.0007042253273539245?"formal":"informal";if(i<=.06274875998497009)return i<=.06258514896035194?"informal":"formal";if(i<=.06568162143230438)return"informal";return"informal"};var t=n(9),o=t.languageProcessing.getSentences,a=t.languageProcessing.getWords,i=["I","you","me","my","mine","your","yours","myself","yourself","yourselves"],s=["we","they","their","theirs","themselves","us","our","ours","ourselves","it","its","itself"];function u(e,r){return e.filter(function(e){return r.includes(e)})}function l(e,r){var n=e.getText(),t=r.getHelper("memoizedTokenizer"),l=o(n,t),f=a(n);return{charsPerSentence:function(e){return 0===e.length?0:e.map(function(e){return e.length}).reduce(function(e,r){return e+r})}(l)/l.length,wordsPerSentence:f.length/l.length,averageFormalPronouns:u(f,s).length/f.length,averageInformalPronouns:u(f,i).length/f.length}}},9:function(e,r){e.exports=window.yoast.analysis}},[[221,0]]]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[4],{159:function(t,s,e){"use strict";!function(){var t=function(){YoastSEO.app.registerPlugin("YoastCustomFieldsPlugin",{status:"loading"}),this.customFields={},this.updateCustomFields(),this.declareReady()};t.prototype.declareReady=function(){YoastSEO.app.pluginReady("YoastCustomFieldsPlugin"),YoastSEO.app.registerModification("content",this.addCustomFields.bind(this),"YoastCustomFieldsPlugin")},t.prototype.declareReloaded=function(){YoastSEO.app.pluginReloaded("YoastCustomFieldsPlugin")},t.prototype.addCustomFields=function(t){for(var s in this.customFields)t+=" ",t+=this.customFields[s];return t},t.prototype.updateCustomFields=function(){var t={};jQuery("#the-list > tr:visible").each(function(s,e){var o=jQuery("#"+e.id+"-key").val();-1!==YoastCustomFieldsPluginL10.custom_field_names.indexOf(o)&&(t[o]=jQuery("#"+e.id+"-value").val())}),this.customFields=t,this.declareReloaded(),this.bindCustomFields()},t.prototype.bindCustomFields=function(){var t=_.debounce(this.updateCustomFields.bind(this),500,!0);jQuery("#the-list .button + .update_meta").off("click.wpseoCustomFields").on("click.wpseoCustomFields",t),jQuery("#the-list").off("wpListDelEnd.wpseoCustomFields").on("wpListDelEnd.wpseoCustomFields",t),jQuery("#the-list").off("wpListAddEnd.wpseoCustomFields").on("wpListAddEnd.wpseoCustomFields",t),jQuery("#the-list textarea").off("input.wpseoCustomFields").on("input.wpseoCustomFields",t)},"undefined"!=typeof YoastSEO&&void 0!==YoastSEO.app?new t:jQuery(window).on("YoastSEO:ready",function(){new t})}()}},[[159,0]]]);
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[9],{12:function(e,t){e.exports=window.wp.components},168:function(e,t,o){"use strict";var i=o(12),n=o(3),s=o(19),m=function(e){return e&&e.__esModule?e:{default:e}}(o(5));var a=function(e){var t=e.pluginList,o=e.fieldId;if(window.yoast.draftJsEmoji){window.yoast.draftJsEmoji.defaultTheme.customClassesSet||(window.yoast.draftJsEmoji.defaultTheme.emojiSelectButton="emoji-select-button",window.yoast.draftJsEmoji.defaultTheme.emojiSelectButtonPressed="emoji-select-button emoji-select-button-pressed",window.yoast.draftJsEmoji.defaultTheme.emojiSelectPopover+=" emoji-select-popover",window.yoast.draftJsEmoji.defaultTheme.emojiSelectPopoverNav+=" emoji-select-popover-nav",window.yoast.draftJsEmoji.defaultTheme.emojiSuggestionsEntry+=" emoji-suggestion-item-wrapper",window.yoast.draftJsEmoji.defaultTheme.emojiSuggestionsEntryFocused+=" emoji-suggestion-item-wrapper",window.yoast.draftJsEmoji.defaultTheme.emojiSuggestionsEntryText+=" emoji-suggestion-item-text",window.yoast.draftJsEmoji.defaultTheme.emojiSelectPopoverGroupItem+=" single-emoji",window.yoast.draftJsEmoji.defaultTheme.emojiSuggestions+=" emoji-suggestions",window.yoast.draftJsEmoji.defaultTheme.customClassesSet=!0);var s=t.emojiPlugin,m=s.EmojiSelect,a=s.EmojiSuggestions;return wp.element.createElement(n.Fragment,null,wp.element.createElement(i.Fill,{name:"PluginComponent-"+o},wp.element.createElement(m,{closeOnEmojiSelect:!0})),wp.element.createElement(a,null))}return wp.element.createElement(n.Fragment,null)};a.propTypes={pluginList:m.default.object.isRequired,fieldId:m.default.string.isRequired};var r=function(){return wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5"},wp.element.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.828 14.828a4 4 0 01-5.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}))};(0,s.addFilter)("yoast.replacementVariableEditor.additionalPlugins","yoast/yoast-seo-premium/EmojiSelect",function(e,t,o){return wp.element.createElement(a,{key:o+"-emoji",pluginList:t,fieldId:o})},Number.MAX_SAFE_INTEGER),(0,s.addFilter)("yoast.replacementVariableEditor.pluginList","yoast/yoast-seo-premium/EmojiSelectLoad",function(e){return window.yoast.draftJsEmoji&&!e.emojiPlugin&&(e.emojiPlugin=window.yoast.draftJsEmoji.createEmojiPlugin({selectButtonContent:wp.element.createElement(r,null),useNativeArt:!0,theme:window.yoast.draftJsEmoji.defaultTheme})),e},Number.MAX_SAFE_INTEGER)},19:function(e,t){e.exports=window.wp.hooks},3:function(e,t){e.exports=window.wp.element},5:function(e,t){e.exports=window.yoast.propTypes}},[[168,0]]]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[5],{10:function(e,t){e.exports=window.wp.apiFetch},160:function(e,t,o){"use strict";var n=o(24),r=0;function i(){jQuery.post(ajaxurl,{action:"yoast_get_notifications"},function(e){if(""!==e){var t=jQuery(".wrap").children().eq(0);jQuery(e).insertAfter(t),r=0}r<20&&""===e&&(r++,setTimeout(i,500))})}function d(){return jQuery(location).attr("pathname").split("/").pop()}function a(e){return"edit-tags.php"===(e=e||d())?"slug":"post_name"}function s(){return jQuery("tr.inline-editor")}function c(){var e=s();return 0===e.length||""===e?"":e.attr("id").replace("edit-","")}function u(){var e=c(),t=a();return jQuery("#inline_"+e).find("."+t).html()}function p(){var e=s(),t=a();return u()!==e.find("input[name="+t+"]").val()}function w(e){13===e.which&&p()&&i()}function l(e){"save-order"!==jQuery(e.target).attr("id")&&p()&&i()}window.wpseoShowNotification=i,window.wpseoGetCurrentPage=d,window.wpseoGetActiveEditor=s,window.wpseoGetItemId=c,window.wpseoGetCurrentSlug=u,window.wpseoSlugChanged=p,window.wpseoHandleKeyEvents=w,window.wpseoHandleButtonEvents=l,window.wpseoUndoRedirect=n.wpseoUndoRedirect,window.wpseoUndoRedirectByObjectId=n.wpseoUndoRedirectByObjectId,window.wpseoCreateRedirect=n.wpseoCreateRedirect,window.wpseoRemoveNotification=n.wpseoRemoveNotification,jQuery(function(){var e=d();["edit.php","edit-tags.php"].includes(e)&&(jQuery("#inline-edit input").on("keydown",function(e){w(e)}),jQuery(".button-primary").on("click",function(e){l(e)})),"edit-tags.php"===e&&jQuery(document).on("ajaxComplete",function(e,t,o){o.data.indexOf("action=delete-tag")>-1&&i()})})},24:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ALLOW_EMPTY_TARGET=void 0,t.wpseoDeleteRedirect=r,t.wpseoUndoRedirectForObject=i,t.wpseoRemoveNotification=d,t.wpseoUndoRedirect=function(e,t,o,n,i){r(e,t,o).then(function(e){!0===e.success&&d(i)})},t.wpseoUndoRedirectByObjectId=function(e,t,o){i(e,t).then(function(e){!0===e.success&&d(o)})},t.wpseoCreateRedirect=function(e,t,o,n){var r="";if(410!==parseInt(t,10)&&""===(r=window.prompt(wpseoPremiumStrings.enter_new_url.replace("%s",e))))return void window.alert(wpseoPremiumStrings.error_new_url);jQuery.post(ajaxurl,{action:"wpseo_add_redirect_plain",ajax_nonce:o,redirect:{origin:e,target:r,type:t}},function(e){var o=jQuery(n).closest(".yoast-notification");if(jQuery(o).removeClass("updated").removeClass("error"),jQuery(o).find(".redirect_error").remove(),e.error)jQuery(o).addClass("error").prepend('<p class="redirect_error">'+e.error.message+"</p>");else{var r="";r=(r=410===parseInt(t,10)?_.escape(wpseoPremiumStrings.redirect_saved_no_target):wpseoPremiumStrings.redirect_saved.replace("%2$s","<code>"+_.escape(e.target)+"</code>")).replace("%1$s","<code>"+_.escape(e.origin)+"</code>"),jQuery(o).addClass("updated").html("<p>"+r+"</p>")}},"json")};var n=function(e){return e&&e.__esModule?e:{default:e}}(o(10));t.ALLOW_EMPTY_TARGET=[410,451];function r(e,t,o){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"plain";return(0,n.default)({method:"POST",url:wpApiSettings.root+"yoast/v1/redirects/delete",headers:{"X-WP-Nonce":wpApiSettings.nonce},data:{origin:e,target:t,type:o,format:r}})}function i(e,t){return(0,n.default)({method:"POST",url:wpApiSettings.root+"yoast/v1/redirects/undo-for-object",headers:{"X-WP-Nonce":wpApiSettings.nonce},data:{obj_id:e,obj_type:t}})}function d(e){jQuery(e).closest(".yoast-notification").fadeOut("slow")}}},[[160,0]]]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[6],{10:function(e,t){e.exports=window.wp.apiFetch},161:function(e,t,o){"use strict";var r=o(24);window.wpseoUndoRedirect=r.wpseoUndoRedirect,window.wpseoUndoRedirectByObjectId=r.wpseoUndoRedirectByObjectId,window.wpseoCreateRedirect=r.wpseoCreateRedirect,window.wpseoDeleteRedirect=r.wpseoDeleteRedirect,window.wpseoRemoveNotification=r.wpseoRemoveNotification},24:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ALLOW_EMPTY_TARGET=void 0,t.wpseoDeleteRedirect=i,t.wpseoUndoRedirectForObject=n,t.wpseoRemoveNotification=s,t.wpseoUndoRedirect=function(e,t,o,r,n){i(e,t,o).then(function(e){!0===e.success&&s(n)})},t.wpseoUndoRedirectByObjectId=function(e,t,o){n(e,t).then(function(e){!0===e.success&&s(o)})},t.wpseoCreateRedirect=function(e,t,o,r){var i="";if(410!==parseInt(t,10)&&""===(i=window.prompt(wpseoPremiumStrings.enter_new_url.replace("%s",e))))return void window.alert(wpseoPremiumStrings.error_new_url);jQuery.post(ajaxurl,{action:"wpseo_add_redirect_plain",ajax_nonce:o,redirect:{origin:e,target:i,type:t}},function(e){var o=jQuery(r).closest(".yoast-notification");if(jQuery(o).removeClass("updated").removeClass("error"),jQuery(o).find(".redirect_error").remove(),e.error)jQuery(o).addClass("error").prepend('<p class="redirect_error">'+e.error.message+"</p>");else{var i="";i=(i=410===parseInt(t,10)?_.escape(wpseoPremiumStrings.redirect_saved_no_target):wpseoPremiumStrings.redirect_saved.replace("%2$s","<code>"+_.escape(e.target)+"</code>")).replace("%1$s","<code>"+_.escape(e.origin)+"</code>"),jQuery(o).addClass("updated").html("<p>"+i+"</p>")}},"json")};var r=function(e){return e&&e.__esModule?e:{default:e}}(o(10));t.ALLOW_EMPTY_TARGET=[410,451];function i(e,t,o){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"plain";return(0,r.default)({method:"POST",url:wpApiSettings.root+"yoast/v1/redirects/delete",headers:{"X-WP-Nonce":wpApiSettings.nonce},data:{origin:e,target:t,type:o,format:i}})}function n(e,t){return(0,r.default)({method:"POST",url:wpApiSettings.root+"yoast/v1/redirects/undo-for-object",headers:{"X-WP-Nonce":wpApiSettings.nonce},data:{obj_id:e,obj_type:t}})}function s(e){jQuery(e).closest(".yoast-notification").fadeOut("slow")}}},[[161,0]]]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[8],{96:function(module,exports,__webpack_require__){"use strict";eval('\n\n/**\n * Adds a redirect from the Google Search Console overview.\n *\n * @deprecated 12.5\n *\n * @returns {boolean} Always returns false to cancel the default event handler.\n */\nfunction wpseoPostRedirectToGSC() {\n console.error("This function is deprecated since WPSEO 12.5");\n}\n\nwindow.wpseoPostRedirectToGSC = wpseoPostRedirectToGSC;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL2pzL3NyYy9nb29nbGUtc2VhcmNoLWNvbnNvbGUuanM/Njk5MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFkZHMgYSByZWRpcmVjdCBmcm9tIHRoZSBHb29nbGUgU2VhcmNoIENvbnNvbGUgb3ZlcnZpZXcuXG4gKlxuICogQGRlcHJlY2F0ZWQgMTIuNVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBBbHdheXMgcmV0dXJucyBmYWxzZSB0byBjYW5jZWwgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlci5cbiAqL1xuZnVuY3Rpb24gd3BzZW9Qb3N0UmVkaXJlY3RUb0dTQygpIHtcblx0Y29uc29sZS5lcnJvciggXCJUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgc2luY2UgV1BTRU8gMTIuNVwiICk7XG59XG5cbndpbmRvdy53cHNlb1Bvc3RSZWRpcmVjdFRvR1NDID0gd3BzZW9Qb3N0UmVkaXJlY3RUb0dTQztcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///96\n')}},[[96,0]]]);
@@ -0,0 +1 @@
(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[8],{101:function(module,exports,__webpack_require__){"use strict";eval('\n\n/**\n * Adds a redirect from the Google Search Console overview.\n *\n * @deprecated 12.5\n *\n * @returns {boolean} Always returns false to cancel the default event handler.\n */\nfunction wpseoPostRedirectToGSC() {\n console.error("This function is deprecated since WPSEO 12.5");\n}\n\nwindow.wpseoPostRedirectToGSC = wpseoPostRedirectToGSC;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2Fzc2V0cy9qcy9zcmMvZ29vZ2xlLXNlYXJjaC1jb25zb2xlLmpzPzY5OTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZGRzIGEgcmVkaXJlY3QgZnJvbSB0aGUgR29vZ2xlIFNlYXJjaCBDb25zb2xlIG92ZXJ2aWV3LlxuICpcbiAqIEBkZXByZWNhdGVkIDEyLjVcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gQWx3YXlzIHJldHVybnMgZmFsc2UgdG8gY2FuY2VsIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXIuXG4gKi9cbmZ1bmN0aW9uIHdwc2VvUG9zdFJlZGlyZWN0VG9HU0MoKSB7XG5cdGNvbnNvbGUuZXJyb3IoIFwiVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIHNpbmNlIFdQU0VPIDEyLjVcIiApO1xufVxuXG53aW5kb3cud3BzZW9Qb3N0UmVkaXJlY3RUb0dTQyA9IHdwc2VvUG9zdFJlZGlyZWN0VG9HU0M7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n')}},[[101,0]]]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,85 @@
<?php
// phpcs:ignore Yoast.NamingConventions.NamespaceName.Invalid
namespace Yoast\WP\SEO\Integrations\Blocks;
use Yoast\WP\SEO\Models\Indexable;
use Yoast\WP\SEO\Presenters\Url_List_Presenter;
use Yoast\WP\SEO\Repositories\Indexable_Repository;
/**
* Siblings block class
*/
class Siblings_Block extends Dynamic_Block {
/**
* The name of the block.
*
* @var string
*/
protected $block_name = 'siblings';
/**
* The editor script for the block.
*
* @var string
*/
protected $script = 'wp-seo-premium-dynamic-blocks';
/**
* The indexable repository.
*
* @var Indexable_Repository
*/
private $indexable_repository;
/**
* Siblings_Block constructor.
*
* @param Indexable_Repository $indexable_repository The indexable repository.
*/
public function __construct( Indexable_Repository $indexable_repository ) {
$this->indexable_repository = $indexable_repository;
}
/**
* Presents the block output.
*
* @param array $attributes The block attributes.
*
* @return string The block output.
*/
public function present( $attributes ) {
$post_parent_id = \wp_get_post_parent_id( null );
if ( $post_parent_id === false || $post_parent_id === 0 ) {
return '';
}
$indexables = $this->indexable_repository->get_subpages_by_post_parent(
$post_parent_id,
[ \get_the_ID() ]
);
$links = array_map(
static function( Indexable $indexable ) {
return [
'title' => $indexable->breadcrumb_title,
'permalink' => $indexable->permalink,
];
},
$indexables
);
if ( empty( $links ) ) {
return '';
}
$class_name = 'yoast-url-list';
if ( ! empty( $attributes['className'] ) ) {
$class_name .= ' ' . \esc_attr( $attributes['className'] );
}
$presenter = new Url_List_Presenter( $links, $class_name );
return $presenter->present();
}
}
@@ -0,0 +1,78 @@
<?php
// phpcs:ignore Yoast.NamingConventions.NamespaceName.Invalid
namespace Yoast\WP\SEO\Integrations\Blocks;
use Yoast\WP\SEO\Models\Indexable;
use Yoast\WP\SEO\Presenters\Url_List_Presenter;
use Yoast\WP\SEO\Repositories\Indexable_Repository;
/**
* Subpages block class
*/
class Subpages_Block extends Dynamic_Block {
/**
* The name of the block.
*
* @var string
*/
protected $block_name = 'subpages';
/**
* The editor script for the block.
*
* @var string
*/
protected $script = 'wp-seo-premium-dynamic-blocks';
/**
* The indexable repository.
*
* @var Indexable_Repository
*/
private $indexable_repository;
/**
* Subpages_Block constructor.
*
* @param Indexable_Repository $indexable_repository The indexable repository.
*/
public function __construct( Indexable_Repository $indexable_repository ) {
$this->indexable_repository = $indexable_repository;
}
/**
* Presents the block output.
*
* @param array $attributes The block attributes.
*
* @return string The block output.
*/
public function present( $attributes ) {
$indexables = $this->indexable_repository->get_subpages_by_post_parent( \get_the_ID() );
$links = array_map(
static function( Indexable $indexable ) {
return [
'title' => $indexable->breadcrumb_title,
'permalink' => $indexable->permalink,
];
},
$indexables
);
if ( empty( $links ) ) {
return '';
}
$class_name = 'yoast-url-list';
if ( ! empty( $attributes['className'] ) ) {
$class_name .= ' ' . \esc_attr( $attributes['className'] );
}
$presenter = new Url_List_Presenter( $links, $class_name );
return $presenter->present();
}
}
@@ -0,0 +1,115 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium\Classes
*/
/**
* Enqueues a JavaScript plugin for YoastSEO.js that adds custom fields to the content that were defined in the titles
* and meta's section of the Yoast SEO settings when those fields are available.
*/
class WPSEO_Custom_Fields_Plugin implements WPSEO_WordPress_Integration {
/**
* Initialize the AJAX hooks.
*
* @codeCoverageIgnore Method relies on dependencies.
*
* @return void
*/
public function register_hooks() {
global $pagenow;
if ( ! WPSEO_Metabox::is_post_edit( $pagenow ) && ! WPSEO_Metabox::is_post_overview( $pagenow ) ) {
return;
}
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue' ] );
}
/**
* Enqueues all the needed JS scripts.
*
* @codeCoverageIgnore Method relies on WordPress functions.
*
* @return void
*/
public function enqueue() {
wp_enqueue_script( 'wp-seo-premium-custom-fields-plugin' );
wp_localize_script( 'wp-seo-premium-custom-fields-plugin', 'YoastCustomFieldsPluginL10', $this->localize_script() );
}
/**
* Loads the custom fields translations.
*
* @return array The fields to localize.
*/
public function localize_script() {
return [
'custom_field_names' => $this->get_custom_field_names(),
];
}
/**
* Retrieve all custom field names set in SEO ->
*
* @return array The custom field names.
*/
protected function get_custom_field_names() {
$custom_field_names = [];
$post = $this->get_post();
if ( ! is_object( $post ) ) {
return $custom_field_names;
}
$options = $this->get_titles_from_options();
$target_option = 'page-analyse-extra-' . $post->post_type;
if ( array_key_exists( $target_option, $options ) ) {
$custom_field_names = explode( ',', $options[ $target_option ] );
}
return $custom_field_names;
}
/**
* Retrieves post data given a post ID or the global.
*
* @codeCoverageIgnore Method relies on dependencies.
*
* @return WP_Post|array|null Returns a post if found, otherwise returns an empty array.
*/
protected function get_post() {
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Reason: We are not controlling the request.
if ( isset( $_GET['post'] ) && is_string( $_GET['post'] ) ) {
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are casting the unsafe value to an integer.
$post_id = (int) wp_unslash( $_GET['post'] );
if ( $post_id > 0 ) {
return get_post( $post_id );
}
}
// phpcs:enable WordPress.Security.NonceVerification.Recommended
if ( isset( $GLOBALS['post'] ) ) {
return $GLOBALS['post'];
}
return [];
}
/**
* Retrieves the value of the WPSEO_Titles option.
*
* @codeCoverageIgnore Method relies on the options.
*
* @return array The value from WPSEO_Titles option.
*/
protected function get_titles_from_options() {
$option_name = WPSEO_Options::get_option_instance( 'wpseo_titles' )->option_name;
return get_option( $option_name, [] );
}
}
@@ -0,0 +1,38 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium
*/
/**
* Class WPSEO_Premium_Prominent_Words_Language_Support.
*
* @deprecated 14.7
* @codeCoverageIgnore
*/
class WPSEO_Premium_Prominent_Words_Language_Support {
/**
* List of supported languages.
*
* @var string[]
*/
protected $supported_languages = [ 'en', 'de', 'nl', 'es', 'fr', 'it', 'pt', 'ru', 'pl', 'sv', 'id' ];
/**
* Returns whether the current language is supported for the link suggestions.
*
* @deprecated 14.7
* @codeCoverageIgnore
*
* @param string $language The language to check for.
*
* @return bool Whether the current language is supported for the link suggestions.
*/
public function is_language_supported( $language ) {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.7' );
return in_array( $language, $this->supported_languages, true );
}
}
@@ -0,0 +1,81 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium
*/
_deprecated_file( __FILE__, 'WPSEO Premium 14.5' );
/**
* Registers the endpoint for the prominent words recalculation to WordPress.
*/
class WPSEO_Premium_Prominent_Words_Recalculation_Endpoint implements WPSEO_WordPress_Integration {
/**
* The REST API namespace.
*
* @var string
*/
const REST_NAMESPACE = 'yoast/v1';
/**
* The REST API endpoint.
*
* @var string
*/
const ENDPOINT_QUERY = 'complete_recalculation';
/**
* The capability needed to retrieve the recalculation data.
*
* @var string
*/
const CAPABILITY_RETRIEVE = 'edit_posts';
/**
* WPSEO_Premium_Prominent_Words_Recalculation_Endpoint constructor.
*
* @deprecated 14.5
* @codeCoverageIgnore
*
* @param WPSEO_Premium_Prominent_Words_Recalculation_Service $service Unused. The service to handle the requests to the endpoint.
*/
public function __construct( WPSEO_Premium_Prominent_Words_Recalculation_Service $service ) {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Registers all hooks to WordPress.
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public function register_hooks() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Register the REST endpoint to WordPress.
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public function register() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Determines if the current user is allowed to use this endpoint.
*
* @deprecated 14.5
* @codeCoverageIgnore
*
* @return bool
*/
public function can_retrieve_data() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
return current_user_can( self::CAPABILITY_RETRIEVE );
}
}
@@ -0,0 +1,86 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium
*/
_deprecated_file( __FILE__, 'WPSEO Premium 14.5' );
/**
* Handles adding site wide analysis UI to the WordPress admin.
*/
class WPSEO_Premium_Prominent_Words_Recalculation_Notifier implements WPSEO_WordPress_Integration {
const NOTIFICATION_ID = 'wpseo-premium-prominent-words-recalculate';
const UNINDEXED_THRESHOLD = 10;
/**
* Registers all hooks to WordPress
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public function register_hooks() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Removes the notification when it is set and the amount of unindexed items is lower than the threshold.
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public function cleanup_notification() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Adds the notification when it isn't set already and the amount of unindexed items is greater than the set.
* threshold.
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public function manage_notification() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Handles the option change to make sure the notification will be removed when link suggestions are disabled.
*
* @deprecated 14.5
* @codeCoverageIgnore
*
* @param mixed $old_value The old value.
* @param mixed $new_value The new value.
*/
public function handle_option_change( $old_value, $new_value ) {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
/**
* Checks if the notification has been set already.
*
* @deprecated 14.5
* @codeCoverageIgnore
*
* @return bool True when there is a notification.
*/
public function has_notification() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
return false;
}
/**
* Migration for removing the persistent notification.
*
* @deprecated 14.5
* @codeCoverageIgnore
*/
public static function upgrade_12_8() {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
}
}
@@ -0,0 +1,30 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium
*/
_deprecated_file( __FILE__, 'WPSEO Premium 14.5' );
/**
* Represents the service for the recalculation.
*/
class WPSEO_Premium_Prominent_Words_Recalculation_Service {
/**
* Removes the recalculation notification.
*
* @deprecated 14.5
* @codeCoverageIgnore
*
* @param WP_REST_Request $request The current request. Unused.
*
* @return WP_REST_Response The response to give.
*/
public function remove_notification( WP_REST_Request $request ) {
_deprecated_function( __METHOD__, 'WPSEO Premium 14.5' );
return new WP_REST_Response( '1' );
}
}
@@ -0,0 +1,226 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium\Classes\Export
*/
/**
* Class WPSEO_Export_Keywords_CSV
*
* Exports data as returned by WPSEO_Export_Keywords_Presenter to CSV.
*/
class WPSEO_Export_Keywords_CSV {
/**
* The columns that should be presented.
*
* @var array
*/
protected $columns;
/**
* Data to be exported.
*
* @var array
*/
protected $data = '';
/**
* WPSEO_Export_Keywords_CSV constructor.
*
* Supported values for columns are 'title', 'url', 'keywords', 'readability_score' and 'keywords_score'.
* Requesting 'keywords_score' will always also return 'keywords'.
*
* @param array $columns An array of columns that should be presented.
*/
public function __construct( array $columns ) {
$this->columns = array_filter( $columns, 'is_string' );
}
/**
* Echoes the CSV headers
*/
public function print_headers() {
// phpcs:ignore WordPress.Security.EscapeOutput -- Correctly escaped in get_headers() method below.
echo $this->get_headers();
}
/**
* Echoes a formatted row.
*
* @param array $row Row to add to the export.
*
* @return void
*/
public function print_row( $row ) {
echo $this->format( $row );
}
/**
* Returns the CSV headers based on the queried columns.
*
* @return string The headers in CSV format.
*/
protected function get_headers() {
$header_columns = [
'title' => esc_html__( 'title', 'wordpress-seo-premium' ),
'url' => esc_html__( 'url', 'wordpress-seo-premium' ),
'readability_score' => esc_html__( 'readability score', 'wordpress-seo-premium' ),
'keywords' => esc_html__( 'keyphrase', 'wordpress-seo-premium' ),
'keywords_score' => esc_html__( 'keyphrase score', 'wordpress-seo-premium' ),
'seo_title' => esc_html__( 'seo title', 'wordpress-seo-premium' ),
'meta_description' => esc_html__( 'meta description', 'wordpress-seo-premium' ),
];
$csv = $this->sanitize_csv_column( esc_html__( 'ID', 'wordpress-seo-premium' ) );
$csv .= ',' . $this->sanitize_csv_column( esc_html_x( 'type', 'post_type of a post or the taxonomy of a term', 'wordpress-seo-premium' ) );
foreach ( $this->columns as $column ) {
if ( array_key_exists( $column, $header_columns ) ) {
$csv .= ',' . $this->sanitize_csv_column( $header_columns[ $column ] );
}
}
return $csv . PHP_EOL;
}
/**
* Formats a WPSEO_Export_Keywords_Query result as a CSV line.
* In case of multiple keywords it will return multiple lines.
*
* @param array $result A result as returned from WPSEO_Export_Keywords_Query::get_data.
*
* @return string A line of CSV, beginning with EOL.
*/
protected function format( array $result ) {
// If our input is malformed return an empty string.
if ( ! array_key_exists( 'ID', $result ) || ! array_key_exists( 'type', $result ) ) {
return '';
}
// Ensure we have arrays in the keywords.
$result['keywords'] = $this->get_array_from_result( $result, 'keywords' );
$result['keywords_score'] = $this->get_array_from_result( $result, 'keywords_score' );
$csv = '';
// Add at least one row plus additional ones if we have more keywords.
$keywords = max( 1, count( $result['keywords'] ) );
for ( $keywords_index = 0; $keywords_index < $keywords; $keywords_index++ ) {
// Add static columns.
$csv .= $this->sanitize_csv_column( $result['ID'] );
$csv .= ',' . $this->sanitize_csv_column( $result['type'] );
// Add dynamic columns.
foreach ( $this->columns as $column ) {
$csv .= $this->get_csv_column_from_result( $result, $column, $keywords_index );
}
$csv .= PHP_EOL;
}
return $csv;
}
/**
* Returns a CSV column, including comma, from the result object based on the specified key
*
* @param array $result The result object.
* @param string $key The key of the value to get the CSV column for.
* @param int $keywords_index The number keyword to output.
*
* @return string CSV formatted column.
*/
protected function get_csv_column_from_result( array $result, $key, $keywords_index ) {
if ( in_array( $key, [ 'title', 'url', 'seo_title', 'meta_description', 'readability_score' ], true ) ) {
return $this->get_csv_string_column_from_result( $result, $key );
}
if ( in_array( $key, [ 'keywords', 'keywords_score' ], true ) ) {
return $this->get_csv_array_column_from_result( $result, $key, $keywords_index );
}
return '';
}
/**
* Returns an array from the result object.
*
* @param array $result The result object.
* @param string $key The key of the array to retrieve.
*
* @return array Contents of the key in the object.
*/
protected function get_array_from_result( array $result, $key ) {
if ( array_key_exists( $key, $result ) && is_array( $result[ $key ] ) ) {
return $result[ $key ];
}
return [];
}
/**
* Returns a CSV column, including comma, from the result object by the specified key.
* Expects the value to be a string.
*
* @param array $result The result object to get the CSV column from.
* @param string $key The key of the value to get the CSV column for.
*
* @return string A CSV formatted column.
*/
protected function get_csv_string_column_from_result( array $result, $key ) {
if ( array_key_exists( $key, $result ) ) {
return ',' . $this->sanitize_csv_column( $result[ $key ] );
}
return ',';
}
/**
* Returns a CSV column, including comma, from the result object by the specified key.
* Expects the value to be inside an array.
*
* @param array $result The result object to get the CSV column from.
* @param string $key The key of the array to get the CSV column for.
* @param int $index The index of the value in the array.
*
* @return string A CSV formatted column.
*/
protected function get_csv_array_column_from_result( array $result, $key, $index ) {
// If the array has an element at $index.
if ( $index < count( $result[ $key ] ) ) {
return ',' . $this->sanitize_csv_column( $result[ $key ][ $index ] );
}
return ',';
}
/**
* Sanitizes a value to be output as a CSV value.
*
* @param string $value The value to sanitize.
*
* @return string The sanitized value.
*/
protected function sanitize_csv_column( $value ) {
// Return an empty string if value is null.
if ( $value === null ) {
return '';
}
// Convert non-string values to strings.
if ( ! is_string( $value ) ) {
$value = var_export( $value, true );
}
// Replace all whitespace with spaces because Excel can't deal with newlines and tabs even if escaped.
$value = preg_replace( '/\s/', ' ', $value );
// Escape double quotes.
$value = str_replace( '"', '""', $value );
// Return the value enclosed in double quotes.
return '"' . $value . '"';
}
}
@@ -0,0 +1,228 @@
<?php
/**
* WPSEO Premium plugin file.
*
* @package WPSEO\Premium\Classes\Export
*/
/**
* Class WPSEO_Export_Keywords_Presenter
*
* Readies data as returned by WPSEO_Export_Keywords_Post_Query for exporting.
*/
class WPSEO_Export_Keywords_Post_Presenter implements WPSEO_Export_Keywords_Presenter {
/**
* The columns to query for.
*
* @var array
*/
protected $columns;
/**
* WPSEO_Export_Keywords_Post_Presenter constructor.
*
* Supported values for columns are 'title', 'url', 'keywords', 'readability_score' and 'keywords_score'.
* Requesting 'keywords_score' will always also return 'keywords'.
*
* @param array $columns The columns we want our query to return.
*/
public function __construct( array $columns ) {
$this->columns = array_filter( $columns, 'is_string' );
}
/**
* Creates a presentable result by modifying and adding the requested fields.
*
* @param array $result The result to modify.
*
* @return array The modified result or an empty array if the result is considered invalid.
*/
public function present( array $result ) {
if ( ! $this->validate_result( $result ) ) {
return [];
}
foreach ( $this->columns as $column ) {
$result = $this->prepare_column_result( $result, $column );
}
$result['type'] = $result['post_type'];
unset( $result['post_type'] );
return $result;
}
/**
* Prepares the passed result to make it more presentable.
*
* @param array $result The result to modify.
* @param string $column The requested column.
*
* @return array The prepared result.
*/
protected function prepare_column_result( array $result, $column ) {
switch ( $column ) {
case 'title':
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals -- Using WP native filter.
$result['title'] = apply_filters( 'the_title', $result['post_title'], $result['ID'] );
unset( $result['post_title'] );
break;
case 'url':
$result['url'] = get_permalink( $result['ID'] );
break;
case 'readability_score':
$result['readability_score'] = WPSEO_Rank::from_numeric_score( (int) $result['readability_score'] )->get_label();
break;
case 'keywords':
$result = $this->convert_result_keywords( $result );
break;
}
return $result;
}
/**
* Returns whether a result to present is a valid result.
*
* @param array $result The result to validate.
*
* @return bool True for a value valid result.
*/
protected function validate_result( array $result ) {
// If there is no ID then it's not valid.
if ( ! array_key_exists( 'ID', $result ) ) {
return false;
}
// If a title is requested but not present then it's not valid.
if ( $this->column_is_present( 'title' ) && $this->has_title( $result ) === false ) {
return false;
}
return true;
}
/**
* Determines if the result contains a valid title.
*
* @param array $result The result array to check for a title.
*
* @return bool Whether or not a title is valid.
*/
protected function has_title( $result ) {
if ( ! is_array( $result ) || ! array_key_exists( 'post_title', $result ) ) {
return false;
}
return is_string( $result['post_title'] );
}
/**
* Determines if the wanted column exists within the $this->columns class variable.
*
* @param string $column The column to search for.
*
* @return bool Whether or not the column exists.
*/
protected function column_is_present( $column ) {
if ( ! is_string( $column ) ) {
return false;
}
return in_array( $column, $this->columns, true );
}
/**
* Converts the results of the query from strings and JSON string to keyword arrays.
*
* @param array $result The result to convert.
*
* @return array The converted result.
*/
protected function convert_result_keywords( array $result ) {
$result['keywords'] = [];
if ( $this->column_is_present( 'keywords_score' ) ) {
$result['keywords_score'] = [];
}
if ( $this->has_primary_keyword( $result ) ) {
$result['keywords'][] = $result['primary_keyword'];
// Convert multiple keywords from the Premium plugin from json to string arrays.
$keywords = $this->parse_result_keywords_json( $result, 'other_keywords' );
$other_keywords = wp_list_pluck( $keywords, 'keyword' );
$result['keywords'] = array_merge( $result['keywords'], $other_keywords );
if ( $this->column_is_present( 'keywords_score' ) ) {
$result['keywords_score'] = $this->get_result_keywords_scores( $result, $keywords );
}
}
// Unset all old variables, if they do not exist nothing will happen.
unset( $result['primary_keyword'], $result['primary_keyword_score'], $result['other_keywords'] );
return $result;
}
/**
* Determines whether there's a valid primary keyword present in the result array.
*
* @param array $result The result array to check for the primary_keyword key.
*
* @return bool Whether or not a valid primary keyword is present.
*/
protected function has_primary_keyword( $result ) {
if ( ! is_array( $result ) || ! array_key_exists( 'primary_keyword', $result ) ) {
return false;
}
return is_string( $result['primary_keyword'] ) && ! empty( $result['primary_keyword'] );
}
/**
* Parses then keywords JSON string in the result object for the specified key.
*
* @param array $result The result object.
* @param string $key The key containing the JSON.
*
* @return array The parsed keywords.
*/
protected function parse_result_keywords_json( array $result, $key ) {
if ( empty( $result[ $key ] ) ) {
return [];
}
$parsed = json_decode( $result[ $key ], true );
if ( ! $parsed ) {
return [];
}
return $parsed;
}
/**
* Returns an array of all scores from the result object and the parsed keywords JSON.
*
* @param array $result The result object.
* @param array $keywords The parsed keywords.
*
* @return array The keyword scores.
*/
protected function get_result_keywords_scores( array $result, $keywords ) {
$scores = [];
$rank = WPSEO_Rank::from_numeric_score( (int) $result['primary_keyword_score'] );
$scores[] = $rank->get_label();
foreach ( $keywords as $keyword ) {
$rank = new WPSEO_Rank( $keyword['score'] );
$scores[] = $rank->get_label();
}
return $scores;
}
}

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