diff --git a/freemius/README.md b/freemius/README.md index 8260aff18..cd292dda8 100644 --- a/freemius/README.md +++ b/freemius/README.md @@ -280,3 +280,7 @@ The free version is the one that you should give your users to download. Therefo Copyright (c) Freemius®, Inc. Licensed under the GNU general public license (version 3). + +## Contributing + +Please see our [contributing guide](CONTRIBUTING.md). diff --git a/freemius/assets/css/admin/account.css b/freemius/assets/css/admin/account.css old mode 100644 new mode 100755 index 5ef5e916c..c9f5abd71 --- a/freemius/assets/css/admin/account.css +++ b/freemius/assets/css/admin/account.css @@ -1 +1 @@ -label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id=license_not_whitelabeled].success,.fs-notice[data-id=license_whitelabeled].success{color:inherit;border-left-color:#00a0d2}.fs-notice[data-id=license_not_whitelabeled].success label.fs-plugin-title,.fs-notice[data-id=license_whitelabeled].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #f1f1f1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type=text]{color:#0073aa;font-size:16px;background:none}.fs-key-value-table input[type=text]{width:100%;font-weight:bold}.fs-field-beta_program label{margin-left:7px}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:gray;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:rgba(0,0,0,0);opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:rgba(0,0,0,0)}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:rgba(0,0,0,0)}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:rgba(0,0,0,0);color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:rgba(0,0,0,0);color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}@media screen and (max-width: 639px){#fs_account .fs-header-actions{position:static;padding:0 15px 12px 15px;margin:0 0 12px 0}#fs_account .fs-header-actions li{float:none;display:inline-block}#fs_account #fs_account_details{display:block}#fs_account #fs_account_details tbody,#fs_account #fs_account_details tr,#fs_account #fs_account_details td,#fs_account #fs_account_details th{display:block}#fs_account #fs_account_details tr td:first-child{text-align:left}#fs_account #fs_account_details tr td:nth-child(2){padding:0 12px}#fs_account #fs_account_details tr td:nth-child(2) code{margin:0;padding:0}#fs_account #fs_account_details tr td:nth-child(2) label{margin-left:0}#fs_account #fs_account_details tr td:nth-child(3){text-align:left}#fs_account #fs_account_details tr.fs-field-plan td:nth-child(2) .button-group{float:none;margin:12px 0}}/*# sourceMappingURL=account.css.map */ +label.fs-tag,span.fs-tag{background:#ffba00;border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id=license_not_whitelabeled].success,.fs-notice[data-id=license_whitelabeled].success{border-left-color:#00a0d2;color:inherit}.fs-notice[data-id=license_not_whitelabeled].success label.fs-plugin-title,.fs-notice[data-id=license_whitelabeled].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{border-bottom:1px solid #f1f1f1;font-size:1.3em;line-height:1.4;margin:0 0 12px;padding:12px 15px}#fs_account h3 .dashicons{font-size:1.3em;height:26px;width:26px}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{font-size:.9em;position:absolute;right:15px;top:17px}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:700}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table code,.fs-key-value-table input[type=text],.fs-key-value-table var{background:none;color:#0073aa;font-size:16px}.fs-key-value-table input[type=text]{font-weight:700;width:100%}.fs-field-beta_program label{margin-left:7px}label.fs-tag{border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag,label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{border:1px solid #e5e5e5;max-height:200px;overflow:auto}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none!important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{color:gray;text-align:right;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{white-space:nowrap;width:1px}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{font-weight:700;text-align:left}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:700}#fs_billing_address{width:100%}#fs_billing_address tr td{padding:5px;width:50%}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:700}#fs_billing_address input,#fs_billing_address select{display:block;margin-top:5px;width:100%}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}@media screen and (max-width:639px){#fs_account .fs-header-actions{margin:0 0 12px;padding:0 15px 12px;position:static}#fs_account .fs-header-actions li{display:inline-block;float:none}#fs_account #fs_account_details,#fs_account #fs_account_details tbody,#fs_account #fs_account_details td,#fs_account #fs_account_details th,#fs_account #fs_account_details tr{display:block}#fs_account #fs_account_details tr td:first-child{text-align:left}#fs_account #fs_account_details tr td:nth-child(2){padding:0 12px}#fs_account #fs_account_details tr td:nth-child(2) code{margin:0;padding:0}#fs_account #fs_account_details tr td:nth-child(2) label{margin-left:0}#fs_account #fs_account_details tr td:nth-child(3){text-align:left}#fs_account #fs_account_details tr.fs-field-plan td:nth-child(2) .button-group{float:none;margin:12px 0}} \ No newline at end of file diff --git a/freemius/assets/css/admin/add-ons.css b/freemius/assets/css/admin/add-ons.css old mode 100644 new mode 100755 index 071e12d9d..cce528f39 --- a/freemius/assets/css/admin/add-ons.css +++ b/freemius/assets/css/admin/add-ons.css @@ -1 +1 @@ -.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3)}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{float:left;height:152px;width:310px;padding:0;margin:0 0 30px 30px;font-size:14px;list-style:none;border:1px solid #ddd;cursor:pointer;position:relative}#fs_addons .fs-cards-list .fs-card .fs-overlay{position:absolute;left:0;right:0;bottom:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;overflow:hidden;height:100%;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s;left:0;right:0;top:0;position:absolute}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{list-style:none;line-height:18px;padding:0 15px;width:100%;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{padding:0;margin:0;line-height:0;display:block;height:100px;background-repeat:repeat-x;background-size:100% 100%;-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{margin:10px 0 0 0;height:18px;overflow:hidden;color:#000;white-space:nowrap;text-overflow:ellipsis;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;padding:10px 15px 100px 15px;border-top:1px solid #eee;margin:0 0 10px 0;color:#777}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{position:absolute;top:10px;right:0px;background:#adff2f;display:block;padding:2px 10px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:1px 1px 1px rgba(0,0,0,.3);text-transform:uppercase;font-size:.9em;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;top:112px;right:10px}@media screen and (min-width: 960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer{color:#29abe1}}#TB_window,#TB_window iframe{width:821px !important}#plugin-information .fyi{width:266px !important}#plugin-information #section-holder{margin-right:299px;clear:none}#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description p,#plugin-information #section-description b,#plugin-information #section-description i,#plugin-information #section-description blockquote,#plugin-information #section-description li,#plugin-information #section-description ul,#plugin-information #section-description ol{clear:none}#plugin-information #section-description iframe{max-width:100%}#plugin-information #section-description .fs-selling-points{padding-bottom:10px;border-bottom:1px solid #ddd}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{padding:0;list-style:none outside none}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;font-size:3em;vertical-align:middle;line-height:30px;float:left;margin:0 0 0 -15px}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px !important}#plugin-information #section-description .fs-screenshots:after{content:"";display:table;clear:both}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{width:225px;height:225px;float:left;margin-bottom:20px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#plugin-information #section-description .fs-screenshots ul li a{display:block;width:100%;height:100%;border:1px solid;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);background-size:cover}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{margin:-16px;border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan h3{margin-top:0;padding:20px;font-size:16px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;position:relative;padding:0 10px;font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{text-transform:uppercase;color:green;background:#adff2f;position:absolute;left:-1px;right:-1px;bottom:100%;border:1px solid #006400;padding:2px;text-align:center;font-size:.9em;line-height:1em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{cursor:default;background:#fffeec;border-bottom-color:#fffeec}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;margin:0;padding-bottom:0;color:#0073aa}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{width:100%;text-align:center;font-weight:bold;text-transform:uppercase;font-size:1.1em}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-align:center;display:block;font-weight:bold;margin-bottom:10px;text-transform:uppercase;background:#f3f3f3;padding:2px;border:1px solid #ccc}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-transform:none;color:green;background:#adff2f}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{width:100%;border-spacing:0;border-collapse:separate}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;font-weight:normal;display:block;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;padding:10px 0;text-align:center;width:100px;color:#71ae00}#plugin-information #section-features table tbody td:first-child{text-align:left;width:auto;color:inherit;padding-left:26px}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{width:30px;height:30px;font-size:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;width:auto;top:0;right:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-top:6px solid #fff;border-right:4px solid rgba(0,0,0,0);border-left:4px solid rgba(0,0,0,0);top:12px;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{position:absolute;right:-1px;top:100%;margin-left:auto;padding:3px 0;border:1px solid #bfbfbf;background-color:#fff;z-index:1;width:230px;text-align:left;-moz-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);-webkit-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{-moz-border-radius:3px 0 3px 3px;-webkit-border-radius:3px 0 3px 3px;border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{-moz-border-radius:3px 3px 0 3px;-webkit-border-radius:3px 3px 0 3px;border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:normal;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{top:auto;bottom:100%;margin-bottom:2px}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{text-align:center;display:table}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer>.button,#plugin-information-footer .fs-dropdown{position:relative;top:3px}#plugin-information-footer>.button.left,#plugin-information-footer .fs-dropdown.left{float:left}#plugin-information-footer>.right,#plugin-information-footer .fs-dropdown{float:right}@media screen and (max-width: 961px){#fs_addons .fs-cards-list .fs-card{height:265px}}/*# sourceMappingURL=add-ons.css.map */ +.fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{border:1px solid #ddd;cursor:pointer;float:left;font-size:14px;height:152px;list-style:none;margin:0 0 30px 30px;padding:0;position:relative;width:310px}#fs_addons .fs-cards-list .fs-card .fs-overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;height:100%;overflow:hidden;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{left:0;position:absolute;right:0;top:0;transition:all,.15s}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{box-sizing:border-box;display:block;line-height:18px;list-style:none;padding:0 15px;width:100%}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{background-repeat:repeat-x;background-size:100% 100%;display:block;height:100px;line-height:0;margin:0;padding:0;transition:all,.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{color:#000;font-weight:700;height:18px;margin:10px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;border-top:1px solid #eee;color:#777;margin:0 0 10px;padding:10px 15px 100px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{background:#adff2f;box-shadow:1px 1px 1px rgba(0,0,0,.3);display:block;font-size:.9em;font-weight:700;padding:2px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;right:10px;top:112px}@media screen and (min-width:960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title{color:#29abe1}}#TB_window,#TB_window iframe{width:821px!important}#plugin-information .fyi{width:266px!important}#plugin-information #section-holder{clear:none;margin-right:299px}#plugin-information #section-description b,#plugin-information #section-description blockquote,#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description i,#plugin-information #section-description li,#plugin-information #section-description ol,#plugin-information #section-description p,#plugin-information #section-description ul{clear:none}#plugin-information #section-description iframe{max-width:100%}#plugin-information #section-description .fs-selling-points{border-bottom:1px solid #ddd;padding-bottom:10px}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{list-style:none outside none;padding:0}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;float:left;font-size:3em;line-height:30px;margin:0 0 0 -15px;vertical-align:middle}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px!important}#plugin-information #section-description .fs-screenshots:after{clear:both;content:"";display:table}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{box-sizing:content-box;float:left;height:225px;margin-bottom:20px;width:225px}#plugin-information #section-description .fs-screenshots ul li a{background-size:cover;border:1px solid;box-shadow:1px 1px 1px rgba(0,0,0,.2);display:block;height:100%;width:100%}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{border-bottom:1px solid #ddd;margin:-16px}#plugin-information .plugin-information-pricing .fs-plan h3{font-size:16px;margin-top:0;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;font-size:.9em;padding:0 10px;position:relative}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{background:#adff2f;border:1px solid #006400;bottom:100%;color:green;font-size:.9em;left:-1px;line-height:1em;padding:2px;position:absolute;right:-1px;text-align:center;text-transform:uppercase}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{background:#fffeec;border-bottom-color:#fffeec;cursor:default}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;color:#0073aa;margin:0;padding-bottom:0}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{font-size:1.1em;font-weight:700;text-align:center;text-transform:uppercase;width:100%}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount,#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency{background:#f3f3f3;border:1px solid #ccc;display:block;font-weight:700;margin-bottom:10px;padding:2px;text-align:center;text-transform:uppercase}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{background:#adff2f;color:green;text-transform:none}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{border-collapse:separate;border-spacing:0;width:100%}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;display:block;font-weight:400;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;color:#71ae00;padding:10px 0;text-align:center;width:100px}#plugin-information #section-features table tbody td:first-child{color:inherit;padding-left:26px;text-align:left;width:auto}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{font-size:30px;height:30px;width:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;right:0;top:0;width:auto}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #fff;position:relative;top:12px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{background-color:#fff;border:1px solid #bfbfbf;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:auto;padding:3px 0;position:absolute;right:-1px;text-align:left;top:100%;width:230px;z-index:1}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:400;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{bottom:100%;margin-bottom:2px;top:auto}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{display:table;text-align:center}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer .fs-dropdown,#plugin-information-footer>.button{position:relative;top:3px}#plugin-information-footer .fs-dropdown.left,#plugin-information-footer>.button.left{float:left}#plugin-information-footer .fs-dropdown,#plugin-information-footer>.right{float:right}@media screen and (max-width:961px){#fs_addons .fs-cards-list .fs-card{height:265px}} \ No newline at end of file diff --git a/freemius/assets/css/admin/affiliation.css b/freemius/assets/css/admin/affiliation.css index 8b2aabb54..86c92504b 100644 --- a/freemius/assets/css/admin/affiliation.css +++ b/freemius/assets/css/admin/affiliation.css @@ -1 +1 @@ -#fs_affiliation_content_wrapper #messages{margin-top:25px}#fs_affiliation_content_wrapper h3{font-size:24px;padding:0;margin-left:0}#fs_affiliation_content_wrapper ul li{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;list-style-type:none}#fs_affiliation_content_wrapper ul li:before{content:"✓";margin-right:10px;font-weight:bold}#fs_affiliation_content_wrapper p:not(.description),#fs_affiliation_content_wrapper li,#fs_affiliation_content_wrapper label{font-size:16px !important;line-height:26px !important}#fs_affiliation_content_wrapper .button{margin-top:20px;margin-bottom:7px;line-height:35px;height:40px;font-size:16px}#fs_affiliation_content_wrapper .button#cancel_button{margin-right:5px}#fs_affiliation_content_wrapper form .input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form .input-container .input-label{font-weight:bold;display:block;width:100%}#fs_affiliation_content_wrapper form .input-container.input-container-text label,#fs_affiliation_content_wrapper form .input-container.input-container-text input,#fs_affiliation_content_wrapper form .input-container.input-container-text textarea{display:block}#fs_affiliation_content_wrapper form .input-container #add_domain,#fs_affiliation_content_wrapper form .input-container .remove-domain{text-decoration:none;display:inline-block;margin-top:3px}#fs_affiliation_content_wrapper form .input-container #add_domain:focus,#fs_affiliation_content_wrapper form .input-container .remove-domain:focus{box-shadow:none}#fs_affiliation_content_wrapper form .input-container #add_domain.disabled,#fs_affiliation_content_wrapper form .input-container .remove-domain.disabled{color:#aaa;cursor:default}#fs_affiliation_content_wrapper form #extra_domains_container .description{margin-top:0;position:relative;top:-4px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain{display:inline-block;margin-right:5px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain:last-of-type{margin-bottom:0}/*# sourceMappingURL=affiliation.css.map */ +#fs_affiliation_content_wrapper #messages{margin-top:25px}#fs_affiliation_content_wrapper h3{font-size:24px;margin-left:0;padding:0}#fs_affiliation_content_wrapper ul li{box-sizing:border-box;list-style-type:none}#fs_affiliation_content_wrapper ul li:before{content:"✓";font-weight:700;margin-right:10px}#fs_affiliation_content_wrapper label,#fs_affiliation_content_wrapper li,#fs_affiliation_content_wrapper p:not(.description){font-size:16px!important;line-height:26px!important}#fs_affiliation_content_wrapper .button{font-size:16px;height:40px;line-height:35px;margin-bottom:7px;margin-top:20px}#fs_affiliation_content_wrapper .button#cancel_button{margin-right:5px}#fs_affiliation_content_wrapper form .input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form .input-container .input-label{display:block;font-weight:700;width:100%}#fs_affiliation_content_wrapper form .input-container.input-container-text input,#fs_affiliation_content_wrapper form .input-container.input-container-text label,#fs_affiliation_content_wrapper form .input-container.input-container-text textarea{display:block}#fs_affiliation_content_wrapper form .input-container #add_domain,#fs_affiliation_content_wrapper form .input-container .remove-domain{display:inline-block;margin-top:3px;text-decoration:none}#fs_affiliation_content_wrapper form .input-container #add_domain:focus,#fs_affiliation_content_wrapper form .input-container .remove-domain:focus{box-shadow:none}#fs_affiliation_content_wrapper form .input-container #add_domain.disabled,#fs_affiliation_content_wrapper form .input-container .remove-domain.disabled{color:#aaa;cursor:default}#fs_affiliation_content_wrapper form #extra_domains_container .description{margin-top:0;position:relative;top:-4px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain{display:inline-block;margin-right:5px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain:last-of-type{margin-bottom:0} \ No newline at end of file diff --git a/freemius/assets/css/admin/checkout.css b/freemius/assets/css/admin/checkout.css index 1f187e661..26d74ca5d 100644 --- a/freemius/assets/css/admin/checkout.css +++ b/freemius/assets/css/admin/checkout.css @@ -1 +1 @@ -@media screen and (max-width: 782px){#wpbody-content{padding-bottom:0 !important}}/*# sourceMappingURL=checkout.css.map */ +@media screen and (max-width:782px){#wpbody-content{padding-bottom:0!important}} \ No newline at end of file diff --git a/freemius/assets/css/admin/clone-resolution.css b/freemius/assets/css/admin/clone-resolution.css index 608c6e42f..bb4b2f420 100644 --- a/freemius/assets/css/admin/clone-resolution.css +++ b/freemius/assets/css/admin/clone-resolution.css @@ -1 +1 @@ -.fs-notice[data-id^=clone_resolution_options_notice]{padding:0;color:inherit !important}.fs-notice[data-id^=clone_resolution_options_notice] .fs-notice-body{padding:0;margin-bottom:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-notice-header{padding:5px 10px}.fs-notice[data-id^=clone_resolution_options_notice] ol{margin-top:0;margin-bottom:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-options-container{display:flex;flex-direction:row;padding:0 10px 10px}@media(max-width: 750px){.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-options-container{flex-direction:column}}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option{border:1px solid #ccc;padding:10px 10px 15px 10px;flex:auto;margin:5px}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option:first-child{margin-left:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option:last-child{margin-right:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option strong{font-size:1.2em;padding:2px;line-height:1.5em}.fs-notice[data-id^=clone_resolution_options_notice] a{text-decoration:none}.fs-notice[data-id^=clone_resolution_options_notice] .button{margin-right:10px}.rtl .fs-notice[data-id^=clone_resolution_options_notice] .button{margin-right:0;margin-left:10px}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-documentation-container{padding:0 10px 15px}.fs-notice[data-id=temporary_duplicate_notice] #fs_clone_resolution_error_message{border:1px solid #d3135a;background:#fee;color:#d3135a;padding:10px}.fs-notice[data-id=temporary_duplicate_notice] ol{margin-top:0}.fs-notice[data-id=temporary_duplicate_notice] a{position:relative}.fs-notice[data-id=temporary_duplicate_notice] a:focus{box-shadow:none}.fs-notice[data-id=temporary_duplicate_notice] a.disabled{color:gray}.fs-notice[data-id=temporary_duplicate_notice] a .fs-ajax-spinner{position:absolute;left:8px;right:0;top:-1px;bottom:0;margin-left:100%}/*# sourceMappingURL=clone-resolution.css.map */ +.fs-notice[data-id^=clone_resolution_options_notice]{color:inherit!important;padding:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-notice-body{margin-bottom:0;padding:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-notice-header{padding:5px 10px}.fs-notice[data-id^=clone_resolution_options_notice] ol{margin-bottom:0;margin-top:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-options-container{display:flex;flex-direction:row;padding:0 10px 10px}@media(max-width:750px){.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-options-container{flex-direction:column}}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option{border:1px solid #ccc;flex:auto;margin:5px;padding:10px 10px 15px}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option:first-child{margin-left:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option:last-child{margin-right:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-resolution-option strong{font-size:1.2em;line-height:1.5em;padding:2px}.fs-notice[data-id^=clone_resolution_options_notice] a{text-decoration:none}.fs-notice[data-id^=clone_resolution_options_notice] .button{margin-right:10px}.rtl .fs-notice[data-id^=clone_resolution_options_notice] .button{margin-left:10px;margin-right:0}.fs-notice[data-id^=clone_resolution_options_notice] .fs-clone-documentation-container{padding:0 10px 15px}.fs-notice[data-id=temporary_duplicate_notice] #fs_clone_resolution_error_message{background:#fee;border:1px solid #d3135a;color:#d3135a;padding:10px}.fs-notice[data-id=temporary_duplicate_notice] ol{margin-top:0}.fs-notice[data-id=temporary_duplicate_notice] a{position:relative}.fs-notice[data-id=temporary_duplicate_notice] a:focus{box-shadow:none}.fs-notice[data-id=temporary_duplicate_notice] a.disabled{color:gray}.fs-notice[data-id=temporary_duplicate_notice] a .fs-ajax-spinner{bottom:0;left:8px;margin-left:100%;position:absolute;right:0;top:-1px} \ No newline at end of file diff --git a/freemius/assets/css/admin/common.css b/freemius/assets/css/admin/common.css old mode 100644 new mode 100755 index 4801111c7..fae281017 --- a/freemius/assets/css/admin/common.css +++ b/freemius/assets/css/admin/common.css @@ -1 +1 @@ -.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3)}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{position:relative;top:0;margin-top:10px;text-align:center}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{position:relative;display:inline-block;color:#ccc;text-shadow:0 1px 1px rgba(255,255,255,.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);background:#ececec;box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);cursor:pointer}.fs-switch span{display:inline-block;width:35px;text-transform:uppercase}.fs-switch .fs-toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.3);border-radius:4px;background:#fff;background-color:#fff;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(1, #fff));background-image:-webkit-linear-gradient(top, #ececec, #fff);background-image:-moz-linear-gradient(top, #ececec, #fff);background-image:-ms-linear-gradient(top, #ececec, #fff);background-image:-o-linear-gradient(top, #ececec, #fff);background-image:linear-gradient(top, bottom, #ececec, #fff);box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);z-index:999;-moz-transition:.4s cubic-bezier(0.54, 1.6, 0.5, 1);-o-transition:.4s cubic-bezier(0.54, 1.6, 0.5, 1);-ms-transition:.4s cubic-bezier(0.54, 1.6, 0.5, 1);-webkit-transition:.4s cubic-bezier(0.54, 1.6, 0.5, 1);transition:.4s cubic-bezier(0.54, 1.6, 0.5, 1)}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{top:8px;padding:4px 25px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round .fs-toggle{top:0;width:24px;height:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{top:0;width:18px;height:18px;-moz-border-radius:18px;-webkit-border-radius:18px;border-radius:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait !important}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}#fs_connect .fs-error ol,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error ol,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error ol,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-details{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{text-decoration:none;color:#2271b1;box-shadow:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;padding:5px;overflow:auto;max-height:150px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,.3);box-shadow:0 2px 2px rgba(6,113,6,.3);opacity:.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 1250px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain;margin-bottom:-2px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px}/*# sourceMappingURL=common.css.map */ +.fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{margin-top:10px;position:relative;text-align:center;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{background:#ececec;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);color:#ccc;cursor:pointer;display:inline-block;height:18px;padding:6px 6px 5px;position:relative;text-shadow:0 1px 1px hsla(0,0%,100%,.8)}.fs-switch span{display:inline-block;text-transform:uppercase;width:35px}.fs-switch .fs-toggle{background-color:#fff;background-image:linear-gradient(180deg,#ececec,#fff);border:1px solid rgba(0,0,0,.3);border-radius:4px;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.5);height:25px;position:absolute;top:1px;transition:.4s cubic-bezier(.54,1.6,.5,1);width:37px;z-index:999}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{border-radius:24px;padding:4px 25px;top:8px}.fs-switch.fs-round .fs-toggle{border-radius:24px;height:24px;top:0;width:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{border-radius:18px;height:18px;top:0;width:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait!important}#fs_frame{font-size:0;line-height:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{background-color:#f2fcff!important;border-color:#00a0d2!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{color:#aaa;cursor:pointer;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{display:inline-block;margin-top:7px}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);border-radius:0 0 3px 3px;bottom:auto;color:#fff;cursor:auto;font-size:12px;font-weight:700;left:10px;padding:2px 10px;position:absolute;right:auto;top:100%}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}#fs_connect .fs-error .fs-api-request-error-details,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error ol,.fs-modal .notice-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error ol,.fs-notice.error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error ol{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{box-shadow:none;color:#2271b1;text-decoration:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;max-height:150px;overflow:auto;padding:5px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{background:#ebfdeb;box-shadow:0 2px 2px rgba(6,113,6,.3);color:green;filter:alpha(opacity=95);left:160px;opacity:.95;padding:10px 20px;position:fixed;right:0;top:32px;z-index:9999}.fs-secure-notice:hover{filter:alpha(opacity=100);opacity:1}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:1250px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;text-align:center;top:46px}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain;border:0;display:inline-block;height:20px;margin-bottom:-2px;margin-right:5px;vertical-align:sub;width:20px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{background-color:#d54e21;border:0;color:#f9f9f9;margin-top:10px;padding:10px} \ No newline at end of file diff --git a/freemius/assets/css/admin/connect.css b/freemius/assets/css/admin/connect.css index 110013d42..c73ec8757 100755 --- a/freemius/assets/css/admin/connect.css +++ b/freemius/assets/css/admin/connect.css @@ -1 +1 @@ -.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .dashicons{float:none !important}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:rgba(0,0,0,.8);color:#fff !important;font-family:"arial",serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:-17px;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:bold;text-align:left;text-transform:none !important}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right;left:auto;right:-17px}.fs-tooltip-trigger .fs-tooltip::after{content:" ";display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,.8) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_connect{width:484px;margin:60px auto 20px auto}#fs_connect a{color:inherit}#fs_connect a:not(.button){text-decoration:underline}#fs_connect .fs-box-container{box-shadow:0 1px 2px rgba(0,0,0,.3);border-radius:3px;overflow:hidden;padding-top:40px;background:#f0f0f1}@media screen and (max-width: 483px){#fs_connect{width:auto;margin:30px 0 0 -10px}#fs_connect .fs-box-container{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}}#fs_connect .fs-content{background:#fff;padding:30px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content h2{line-height:1.5em}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key .fs-content{padding-bottom:10px}#fs_connect.require-license-key .fs-actions{border-top:none}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#fff;border-width:1px 0;border-style:solid;border-color:#f1f1f1}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:" ➜"}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:""}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#fff;-moz-transition:background .5s ease;-o-transition:background .5s ease;-ms-transition:background .5s ease;-webkit-transition:background .5s ease;transition:background .5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions>.fs-trigger{font-size:.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions>.fs-trigger .fs-arrow::after{content:"→";width:20px;display:inline-block}#fs_connect .fs-permissions.fs-open>.fs-trigger .fs-arrow::after{content:"↓" !important}#fs_connect .fs-permissions ul li{padding-left:0;padding-right:0}@media screen and (max-width: 483px){#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:inherit;text-decoration:underline}#fs_connect .fs-header{padding:0;line-height:0;height:0;position:relative}#fs_connect .fs-header .fs-site-icon,#fs_connect .fs-header .fs-connect-logo{position:absolute;top:-8px;border-radius:50%}#fs_connect .fs-header .fs-site-icon{left:152px}#fs_connect .fs-header .fs-connect-logo{right:152px}#fs_connect .fs-header .fs-site-icon,#fs_connect .fs-header img,#fs_connect .fs-header object{width:50px;height:50px;border-radius:50%}#fs_connect .fs-header .fs-plugin-icon{position:absolute;overflow:hidden;top:-23px;left:50%;margin-left:-44px;border-radius:50%;z-index:1}#fs_connect .fs-header .fs-plugin-icon,#fs_connect .fs-header .fs-plugin-icon img{width:80px;height:80px}#fs_connect .fs-header .dashicons-wordpress-alt{font-size:40px;background:#01749a;color:#fff;width:40px;height:40px;padding:5px;border-radius:50%}#fs_connect .fs-header .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-header .dashicons-plus.fs-first{left:28%}#fs_connect .fs-header .dashicons-plus.fs-second{left:65%}#fs_connect .fs-header .fs-plugin-icon,#fs_connect .fs-header .fs-connect-logo,#fs_connect .fs-header .fs-site-icon{border:1px solid #efefef;padding:3px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:.85em;padding:10px 5px}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.fs-multisite-options-container{margin-top:20px;border:1px solid #ccc;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:bold}.fs-multisite-options-container.fs-apply-on-all-sites{border:0 none;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect{border-radius:3px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#c0c7ca}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:" »"}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:""}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-header .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-header .fs-connect-logo{right:auto;left:20px}.rtl #fs_connect .fs-permissions>.fs-trigger .fs-arrow::after{content:"←"}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:#fff;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:rgba(0,0,0,0);top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:0;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}#license_issues_link{display:block;text-align:center;font-size:.9em;margin-top:10px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .dashicons{float:none !important}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:rgba(0,0,0,.8);color:#fff !important;font-family:"arial",serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:-17px;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:bold;text-align:left;text-transform:none !important}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right;left:auto;right:-17px}.fs-tooltip-trigger .fs-tooltip::after{content:" ";display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,.8) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}.fs-permissions .fs-permission.fs-disabled{color:#aaa}.fs-permissions .fs-permission.fs-disabled .fs-permission-description span{color:#aaa}.fs-permissions .fs-permission .fs-switch-feedback{position:absolute;right:15px;top:52px}.fs-permissions ul{height:0;overflow:hidden;margin:0}.fs-permissions ul li{padding:17px 15px;margin:0;position:relative}.fs-permissions ul li>i.dashicons{float:left;font-size:30px;width:30px;height:30px;padding:5px}.fs-permissions ul li .fs-switch{float:right}.fs-permissions ul li .fs-permission-description{margin-left:55px}.fs-permissions ul li .fs-permission-description span{font-size:14px;font-weight:500;color:#23282d}.fs-permissions ul li .fs-permission-description .fs-tooltip{font-size:13px;font-weight:bold}.fs-permissions ul li .fs-permission-description .fs-tooltip-trigger .dashicons{margin:-1px 2px 0 2px}.fs-permissions ul li .fs-permission-description p{margin:2px 0 0 0}.fs-permissions.fs-open{background:#fff}.fs-permissions.fs-open ul{overflow:initial;height:auto;margin:20px 0 10px 0}.fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-right:10px}.fs-permissions .fs-switch-feedback.success{color:#71ae00}.rtl .fs-permissions .fs-switch-feedback{right:auto;left:15px}.rtl .fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-left:10px;margin-right:0}.rtl .fs-permissions ul li .fs-permission-description{margin-right:55px;margin-left:0}.rtl .fs-permissions ul li .fs-switch{float:left}.rtl .fs-permissions ul li i.dashicons{float:right}/*# sourceMappingURL=connect.css.map */ +#fs_connect{margin:60px auto 20px;width:484px}#fs_connect a{color:inherit}#fs_connect a:not(.button){text-decoration:underline}#fs_connect .fs-box-container{background:#f0f0f1;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.3);overflow:hidden;padding-top:40px}@media screen and (max-width:483px){#fs_connect{margin:30px 0 0 -10px;width:auto}#fs_connect .fs-box-container{box-shadow:none}}#fs_connect .fs-content{background:#fff;padding:30px 20px}#fs_connect .fs-content .fs-error{background:snow;border:1px solid #d3135a;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);color:#d3135a;margin-bottom:10px;padding:5px;text-align:center}#fs_connect .fs-content h2{line-height:1.5em}#fs_connect .fs-content p{font-size:1.2em;margin:0;padding:0}#fs_connect .fs-license-key-container{margin:10px auto 0;position:relative;width:280px}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;right:5px;top:5px}#fs_connect.require-license-key .fs-content{padding-bottom:10px}#fs_connect.require-license-key .fs-actions{border-top:none}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{border-bottom:1px dashed;float:right;font-weight:700;height:26px;line-height:37px;margin-right:15px;text-decoration:none;vertical-align:middle}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{background:#fff;border-color:#f1f1f1;border-style:solid;border-width:1px 0;padding:10px 20px}#fs_connect .fs-actions .button{font-size:16px;height:37px;line-height:35px;margin-bottom:0;padding:0 10px 1px}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-left:15px;padding-right:15px}#fs_connect .fs-actions .button.button-primary:after{content:" ➜"}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:""}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{background:#fff;padding:10px 20px;transition:background .5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{margin-top:0;text-align:center}#fs_connect .fs-permissions>.fs-trigger{display:block;font-size:.9em;text-align:center;text-decoration:none}#fs_connect .fs-permissions>.fs-trigger .fs-arrow:after{content:"→";display:inline-block;width:20px}#fs_connect .fs-permissions.fs-open>.fs-trigger .fs-arrow:after{content:"↓"!important}#fs_connect .fs-permissions ul li{padding-left:0;padding-right:0}@media screen and (max-width:483px){#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{background:#777;color:#fff;padding:8px}#fs_connect .fs-freemium-licensing p{display:block;margin:0;padding:0;text-align:center}#fs_connect .fs-freemium-licensing a{color:inherit;text-decoration:underline}#fs_connect .fs-header{height:0;line-height:0;padding:0;position:relative}#fs_connect .fs-header .fs-connect-logo,#fs_connect .fs-header .fs-site-icon{border-radius:50%;position:absolute;top:-8px}#fs_connect .fs-header .fs-site-icon{left:152px}#fs_connect .fs-header .fs-connect-logo{right:152px}#fs_connect .fs-header .fs-site-icon,#fs_connect .fs-header img,#fs_connect .fs-header object{border-radius:50%;height:50px;width:50px}#fs_connect .fs-header .fs-plugin-icon{border-radius:50%;left:50%;margin-left:-44px;overflow:hidden;position:absolute;top:-23px;z-index:1}#fs_connect .fs-header .fs-plugin-icon,#fs_connect .fs-header .fs-plugin-icon img{height:80px;width:80px}#fs_connect .fs-header .dashicons-wordpress-alt{background:#01749a;border-radius:50%;color:#fff;font-size:40px;height:40px;padding:5px;width:40px}#fs_connect .fs-header .dashicons-plus{color:#bbb;font-size:30px;margin-top:-10px;position:absolute;top:50%}#fs_connect .fs-header .dashicons-plus.fs-first{left:28%}#fs_connect .fs-header .dashicons-plus.fs-second{left:65%}#fs_connect .fs-header .fs-connect-logo,#fs_connect .fs-header .fs-plugin-icon,#fs_connect .fs-header .fs-site-icon{background:#fff;border:1px solid #efefef;padding:3px}#fs_connect .fs-terms{font-size:.85em;padding:10px 5px;text-align:center}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.fs-multisite-options-container{border:1px solid #ccc;margin-top:20px;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:700}.fs-multisite-options-container.fs-apply-on-all-sites{border:0;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}#fs_marketing_optin{border:1px solid #ccc;display:none;line-height:1.5em;margin-top:10px;padding:10px}#fs_marketing_optin .fs-message{display:block;font-size:1.05em;font-weight:600;margin-bottom:5px}#fs_marketing_optin.error{background:#fee;border:1px solid #d3135a}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{display:block;margin-top:5px}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect{border-radius:3px}.rtl #fs_connect .fs-actions{background:#c0c7ca;padding:10px 20px}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:" »"}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:""}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-header .fs-site-icon{left:auto;right:20px}.rtl #fs_connect .fs-header .fs-connect-logo{left:20px;right:auto}.rtl #fs_connect .fs-permissions>.fs-trigger .fs-arrow:after{content:"←"}#fs_theme_connect_wrapper{background:rgba(0,0,0,.75);height:100%;overflow-y:auto;position:fixed;text-align:center;top:0;width:100%;z-index:99990}#fs_theme_connect_wrapper:before{content:"";display:inline-block;height:100%;vertical-align:middle}#fs_theme_connect_wrapper>button.close{background-color:transparent;border:0;color:#fff;cursor:pointer;height:40px;position:absolute;right:0;top:32px;width:40px}#fs_theme_connect_wrapper #fs_connect{display:inline-block;margin-bottom:20px;margin-top:0;text-align:left;top:0;vertical-align:middle}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{box-shadow:none;margin:0}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}#license_issues_link{display:block;font-size:.9em;margin-top:10px;text-align:center}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .dashicons{float:none!important}.fs-tooltip-trigger .fs-tooltip{background:rgba(0,0,0,.8);border-radius:5px;bottom:100%;box-shadow:1px 1px 1px rgba(0,0,0,.2);color:#fff!important;font-family:arial,serif;font-size:12px;font-weight:700;left:-17px;line-height:1.3em;margin-bottom:5px;opacity:0;padding:10px;position:absolute;right:0;text-align:left;text-transform:none!important;transition:opacity .3s ease-in-out;visibility:hidden;z-index:999999}.rtl .fs-tooltip-trigger .fs-tooltip{left:auto;right:-17px;text-align:right}.fs-tooltip-trigger .fs-tooltip:after{border-color:rgba(0,0,0,.8) transparent transparent;border-style:solid;border-width:5px 5px 0;content:" ";display:block;height:0;left:21px;position:absolute;top:100%;width:0}.rtl .fs-tooltip-trigger .fs-tooltip:after{left:auto;right:21px}.fs-tooltip-trigger:hover .fs-tooltip{opacity:1;visibility:visible}.fs-permissions .fs-permission.fs-disabled,.fs-permissions .fs-permission.fs-disabled .fs-permission-description span{color:#aaa}.fs-permissions .fs-permission .fs-switch-feedback{position:absolute;right:15px;top:52px}.fs-permissions ul{height:0;margin:0;overflow:hidden}.fs-permissions ul li{margin:0;padding:17px 15px;position:relative}.fs-permissions ul li>i.dashicons{float:left;font-size:30px;height:30px;padding:5px;width:30px}.fs-permissions ul li .fs-switch{float:right}.fs-permissions ul li .fs-permission-description{margin-left:55px}.fs-permissions ul li .fs-permission-description span{color:#23282d;font-size:14px;font-weight:500}.fs-permissions ul li .fs-permission-description .fs-tooltip{font-size:13px;font-weight:700}.fs-permissions ul li .fs-permission-description .fs-tooltip-trigger .dashicons{margin:-1px 2px 0}.fs-permissions ul li .fs-permission-description p{margin:2px 0 0}.fs-permissions.fs-open{background:#fff}.fs-permissions.fs-open ul{height:auto;margin:20px 0 10px;overflow:initial}.fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-right:10px}.fs-permissions .fs-switch-feedback.success{color:#71ae00}.rtl .fs-permissions .fs-switch-feedback{left:15px;right:auto}.rtl .fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-left:10px;margin-right:0}.rtl .fs-permissions ul li .fs-permission-description{margin-left:0;margin-right:55px}.rtl .fs-permissions ul li .fs-switch{float:left}.rtl .fs-permissions ul li i.dashicons{float:right} \ No newline at end of file diff --git a/freemius/assets/css/admin/debug.css b/freemius/assets/css/admin/debug.css index c56bddffe..84d9404fe 100644 --- a/freemius/assets/css/admin/debug.css +++ b/freemius/assets/css/admin/debug.css @@ -1 +1 @@ -label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-switch-label{font-size:20px;line-height:31px;margin:0 5px}#fs_log_book table{font-family:Consolas,Monaco,monospace;font-size:12px}#fs_log_book table th{color:#ccc}#fs_log_book table tr{background:#232525}#fs_log_book table tr.alternate{background:#2b2b2b}#fs_log_book table tr td.fs-col--logger{color:#5a7435}#fs_log_book table tr td.fs-col--type{color:#ffc861}#fs_log_book table tr td.fs-col--function{color:#a7b7b1;font-weight:bold}#fs_log_book table tr td.fs-col--message,#fs_log_book table tr td.fs-col--message a{color:#9a73ac !important}#fs_log_book table tr td.fs-col--file{color:#d07922}#fs_log_book table tr td.fs-col--timestamp{color:#6596be}/*# sourceMappingURL=debug.css.map */ +label.fs-tag,span.fs-tag{background:#ffba00;border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-switch-label{font-size:20px;line-height:31px;margin:0 5px}#fs_log_book table{font-family:Consolas,Monaco,monospace;font-size:12px}#fs_log_book table th{color:#ccc}#fs_log_book table tr{background:#232525}#fs_log_book table tr.alternate{background:#2b2b2b}#fs_log_book table tr td.fs-col--logger{color:#5a7435}#fs_log_book table tr td.fs-col--type{color:#ffc861}#fs_log_book table tr td.fs-col--function{color:#a7b7b1;font-weight:700}#fs_log_book table tr td.fs-col--message,#fs_log_book table tr td.fs-col--message a{color:#9a73ac!important}#fs_log_book table tr td.fs-col--file{color:#d07922}#fs_log_book table tr td.fs-col--timestamp{color:#6596be} \ No newline at end of file diff --git a/freemius/assets/css/admin/dialog-boxes.css b/freemius/assets/css/admin/dialog-boxes.css index a0a228b07..c16515ac7 100644 --- a/freemius/assets/css/admin/dialog-boxes.css +++ b/freemius/assets/css/admin/dialog-boxes.css @@ -1 +1 @@ -.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,.6)}@media(min-width: 961px){.fs-modal{padding-left:160px}.rtl .fs-modal{padding-left:0;padding-right:160px}}.fs-modal .dashicons{vertical-align:middle}.fs-modal .fs-modal-dialog{background:rgba(0,0,0,0);position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media(max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:last-of-type{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}.rtl .fs-modal .fs-modal-footer{text-align:left}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media(max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:left;line-height:30px}.rtl .fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.rtl .fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:right}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:bold;padding:0 25px;margin-bottom:0}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;top:5px;position:relative}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-modal.fs-modal-license-activation .fs-modal-body input.fs-license-key{width:100%}.fs-license-options-container table,.fs-license-options-container table select,.fs-license-options-container table .fs-available-license-key{width:100%}.fs-license-options-container table td:first-child{width:1%}.fs-license-options-container table .fs-other-license-key-container label{position:relative;top:6px;float:left;margin-right:5px}.fs-license-options-container table .fs-other-license-key-container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}.fs-license-options-container table .fs-other-license-key-container div input{margin:0}.fs-sites-list-container td{cursor:pointer}.fs-modal.fs-modal-user-change .fs-modal-body input#fs_other_email_address{width:100%}.fs-user-change-options-container table{width:100%;border-collapse:collapse}.fs-user-change-options-container table tr{display:block;margin-bottom:2px}.fs-user-change-options-container table .fs-email-address-container td{display:inline-block}.fs-user-change-options-container table .fs-email-address-container input[type=radio]{margin-bottom:0;margin-top:0}.fs-user-change-options-container table .fs-other-email-address-container{width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div{display:table;width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div label,.fs-user-change-options-container table .fs-other-email-address-container>div>div{display:table-cell}.fs-user-change-options-container table .fs-other-email-address-container>div label{width:1%;padding-left:3px;padding-right:3px}.fs-user-change-options-container table .fs-other-email-address-container>div>div{width:auto}.fs-user-change-options-container table .fs-other-email-address-container>div>div input{width:100%}.fs-modal.fs-modal-developer-license-debug-mode .fs-modal-body input.fs-license-or-user-key{width:100%}.fs-multisite-options-container{margin-top:20px;border:1px solid #ccc;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:bold}.fs-multisite-options-container.fs-apply-on-all-sites{border:0 none;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media(max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-modal.fs-modal-email-address-update .fs-modal-body input[type=text]{width:100%}.fs-modal.fs-modal-email-address-update p{margin-bottom:0}.fs-modal.fs-modal-email-address-update ul{margin:1em .5em}.fs-modal.fs-modal-email-address-update ul li label span{float:left;margin-top:0}.fs-modal.fs-modal-email-address-update ul li label span:last-child{display:block;float:none;margin-left:20px}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:.3;-o-transform:.3;-ms-transform:.3;-webkit-transform:.3;transform:.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}.button-primary.warn{box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c;background:#f56a48;border-color:#ec6544 #d2593c #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{color:#f5b3a1 !important;background:#e76444 !important;border-color:#d85e40 !important;text-shadow:0 -1px 0 rgba(0,0,0,.1) !important}/*# sourceMappingURL=dialog-boxes.css.map */ +.fs-modal{background:rgba(0,0,0,.6);display:none;height:100%;overflow:auto;position:fixed;top:0;width:100%;z-index:100000}@media(min-width:961px){.fs-modal{padding-left:160px}.rtl .fs-modal{padding-left:0;padding-right:160px}}.fs-modal .dashicons{vertical-align:middle}.fs-modal .fs-modal-dialog{background:transparent;left:50%;margin-left:-298px;padding-bottom:30px;position:absolute;top:-100%;width:596px;z-index:100001}@media(max-width:650px){.fs-modal .fs-modal-dialog{box-sizing:border-box;margin-left:-50%;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active,.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{background:#fefefe;border:0;padding:20px}.fs-modal .fs-modal-header{background:#fbfbfb;border-bottom:1px solid #eee;margin-bottom:-10px;padding:15px 20px;position:relative}.fs-modal .fs-modal-header h4{color:#cacaca;font-size:1.2em;font-weight:700;letter-spacing:.6px;margin:0;padding:0;text-shadow:1px 1px 1px #fff;text-transform:uppercase;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{border-radius:20px;color:#bbb;cursor:pointer;padding:3px;position:absolute;right:10px;top:12px;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{background:#aaa;color:#fff}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-size:20px;font-weight:700;margin-top:0}.fs-modal .fs-modal-footer{border-top:1px solid #eee;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:last-of-type{margin:0}.fs-modal .fs-modal-panel>.notice.inline{display:none;margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{left:20px;right:auto}.rtl .fs-modal .fs-modal-footer{text-align:left}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .internal-message,.fs-modal.fs-modal-deactivation-feedback .reason-input{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea,.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;display:none;padding:7px}@media(max-width:650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:left;line-height:30px}.rtl .fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.rtl .fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:right}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0!important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{line-height:1.5em;margin-top:0}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:700;margin-bottom:0;padding:0 25px}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;position:relative;top:5px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-license-options-container table,.fs-license-options-container table .fs-available-license-key,.fs-license-options-container table select,.fs-modal.fs-modal-license-activation .fs-modal-body input.fs-license-key{width:100%}.fs-license-options-container table td:first-child{width:1%}.fs-license-options-container table .fs-other-license-key-container label{float:left;margin-right:5px;position:relative;top:6px}.fs-license-options-container table .fs-other-license-key-container div{display:block;height:30px;overflow:hidden;position:relative;top:2px;width:auto}.fs-license-options-container table .fs-other-license-key-container div input{margin:0}.fs-sites-list-container td{cursor:pointer}.fs-modal.fs-modal-user-change .fs-modal-body input#fs_other_email_address{width:100%}.fs-user-change-options-container table{border-collapse:collapse;width:100%}.fs-user-change-options-container table tr{display:block;margin-bottom:2px}.fs-user-change-options-container table .fs-email-address-container td{display:inline-block}.fs-user-change-options-container table .fs-email-address-container input[type=radio]{margin-bottom:0;margin-top:0}.fs-user-change-options-container table .fs-other-email-address-container{width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div{display:table;width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div label,.fs-user-change-options-container table .fs-other-email-address-container>div>div{display:table-cell}.fs-user-change-options-container table .fs-other-email-address-container>div label{padding-left:3px;padding-right:3px;width:1%}.fs-user-change-options-container table .fs-other-email-address-container>div>div{width:auto}.fs-modal.fs-modal-developer-license-debug-mode .fs-modal-body input.fs-license-or-user-key,.fs-user-change-options-container table .fs-other-email-address-container>div>div input{width:100%}.fs-multisite-options-container{border:1px solid #ccc;margin-top:20px;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:700}.fs-multisite-options-container.fs-apply-on-all-sites{border:0;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media(max-width:650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-left:0;margin-right:7px}a.show-license-resend-modal{display:inline-block;margin-top:4px}.fs-modal.fs-modal-email-address-update .fs-modal-body input[type=text]{width:100%}.fs-modal.fs-modal-email-address-update p{margin-bottom:0}.fs-modal.fs-modal-email-address-update ul{margin:1em .5em}.fs-modal.fs-modal-email-address-update ul li label span{float:left;margin-top:0}.fs-modal.fs-modal-email-address-update ul li label span:last-child{display:block;float:none;margin-left:20px}.fs-ajax-loader{height:20px;margin:auto;position:relative;width:170px}.fs-ajax-loader .fs-ajax-loader-bar{animation-direction:normal;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-name:bounce_ajaxLoader;background-color:#0074a3;height:20px;position:absolute;top:0;transform:.3;width:20px}.fs-ajax-loader .fs-ajax-loader-bar-1{animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s;left:0}.fs-ajax-loader .fs-ajax-loader-bar-2{animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s;left:19px}.fs-ajax-loader .fs-ajax-loader-bar-3{animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s;left:38px}.fs-ajax-loader .fs-ajax-loader-bar-4{animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s;left:57px}.fs-ajax-loader .fs-ajax-loader-bar-5{animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;left:76px}.fs-ajax-loader .fs-ajax-loader-bar-6{animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s;left:95px}.fs-ajax-loader .fs-ajax-loader-bar-7{animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s;left:114px}.fs-ajax-loader .fs-ajax-loader-bar-8{animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s;left:133px}@keyframes bounce_ajaxLoader{0%{background-color:#0074a3;transform:scale(1)}to{background-color:#fff;transform:scale(.3)}}.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons,.fs-modal-auto-install #request-filesystem-credentials-form h2{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;max-width:100%;padding:10px 10px 5px;width:300px}.fs-modal-auto-install #request-filesystem-credentials-form fieldset,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form>div{display:block;margin:0 auto;max-width:100%;width:300px}.button-primary.warn{background:#f56a48;border-color:#ec6544 #d2593c #d2593c;box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{background:#e76444!important;border-color:#d85e40!important;color:#f5b3a1!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important} \ No newline at end of file diff --git a/freemius/assets/css/admin/gdpr-optin-notice.css b/freemius/assets/css/admin/gdpr-optin-notice.css index 9085c7a8e..836dcd197 100644 --- a/freemius/assets/css/admin/gdpr-optin-notice.css +++ b/freemius/assets/css/admin/gdpr-optin-notice.css @@ -1 +1 @@ -.fs-notice[data-id^=gdpr_optin_actions] .underlined{text-decoration:underline}.fs-notice[data-id^=gdpr_optin_actions] ul .button,.fs-notice[data-id^=gdpr_optin_actions] ul .action-description{vertical-align:middle}.fs-notice[data-id^=gdpr_optin_actions] ul .action-description{display:inline-block;margin-left:3px}/*# sourceMappingURL=gdpr-optin-notice.css.map */ +.fs-notice[data-id^=gdpr_optin_actions] .underlined{text-decoration:underline}.fs-notice[data-id^=gdpr_optin_actions] ul .action-description,.fs-notice[data-id^=gdpr_optin_actions] ul .button{vertical-align:middle}.fs-notice[data-id^=gdpr_optin_actions] ul .action-description{display:inline-block;margin-left:3px} \ No newline at end of file diff --git a/freemius/assets/css/admin/optout.css b/freemius/assets/css/admin/optout.css index ae885056a..922c181bd 100644 --- a/freemius/assets/css/admin/optout.css +++ b/freemius/assets/css/admin/optout.css @@ -1 +1 @@ -.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .dashicons{float:none !important}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:rgba(0,0,0,.8);color:#fff !important;font-family:"arial",serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:-17px;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:bold;text-align:left;text-transform:none !important}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right;left:auto;right:-17px}.fs-tooltip-trigger .fs-tooltip::after{content:" ";display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,.8) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}.fs-permissions .fs-permission.fs-disabled{color:#aaa}.fs-permissions .fs-permission.fs-disabled .fs-permission-description span{color:#aaa}.fs-permissions .fs-permission .fs-switch-feedback{position:absolute;right:15px;top:52px}.fs-permissions ul{height:0;overflow:hidden;margin:0}.fs-permissions ul li{padding:17px 15px;margin:0;position:relative}.fs-permissions ul li>i.dashicons{float:left;font-size:30px;width:30px;height:30px;padding:5px}.fs-permissions ul li .fs-switch{float:right}.fs-permissions ul li .fs-permission-description{margin-left:55px}.fs-permissions ul li .fs-permission-description span{font-size:14px;font-weight:500;color:#23282d}.fs-permissions ul li .fs-permission-description .fs-tooltip{font-size:13px;font-weight:bold}.fs-permissions ul li .fs-permission-description .fs-tooltip-trigger .dashicons{margin:-1px 2px 0 2px}.fs-permissions ul li .fs-permission-description p{margin:2px 0 0 0}.fs-permissions.fs-open{background:#fff}.fs-permissions.fs-open ul{overflow:initial;height:auto;margin:20px 0 10px 0}.fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-right:10px}.fs-permissions .fs-switch-feedback.success{color:#71ae00}.rtl .fs-permissions .fs-switch-feedback{right:auto;left:15px}.rtl .fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-left:10px;margin-right:0}.rtl .fs-permissions ul li .fs-permission-description{margin-right:55px;margin-left:0}.rtl .fs-permissions ul li .fs-switch{float:left}.rtl .fs-permissions ul li i.dashicons{float:right}.fs-modal-opt-out .fs-modal-footer .fs-opt-out-button{line-height:30px;margin-right:10px}.fs-modal-opt-out .fs-permissions{margin-top:0 !important}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-group-opt-out-button{float:right;line-height:1.1em}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-switch-feedback{float:right;line-height:1.1em;margin-right:10px}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-switch-feedback .fs-ajax-spinner{margin:-2px 0 0}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header-title{font-size:1.1em;font-weight:600;text-transform:uppercase;display:block;line-height:1.1em;margin:.5em 0}.fs-modal-opt-out .fs-permissions .fs-permissions-section--desc{margin-top:0}.fs-modal-opt-out .fs-permissions hr{border:0;border-top:#eee solid 1px;margin:25px 0 20px 0}.fs-modal-opt-out .fs-permissions ul{border:1px solid #c3c4c7;border-radius:3px;margin:10px 0 0 0;box-shadow:0 1px 1px rgba(0,0,0,.04)}.fs-modal-opt-out .fs-permissions ul li{border-bottom:1px solid #d7dde1;border-left:4px solid #72aee6}.rtl .fs-modal-opt-out .fs-permissions ul li{border-left:none;border-right:4px solid #72aee6}.fs-modal-opt-out .fs-permissions ul li.fs-disabled{border-left-color:rgba(114,174,230,0)}.fs-modal-opt-out .fs-permissions ul li:last-child{border-bottom:none}/*# sourceMappingURL=optout.css.map */ +.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .dashicons{float:none!important}.fs-tooltip-trigger .fs-tooltip{background:rgba(0,0,0,.8);border-radius:5px;bottom:100%;box-shadow:1px 1px 1px rgba(0,0,0,.2);color:#fff!important;font-family:arial,serif;font-size:12px;font-weight:700;left:-17px;line-height:1.3em;margin-bottom:5px;opacity:0;padding:10px;position:absolute;right:0;text-align:left;text-transform:none!important;transition:opacity .3s ease-in-out;visibility:hidden;z-index:999999}.rtl .fs-tooltip-trigger .fs-tooltip{left:auto;right:-17px;text-align:right}.fs-tooltip-trigger .fs-tooltip:after{border-color:rgba(0,0,0,.8) transparent transparent;border-style:solid;border-width:5px 5px 0;content:" ";display:block;height:0;left:21px;position:absolute;top:100%;width:0}.rtl .fs-tooltip-trigger .fs-tooltip:after{left:auto;right:21px}.fs-tooltip-trigger:hover .fs-tooltip{opacity:1;visibility:visible}.fs-permissions .fs-permission.fs-disabled,.fs-permissions .fs-permission.fs-disabled .fs-permission-description span{color:#aaa}.fs-permissions .fs-permission .fs-switch-feedback{position:absolute;right:15px;top:52px}.fs-permissions ul{height:0;margin:0;overflow:hidden}.fs-permissions ul li{margin:0;padding:17px 15px;position:relative}.fs-permissions ul li>i.dashicons{float:left;font-size:30px;height:30px;padding:5px;width:30px}.fs-permissions ul li .fs-switch{float:right}.fs-permissions ul li .fs-permission-description{margin-left:55px}.fs-permissions ul li .fs-permission-description span{color:#23282d;font-size:14px;font-weight:500}.fs-permissions ul li .fs-permission-description .fs-tooltip{font-size:13px;font-weight:700}.fs-permissions ul li .fs-permission-description .fs-tooltip-trigger .dashicons{margin:-1px 2px 0}.fs-permissions ul li .fs-permission-description p{margin:2px 0 0}.fs-permissions.fs-open{background:#fff}.fs-permissions.fs-open ul{height:auto;margin:20px 0 10px;overflow:initial}.fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-right:10px}.fs-permissions .fs-switch-feedback.success{color:#71ae00}.rtl .fs-permissions .fs-switch-feedback{left:15px;right:auto}.rtl .fs-permissions .fs-switch-feedback .fs-ajax-spinner{margin-left:10px;margin-right:0}.rtl .fs-permissions ul li .fs-permission-description{margin-left:0;margin-right:55px}.rtl .fs-permissions ul li .fs-switch{float:left}.rtl .fs-permissions ul li i.dashicons{float:right}.fs-modal-opt-out .fs-modal-footer .fs-opt-out-button{line-height:30px;margin-right:10px}.fs-modal-opt-out .fs-permissions{margin-top:0!important}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-group-opt-out-button{float:right;line-height:1.1em}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-switch-feedback{float:right;line-height:1.1em;margin-right:10px}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header .fs-switch-feedback .fs-ajax-spinner{margin:-2px 0 0}.fs-modal-opt-out .fs-permissions .fs-permissions-section--header-title{display:block;font-size:1.1em;font-weight:600;line-height:1.1em;margin:.5em 0;text-transform:uppercase}.fs-modal-opt-out .fs-permissions .fs-permissions-section--desc{margin-top:0}.fs-modal-opt-out .fs-permissions hr{border:0;border-top:1px solid #eee;margin:25px 0 20px}.fs-modal-opt-out .fs-permissions ul{border:1px solid #c3c4c7;border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:10px 0 0}.fs-modal-opt-out .fs-permissions ul li{border-bottom:1px solid #d7dde1;border-left:4px solid #72aee6}.rtl .fs-modal-opt-out .fs-permissions ul li{border-left:none;border-right:4px solid #72aee6}.fs-modal-opt-out .fs-permissions ul li.fs-disabled{border-left-color:rgba(114,174,230,0)}.fs-modal-opt-out .fs-permissions ul li:last-child{border-bottom:none} \ No newline at end of file diff --git a/freemius/assets/css/admin/plugins.css b/freemius/assets/css/admin/plugins.css index 3c786d5c7..a24b4814d 100644 --- a/freemius/assets/css/admin/plugins.css +++ b/freemius/assets/css/admin/plugins.css @@ -1 +1 @@ -label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.wp-list-table.plugins .plugin-title span.fs-tag{display:inline-block;margin-left:5px;line-height:10px}/*# sourceMappingURL=plugins.css.map */ +label.fs-tag,span.fs-tag{background:#ffba00;border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.wp-list-table.plugins .plugin-title span.fs-tag{display:inline-block;line-height:10px;margin-left:5px} \ No newline at end of file diff --git a/freemius/assets/css/customizer.css b/freemius/assets/css/customizer.css index bac44a70c..a317b5ba9 100644 --- a/freemius/assets/css/customizer.css +++ b/freemius/assets/css/customizer.css @@ -1 +1 @@ -#fs_customizer_upsell .fs-customizer-plan{padding:10px 20px 20px 20px;border-radius:3px;background:#fff}#fs_customizer_upsell .fs-customizer-plan h2{position:relative;margin:0;line-height:2em;text-transform:uppercase}#fs_customizer_upsell .fs-customizer-plan h2 .button-link{top:-2px}#fs_customizer_upsell .fs-feature{position:relative}#fs_customizer_upsell .dashicons-yes{color:#0085ba;font-size:2em;vertical-align:bottom;margin-left:-7px;margin-right:10px}.rtl #fs_customizer_upsell .dashicons-yes{margin-left:10px;margin-right:-7px}#fs_customizer_upsell .dashicons-editor-help{color:#bbb;cursor:help}#fs_customizer_upsell .dashicons-editor-help .fs-feature-desc{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:#000;color:#fff;font-family:"arial",serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:bold;text-align:left}.rtl #fs_customizer_upsell .dashicons-editor-help .fs-feature-desc{text-align:right}#fs_customizer_upsell .dashicons-editor-help .fs-feature-desc::after{content:" ";display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:#000 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:absolute;top:100%;left:21px}.rtl #fs_customizer_upsell .dashicons-editor-help .fs-feature-desc::after{right:21px;left:auto}#fs_customizer_upsell .dashicons-editor-help:hover .fs-feature-desc{visibility:visible;opacity:1}#fs_customizer_upsell .button-primary{display:block;text-align:center;margin-top:10px}#fs_customizer_support{display:block !important}#fs_customizer_support .button{float:right}#fs_customizer_support .button-group{width:100%;display:block;margin-top:10px}#fs_customizer_support .button-group .button{float:none;width:50%;text-align:center}#customize-theme-controls #accordion-section-freemius_upsell{border-top:1px solid #0085ba !important;border-bottom:1px solid #0085ba !important}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title{color:#fff;background-color:#0085ba;border-left:4px solid #0085ba;transition:.15s background-color ease-in-out,.15s border-color ease-in-out;outline:none;border-bottom:none !important}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title:hover{background-color:#008ec2;border-left-color:#0073aa}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title:after{color:#fff}#customize-theme-controls #accordion-section-freemius_upsell .rtl h3.accordion-section-title{border-left:none;border-right:4px solid #0085ba}#customize-theme-controls #accordion-section-freemius_upsell .rtl h3.accordion-section-title:hover{border-right-color:#0073aa}/*# sourceMappingURL=customizer.css.map */ +#fs_customizer_upsell .fs-customizer-plan{background:#fff;border-radius:3px;padding:10px 20px 20px}#fs_customizer_upsell .fs-customizer-plan h2{line-height:2em;margin:0;position:relative;text-transform:uppercase}#fs_customizer_upsell .fs-customizer-plan h2 .button-link{top:-2px}#fs_customizer_upsell .fs-feature{position:relative}#fs_customizer_upsell .dashicons-yes{color:#0085ba;font-size:2em;margin-left:-7px;margin-right:10px;vertical-align:bottom}.rtl #fs_customizer_upsell .dashicons-yes{margin-left:10px;margin-right:-7px}#fs_customizer_upsell .dashicons-editor-help{color:#bbb;cursor:help}#fs_customizer_upsell .dashicons-editor-help .fs-feature-desc{background:#000;border-radius:5px;bottom:100%;box-shadow:1px 1px 1px rgba(0,0,0,.2);color:#fff;font-family:arial,serif;font-size:12px;font-weight:700;left:0;line-height:1.3em;margin-bottom:5px;opacity:0;padding:10px;position:absolute;right:0;text-align:left;transition:opacity .3s ease-in-out;visibility:hidden;z-index:999999}.rtl #fs_customizer_upsell .dashicons-editor-help .fs-feature-desc{text-align:right}#fs_customizer_upsell .dashicons-editor-help .fs-feature-desc:after{border-color:#000 transparent transparent;border-style:solid;border-width:5px 5px 0;content:" ";display:block;height:0;left:21px;position:absolute;top:100%;width:0}.rtl #fs_customizer_upsell .dashicons-editor-help .fs-feature-desc:after{left:auto;right:21px}#fs_customizer_upsell .dashicons-editor-help:hover .fs-feature-desc{opacity:1;visibility:visible}#fs_customizer_upsell .button-primary{display:block;margin-top:10px;text-align:center}#fs_customizer_support{display:block!important}#fs_customizer_support .button{float:right}#fs_customizer_support .button-group{display:block;margin-top:10px;width:100%}#fs_customizer_support .button-group .button{float:none;text-align:center;width:50%}#customize-theme-controls #accordion-section-freemius_upsell{border-bottom:1px solid #0085ba!important;border-top:1px solid #0085ba!important}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title{background-color:#0085ba;border-bottom:none!important;border-left:4px solid #0085ba;color:#fff;outline:none;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title:hover{background-color:#008ec2;border-left-color:#0073aa}#customize-theme-controls #accordion-section-freemius_upsell h3.accordion-section-title:after{color:#fff}#customize-theme-controls #accordion-section-freemius_upsell .rtl h3.accordion-section-title{border-left:none;border-right:4px solid #0085ba}#customize-theme-controls #accordion-section-freemius_upsell .rtl h3.accordion-section-title:hover{border-right-color:#0073aa} \ No newline at end of file diff --git a/freemius/assets/js/nojquery.ba-postmessage.js b/freemius/assets/js/nojquery.ba-postmessage.js index aedbd81ac..d3414ff13 100755 --- a/freemius/assets/js/nojquery.ba-postmessage.js +++ b/freemius/assets/js/nojquery.ba-postmessage.js @@ -25,116 +25,4 @@ * 5. The use of `$.isFunction` is replaced by a functionally-identical check. * 6. The `$:nomunge` YUI option is no longer necessary. */ - -function NoJQueryPostMessageMixin(postBinding, receiveBinding) { - - var setMessageCallback, unsetMessageCallback, currentMsgCallback, - intervalId, lastHash, cacheBust = 1; - - if (window.postMessage) { - - if (window.addEventListener) { - setMessageCallback = function(callback) { - window.addEventListener('message', callback, false); - } - - unsetMessageCallback = function(callback) { - window.removeEventListener('message', callback, false); - } - } else { - setMessageCallback = function(callback) { - window.attachEvent('onmessage', callback); - } - - unsetMessageCallback = function(callback) { - window.detachEvent('onmessage', callback); - } - } - - this[postBinding] = function(message, targetUrl, target) { - if (!targetUrl) { - return; - } - - // The browser supports window.postMessage, so call it with a targetOrigin - // set appropriately, based on the targetUrl parameter. - target.postMessage( message, targetUrl.replace( /([^:]+:\/\/[^\/]+).*/, '$1' ) ); - } - - // Since the browser supports window.postMessage, the callback will be - // bound to the actual event associated with window.postMessage. - this[receiveBinding] = function(callback, sourceOrigin, delay) { - // Unbind an existing callback if it exists. - if (currentMsgCallback) { - unsetMessageCallback(currentMsgCallback); - currentMsgCallback = null; - } - - if (!callback) { - return false; - } - - // Bind the callback. A reference to the callback is stored for ease of - // unbinding. - currentMsgCallback = setMessageCallback(function(e) { - switch(Object.prototype.toString.call(sourceOrigin)) { - case '[object String]': - if (sourceOrigin !== e.origin) { - return false; - } - break; - case '[object Function]': - if (sourceOrigin(e.origin)) { - return false; - } - break; - } - - callback(e); - }); - }; - - } else { - - this[postBinding] = function(message, targetUrl, target) { - if (!targetUrl) { - return; - } - - // The browser does not support window.postMessage, so set the location - // of the target to targetUrl#message. A bit ugly, but it works! A cache - // bust parameter is added to ensure that repeat messages trigger the - // callback. - target.location = targetUrl.replace( /#.*$/, '' ) + '#' + (+new Date) + (cacheBust++) + '&' + message; - } - - // Since the browser sucks, a polling loop will be started, and the - // callback will be called whenever the location.hash changes. - this[receiveBinding] = function(callback, sourceOrigin, delay) { - if (intervalId) { - clearInterval(intervalId); - intervalId = null; - } - - if (callback) { - delay = typeof sourceOrigin === 'number' - ? sourceOrigin - : typeof delay === 'number' - ? delay - : 100; - - intervalId = setInterval(function(){ - var hash = document.location.hash, - re = /^#?\d+&/; - if ( hash !== lastHash && re.test( hash ) ) { - lastHash = hash; - callback({ data: hash.replace( re, '' ) }); - } - }, delay ); - } - }; - - } - - return this; -} \ No newline at end of file +function NoJQueryPostMessageMixin(n,e){var t,i,o,s,a,r=1;return window.postMessage?(window.addEventListener?(t=function(n){window.addEventListener("message",n,!1)},i=function(n){window.removeEventListener("message",n,!1)}):(t=function(n){window.attachEvent("onmessage",n)},i=function(n){window.detachEvent("onmessage",n)}),this[n]=function(n,e,t){e&&t.postMessage(n,e.replace(/([^:]+:\/\/[^\/]+).*/,"$1"))},this[e]=function(n,e,s){if(o&&(i(o),o=null),!n)return!1;o=t((function(t){switch(Object.prototype.toString.call(e)){case"[object String]":if(e!==t.origin)return!1;break;case"[object Function]":if(e(t.origin))return!1}n(t)}))}):(this[n]=function(n,e,t){e&&(t.location=e.replace(/#.*$/,"")+"#"+ +new Date+r+++"&"+n)},this[e]=function(n,e,t){s&&(clearInterval(s),s=null),n&&(t="number"==typeof e?e:"number"==typeof t?t:100,s=setInterval((function(){var e=document.location.hash,t=/^#?\d+&/;e!==a&&t.test(e)&&(a=e,n({data:e.replace(t,"")}))}),t))}),this} \ No newline at end of file diff --git a/freemius/assets/js/nojquery.ba-postmessage.min.js b/freemius/assets/js/nojquery.ba-postmessage.min.js deleted file mode 100755 index ae542d4e8..000000000 --- a/freemius/assets/js/nojquery.ba-postmessage.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * nojquery-postmessage by Jeff Lee - * a non-jQuery fork of: - * - * jQuery postMessage - v0.5 - 9/11/2009 - * http://benalman.com/projects/jquery-postmessage-plugin/ - * - * Copyright (c) 2009 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -function NoJQueryPostMessageMixin(g,a){var b,h,e,d,f,c=1;if(window.postMessage){if(window.addEventListener){b=function(i){window.addEventListener("message",i,false)};h=function(i){window.removeEventListener("message",i,false)}}else{b=function(i){window.attachEvent("onmessage",i)};h=function(i){window.detachEvent("onmessage",i)}}this[g]=function(i,k,j){if(!k){return}j.postMessage(i,k.replace(/([^:]+:\/\/[^\/]+).*/,"$1"))};this[a]=function(k,j,i){if(e){h(e);e=null}if(!k){return false}e=b(function(l){switch(Object.prototype.toString.call(j)){case"[object String]":if(j!==l.origin){return false}break;case"[object Function]":if(j(l.origin)){return false}break}k(l)})}}else{this[g]=function(i,k,j){if(!k){return}j.location=k.replace(/#.*$/,"")+"#"+(+new Date)+(c++)+"&"+i};this[a]=function(k,j,i){if(d){clearInterval(d);d=null}if(k){i=typeof j==="number"?j:typeof i==="number"?i:100;d=setInterval(function(){var m=document.location.hash,l=/^#?\d+&/;if(m!==f&&l.test(m)){f=m;k({data:m.replace(l,"")})}},i)}}}return this}; \ No newline at end of file diff --git a/freemius/assets/js/postmessage.js b/freemius/assets/js/postmessage.js index 9ec5d12ce..609cbeed6 100755 --- a/freemius/assets/js/postmessage.js +++ b/freemius/assets/js/postmessage.js @@ -1,135 +1 @@ -(function ($, undef) { - var global = this; - - // Namespace. - global.FS = global.FS || {}; - - global.FS.PostMessage = function () - { - var - _is_child = false, - _postman = new NoJQueryPostMessageMixin('postMessage', 'receiveMessage'), - _callbacks = {}, - _base_url, - _parent_url = decodeURIComponent(document.location.hash.replace(/^#/, '')), - _parent_subdomain = _parent_url.substring(0, _parent_url.indexOf('/', ('https://' === _parent_url.substring(0, ('https://').length)) ? 8 : 7)), - _init = function () { - _postman.receiveMessage(function (e) { - var data = JSON.parse(e.data); - - if (_callbacks[data.type]) { - for (var i = 0; i < _callbacks[data.type].length; i++) { - // Execute type callbacks. - _callbacks[data.type][i](data.data); - } - } - }, _base_url); - }, - _hasParent = ('' !== _parent_url), - $window = $(window), - $html = $('html'); - - return { - init : function (url, iframes) - { - _base_url = url; - _init(); - - // Automatically receive forward messages. - FS.PostMessage.receiveOnce('forward', function (data){ - window.location = data.url; - }); - - iframes = iframes || []; - - if (iframes.length > 0) { - $window.on('scroll', function () { - for (var i = 0; i < iframes.length; i++) { - FS.PostMessage.postScroll(iframes[i]); - } - }); - } - }, - init_child : function () - { - this.init(_parent_subdomain); - - _is_child = true; - - // Post height of a child right after window is loaded. - $(window).bind('load', function () { - FS.PostMessage.postHeight(); - - // Post message that window was loaded. - FS.PostMessage.post('loaded'); - }); - }, - hasParent : function () - { - return _hasParent; - }, - postHeight : function (diff, wrapper) { - diff = diff || 0; - wrapper = wrapper || '#wrap_section'; - this.post('height', { - height: diff + $(wrapper).outerHeight(true) - }); - }, - postScroll : function (iframe) { - this.post('scroll', { - top: $window.scrollTop(), - height: ($window.height() - parseFloat($html.css('paddingTop')) - parseFloat($html.css('marginTop'))) - }, iframe); - }, - post : function (type, data, iframe) - { - console.debug('PostMessage.post', type); - - if (iframe) - { - // Post to iframe. - _postman.postMessage(JSON.stringify({ - type: type, - data: data - }), iframe.src, iframe.contentWindow); - } - else { - // Post to parent. - _postman.postMessage(JSON.stringify({ - type: type, - data: data - }), _parent_url, window.parent); - } - }, - receive: function (type, callback) - { - console.debug('PostMessage.receive', type); - - if (undef === _callbacks[type]) - _callbacks[type] = []; - - _callbacks[type].push(callback); - }, - receiveOnce: function (type, callback) - { - if (this.is_set(type)) - return; - - this.receive(type, callback); - }, - // Check if any callbacks assigned to a specified message type. - is_set: function (type) - { - return (undef != _callbacks[type]); - }, - parent_url: function () - { - return _parent_url; - }, - parent_subdomain: function () - { - return _parent_subdomain; - } - }; - }(); -})(jQuery); \ No newline at end of file +!function(e,t){var s,n,o,i,r,a,c,p,u=this;u.FS=u.FS||{},u.FS.PostMessage=(n=new NoJQueryPostMessageMixin("postMessage","receiveMessage"),o={},i=decodeURIComponent(document.location.hash.replace(/^#/,"")),r=i.substring(0,i.indexOf("/","https://"===i.substring(0,8)?8:7)),a=""!==i,c=e(window),p=e("html"),{init:function(e,t){s=e,n.receiveMessage((function(e){var t=JSON.parse(e.data);if(o[t.type])for(var s=0;s0&&c.on("scroll",(function(){for(var e=0;e_get_license_by_id( $license_id, false ); + + if ( is_object( $license ) ) { + $license_key = $license->secret_key; + } + } + } + if ( empty( $license_key ) ) { exit; } @@ -14139,15 +14151,21 @@ private function activate_license( } } + $is_connected = null; + if ( true !== $result && ! FS_Api::is_api_result_entity( $result ) ) { if ( FS_Api::is_blocked( $result ) ) { $result->error->message = $this->generate_api_blocked_notice_message_from_result( $result ); + + $is_connected = false; } $error = FS_Api::is_api_error_object( $result ) ? $result->error->message : var_export( $result, true ); } else { + $is_connected = true; + $fs->network_upgrade_mode_completed(); $fs->_user = $user; @@ -14164,6 +14182,8 @@ private function activate_license( $fs->get_parent_instance()->get_account_url() : $fs->get_after_activation_url( 'after_connect_url' ); } + + $fs->update_connectivity_info( $is_connected ); } else { $next_page = $fs->opt_in( false, @@ -24090,7 +24110,7 @@ function _add_trial_notice() { if ( $this->is_registered() ) { // If opted-in, override trial with up to date data from API. - $trial_plans = FS_Plan_Manager::instance()->get_trial_plans( $this->_plans ); + $trial_plans = FS_Plan_Manager::instance()->get_visible_trial_plans( $this->_plans ); $trial_plans_count = count( $trial_plans ); if ( 0 === $trial_plans_count ) { diff --git a/freemius/includes/class-fs-garbage-collector.php b/freemius/includes/class-fs-garbage-collector.php index 1d40d821c..76fd192f0 100755 --- a/freemius/includes/class-fs-garbage-collector.php +++ b/freemius/includes/class-fs-garbage-collector.php @@ -59,7 +59,9 @@ function clean() { $options = $this->load_options(); $has_updated_option = false; - $products_to_clean = $this->get_products_to_clean(); + $filtered_products = $this->get_filtered_products(); + $products_to_clean = $filtered_products['products_to_clean']; + $active_products_by_id_map = $filtered_products['active_products_by_id_map']; foreach( $products_to_clean as $product ) { $slug = $product->slug; @@ -85,10 +87,25 @@ function clean() { } else if ( array_key_exists( "{$slug}:{$this->_type}", $option ) ) { /* admin_notices */ unset( $option[ "{$slug}:{$this->_type}" ] ); $updated = true; - } else if ( isset( $product->id ) && array_key_exists( $product->id, $option ) ) { /* all_licenses */ - unset( $option[ $product->id ] ); - $updated = true; - } else if ( isset( $product->file ) && array_key_exists( $product->file, $option ) ) { /* file_slug_map */ + } else if ( isset( $product->id ) && array_key_exists( $product->id, $option ) ) { /* all_licenses, add-ons, and id_slug_type_path_map */ + $is_inactive_by_id = ! isset( $active_products_by_id_map[ $product->id ] ); + $is_inactive_by_slug = ( + 'id_slug_type_path_map' === $option_name && + ( + ! isset( $option[ $product->id ]['slug'] ) || + $slug === $option[ $product->id ]['slug'] + ) + ); + + if ( $is_inactive_by_id || $is_inactive_by_slug ) { + unset( $option[ $product->id ] ); + $updated = true; + } + } else if ( /* file_slug_map */ + isset( $product->file ) && + array_key_exists( $product->file, $option ) && + $slug === $option[ $product->file ] + ) { unset( $option[ $product->file ] ); $updated = true; } @@ -145,6 +162,12 @@ private function get_products() { if ( ! isset( $products[ $slug ] ) ) { $products[ $slug ] = (object) $product_data; } + + // This is needed to handle a scenario in which there are duplicate sets of data for the same product, but one of them needs to be removed. + $products[ $slug ] = clone $products[ $slug ]; + + // The reason for having the line above. This also handles a scenario in which the slug is either empty or not empty but incorrect. + $products[ $slug ]->slug = $slug; } $this->update_gc_timestamp( $products ); @@ -152,8 +175,9 @@ private function get_products() { return $products; } - private function get_products_to_clean() { - $products_to_clean = array(); + private function get_filtered_products() { + $products_to_clean = array(); + $active_products_by_id_map = array(); $products = $this->get_products(); @@ -163,6 +187,7 @@ private function get_products_to_clean() { } if ( $this->is_product_active( $slug ) ) { + $active_products_by_id_map[ $product_data->id ] = true; continue; } @@ -178,7 +203,10 @@ private function get_products_to_clean() { } } - return $products_to_clean; + return array( + 'products_to_clean' => $products_to_clean, + 'active_products_by_id_map' => $active_products_by_id_map, + ); } /** diff --git a/freemius/includes/entities/class-fs-plugin-license.php b/freemius/includes/entities/class-fs-plugin-license.php index e945e51ed..82a94379b 100755 --- a/freemius/includes/entities/class-fs-plugin-license.php +++ b/freemius/includes/entities/class-fs-plugin-license.php @@ -289,6 +289,10 @@ function is_features_enabled() { * @return bool */ function is_first_payment_pending() { + if ( $this->is_lifetime() ) { + return false; + } + return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) ); } diff --git a/freemius/includes/entities/class-fs-plugin-plan.php b/freemius/includes/entities/class-fs-plugin-plan.php index 00a0d747b..5bc6bc2d4 100755 --- a/freemius/includes/entities/class-fs-plugin-plan.php +++ b/freemius/includes/entities/class-fs-plugin-plan.php @@ -88,6 +88,10 @@ class FS_Plugin_Plan extends FS_Entity { * @var bool Is featured plan. */ public $is_featured; + /** + * @var bool Is hidden plan. + */ + public $is_hidden; #endregion Properties diff --git a/freemius/includes/entities/class-fs-site.php b/freemius/includes/entities/class-fs-site.php index 19cca0496..f9012d056 100755 --- a/freemius/includes/entities/class-fs-site.php +++ b/freemius/includes/entities/class-fs-site.php @@ -13,6 +13,7 @@ /** * @property int $blog_id */ + #[AllowDynamicProperties] class FS_Site extends FS_Scope_Entity { /** * @var number diff --git a/freemius/includes/fs-core-functions.php b/freemius/includes/fs-core-functions.php index 0fe92f788..09bb0b48c 100755 --- a/freemius/includes/fs-core-functions.php +++ b/freemius/includes/fs-core-functions.php @@ -118,7 +118,7 @@ function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, } if ( ! function_exists( 'fs_enqueue_local_script' ) ) { - function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) { + function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = true ) { wp_enqueue_script( $handle, fs_asset_url( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ), $deps, $ver, $in_footer ); } } @@ -1502,4 +1502,4 @@ function fs_apply_filter( $module_unique_affix, $tag, $value ) { function fs_get_optional_constant( $constant_name, $default_value = null ) { return defined( $constant_name ) ? constant( $constant_name ) : $default_value; } - } \ No newline at end of file + } diff --git a/freemius/includes/managers/class-fs-plan-manager.php b/freemius/includes/managers/class-fs-plan-manager.php index 639de43e3..9becceaff 100755 --- a/freemius/includes/managers/class-fs-plan-manager.php +++ b/freemius/includes/managers/class-fs-plan-manager.php @@ -108,6 +108,7 @@ function has_free_plan( $plans ) { /** * Find all plans that have trial. + * Since 2.6.2 call get_filtered_plan * * @author Vova Feldman (@svovaf) * @since 1.0.9 @@ -117,20 +118,50 @@ function has_free_plan( $plans ) { * @return FS_Plugin_Plan[] */ function get_trial_plans( $plans ) { - $trial_plans = array(); + return $this->get_filtered_plans( $plans, true ); + } - if ( is_array( $plans ) && 0 < count( $plans ) ) { - /** - * @var FS_Plugin_Plan[] $plans - */ - for ( $i = 0, $len = count( $plans ); $i < $len; $i ++ ) { - if ( $plans[ $i ]->has_trial() ) { - $trial_plans[] = $plans[ $i ]; + /** + * Find all plans that are not hidden and have trial. + * + * @author Daniele Alessandra (@danielealessandra) + * + * @param FS_Plugin_Plan[] $plans + * + * @return FS_Plugin_Plan[] + * @since 2.6.3 + * + */ + function get_visible_trial_plans( $plans ) { + return $this->get_filtered_plans( $plans, true, true ); + } + + /** + * Find all plans filtered by trial or visibility. + * + * @author Daniele Alessandra (@danielealessandra) + * + * @param FS_Plugin_Plan[] $plans + * @param boolean $should_have_trials + * @param boolean $should_be_visible + * + * @return FS_Plugin_Plan[] + * @since 2.6.3 + * + */ + function get_filtered_plans( $plans, $should_have_trials = false, $should_be_visible = false ) { + $filtered_plans = array(); + + if ( is_array( $plans ) && count( $plans ) > 0 ) { + foreach ( $plans as $plan ) { + if ( ( $should_have_trials && ! $plan->has_trial() ) || ( $should_be_visible && $plan->is_hidden ) ) { + continue; } + $filtered_plans[] = $plan; } } - return $trial_plans; + return $filtered_plans; } /** diff --git a/freemius/languages/freemius-cs_CZ.mo b/freemius/languages/freemius-cs_CZ.mo index 8dd3c0670..dc311a4e7 100644 Binary files a/freemius/languages/freemius-cs_CZ.mo and b/freemius/languages/freemius-cs_CZ.mo differ diff --git a/freemius/languages/freemius-da_DK.mo b/freemius/languages/freemius-da_DK.mo index 07ffb83ff..c0b937800 100644 Binary files a/freemius/languages/freemius-da_DK.mo and b/freemius/languages/freemius-da_DK.mo differ diff --git a/freemius/languages/freemius-de_DE.mo b/freemius/languages/freemius-de_DE.mo index 2d951e98a..dd8555048 100644 Binary files a/freemius/languages/freemius-de_DE.mo and b/freemius/languages/freemius-de_DE.mo differ diff --git a/freemius/languages/freemius-en.mo b/freemius/languages/freemius-en.mo deleted file mode 100644 index cecd3e5d5..000000000 Binary files a/freemius/languages/freemius-en.mo and /dev/null differ diff --git a/freemius/languages/freemius-es_ES.mo b/freemius/languages/freemius-es_ES.mo index 445e10db0..963dfe3fa 100644 Binary files a/freemius/languages/freemius-es_ES.mo and b/freemius/languages/freemius-es_ES.mo differ diff --git a/freemius/languages/freemius-fr_FR.mo b/freemius/languages/freemius-fr_FR.mo index bc2889ccc..de90270c1 100644 Binary files a/freemius/languages/freemius-fr_FR.mo and b/freemius/languages/freemius-fr_FR.mo differ diff --git a/freemius/languages/freemius-he_IL.mo b/freemius/languages/freemius-he_IL.mo index 5b4b23550..e84832723 100644 Binary files a/freemius/languages/freemius-he_IL.mo and b/freemius/languages/freemius-he_IL.mo differ diff --git a/freemius/languages/freemius-hu_HU.mo b/freemius/languages/freemius-hu_HU.mo index bd75896c5..7448fe7f9 100644 Binary files a/freemius/languages/freemius-hu_HU.mo and b/freemius/languages/freemius-hu_HU.mo differ diff --git a/freemius/languages/freemius-it_IT.mo b/freemius/languages/freemius-it_IT.mo index 66469075a..a28862de3 100644 Binary files a/freemius/languages/freemius-it_IT.mo and b/freemius/languages/freemius-it_IT.mo differ diff --git a/freemius/languages/freemius-ja.mo b/freemius/languages/freemius-ja.mo index 6acf2df5e..ff6b277a3 100644 Binary files a/freemius/languages/freemius-ja.mo and b/freemius/languages/freemius-ja.mo differ diff --git a/freemius/languages/freemius-nl_NL.mo b/freemius/languages/freemius-nl_NL.mo index b3024ef3e..37c9c5b12 100644 Binary files a/freemius/languages/freemius-nl_NL.mo and b/freemius/languages/freemius-nl_NL.mo differ diff --git a/freemius/languages/freemius-ru_RU.mo b/freemius/languages/freemius-ru_RU.mo index c4982fd53..c62ea8f84 100644 Binary files a/freemius/languages/freemius-ru_RU.mo and b/freemius/languages/freemius-ru_RU.mo differ diff --git a/freemius/languages/freemius-ta.mo b/freemius/languages/freemius-ta.mo index 0fbe1eb42..b3559142d 100644 Binary files a/freemius/languages/freemius-ta.mo and b/freemius/languages/freemius-ta.mo differ diff --git a/freemius/languages/freemius-zh_CN.mo b/freemius/languages/freemius-zh_CN.mo index 6ac09184a..d4f4fda19 100644 Binary files a/freemius/languages/freemius-zh_CN.mo and b/freemius/languages/freemius-zh_CN.mo differ diff --git a/freemius/languages/freemius.pot b/freemius/languages/freemius.pot index 3bdefb198..6c4bb0176 100644 --- a/freemius/languages/freemius.pot +++ b/freemius/languages/freemius.pot @@ -1,4 +1,4 @@ -# Copyright (C) 2023 freemius +# Copyright (C) 2024 freemius # This file is distributed under the same license as the freemius package. msgid "" msgstr "" @@ -8,837 +8,845 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language-Team: Freemius Team \n" "Last-Translator: Vova Feldman \n" +"POT-Creation-Date: 2024-03-31 12:04+0000\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "X-Poedit-Basepath: ..\n" -"X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n" +"X-Poedit-KeywordsList: get_text_inline;get_text_x_inline:1,2c;$this->get_text_inline;$this->get_text_x_inline:1,2c;$this->_fs->get_text_inline;$this->_fs->get_text_x_inline:1,2c;$this->fs->get_text_inline;$this->fs->get_text_x_inline:1,2c;$fs->get_text_inline;$fs->get_text_x_inline:1,2c;$this->_parent->get_text_inline;$this->_parent->get_text_x_inline:1,2c;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: includes/class-freemius.php:1748, templates/account.php:947 +#: includes/class-freemius.php:1781, templates/account.php:943 msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned." msgstr "" -#: includes/class-freemius.php:1755 +#: includes/class-freemius.php:1788 msgid "Would you like to proceed with the update?" msgstr "" -#: includes/class-freemius.php:1980 +#: includes/class-freemius.php:2013 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "" -#: includes/class-freemius.php:1982, includes/fs-plugin-info-dialog.php:1517 +#: includes/class-freemius.php:2015, includes/fs-plugin-info-dialog.php:1513 msgid "Error" msgstr "" -#: includes/class-freemius.php:2428 +#: includes/class-freemius.php:2461 msgid "I found a better %s" msgstr "" -#: includes/class-freemius.php:2430 +#: includes/class-freemius.php:2463 msgid "What's the %s's name?" msgstr "" -#: includes/class-freemius.php:2436 +#: includes/class-freemius.php:2469 msgid "It's a temporary %s - I'm troubleshooting an issue" msgstr "" -#: includes/class-freemius.php:2438 +#: includes/class-freemius.php:2471 msgid "Deactivation" msgstr "" -#: includes/class-freemius.php:2439 +#: includes/class-freemius.php:2472 msgid "Theme Switch" msgstr "" -#: includes/class-freemius.php:2448, templates/forms/resend-key.php:24, templates/forms/user-change.php:29 +#: includes/class-freemius.php:2481, templates/forms/resend-key.php:24, templates/forms/user-change.php:29 msgid "Other" msgstr "" -#: includes/class-freemius.php:2456 +#: includes/class-freemius.php:2489 msgid "I no longer need the %s" msgstr "" -#: includes/class-freemius.php:2463 +#: includes/class-freemius.php:2496 msgid "I only needed the %s for a short period" msgstr "" -#: includes/class-freemius.php:2469 +#: includes/class-freemius.php:2502 msgid "The %s broke my site" msgstr "" -#: includes/class-freemius.php:2476 +#: includes/class-freemius.php:2509 msgid "The %s suddenly stopped working" msgstr "" -#: includes/class-freemius.php:2486 +#: includes/class-freemius.php:2519 msgid "I can't pay for it anymore" msgstr "" -#: includes/class-freemius.php:2488 +#: includes/class-freemius.php:2521 msgid "What price would you feel comfortable paying?" msgstr "" -#: includes/class-freemius.php:2494 +#: includes/class-freemius.php:2527 msgid "I don't like to share my information with you" msgstr "" -#: includes/class-freemius.php:2515 +#: includes/class-freemius.php:2548 msgid "The %s didn't work" msgstr "" -#: includes/class-freemius.php:2525 +#: includes/class-freemius.php:2558 msgid "I couldn't understand how to make it work" msgstr "" -#: includes/class-freemius.php:2533 +#: includes/class-freemius.php:2566 msgid "The %s is great, but I need specific feature that you don't support" msgstr "" -#: includes/class-freemius.php:2535 +#: includes/class-freemius.php:2568 msgid "What feature?" msgstr "" -#: includes/class-freemius.php:2539 +#: includes/class-freemius.php:2572 msgid "The %s is not working" msgstr "" -#: includes/class-freemius.php:2541 +#: includes/class-freemius.php:2574 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "" -#: includes/class-freemius.php:2545 +#: includes/class-freemius.php:2578 msgid "It's not what I was looking for" msgstr "" -#: includes/class-freemius.php:2547 +#: includes/class-freemius.php:2580 msgid "What you've been looking for?" msgstr "" -#: includes/class-freemius.php:2551 +#: includes/class-freemius.php:2584 msgid "The %s didn't work as expected" msgstr "" -#: includes/class-freemius.php:2553 +#: includes/class-freemius.php:2586 msgid "What did you expect?" msgstr "" -#: includes/class-freemius.php:3641, templates/debug.php:24 +#: includes/class-freemius.php:3685, templates/debug.php:24 msgid "Freemius Debug" msgstr "" -#: includes/class-freemius.php:4755 +#. translators: %s: License type (e.g. you have a professional license) +#: includes/class-freemius.php:4828 msgid "You have purchased a %s license." msgstr "" -#: includes/class-freemius.php:4759 +#: includes/class-freemius.php:4832 msgid " The %s's %sdownload link%s, license key, and installation instructions have been sent to %s. If you can't find the email after 5 min, please check your spam box." msgstr "" -#: includes/class-freemius.php:4769, includes/class-freemius.php:21125, includes/class-freemius.php:24783 +#: includes/class-freemius.php:4842, includes/class-freemius.php:21174, includes/class-freemius.php:24843 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "" -#: includes/class-freemius.php:4783 +#: includes/class-freemius.php:4856 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "" -#: includes/class-freemius.php:4784 +#: includes/class-freemius.php:4857 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "" -#: includes/class-freemius.php:4786, includes/class-freemius.php:5978, includes/class-freemius.php:13730, includes/class-freemius.php:14469, includes/class-freemius.php:18281, includes/class-freemius.php:18394, includes/class-freemius.php:18571, includes/class-freemius.php:20856, includes/class-freemius.php:21955, includes/class-freemius.php:22971, includes/class-freemius.php:23101, includes/class-freemius.php:23231, templates/add-ons.php:57 +#: includes/class-freemius.php:4859, includes/class-freemius.php:6051, includes/class-freemius.php:13828, includes/class-freemius.php:14575, includes/class-freemius.php:18330, includes/class-freemius.php:18443, includes/class-freemius.php:18620, includes/class-freemius.php:20905, includes/class-freemius.php:22004, includes/class-freemius.php:23020, includes/class-freemius.php:23150, includes/class-freemius.php:23293, templates/add-ons.php:57 msgctxt "exclamation" msgid "Oops" msgstr "" -#: includes/class-freemius.php:5065 +#: includes/class-freemius.php:5138 msgid "There was an unexpected API error while processing your request. Please try again in a few minutes and if it still doesn't work, contact the %s's author with the following:" msgstr "" -#: includes/class-freemius.php:5645 +#. translators: %s: License type (e.g. you have a professional license) +#: includes/class-freemius.php:5743 +msgid "You have a %s license." +msgstr "" + +#: includes/class-freemius.php:5716 msgid "Premium %s version was successfully activated." msgstr "" -#: includes/class-freemius.php:5657, includes/class-freemius.php:7692 +#: includes/class-freemius.php:5728, includes/class-freemius.php:7765 msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)." msgid "W00t" msgstr "" -#: includes/class-freemius.php:5672 -msgid "You have a %s license." -msgstr "" - -#: includes/class-freemius.php:5961 +#: includes/class-freemius.php:6034 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "" -#: includes/class-freemius.php:5965 +#: includes/class-freemius.php:6038 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "" -#: includes/class-freemius.php:5974, templates/add-ons.php:186, templates/account/partials/addon.php:386 +#: includes/class-freemius.php:6047, templates/add-ons.php:186, templates/account/partials/addon.php:386 msgid "More information about %s" msgstr "" -#: includes/class-freemius.php:5975 +#: includes/class-freemius.php:6048 msgid "Purchase License" msgstr "" -#. translators: %3$s: action (e.g.: "start the trial" or "complete the opt-in") -#: includes/class-freemius.php:6971 -msgid "You should receive a confirmation email for %1$s to your mailbox at %2$s. Please make sure you click the button in that email to %3$s." -msgstr "" - -#: includes/class-freemius.php:6974 -msgid "start the trial" -msgstr "" - -#: includes/class-freemius.php:6975, templates/connect.php:218 -msgid "complete the opt-in" -msgstr "" - -#: includes/class-freemius.php:6977 -msgid "Thanks!" -msgstr "" - #. translators: %3$s: What the user is expected to receive via email (e.g.: "the installation instructions" or "a license key") -#: includes/class-freemius.php:6980 +#: includes/class-freemius.php:7053 msgid "You should receive %3$s for %1$s to your mailbox at %2$s in the next 5 minutes." msgstr "" -#: includes/class-freemius.php:6983 -msgctxt "Part of the message telling the user what they should receive via email." -msgid "the installation instructions" -msgstr "" - -#: includes/class-freemius.php:6989 +#: includes/class-freemius.php:7062 msgctxt "Part of the message telling the user what they should receive via email." msgid "a license key" msgstr "" -#: includes/class-freemius.php:6997 +#. translators: %s: activation link (e.g.: Click here) +#: includes/class-freemius.php:7070 msgid "%s to activate the license once you get it." msgstr "" -#: includes/class-freemius.php:7005 +#: includes/class-freemius.php:7078 msgctxt "Part of an activation link message." msgid "Click here" msgstr "" -#: includes/class-freemius.php:7012 +#: includes/class-freemius.php:7056 +msgctxt "Part of the message telling the user what they should receive via email." +msgid "the installation instructions" +msgstr "" + +#: includes/class-freemius.php:7085 msgctxt "Part of the message that tells the user to check their spam folder for a specific email." msgid "the product's support email address" msgstr "" -#: includes/class-freemius.php:7018 +#: includes/class-freemius.php:7091 msgid "If you didn't get the email, try checking your spam folder or search for emails from %4$s." msgstr "" -#: includes/class-freemius.php:7020 +#: includes/class-freemius.php:7093 msgid "Thanks for upgrading." msgstr "" -#: includes/class-freemius.php:7156 +#: includes/class-freemius.php:7044 +msgid "You should receive a confirmation email for %1$s to your mailbox at %2$s. Please make sure you click the button in that email to %3$s." +msgstr "" + +#: includes/class-freemius.php:7047 +msgid "start the trial" +msgstr "" + +#: includes/class-freemius.php:7048, templates/connect.php:209 +msgid "complete the opt-in" +msgstr "" + +#: includes/class-freemius.php:7050 +msgid "Thanks!" +msgstr "" + +#: includes/class-freemius.php:7229 msgid "You are just one step away - %s" msgstr "" -#: includes/class-freemius.php:7159 +#: includes/class-freemius.php:7232 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "" -#: includes/class-freemius.php:7241 +#: includes/class-freemius.php:7314 msgid "We made a few tweaks to the %s, %s" msgstr "" -#: includes/class-freemius.php:7245 +#: includes/class-freemius.php:7318 msgid "Opt in to make \"%s\" better!" msgstr "" -#: includes/class-freemius.php:7691 +#: includes/class-freemius.php:7764 msgid "The upgrade of %s was successfully completed." msgstr "" -#: includes/class-freemius.php:10441, includes/class-fs-plugin-updater.php:1100, includes/class-fs-plugin-updater.php:1315, includes/class-fs-plugin-updater.php:1322, templates/auto-installation.php:32 +#: includes/class-freemius.php:10527, includes/class-fs-plugin-updater.php:1095, includes/class-fs-plugin-updater.php:1317, includes/class-fs-plugin-updater.php:1310, templates/auto-installation.php:32 msgid "Add-On" msgstr "" -#: includes/class-freemius.php:10443, templates/account.php:411, templates/account.php:419, templates/debug.php:399, templates/debug.php:619 +#: includes/class-freemius.php:10529, templates/account.php:407, templates/account.php:415, templates/debug.php:399, templates/debug.php:619 msgid "Plugin" msgstr "" -#: includes/class-freemius.php:10444, templates/account.php:412, templates/account.php:420, templates/debug.php:399, templates/debug.php:619, templates/forms/deactivation/form.php:107 +#: includes/class-freemius.php:10530, templates/account.php:408, templates/account.php:416, templates/debug.php:399, templates/debug.php:619, templates/forms/deactivation/form.php:107 msgid "Theme" msgstr "" -#: includes/class-freemius.php:13549 +#: includes/class-freemius.php:13635 msgid "An unknown error has occurred while trying to toggle the license's white-label mode." msgstr "" -#: includes/class-freemius.php:13563 +#: includes/class-freemius.php:13649 msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s." msgstr "" -#: includes/class-freemius.php:13568, templates/account/partials/disconnect-button.php:84 +#: includes/class-freemius.php:13654, templates/account/partials/disconnect-button.php:84 msgid "User Dashboard" msgstr "" -#: includes/class-freemius.php:13569 +#: includes/class-freemius.php:13655 msgid "revert it now" msgstr "" -#: includes/class-freemius.php:13627 +#: includes/class-freemius.php:13713 msgid "An unknown error has occurred while trying to set the user's beta mode." msgstr "" -#: includes/class-freemius.php:13701 +#: includes/class-freemius.php:13799 msgid "Invalid new user ID or email address." msgstr "" -#: includes/class-freemius.php:13731 +#: includes/class-freemius.php:13829 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "" -#: includes/class-freemius.php:13732 +#: includes/class-freemius.php:13830 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "" -#: includes/class-freemius.php:13739 +#: includes/class-freemius.php:13837 msgid "Change Ownership" msgstr "" -#: includes/class-freemius.php:14336 +#: includes/class-freemius.php:14442 msgid "Invalid site details collection." msgstr "" -#: includes/class-freemius.php:14456 -msgid "We couldn't find your email address in the system, are you sure it's the right address?" +#: includes/class-freemius.php:14564 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "" -#: includes/class-freemius.php:14458 -msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" +#: includes/class-freemius.php:14562 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "" -#: includes/class-freemius.php:14756 +#: includes/class-freemius.php:14868 msgid "Account is pending activation. Please check your email and click the link to activate your account and then submit the affiliate form again." msgstr "" -#: includes/class-freemius.php:14870, templates/forms/premium-versions-upgrade-handler.php:47 -msgid "Buy a license now" +#: includes/class-freemius.php:14994, templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" msgstr "" -#: includes/class-freemius.php:14882, templates/forms/premium-versions-upgrade-handler.php:46 -msgid "Renew your license now" +#: includes/class-freemius.php:14982, templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" msgstr "" -#: includes/class-freemius.php:14886 +#: includes/class-freemius.php:14998 msgid "%s to access version %s security & feature updates, and support." msgstr "" -#: includes/class-freemius.php:17621 +#: includes/class-freemius.php:17670 msgid "%s opt-in was successfully completed." msgstr "" -#: includes/class-freemius.php:17635 -msgid "Your account was successfully activated with the %s plan." +#: includes/class-freemius.php:17694, includes/class-freemius.php:21615 +msgid "Your trial has been successfully started." msgstr "" -#: includes/class-freemius.php:17645, includes/class-freemius.php:21566 -msgid "Your trial has been successfully started." +#: includes/class-freemius.php:17684 +msgid "Your account was successfully activated with the %s plan." msgstr "" -#: includes/class-freemius.php:18279, includes/class-freemius.php:18392, includes/class-freemius.php:18569 +#: includes/class-freemius.php:18328, includes/class-freemius.php:18441, includes/class-freemius.php:18618 msgid "Couldn't activate %s." msgstr "" -#: includes/class-freemius.php:18280, includes/class-freemius.php:18393, includes/class-freemius.php:18570 +#: includes/class-freemius.php:18329, includes/class-freemius.php:18442, includes/class-freemius.php:18619 msgid "Please contact us with the following message:" msgstr "" -#: includes/class-freemius.php:18389, templates/forms/data-debug-mode.php:162 +#: includes/class-freemius.php:18438, templates/forms/data-debug-mode.php:162 msgid "An unknown error has occurred." msgstr "" -#: includes/class-freemius.php:18931, includes/class-freemius.php:24339 +#: includes/class-freemius.php:18980, includes/class-freemius.php:24399 msgid "Upgrade" msgstr "" -#: includes/class-freemius.php:18937 -msgid "Start Trial" +#: includes/class-freemius.php:18988 +msgid "Pricing" msgstr "" -#: includes/class-freemius.php:18939 -msgid "Pricing" +#: includes/class-freemius.php:18986 +msgid "Start Trial" msgstr "" -#: includes/class-freemius.php:19019, includes/class-freemius.php:19021 +#: includes/class-freemius.php:19068, includes/class-freemius.php:19070 msgid "Affiliation" msgstr "" -#: includes/class-freemius.php:19049, includes/class-freemius.php:19051, templates/account.php:264, templates/debug.php:366 +#: includes/class-freemius.php:19098, includes/class-freemius.php:19100, templates/account.php:260, templates/debug.php:366 msgid "Account" msgstr "" -#: includes/class-freemius.php:19065, includes/class-freemius.php:19067, includes/customizer/class-fs-customizer-support-section.php:60 +#: includes/class-freemius.php:19114, includes/class-freemius.php:19116, includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "" -#: includes/class-freemius.php:19078, includes/class-freemius.php:19080, includes/class-freemius.php:24353, templates/account.php:134, templates/account/partials/addon.php:49 +#: includes/class-freemius.php:19127, includes/class-freemius.php:19129, includes/class-freemius.php:24413, templates/account.php:130, templates/account/partials/addon.php:49 msgid "Add-Ons" msgstr "" -#: includes/class-freemius.php:19114 +#: includes/class-freemius.php:19163 msgctxt "ASCII arrow left icon" msgid "←" msgstr "" -#: includes/class-freemius.php:19114 +#: includes/class-freemius.php:19163 msgctxt "ASCII arrow right icon" msgid "➤" msgstr "" -#: includes/class-freemius.php:19116, templates/pricing.php:110 +#: includes/class-freemius.php:19165, templates/pricing.php:110 msgctxt "noun" msgid "Pricing" msgstr "" -#: includes/class-freemius.php:19329, includes/customizer/class-fs-customizer-support-section.php:67 +#: includes/class-freemius.php:19378, includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "" -#: includes/class-freemius.php:20350 +#: includes/class-freemius.php:20399 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "" -#: includes/class-freemius.php:20351 +#: includes/class-freemius.php:20400 msgctxt "a positive response" msgid "Right on" msgstr "" -#: includes/class-freemius.php:20857 +#: includes/class-freemius.php:20906 msgid "seems like the key you entered doesn't match our records." msgstr "" -#: includes/class-freemius.php:20881 +#: includes/class-freemius.php:20930 msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link." msgstr "" -#: includes/class-freemius.php:21116 +#: includes/class-freemius.php:21165 msgid "Your %s Add-on plan was successfully upgraded." msgstr "" -#: includes/class-freemius.php:21118 +#. translators: %s:product name, e.g. Facebook add-on was successfully... +#: includes/class-freemius.php:21167 msgid "%s Add-on was successfully purchased." msgstr "" -#: includes/class-freemius.php:21121 +#: includes/class-freemius.php:21170 msgid "Download the latest version" msgstr "" -#: includes/class-freemius.php:21239 +#: includes/class-freemius.php:21288 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "" -#: includes/class-freemius.php:21239, includes/class-freemius.php:21636, includes/class-freemius.php:21737, includes/class-freemius.php:21824 +#: includes/class-freemius.php:21288, includes/class-freemius.php:21685, includes/class-freemius.php:21786, includes/class-freemius.php:21873 msgid "Error received from the server:" msgstr "" -#: includes/class-freemius.php:21470, includes/class-freemius.php:21742, includes/class-freemius.php:21795, includes/class-freemius.php:21902 +#: includes/class-freemius.php:21519, includes/class-freemius.php:21791, includes/class-freemius.php:21844, includes/class-freemius.php:21951 msgctxt "something somebody says when they are thinking about what you have just said." msgid "Hmm" msgstr "" -#: includes/class-freemius.php:21483 +#: includes/class-freemius.php:21532 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "" -#: includes/class-freemius.php:21484, templates/account.php:136, templates/add-ons.php:250, templates/account/partials/addon.php:51 +#: includes/class-freemius.php:21533, templates/account.php:132, templates/add-ons.php:250, templates/account/partials/addon.php:51 msgctxt "trial period" msgid "Trial" msgstr "" -#: includes/class-freemius.php:21489 +#: includes/class-freemius.php:21538 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "" -#: includes/class-freemius.php:21493, includes/class-freemius.php:21545 +#: includes/class-freemius.php:21542, includes/class-freemius.php:21594 msgid "Please contact us here" msgstr "" -#: includes/class-freemius.php:21515 +#: includes/class-freemius.php:21564 msgid "Your plan was successfully changed to %s." msgstr "" -#: includes/class-freemius.php:21531 +#: includes/class-freemius.php:21580 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "" -#: includes/class-freemius.php:21533 +#. translators: %1$s: product title; %2$s, %3$s: wrapping HTML anchor element; %4$s: 'plugin', 'theme', or 'add-on'. +#: includes/class-freemius.php:21582 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "" -#: includes/class-freemius.php:21541 +#: includes/class-freemius.php:21590 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "" -#: includes/class-freemius.php:21554 +#: includes/class-freemius.php:21603 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "" -#: includes/class-freemius.php:21580 +#: includes/class-freemius.php:21629 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "" -#: includes/class-freemius.php:21582 +#. translators: %1$s: product title; %2$s, %3$s: wrapping HTML anchor element; %4$s: 'plugin', 'theme', or 'add-on'. +#: includes/class-freemius.php:21631 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "" -#: includes/class-freemius.php:21628 +#: includes/class-freemius.php:21677 msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist the following domains:%2$s" msgstr "" -#: includes/class-freemius.php:21630 +#: includes/class-freemius.php:21679 msgid "Show error details" msgstr "" -#: includes/class-freemius.php:21733 +#: includes/class-freemius.php:21782 msgid "It looks like the license could not be activated." msgstr "" -#: includes/class-freemius.php:21775 +#: includes/class-freemius.php:21824 msgid "Your license was successfully activated." msgstr "" -#: includes/class-freemius.php:21799 +#: includes/class-freemius.php:21848 msgid "It looks like your site currently doesn't have an active license." msgstr "" -#: includes/class-freemius.php:21823 +#: includes/class-freemius.php:21872 msgid "It looks like the license deactivation failed." msgstr "" -#: includes/class-freemius.php:21852 +#: includes/class-freemius.php:21901 msgid "Your %s license was successfully deactivated." msgstr "" -#: includes/class-freemius.php:21853 +#: includes/class-freemius.php:21902 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "" -#: includes/class-freemius.php:21856 +#: includes/class-freemius.php:21905 msgid "O.K" msgstr "" -#: includes/class-freemius.php:21909 +#: includes/class-freemius.php:21958 msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." msgstr "" -#: includes/class-freemius.php:21918 +#: includes/class-freemius.php:21967 msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." msgstr "" -#: includes/class-freemius.php:21960 +#: includes/class-freemius.php:22009 msgid "You are already running the %s in a trial mode." msgstr "" -#: includes/class-freemius.php:21971 +#: includes/class-freemius.php:22020 msgid "You already utilized a trial before." msgstr "" -#: includes/class-freemius.php:21985 -msgid "Plan %s do not exist, therefore, can't start a trial." +#: includes/class-freemius.php:22056 +msgid "None of the %s's plans supports a trial period." msgstr "" -#: includes/class-freemius.php:21996 -msgid "Plan %s does not support a trial period." +#: includes/class-freemius.php:22034 +msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "" -#: includes/class-freemius.php:22007 -msgid "None of the %s's plans supports a trial period." +#: includes/class-freemius.php:22045 +msgid "Plan %s does not support a trial period." msgstr "" -#: includes/class-freemius.php:22056 +#: includes/class-freemius.php:22105 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "" -#: includes/class-freemius.php:22092 +#: includes/class-freemius.php:22141 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "" -#: includes/class-freemius.php:22111 +#: includes/class-freemius.php:22160 msgid "Your %s free trial was successfully cancelled." msgstr "" -#: includes/class-freemius.php:22438 -msgid "Version %s was released." +#: includes/class-freemius.php:22504 +msgid "Seems like you got the latest release." msgstr "" -#: includes/class-freemius.php:22438 -msgid "Please download %s." +#: includes/class-freemius.php:22505 +msgid "You are all good!" msgstr "" -#: includes/class-freemius.php:22445 -msgid "the latest %s version here" +#: includes/class-freemius.php:22487 +msgid "Version %s was released." msgstr "" -#: includes/class-freemius.php:22450 -msgid "New" +#: includes/class-freemius.php:22487 +msgid "Please download %s." msgstr "" -#: includes/class-freemius.php:22455 -msgid "Seems like you got the latest release." +#: includes/class-freemius.php:22494 +msgid "the latest %s version here" msgstr "" -#: includes/class-freemius.php:22456 -msgid "You are all good!" +#: includes/class-freemius.php:22499 +msgid "New" msgstr "" -#: includes/class-freemius.php:22859 +#: includes/class-freemius.php:22908 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "" -#: includes/class-freemius.php:22999 +#: includes/class-freemius.php:23048 msgid "Site successfully opted in." msgstr "" -#: includes/class-freemius.php:23000, includes/class-freemius.php:24049 +#: includes/class-freemius.php:23049, includes/class-freemius.php:24109 msgid "Awesome" msgstr "" -#: includes/class-freemius.php:23016 +#: includes/class-freemius.php:23075 +msgid "Diagnostic data will no longer be sent from %s to %s." +msgstr "" + +#: includes/class-freemius.php:23065 msgid "Sharing diagnostic data with %s helps to provide functionality that's more relevant to your website, avoid WordPress or PHP version incompatibilities that can break your website, and recognize which languages & regions the plugin should be translated and tailored to." msgstr "" -#: includes/class-freemius.php:23017 +#: includes/class-freemius.php:23066 msgid "Thank you!" msgstr "" -#: includes/class-freemius.php:23026 -msgid "Diagnostic data will no longer be sent from %s to %s." +#: includes/class-freemius.php:23235 +msgid "A confirmation email was just sent to %s. You must confirm the update within the next 4 hours. If you cannot find the email, please check your spam folder." msgstr "" -#: includes/class-freemius.php:23181 +#: includes/class-freemius.php:23233 msgid "A confirmation email was just sent to %s. The email owner must confirm the update within the next 4 hours." msgstr "" -#: includes/class-freemius.php:23183 -msgid "A confirmation email was just sent to %s. You must confirm the update within the next 4 hours. If you cannot find the email, please check your spam folder." -msgstr "" - -#: includes/class-freemius.php:23190 +#: includes/class-freemius.php:23247 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "" -#: includes/class-freemius.php:23195 +#: includes/class-freemius.php:23253 msgid "%s is the new owner of the account." msgstr "" -#: includes/class-freemius.php:23197 +#: includes/class-freemius.php:23255 msgctxt "as congratulations" msgid "Congrats" msgstr "" -#: includes/class-freemius.php:23214 -msgid "Please provide your full name." +#: includes/class-freemius.php:23277 +msgid "Your name was successfully updated." msgstr "" -#: includes/class-freemius.php:23219 -msgid "Your name was successfully updated." +#: includes/class-freemius.php:23272 +msgid "Please provide your full name." msgstr "" -#: includes/class-freemius.php:23280 +#. translators: %s: User's account property (e.g. email address, name) +#: includes/class-freemius.php:23342 msgid "You have successfully updated your %s." msgstr "" -#: includes/class-freemius.php:23339 +#: includes/class-freemius.php:23406 msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin." msgstr "" -#: includes/class-freemius.php:23342 +#: includes/class-freemius.php:23409 msgid "Click here" msgstr "" -#: includes/class-freemius.php:23379, includes/class-freemius.php:23376 +#: includes/class-freemius.php:23446 msgid "Bundle" msgstr "" -#: includes/class-freemius.php:23459 +#: includes/class-freemius.php:23519 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "" -#: includes/class-freemius.php:23460 +#: includes/class-freemius.php:23520 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "" -#: includes/class-freemius.php:24089 +#: includes/class-freemius.php:24149 msgctxt "exclamation" msgid "Hey" msgstr "" -#: includes/class-freemius.php:24089 +#: includes/class-freemius.php:24149 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "" -#: includes/class-freemius.php:24097 +#: includes/class-freemius.php:24157 msgid "No commitment for %s days - cancel anytime!" msgstr "" -#: includes/class-freemius.php:24098 +#: includes/class-freemius.php:24158 msgid "No credit card required" msgstr "" -#: includes/class-freemius.php:24105, templates/forms/trial-start.php:53 +#: includes/class-freemius.php:24165, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "" -#: includes/class-freemius.php:24182 +#: includes/class-freemius.php:24242 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "" -#: includes/class-freemius.php:24191 +#: includes/class-freemius.php:24251 msgid "Learn more" msgstr "" -#: includes/class-freemius.php:24377, templates/account.php:573, templates/account.php:725, templates/connect.php:221, templates/connect.php:447, includes/managers/class-fs-clone-manager.php:1295, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326 +#: includes/class-freemius.php:24437, templates/account.php:569, templates/account.php:721, templates/connect.php:212, templates/connect.php:440, includes/managers/class-fs-clone-manager.php:1295, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326 msgid "Activate License" msgstr "" -#: includes/class-freemius.php:24378, templates/account.php:667, templates/account.php:724, templates/account/partials/addon.php:327, templates/account/partials/site.php:273 +#: includes/class-freemius.php:24438, templates/account.php:663, templates/account.php:720, templates/account/partials/addon.php:327, templates/account/partials/site.php:273 msgid "Change License" msgstr "" -#: includes/class-freemius.php:24485, templates/account/partials/site.php:170 -msgid "Opt Out" -msgstr "" - -#: includes/class-freemius.php:24487, includes/class-freemius.php:24493, templates/account/partials/site.php:49, templates/account/partials/site.php:170 +#: includes/class-freemius.php:24553, includes/class-freemius.php:24547, templates/account/partials/site.php:49, templates/account/partials/site.php:170 msgid "Opt In" msgstr "" -#: includes/class-freemius.php:24728 -msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s" -msgstr "" - -#: includes/class-freemius.php:24738 -msgid "Activate %s features" +#: includes/class-freemius.php:24545, templates/account/partials/site.php:170 +msgid "Opt Out" msgstr "" -#: includes/class-freemius.php:24751 +#: includes/class-freemius.php:24811 msgid "Please follow these steps to complete the upgrade" msgstr "" -#: includes/class-freemius.php:24755 +#. translators: %s: Plan title +#: includes/class-freemius.php:24815 msgid "Download the latest %s version" msgstr "" -#: includes/class-freemius.php:24759 +#: includes/class-freemius.php:24819 msgid "Upload and activate the downloaded version" msgstr "" -#: includes/class-freemius.php:24761 +#: includes/class-freemius.php:24821 msgid "How to upload and activate?" msgstr "" -#: includes/class-freemius.php:24796 +#: includes/class-freemius.php:24788 +msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s" +msgstr "" + +#: includes/class-freemius.php:24798 +msgid "Activate %s features" +msgstr "" + +#: includes/class-freemius.php:24856 msgid "Your plan was successfully upgraded." msgstr "" -#: includes/class-freemius.php:24797 +#: includes/class-freemius.php:24857 msgid "Your plan was successfully activated." msgstr "" -#: includes/class-freemius.php:24927 +#: includes/class-freemius.php:24987 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "" -#: includes/class-freemius.php:25096 +#: includes/class-freemius.php:25156 msgid "Auto installation only works for opted-in users." msgstr "" -#: includes/class-freemius.php:25106, includes/class-freemius.php:25139, includes/class-fs-plugin-updater.php:1294, includes/class-fs-plugin-updater.php:1308 +#: includes/class-freemius.php:25166, includes/class-freemius.php:25199, includes/class-fs-plugin-updater.php:1289, includes/class-fs-plugin-updater.php:1303 msgid "Invalid module ID." msgstr "" -#: includes/class-freemius.php:25115, includes/class-fs-plugin-updater.php:1330 +#: includes/class-freemius.php:25207, includes/class-fs-plugin-updater.php:1324 +msgid "Premium add-on version already installed." +msgstr "" + +#: includes/class-freemius.php:25175, includes/class-fs-plugin-updater.php:1325 msgid "Premium version already active." msgstr "" -#: includes/class-freemius.php:25122 +#: includes/class-freemius.php:25182 msgid "You do not have a valid license to access the premium version." msgstr "" -#: includes/class-freemius.php:25129 +#: includes/class-freemius.php:25189 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "" -#: includes/class-freemius.php:25147, includes/class-fs-plugin-updater.php:1329 -msgid "Premium add-on version already installed." -msgstr "" - -#: includes/class-freemius.php:25501 +#: includes/class-freemius.php:25567 msgid "View paid features" msgstr "" -#: includes/class-freemius.php:25805 -msgid "Thank you so much for using %s and its add-ons!" +#: includes/class-freemius.php:25882 +msgid "Thank you so much for using our products!" msgstr "" -#: includes/class-freemius.php:25806 -msgid "Thank you so much for using %s!" +#: includes/class-freemius.php:25883 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "" -#: includes/class-freemius.php:25812 -msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." +#: includes/class-freemius.php:25902 +msgid "%s and its add-ons" msgstr "" -#: includes/class-freemius.php:25816 -msgid "Thank you so much for using our products!" +#: includes/class-freemius.php:25911 +msgid "Products" msgstr "" -#: includes/class-freemius.php:25817 -msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." +#: includes/class-freemius.php:25871 +msgid "Thank you so much for using %s and its add-ons!" msgstr "" -#: includes/class-freemius.php:25836 -msgid "%s and its add-ons" +#: includes/class-freemius.php:25872 +msgid "Thank you so much for using %s!" msgstr "" -#: includes/class-freemius.php:25845 -msgid "Products" +#: includes/class-freemius.php:25878 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "" -#: includes/class-freemius.php:25852, templates/connect.php:322 +#: includes/class-freemius.php:25918, templates/connect.php:313 msgid "Yes" msgstr "" -#: includes/class-freemius.php:25853, templates/connect.php:323 +#: includes/class-freemius.php:25919, templates/connect.php:314 msgid "send me security & feature updates, educational content and offers." msgstr "" -#: includes/class-freemius.php:25854, templates/connect.php:328 +#: includes/class-freemius.php:25920, templates/connect.php:319 msgid "No" msgstr "" -#: includes/class-freemius.php:25856, templates/connect.php:330 +#: includes/class-freemius.php:25922, templates/connect.php:321 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "" -#: includes/class-freemius.php:25866 +#: includes/class-freemius.php:25932 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)" msgstr "" -#: includes/class-freemius.php:25868, templates/connect.php:337 +#: includes/class-freemius.php:25934, templates/connect.php:328 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "" -#: includes/class-freemius.php:26158 +#: includes/class-freemius.php:26224 msgid "License key is empty." msgstr "" @@ -850,15 +858,15 @@ msgstr "" msgid "Buy license" msgstr "" -#: includes/class-fs-plugin-updater.php:335, includes/class-fs-plugin-updater.php:368 +#: includes/class-fs-plugin-updater.php:368, includes/class-fs-plugin-updater.php:335 msgid "There is a %s of %s available." msgstr "" -#: includes/class-fs-plugin-updater.php:337, includes/class-fs-plugin-updater.php:373 +#: includes/class-fs-plugin-updater.php:373, includes/class-fs-plugin-updater.php:337 msgid "new Beta version" msgstr "" -#: includes/class-fs-plugin-updater.php:338, includes/class-fs-plugin-updater.php:374 +#: includes/class-fs-plugin-updater.php:374, includes/class-fs-plugin-updater.php:338 msgid "new version" msgstr "" @@ -866,15 +874,15 @@ msgstr "" msgid "Important Upgrade Notice:" msgstr "" -#: includes/class-fs-plugin-updater.php:1359 +#: includes/class-fs-plugin-updater.php:1354 msgid "Installing plugin: %s" msgstr "" -#: includes/class-fs-plugin-updater.php:1400 +#: includes/class-fs-plugin-updater.php:1395 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "" -#: includes/class-fs-plugin-updater.php:1582 +#: includes/class-fs-plugin-updater.php:1577 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "" @@ -887,24 +895,25 @@ msgctxt "verb" msgid "Purchase" msgstr "" +#. translators: %s: N-days trial #: includes/fs-plugin-info-dialog.php:547 msgid "Start my free %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:745 -msgid "Install Free Version Update Now" +#: includes/fs-plugin-info-dialog.php:755 +msgid "Install Free Version Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:746, templates/account.php:656 -msgid "Install Update Now" +#: includes/fs-plugin-info-dialog.php:756, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:423, templates/account/partials/addon.php:370 +msgid "Install Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:755 -msgid "Install Free Version Now" +#: includes/fs-plugin-info-dialog.php:745 +msgid "Install Free Version Update Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:756, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:370, templates/account/partials/addon.php:423 -msgid "Install Now" +#: includes/fs-plugin-info-dialog.php:746, templates/account.php:652 +msgid "Install Update Now" msgstr "" #: includes/fs-plugin-info-dialog.php:772 @@ -912,558 +921,569 @@ msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:773, templates/account.php:114, templates/add-ons.php:37, templates/account/partials/addon.php:30 +#: includes/fs-plugin-info-dialog.php:773, templates/account.php:110, templates/add-ons.php:37, templates/account/partials/addon.php:30 msgctxt "as download latest version" msgid "Download Latest" msgstr "" -#: includes/fs-plugin-info-dialog.php:788, templates/add-ons.php:329, templates/account/partials/addon.php:361, templates/account/partials/addon.php:417 +#: includes/fs-plugin-info-dialog.php:788, templates/add-ons.php:329, templates/account/partials/addon.php:417, templates/account/partials/addon.php:361 msgid "Activate this add-on" msgstr "" -#: includes/fs-plugin-info-dialog.php:790, templates/connect.php:444 +#: includes/fs-plugin-info-dialog.php:790, templates/connect.php:437 msgid "Activate Free Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:791, templates/account.php:138, templates/add-ons.php:330, templates/account/partials/addon.php:53 +#: includes/fs-plugin-info-dialog.php:791, templates/account.php:134, templates/add-ons.php:330, templates/account/partials/addon.php:53 msgid "Activate" msgstr "" -#: includes/fs-plugin-info-dialog.php:1003 +#: includes/fs-plugin-info-dialog.php:999 msgctxt "Plugin installer section title" msgid "Description" msgstr "" -#: includes/fs-plugin-info-dialog.php:1004 +#: includes/fs-plugin-info-dialog.php:1000 msgctxt "Plugin installer section title" msgid "Installation" msgstr "" -#: includes/fs-plugin-info-dialog.php:1005 +#: includes/fs-plugin-info-dialog.php:1001 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "" -#: includes/fs-plugin-info-dialog.php:1006, templates/plugin-info/description.php:55 +#: includes/fs-plugin-info-dialog.php:1002, templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1003 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "" -#: includes/fs-plugin-info-dialog.php:1008 +#: includes/fs-plugin-info-dialog.php:1004 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1005 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "" -#: includes/fs-plugin-info-dialog.php:1024 +#: includes/fs-plugin-info-dialog.php:1020 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "" -#: includes/fs-plugin-info-dialog.php:1034 +#: includes/fs-plugin-info-dialog.php:1030 msgid "Plugin Install" msgstr "" -#: includes/fs-plugin-info-dialog.php:1106 +#: includes/fs-plugin-info-dialog.php:1102 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "" -#: includes/fs-plugin-info-dialog.php:1132 +#: includes/fs-plugin-info-dialog.php:1128 msgctxt "e.g. the best product" msgid "Best" msgstr "" -#: includes/fs-plugin-info-dialog.php:1138, includes/fs-plugin-info-dialog.php:1158 +#: includes/fs-plugin-info-dialog.php:1134, includes/fs-plugin-info-dialog.php:1154 msgctxt "as every month" msgid "Monthly" msgstr "" -#: includes/fs-plugin-info-dialog.php:1141 +#: includes/fs-plugin-info-dialog.php:1137 msgctxt "as once a year" msgid "Annual" msgstr "" -#: includes/fs-plugin-info-dialog.php:1144 +#: includes/fs-plugin-info-dialog.php:1140 msgid "Lifetime" msgstr "" -#: includes/fs-plugin-info-dialog.php:1158, includes/fs-plugin-info-dialog.php:1160, includes/fs-plugin-info-dialog.php:1162 +#: includes/fs-plugin-info-dialog.php:1154, includes/fs-plugin-info-dialog.php:1156, includes/fs-plugin-info-dialog.php:1158 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1160 +#: includes/fs-plugin-info-dialog.php:1156 msgctxt "as once a year" msgid "Annually" msgstr "" -#: includes/fs-plugin-info-dialog.php:1162 +#: includes/fs-plugin-info-dialog.php:1158 msgctxt "as once a year" msgid "Once" msgstr "" -#: includes/fs-plugin-info-dialog.php:1168 +#: includes/fs-plugin-info-dialog.php:1164 msgid "Single Site License" msgstr "" -#: includes/fs-plugin-info-dialog.php:1170 +#: includes/fs-plugin-info-dialog.php:1166 msgid "Unlimited Licenses" msgstr "" -#: includes/fs-plugin-info-dialog.php:1172 +#: includes/fs-plugin-info-dialog.php:1168 msgid "Up to %s Sites" msgstr "" -#: includes/fs-plugin-info-dialog.php:1182, templates/plugin-info/features.php:82 +#: includes/fs-plugin-info-dialog.php:1178, templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "" -#: includes/fs-plugin-info-dialog.php:1189, templates/plugin-info/features.php:80 +#: includes/fs-plugin-info-dialog.php:1185, templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "" -#: includes/fs-plugin-info-dialog.php:1243 +#: includes/fs-plugin-info-dialog.php:1239 msgctxt "noun" msgid "Price" msgstr "" -#: includes/fs-plugin-info-dialog.php:1291 +#. translators: %s: Discount (e.g. discount of $5 or 10%) +#: includes/fs-plugin-info-dialog.php:1287 msgid "Save %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1301 +#: includes/fs-plugin-info-dialog.php:1297 msgid "No commitment for %s - cancel anytime" msgstr "" -#: includes/fs-plugin-info-dialog.php:1304 +#: includes/fs-plugin-info-dialog.php:1300 msgid "After your free %s, pay as little as %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1315 +#: includes/fs-plugin-info-dialog.php:1311 msgid "Details" msgstr "" -#: includes/fs-plugin-info-dialog.php:1319, templates/account.php:125, templates/debug.php:232, templates/debug.php:269, templates/debug.php:518, templates/account/partials/addon.php:41 +#: includes/fs-plugin-info-dialog.php:1315, templates/account.php:121, templates/debug.php:232, templates/debug.php:269, templates/debug.php:518, templates/account/partials/addon.php:41 msgctxt "product version" msgid "Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:1326 +#: includes/fs-plugin-info-dialog.php:1322 msgctxt "as the plugin author" msgid "Author" msgstr "" -#: includes/fs-plugin-info-dialog.php:1333 +#: includes/fs-plugin-info-dialog.php:1329 msgid "Last Updated" msgstr "" -#: includes/fs-plugin-info-dialog.php:1338, templates/account.php:544 +#. translators: %s: time period (e.g. "2 hours" ago) +#: includes/fs-plugin-info-dialog.php:1334, templates/account.php:540 msgctxt "x-ago" msgid "%s ago" msgstr "" -#: includes/fs-plugin-info-dialog.php:1347 +#: includes/fs-plugin-info-dialog.php:1343 msgid "Requires WordPress Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:1350, includes/fs-plugin-info-dialog.php:1370 +#. translators: %s: Version number. +#: includes/fs-plugin-info-dialog.php:1346, includes/fs-plugin-info-dialog.php:1366 msgid "%s or higher" msgstr "" -#: includes/fs-plugin-info-dialog.php:1358 +#: includes/fs-plugin-info-dialog.php:1354 msgid "Compatible up to" msgstr "" -#: includes/fs-plugin-info-dialog.php:1366 +#: includes/fs-plugin-info-dialog.php:1362 msgid "Requires PHP Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:1379 +#: includes/fs-plugin-info-dialog.php:1375 msgid "Downloaded" msgstr "" -#: includes/fs-plugin-info-dialog.php:1383 +#. translators: %s: 1 or One (Number of times downloaded) +#: includes/fs-plugin-info-dialog.php:1379 msgid "%s time" msgstr "" -#: includes/fs-plugin-info-dialog.php:1385 +#. translators: %s: Number of times downloaded +#: includes/fs-plugin-info-dialog.php:1381 msgid "%s times" msgstr "" -#: includes/fs-plugin-info-dialog.php:1396 +#: includes/fs-plugin-info-dialog.php:1392 msgid "WordPress.org Plugin Page" msgstr "" -#: includes/fs-plugin-info-dialog.php:1405 +#: includes/fs-plugin-info-dialog.php:1401 msgid "Plugin Homepage" msgstr "" -#: includes/fs-plugin-info-dialog.php:1414, includes/fs-plugin-info-dialog.php:1498 +#: includes/fs-plugin-info-dialog.php:1410, includes/fs-plugin-info-dialog.php:1494 msgid "Donate to this plugin" msgstr "" -#: includes/fs-plugin-info-dialog.php:1421 +#: includes/fs-plugin-info-dialog.php:1417 msgid "Average Rating" msgstr "" -#: includes/fs-plugin-info-dialog.php:1428 +#: includes/fs-plugin-info-dialog.php:1424 msgid "based on %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1432 +#. translators: %s: 1 or One +#: includes/fs-plugin-info-dialog.php:1428 msgid "%s rating" msgstr "" -#: includes/fs-plugin-info-dialog.php:1434 +#. translators: %s: Number larger than 1 +#: includes/fs-plugin-info-dialog.php:1430 msgid "%s ratings" msgstr "" -#: includes/fs-plugin-info-dialog.php:1449 +#. translators: %s: 1 or One +#: includes/fs-plugin-info-dialog.php:1445 msgid "%s star" msgstr "" -#: includes/fs-plugin-info-dialog.php:1451 +#. translators: %s: Number larger than 1 +#: includes/fs-plugin-info-dialog.php:1447 msgid "%s stars" msgstr "" -#: includes/fs-plugin-info-dialog.php:1463 +#. translators: %s: # of stars (e.g. 5 stars) +#: includes/fs-plugin-info-dialog.php:1459 msgid "Click to see reviews that provided a rating of %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1476 +#: includes/fs-plugin-info-dialog.php:1472 msgid "Contributors" msgstr "" -#: includes/fs-plugin-info-dialog.php:1517 +#: includes/fs-plugin-info-dialog.php:1513 msgid "This plugin requires a newer version of PHP." msgstr "" -#: includes/fs-plugin-info-dialog.php:1526 +#. translators: %s: URL to Update PHP page. +#: includes/fs-plugin-info-dialog.php:1522 msgid "Click here to learn more about updating PHP." msgstr "" -#: includes/fs-plugin-info-dialog.php:1540, includes/fs-plugin-info-dialog.php:1542 +#: includes/fs-plugin-info-dialog.php:1538, includes/fs-plugin-info-dialog.php:1536 msgid "Warning" msgstr "" -#: includes/fs-plugin-info-dialog.php:1540 -msgid "This plugin has not been tested with your current version of WordPress." +#: includes/fs-plugin-info-dialog.php:1538 +msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "" -#: includes/fs-plugin-info-dialog.php:1542 -msgid "This plugin has not been marked as compatible with your version of WordPress." +#: includes/fs-plugin-info-dialog.php:1536 +msgid "This plugin has not been tested with your current version of WordPress." msgstr "" -#: includes/fs-plugin-info-dialog.php:1561 +#: includes/fs-plugin-info-dialog.php:1557 msgid "Paid add-on must be deployed to Freemius." msgstr "" -#: includes/fs-plugin-info-dialog.php:1562 +#: includes/fs-plugin-info-dialog.php:1558 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "" -#: includes/fs-plugin-info-dialog.php:1583 -msgid "Newer Version (%s) Installed" +#: includes/fs-plugin-info-dialog.php:1587 +msgid "Latest Version Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:1584 -msgid "Newer Free Version (%s) Installed" +#: includes/fs-plugin-info-dialog.php:1588 +msgid "Latest Free Version Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:1591 -msgid "Latest Version Installed" +#: includes/fs-plugin-info-dialog.php:1579 +msgid "Newer Version (%s) Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:1592 -msgid "Latest Free Version Installed" +#: includes/fs-plugin-info-dialog.php:1580 +msgid "Newer Free Version (%s) Installed" msgstr "" -#: templates/account.php:115, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:31, templates/account/partials/site.php:313 +#: templates/account.php:111, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:31, templates/account/partials/site.php:313 msgid "Downgrading your plan" msgstr "" -#: templates/account.php:116, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:32, templates/account/partials/site.php:314 +#: templates/account.php:112, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:32, templates/account/partials/site.php:314 msgid "Cancelling the subscription" msgstr "" #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription' -#: templates/account.php:118, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:316 +#: templates/account.php:114, templates/forms/subscription-cancellation.php:99, templates/account/partials/addon.php:34, templates/account/partials/site.php:316 msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s." msgstr "" -#: templates/account.php:119, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:35, templates/account/partials/site.php:317 +#: templates/account.php:115, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:35, templates/account/partials/site.php:317 msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." msgstr "" -#: templates/account.php:120, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:36 +#: templates/account.php:116, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:36 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "" -#: templates/account.php:121, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:37, templates/account/partials/site.php:318 +#: templates/account.php:117, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:37, templates/account/partials/site.php:318 msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." msgstr "" -#: templates/account.php:122, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:38, templates/account/partials/site.php:319 +#: templates/account.php:118, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:38, templates/account/partials/site.php:319 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "" #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php:124, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:40 +#: templates/account.php:120, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:40 msgid "Activate %s Plan" msgstr "" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php:127, templates/account/partials/addon.php:43, templates/account/partials/site.php:293 +#: templates/account.php:123, templates/account/partials/addon.php:43, templates/account/partials/site.php:293 msgid "Auto renews in %s" msgstr "" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php:129, templates/account/partials/addon.php:45, templates/account/partials/site.php:295 +#: templates/account.php:125, templates/account/partials/addon.php:45, templates/account/partials/site.php:295 msgid "Expires in %s" msgstr "" -#: templates/account.php:130 +#: templates/account.php:126 msgctxt "as synchronize license" msgid "Sync License" msgstr "" -#: templates/account.php:131, templates/account/partials/addon.php:46 +#: templates/account.php:127, templates/account/partials/addon.php:46 msgid "Cancel Trial" msgstr "" -#: templates/account.php:132, templates/account/partials/addon.php:47 +#: templates/account.php:128, templates/account/partials/addon.php:47 msgid "Change Plan" msgstr "" -#: templates/account.php:133, templates/account/partials/addon.php:48 +#: templates/account.php:129, templates/account/partials/addon.php:48 msgctxt "verb" msgid "Upgrade" msgstr "" -#: templates/account.php:135, templates/account/partials/addon.php:50, templates/account/partials/site.php:320 +#: templates/account.php:131, templates/account/partials/addon.php:50, templates/account/partials/site.php:320 msgctxt "verb" msgid "Downgrade" msgstr "" -#: templates/account.php:137, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:52, templates/account/partials/site.php:33 +#: templates/account.php:133, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:52, templates/account/partials/site.php:33 msgid "Free" msgstr "" -#: templates/account.php:139, templates/debug.php:412, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:54 +#: templates/account.php:135, templates/debug.php:412, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:54 msgctxt "as product pricing plan" msgid "Plan" msgstr "" -#: templates/account.php:140 +#: templates/account.php:136 msgid "Bundle Plan" msgstr "" -#: templates/account.php:272 +#: templates/account.php:268 msgid "Free Trial" msgstr "" -#: templates/account.php:283 +#: templates/account.php:279 msgid "Account Details" msgstr "" -#: templates/account.php:290, templates/forms/data-debug-mode.php:33 -msgid "Start Debug" +#: templates/account.php:288 +msgid "Stop Debug" msgstr "" -#: templates/account.php:292 -msgid "Stop Debug" +#: templates/account.php:286, templates/forms/data-debug-mode.php:33 +msgid "Start Debug" msgstr "" -#: templates/account.php:299 +#: templates/account.php:295 msgid "Billing & Invoices" msgstr "" -#: templates/account.php:322, templates/account/partials/addon.php:236, templates/account/partials/deactivate-license-button.php:35 +#: templates/account.php:318, templates/account/partials/addon.php:236, templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "" -#: templates/account.php:345, templates/forms/subscription-cancellation.php:125 +#: templates/account.php:341, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "" -#: templates/account.php:345, templates/account/partials/addon.php:260 +#: templates/account.php:341, templates/account/partials/addon.php:260 msgid "Cancel Subscription" msgstr "" -#: templates/account.php:374, templates/account/partials/addon.php:345 +#: templates/account.php:370, templates/account/partials/addon.php:345 msgctxt "as synchronize" msgid "Sync" msgstr "" -#: templates/account.php:389, templates/debug.php:575 +#: templates/account.php:385, templates/debug.php:575 msgid "Name" msgstr "" -#: templates/account.php:395, templates/debug.php:576 +#: templates/account.php:391, templates/debug.php:576 msgid "Email" msgstr "" -#: templates/account.php:402, templates/debug.php:410, templates/debug.php:625 +#: templates/account.php:398, templates/debug.php:410, templates/debug.php:625 msgid "User ID" msgstr "" -#: templates/account.php:420, templates/account.php:738, templates/account.php:789, templates/debug.php:267, templates/debug.php:404, templates/debug.php:515, templates/debug.php:574, templates/debug.php:623, templates/debug.php:702, templates/account/payments.php:35, templates/debug/logger.php:21 +#: templates/account.php:416, templates/account.php:734, templates/account.php:785, templates/debug.php:267, templates/debug.php:404, templates/debug.php:515, templates/debug.php:574, templates/debug.php:623, templates/debug.php:702, templates/account/payments.php:35, templates/debug/logger.php:21 msgid "ID" msgstr "" -#: templates/account.php:427 +#: templates/account.php:423 msgid "Site ID" msgstr "" -#: templates/account.php:430 +#: templates/account.php:426 msgid "No ID" msgstr "" -#: templates/account.php:435, templates/debug.php:274, templates/debug.php:413, templates/debug.php:519, templates/debug.php:578, templates/account/partials/site.php:228 +#: templates/account.php:431, templates/debug.php:274, templates/debug.php:413, templates/debug.php:519, templates/debug.php:578, templates/account/partials/site.php:228 msgid "Public Key" msgstr "" -#: templates/account.php:441, templates/debug.php:414, templates/debug.php:520, templates/debug.php:579, templates/account/partials/site.php:241 +#: templates/account.php:437, templates/debug.php:414, templates/debug.php:520, templates/debug.php:579, templates/account/partials/site.php:241 msgid "Secret Key" msgstr "" -#: templates/account.php:444 +#: templates/account.php:440 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "" -#: templates/account.php:471, templates/account/partials/site.php:120, templates/account/partials/site.php:122 -msgid "Trial" +#: templates/account.php:494, templates/debug.php:631, templates/account/partials/site.php:262 +msgid "License Key" msgstr "" -#: templates/account.php:498, templates/debug.php:631, templates/account/partials/site.php:262 -msgid "License Key" +#: templates/account.php:467, templates/account/partials/site.php:122, templates/account/partials/site.php:120 +msgid "Trial" msgstr "" -#: templates/account.php:529 +#: templates/account.php:525 msgid "Join the Beta program" msgstr "" -#: templates/account.php:535 +#: templates/account.php:531 msgid "not verified" msgstr "" -#: templates/account.php:544, templates/account/partials/addon.php:195 -msgid "Expired" +#: templates/account.php:600 +msgid "Free version" msgstr "" -#: templates/account.php:602 +#: templates/account.php:598 msgid "Premium version" msgstr "" -#: templates/account.php:604 -msgid "Free version" +#: templates/account.php:540, templates/account/partials/addon.php:195 +msgid "Expired" msgstr "" -#: templates/account.php:616 +#: templates/account.php:612 msgid "Verify Email" msgstr "" -#: templates/account.php:630 -msgid "Download %s Version" +#: templates/account.php:689, templates/forms/user-change.php:27 +msgid "Change User" msgstr "" -#: templates/account.php:646 -msgid "Download Paid Version" +#: templates/account.php:676 +msgid "What is your %s?" msgstr "" -#: templates/account.php:664, templates/account.php:927, templates/account/partials/site.php:250, templates/account/partials/site.php:272 +#: templates/account.php:684, templates/account/billing.php:21 msgctxt "verb" -msgid "Show" +msgid "Edit" msgstr "" -#: templates/account.php:680 -msgid "What is your %s?" +#: templates/account.php:660, templates/account.php:923, templates/account/partials/site.php:250, templates/account/partials/site.php:272 +msgctxt "verb" +msgid "Show" msgstr "" -#: templates/account.php:688, templates/account/billing.php:21 -msgctxt "verb" -msgid "Edit" +#: templates/account.php:626 +msgid "Download %s Version" msgstr "" -#: templates/account.php:693, templates/forms/user-change.php:27 -msgid "Change User" +#: templates/account.php:642 +msgid "Download Paid Version" msgstr "" -#: templates/account.php:717 +#: templates/account.php:713 msgid "Sites" msgstr "" -#: templates/account.php:730 +#: templates/account.php:726 msgid "Search by address" msgstr "" -#: templates/account.php:739, templates/debug.php:407 +#: templates/account.php:735, templates/debug.php:407 msgid "Address" msgstr "" -#: templates/account.php:740 +#: templates/account.php:736 msgid "License" msgstr "" -#: templates/account.php:741 +#: templates/account.php:737 msgid "Plan" msgstr "" -#: templates/account.php:792 +#: templates/account.php:788 msgctxt "as software license" msgid "License" msgstr "" -#: templates/account.php:921 +#: templates/account.php:917 msgctxt "verb" msgid "Hide" msgstr "" -#: templates/account.php:943, templates/forms/data-debug-mode.php:31, templates/forms/deactivation/form.php:358, templates/forms/deactivation/form.php:389 +#: templates/account.php:939, templates/forms/data-debug-mode.php:31, templates/forms/deactivation/form.php:358, templates/forms/deactivation/form.php:389 msgid "Processing" msgstr "" -#: templates/account.php:946 +#: templates/account.php:942 msgid "Get updates for bleeding edge Beta versions of %s." msgstr "" -#: templates/account.php:1004 +#: templates/account.php:1000 msgid "Cancelling %s" msgstr "" -#: templates/account.php:1004, templates/account.php:1021, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:178 +#: templates/account.php:1000, templates/account.php:1017, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:178 msgid "trial" msgstr "" -#: templates/account.php:1019, templates/forms/deactivation/form.php:195 +#: templates/account.php:1015, templates/forms/deactivation/form.php:195 msgid "Cancelling %s..." msgstr "" -#: templates/account.php:1022, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:179 +#: templates/account.php:1018, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:179 msgid "subscription" msgstr "" -#: templates/account.php:1036 +#: templates/account.php:1032 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "" -#: templates/account.php:1110 +#: templates/account.php:1106 msgid "Disabling white-label mode" msgstr "" -#: templates/account.php:1111 +#: templates/account.php:1107 msgid "Enabling white-label mode" msgstr "" @@ -1489,11 +1509,12 @@ msgctxt "installed add-on" msgid "Installed" msgstr "" -#: templates/admin-notice.php:13, templates/forms/license-activation.php:243, templates/forms/resend-key.php:80 +#: templates/admin-notice.php:17, templates/forms/license-activation.php:245, templates/forms/resend-key.php:80 msgctxt "as close a window" msgid "Dismiss" msgstr "" +#. translators: %s: Number of seconds #: templates/auto-installation.php:45 msgid "%s sec" msgstr "" @@ -1523,143 +1544,144 @@ msgid "PCI compliant" msgstr "" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:127 +#: templates/connect.php:118 msgctxt "greeting" msgid "Hey %s," msgstr "" -#: templates/connect.php:187 -msgid "Never miss an important update" +#. translators: %1$s: plugin name (e.g., "Awesome Plugin"); %2$s: version (e.g., "1.2.3") +#: templates/connect.php:186 +msgid "Thank you for updating to %1$s v%2$s!" msgstr "" -#: templates/connect.php:195 -msgid "Thank you for updating to %1$s v%2$s!" +#: templates/connect.php:178 +msgid "Never miss an important update" msgstr "" -#: templates/connect.php:205 +#: templates/connect.php:196 msgid "Allow & Continue" msgstr "" -#: templates/connect.php:209 -msgid "Re-send activation email" +#. translators: %s: module type (plugin, theme, or add-on) +#: templates/connect.php:236 +msgid "We have introduced this opt-in so you never miss an important update and help us make the %s more compatible with your site and better at doing what you need it to." msgstr "" -#: templates/connect.php:213 -msgid "Thanks %s!" +#: templates/connect.php:238 +msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info." msgstr "" -#: templates/connect.php:214 -msgid "You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s." +#: templates/connect.php:241 +msgid "If you skip this, that's okay! %1$s will still work just fine." msgstr "" -#: templates/connect.php:225 -msgid "Welcome to %s! To get started, please enter your license key:" +#: templates/connect.php:227 +msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info. This will help us make the %s more compatible with your site and better at doing what you need it to." msgstr "" -#: templates/connect.php:236 -msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info. This will help us make the %s more compatible with your site and better at doing what you need it to." +#: templates/connect.php:216 +msgid "Welcome to %s! To get started, please enter your license key:" msgstr "" -#. translators: %s: module type (plugin, theme, or add-on) -#: templates/connect.php:245 -msgid "We have introduced this opt-in so you never miss an important update and help us make the %s more compatible with your site and better at doing what you need it to." +#: templates/connect.php:200 +msgid "Re-send activation email" msgstr "" -#: templates/connect.php:247 -msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info." +#: templates/connect.php:204 +msgid "Thanks %s!" msgstr "" -#: templates/connect.php:250 -msgid "If you skip this, that's okay! %1$s will still work just fine." +#: templates/connect.php:205 +msgid "You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s." msgstr "" -#: templates/connect.php:280 +#: templates/connect.php:271 msgid "We're excited to introduce the Freemius network-level integration." msgstr "" -#: templates/connect.php:283 +#: templates/connect.php:285 +msgid "During the update process we detected %s site(s) in the network that are still pending your attention." +msgstr "" + +#: templates/connect.php:274 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "" -#: templates/connect.php:285 +#: templates/connect.php:276 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "" -#: templates/connect.php:287 +#: templates/connect.php:278 msgid "%s's paid features" msgstr "" -#: templates/connect.php:292 +#: templates/connect.php:283 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "" -#: templates/connect.php:294 -msgid "During the update process we detected %s site(s) in the network that are still pending your attention." -msgstr "" - -#: templates/connect.php:303, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:42 +#: templates/connect.php:294, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:42 msgid "License key" msgstr "" -#: templates/connect.php:306, templates/forms/license-activation.php:22 +#: templates/connect.php:297, templates/forms/license-activation.php:22 msgid "Can't find your license key?" msgstr "" -#: templates/connect.php:369, templates/connect.php:693, templates/forms/deactivation/retry-skip.php:20 +#: templates/connect.php:360, templates/connect.php:690, templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "" -#: templates/connect.php:372 +#: templates/connect.php:363 msgid "Delegate to Site Admins" msgstr "" -#: templates/connect.php:372 +#: templates/connect.php:363 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "" -#: templates/connect.php:399 +#: templates/connect.php:392 msgid "License issues?" msgstr "" -#: templates/connect.php:423 -msgid "For delivery of security & feature updates, and license management, %s needs to" -msgstr "" - -#: templates/connect.php:428 +#: templates/connect.php:421 msgid "This will allow %s to" msgstr "" -#: templates/connect.php:443 -msgid "Don't have a license key?" +#: templates/connect.php:416 +msgid "For delivery of security & feature updates, and license management, %s needs to" msgstr "" -#: templates/connect.php:446 +#: templates/connect.php:439 msgid "Have a license key?" msgstr "" -#: templates/connect.php:454 +#: templates/connect.php:436 +msgid "Don't have a license key?" +msgstr "" + +#: templates/connect.php:447 msgid "Freemius is our licensing and software updates engine" msgstr "" -#: templates/connect.php:457 +#: templates/connect.php:450 msgid "Privacy Policy" msgstr "" -#: templates/connect.php:459 -msgid "License Agreement" +#: templates/connect.php:455 +msgid "Terms of Service" msgstr "" -#: templates/connect.php:459 -msgid "Terms of Service" +#: templates/connect.php:453 +msgid "License Agreement" msgstr "" -#: templates/connect.php:879 +#: templates/connect.php:876 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "" -#: templates/connect.php:880 +#: templates/connect.php:877 msgctxt "as activating plugin" msgid "Activating" msgstr "" @@ -1808,6 +1830,7 @@ msgstr "" msgid "Simulate Network Upgrade" msgstr "" +#. translators: %s: 'plugin' or 'theme' #: templates/debug.php:398 msgid "%s Installs" msgstr "" @@ -1919,6 +1942,7 @@ msgstr "" msgid "Timestamp" msgstr "" +#. translators: %s: Page name #: templates/secure-https-header.php:28 msgid "Secure HTTPS %s page, running from an external domain" msgstr "" @@ -1927,7 +1951,7 @@ msgstr "" msgid "Support" msgstr "" -#: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:54, templates/debug/logger.php:62 +#: includes/debug/class-fs-debug-bar-panel.php:51, templates/debug/api-calls.php:54, templates/debug/logger.php:62 msgctxt "milliseconds" msgid "ms" msgstr "" @@ -1948,10 +1972,6 @@ msgstr "" msgid "products" msgstr "" -#: includes/managers/class-fs-clone-manager.php:1205 -msgid "%1$s has been placed into safe mode because we noticed that %2$s is an exact copy of %3$s." -msgstr "" - #: includes/managers/class-fs-clone-manager.php:1211 msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of %3$s:%1$s" msgstr "" @@ -1960,6 +1980,10 @@ msgstr "" msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of these sites:%3$s%1$s" msgstr "" +#: includes/managers/class-fs-clone-manager.php:1205 +msgid "%1$s has been placed into safe mode because we noticed that %2$s is an exact copy of %3$s." +msgstr "" + #: includes/managers/class-fs-clone-manager.php:1238 msgid "the above-mentioned sites" msgstr "" @@ -2062,6 +2086,7 @@ msgstr "" msgid "Homepage URL & title, WP & PHP versions, and site language" msgstr "" +#. translators: %s: 'Plugin' or 'Theme' #: includes/managers/class-fs-permission-manager.php:195 msgid "To provide additional functionality that's relevant to your website, avoid WordPress or PHP version incompatibilities that can break your website, and recognize which languages & regions the %s should be translated and tailored to." msgstr "" @@ -2070,6 +2095,7 @@ msgstr "" msgid "View Basic %s Info" msgstr "" +#. translators: %s: 'Plugin' or 'Theme' #: includes/managers/class-fs-permission-manager.php:210 msgid "Current %s & SDK versions, and if active or uninstalled" msgstr "" @@ -2078,9 +2104,7 @@ msgstr "" msgid "View License Essentials" msgstr "" -#: includes/managers/class-fs-permission-manager.php:262 -msgstr "" - +#. translators: %s: 'Plugin' or 'Theme' #: includes/managers/class-fs-permission-manager.php:272 msgid "To let you manage & control where the license is activated and ensure %s security & feature updates are only delivered to websites you authorize." msgstr "" @@ -2089,6 +2113,7 @@ msgstr "" msgid "View %s State" msgstr "" +#. translators: %s: 'Plugin' or 'Theme' #: includes/managers/class-fs-permission-manager.php:287 msgid "Is active, deactivated, or uninstalled" msgstr "" @@ -2109,6 +2134,7 @@ msgstr "" msgid "WordPress & PHP versions, site language & title" msgstr "" +#. translators: %s: 'Plugin' or 'Theme' #: includes/managers/class-fs-permission-manager.php:330 msgid "To avoid breaking your website due to WordPress or PHP version incompatibilities, and recognize which languages & regions the %s should be translated and tailored to." msgstr "" @@ -2308,143 +2334,143 @@ msgstr "" msgid "Next" msgstr "" -#: templates/forms/affiliation.php:83 +#: templates/forms/affiliation.php:86 msgid "Non-expiring" msgstr "" -#: templates/forms/affiliation.php:86 +#: templates/forms/affiliation.php:89 msgid "Apply to become an affiliate" msgstr "" -#: templates/forms/affiliation.php:108 -msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." +#: templates/forms/affiliation.php:137 +msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." msgstr "" -#: templates/forms/affiliation.php:123 -msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." +#: templates/forms/affiliation.php:134 +msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." msgstr "" -#: templates/forms/affiliation.php:126 +#: templates/forms/affiliation.php:131 msgid "Your affiliation account was temporarily suspended." msgstr "" -#: templates/forms/affiliation.php:129 -msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." +#: templates/forms/affiliation.php:128 +msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." msgstr "" -#: templates/forms/affiliation.php:132 -msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." +#: templates/forms/affiliation.php:113 +msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." msgstr "" -#: templates/forms/affiliation.php:145 +#: templates/forms/affiliation.php:150 msgid "Like the %s? Become our ambassador and earn cash ;-)" msgstr "" -#: templates/forms/affiliation.php:146 +#: templates/forms/affiliation.php:151 msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!" msgstr "" -#: templates/forms/affiliation.php:149 +#: templates/forms/affiliation.php:154 msgid "Program Summary" msgstr "" -#: templates/forms/affiliation.php:151 +#: templates/forms/affiliation.php:156 msgid "%s commission when a customer purchases a new license." msgstr "" -#: templates/forms/affiliation.php:153 +#: templates/forms/affiliation.php:158 msgid "Get commission for automated subscription renewals." msgstr "" -#: templates/forms/affiliation.php:156 +#: templates/forms/affiliation.php:161 msgid "%s tracking cookie after the first visit to maximize earnings potential." msgstr "" -#: templates/forms/affiliation.php:159 +#: templates/forms/affiliation.php:164 msgid "Unlimited commissions." msgstr "" -#: templates/forms/affiliation.php:161 +#: templates/forms/affiliation.php:166 msgid "%s minimum payout amount." msgstr "" -#: templates/forms/affiliation.php:162 +#: templates/forms/affiliation.php:167 msgid "Payouts are in USD and processed monthly via PayPal." msgstr "" -#: templates/forms/affiliation.php:163 +#: templates/forms/affiliation.php:168 msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." msgstr "" -#: templates/forms/affiliation.php:166 +#: templates/forms/affiliation.php:171 msgid "Affiliate" msgstr "" -#: templates/forms/affiliation.php:169, templates/forms/resend-key.php:23 +#: templates/forms/affiliation.php:174, templates/forms/resend-key.php:23 msgid "Email address" msgstr "" -#: templates/forms/affiliation.php:173 +#: templates/forms/affiliation.php:178 msgid "Full name" msgstr "" -#: templates/forms/affiliation.php:177 +#: templates/forms/affiliation.php:182 msgid "PayPal account email address" msgstr "" -#: templates/forms/affiliation.php:181 +#: templates/forms/affiliation.php:186 msgid "Where are you going to promote the %s?" msgstr "" -#: templates/forms/affiliation.php:183 +#: templates/forms/affiliation.php:188 msgid "Enter the domain of your website or other websites from where you plan to promote the %s." msgstr "" -#: templates/forms/affiliation.php:185 +#: templates/forms/affiliation.php:190 msgid "Add another domain" msgstr "" -#: templates/forms/affiliation.php:189 +#: templates/forms/affiliation.php:194 msgid "Extra Domains" msgstr "" -#: templates/forms/affiliation.php:190 +#: templates/forms/affiliation.php:195 msgid "Extra domains where you will be marketing the product from." msgstr "" -#: templates/forms/affiliation.php:200 +#: templates/forms/affiliation.php:205 msgid "Promotion methods" msgstr "" -#: templates/forms/affiliation.php:203 +#: templates/forms/affiliation.php:208 msgid "Social media (Facebook, Twitter, etc.)" msgstr "" -#: templates/forms/affiliation.php:207 +#: templates/forms/affiliation.php:212 msgid "Mobile apps" msgstr "" -#: templates/forms/affiliation.php:211 +#: templates/forms/affiliation.php:216 msgid "Website, email, and social media statistics (optional)" msgstr "" -#: templates/forms/affiliation.php:214 +#: templates/forms/affiliation.php:219 msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)." msgstr "" -#: templates/forms/affiliation.php:218 +#: templates/forms/affiliation.php:223 msgid "How will you promote us?" msgstr "" -#: templates/forms/affiliation.php:221 +#: templates/forms/affiliation.php:226 msgid "Please provide details on how you intend to promote %s (please be as specific as possible)." msgstr "" -#: templates/forms/affiliation.php:233, templates/forms/resend-key.php:22, templates/account/partials/disconnect-button.php:92 +#: templates/forms/affiliation.php:238, templates/forms/resend-key.php:22, templates/account/partials/disconnect-button.php:92 msgid "Cancel" msgstr "" -#: templates/forms/affiliation.php:235 +#: templates/forms/affiliation.php:240 msgid "Become an affiliate" msgstr "" @@ -2525,10 +2551,14 @@ msgstr "" msgid "Agree & Activate License" msgstr "" -#: templates/forms/license-activation.php:204 +#: templates/forms/license-activation.php:206 msgid "Associate with the license owner's account." msgstr "" +#: templates/forms/optout.php:104 +msgid "Keep automatic updates" +msgstr "" + #: templates/forms/optout.php:44 msgid "Communication" msgstr "" @@ -2549,10 +2579,6 @@ msgstr "" msgid "Extensions" msgstr "" -#: templates/forms/optout.php:104 -msgid "Keep automatic updates" -msgstr "" - #: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "" @@ -2614,10 +2640,12 @@ msgstr "" msgid "Cancel %s & Proceed" msgstr "" +#. translators: %1$s: Number of trial days; %2$s: Plan name; #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "" +#. translators: %s: Link to freemius.com #: templates/forms/trial-start.php:28 msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." msgstr "" @@ -2646,14 +2674,6 @@ msgstr "" msgid "Beta" msgstr "" -#: templates/partials/network-activation.php:32 -msgid "Activate license on all sites in the network." -msgstr "" - -#: templates/partials/network-activation.php:33 -msgid "Apply on all sites in the network." -msgstr "" - #: templates/partials/network-activation.php:36 msgid "Activate license on all pending sites." msgstr "" @@ -2662,6 +2682,14 @@ msgstr "" msgid "Apply on all pending sites." msgstr "" +#: templates/partials/network-activation.php:32 +msgid "Activate license on all sites in the network." +msgstr "" + +#: templates/partials/network-activation.php:33 +msgid "Apply on all sites in the network." +msgstr "" + #: templates/partials/network-activation.php:45, templates/partials/network-activation.php:79 msgid "allow" msgstr "" @@ -2674,7 +2702,7 @@ msgstr "" msgid "skip" msgstr "" -#: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31 +#: templates/plugin-info/description.php:67, templates/plugin-info/screenshots.php:26 msgid "Click to view full-size screenshot %d" msgstr "" @@ -2695,27 +2723,24 @@ msgstr "" msgid "Last license" msgstr "" -#. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription' -#: templates/account/partials/addon.php:34 -msgid "%1$s will immediately stop all future recurring payments and your %s plan license will expire in %s." +#: templates/account/partials/addon.php:200 +msgid "No expiration" msgstr "" #: templates/account/partials/addon.php:190 msgid "Cancelled" msgstr "" -#: templates/account/partials/addon.php:200 -msgid "No expiration" +#. translators: %s is replaced with the website's homepage address. +#: templates/account/partials/disconnect-button.php:78 +msgid "Disconnecting the website will permanently remove %s from your User Dashboard's account." msgstr "" #: templates/account/partials/disconnect-button.php:74 msgid "By disconnecting the website, previously shared diagnostic data about %1$s will be deleted and no longer visible to %2$s." msgstr "" -#: templates/account/partials/disconnect-button.php:78 -msgid "Disconnecting the website will permanently remove %s from your User Dashboard's account." -msgstr "" - +#. translators: %1$s is replaced by the paid plan name, %2$s is replaced with an anchor link with the text "User Dashboard". #: templates/account/partials/disconnect-button.php:84 msgid "If you wish to cancel your %1$s plan's subscription instead, please navigate to the %2$s and cancel it there." msgstr "" diff --git a/freemius/start.php b/freemius/start.php index 00d80293a..e33cd941d 100644 --- a/freemius/start.php +++ b/freemius/start.php @@ -15,7 +15,7 @@ * * @var string */ - $this_sdk_version = '2.6.2'; + $this_sdk_version = '2.7.0'; #region SDK Selection Logic -------------------------------------------------------------------- diff --git a/freemius/templates/account/partials/addon.php b/freemius/templates/account/partials/addon.php index 9f3fd1224..af9b94c2a 100644 --- a/freemius/templates/account/partials/addon.php +++ b/freemius/templates/account/partials/addon.php @@ -31,7 +31,7 @@ $downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug ); $cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug ); /* translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription' */ - $downgrade_x_confirm_text = fs_text_inline( '%1$s will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); + $downgrade_x_confirm_text = fs_text_inline( '%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s.', 'downgrade-x-confirm', $slug ); $prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug ); $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ); $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug ); @@ -240,19 +240,19 @@ true ); - $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); - $downgrade_confirmation_message = sprintf( - $downgrade_x_confirm_text, - ( $fs_addon->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), - $plan->title, - $human_readable_license_expiration - ); - $after_downgrade_message = ! $license->is_block_features ? sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs_addon->get_module_label( true ) ) : sprintf( $after_downgrade_blocking_text, $plan->title ); if ( ! $license->is_lifetime() && $is_active_subscription ) { + $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); + $downgrade_confirmation_message = sprintf( + $downgrade_x_confirm_text, + ( $fs_addon->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), + $plan->title, + $human_readable_license_expiration + ); + $buttons[] = fs_ui_get_action_button( $fs->get_id(), 'account', diff --git a/freemius/templates/checkout.php b/freemius/templates/checkout.php index 3e8da5184..e43d842e9 100755 --- a/freemius/templates/checkout.php +++ b/freemius/templates/checkout.php @@ -39,7 +39,7 @@ wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'json2' ); - fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' ); + fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' ); fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' ); fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); diff --git a/freemius/templates/contact.php b/freemius/templates/contact.php index 5fdd6e3c1..79495effa 100755 --- a/freemius/templates/contact.php +++ b/freemius/templates/contact.php @@ -39,7 +39,7 @@ wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'json2' ); - fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' ); + fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' ); fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' ); fs_enqueue_local_style( 'fs_checkout', '/admin/common.css' ); diff --git a/freemius/templates/forms/license-activation.php b/freemius/templates/forms/license-activation.php index 7b27461f3..f6b7783bd 100644 --- a/freemius/templates/forms/license-activation.php +++ b/freemius/templates/forms/license-activation.php @@ -151,7 +151,7 @@ $license->get_html_escaped_masked_secret_key() ); - $license_input_html .= ""; + $license_input_html .= ""; } $license_input_html .= ''; @@ -178,7 +178,6 @@ class="fs-available-license-key" type="text" value="{$value}" data-id="{$available_license->id}" - data-license-key="{$available_license->secret_key}" data-left="{$available_license->left()}" readonly /> HTML; @@ -562,17 +561,17 @@ function registerEventHandlers() { return; } - var - licenseKey = ''; + var licenseKey = '', + licenseID = ''; if ( hasLicenseTypes ) { if ( isOtherLicenseKeySelected() ) { licenseKey = $otherLicenseKey.val(); } else { if ( ! hasLicensesDropdown ) { - licenseKey = $availableLicenseKey.data( 'license-key' ); + licenseID = $availableLicenseKey.data( 'id' ); } else { - licenseKey = $licensesDropdown.val(); + licenseID = $licensesDropdown.val(); } } } else { @@ -581,17 +580,22 @@ function registerEventHandlers() { disableActivateLicenseButton(); - if (0 === licenseKey.length) { + if ( 0 === licenseID.length && 0 === licenseKey.length ) { return; } var data = { action : 'get_ajax_action( 'activate_license' ) ?>', security : 'get_ajax_security( 'activate_license' ) ?>', - license_key: licenseKey, module_id : 'get_id() ?>' }; + if ( licenseID.length > 0 ) { + data.license_id = licenseID; + } else { + data.license_key = licenseKey; + } + if ( isNetworkActivation ) { var sites = []; diff --git a/freemius/templates/powered-by.php b/freemius/templates/powered-by.php index fc10b0bf8..e925b0cfc 100755 --- a/freemius/templates/powered-by.php +++ b/freemius/templates/powered-by.php @@ -36,7 +36,7 @@ if ( ! $fs->is_whitelabeled() && ! $fs->apply_filters( 'hide_freemius_powered_by', false ) ) { wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'json2' ); - fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' ); + fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' ); fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' ); ?>
diff --git a/freemius/templates/pricing.php b/freemius/templates/pricing.php index 842e4fe7d..05879a52d 100644 --- a/freemius/templates/pricing.php +++ b/freemius/templates/pricing.php @@ -39,7 +39,7 @@ wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'json2' ); - fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' ); + fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' ); fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' ); fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); diff --git a/languages/stackable-ultimate-gutenberg-blocks.pot b/languages/stackable-ultimate-gutenberg-blocks.pot index 10d5eee78..b0f0c7e1a 100644 --- a/languages/stackable-ultimate-gutenberg-blocks.pot +++ b/languages/stackable-ultimate-gutenberg-blocks.pot @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Stackable - Gutenberg Blocks plugin. msgid "" msgstr "" -"Project-Id-Version: Stackable - Gutenberg Blocks 3.12.11\n" +"Project-Id-Version: Stackable - Gutenberg Blocks 3.12.15\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/stackable-ultimate-gutenberg-blocks\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2024-02-19T09:41:22+00:00\n" +"POT-Creation-Date: 2024-04-12T12:30:28+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.5.0\n" @@ -34,58 +34,74 @@ msgid "http://gambit.ph" msgstr "" #: dist/translation-strings.php:9 +#: src/welcome/index.php:29 +#: src/welcome/index.php:30 +#: src/welcome/index.php:161 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Stackable" +msgstr "" + +#: dist/translation-strings.php:10 +msgid "Description for this block. You can use this space for describing your block." +msgstr "" + +#: dist/translation-strings.php:11 +msgid "Description for this block. Use this space for describing your block. Any text will do." +msgstr "" + +#: dist/translation-strings.php:12 #: dist/admin_welcome.js:2 msgid "Essential Blocks" msgstr "" -#: dist/translation-strings.php:10 +#: dist/translation-strings.php:13 #: dist/admin_welcome.js:2 msgid "All the necessary building blocks you need to design anything." msgstr "" -#: dist/translation-strings.php:11 +#: dist/translation-strings.php:14 #: dist/admin_welcome.js:2 msgid "Special Blocks" msgstr "" -#: dist/translation-strings.php:12 +#: dist/translation-strings.php:15 #: dist/admin_welcome.js:2 msgid "Blocks with special functionality that will allow you to create distinctive designs." msgstr "" -#: dist/translation-strings.php:13 +#: dist/translation-strings.php:16 #: dist/admin_welcome.js:2 msgid "Section Blocks" msgstr "" -#: dist/translation-strings.php:14 +#: dist/translation-strings.php:17 #: dist/admin_welcome.js:2 msgid "Use these blocks act as templates to help you build sections effortlessly." msgstr "" -#: dist/translation-strings.php:15 +#: dist/translation-strings.php:18 #: dist/admin_welcome.js:2 msgid "See example" msgstr "" -#: dist/translation-strings.php:16 +#: dist/translation-strings.php:19 #: dist/admin_welcome.js:2 #: dist/deprecated/admin_welcome_v2.js:2 msgid "Enable All" msgstr "" -#: dist/translation-strings.php:17 +#: dist/translation-strings.php:20 #: dist/admin_welcome.js:2 #: dist/deprecated/admin_welcome_v2.js:2 msgid "Disable All" msgstr "" -#: dist/translation-strings.php:18 +#: dist/translation-strings.php:21 #: dist/admin_welcome.js:2 msgid "view demo" msgstr "" -#: dist/translation-strings.php:19 +#: dist/translation-strings.php:22 #: dist/admin_welcome.js:2 #: dist/admin_welcome__premium_only.js:2 #: dist/deprecated/admin_welcome_v2.js:2 @@ -93,7 +109,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: dist/translation-strings.php:20 +#: dist/translation-strings.php:23 #: dist/admin_welcome.js:2 #: dist/admin_welcome__premium_only.js:2 #: dist/deprecated/admin_welcome_v2.js:2 @@ -101,402 +117,384 @@ msgstr "" msgid "Enabled" msgstr "" -#: dist/translation-strings.php:21 +#: dist/translation-strings.php:24 #: dist/admin_welcome.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:483 +#: dist/translation-strings.js:485 msgid "Design Library" msgstr "" -#: dist/translation-strings.php:22 +#: dist/translation-strings.php:25 #: dist/admin_welcome.js:2 msgid "Adds a button on the top of the editor which gives access to a collection of pre-made block designs." msgstr "" -#: dist/translation-strings.php:23 +#: dist/translation-strings.php:26 #: dist/admin_welcome.js:2 msgid "Optimize Inline CSS" msgstr "" -#: dist/translation-strings.php:24 +#: dist/translation-strings.php:27 #: dist/admin_welcome.js:2 msgid "Optimize inlined CSS styles. If this is enabled, similar selectors will be combined together, helpful if you changed Block Defaults." msgstr "" -#: dist/translation-strings.php:25 -#: dist/admin_welcome.js:2 -msgid "Navigation Panel" -msgstr "" - -#: dist/translation-strings.php:26 -#: dist/admin_welcome.js:2 -msgid "A block Navigation panel that floats at the bottom of the inspector that helps with adjusting the different blocks in your column layout." -msgstr "" - -#: dist/translation-strings.php:27 +#: dist/translation-strings.php:28 #: dist/admin_welcome.js:2 msgid "Auto-Collapse Panels" msgstr "" -#: dist/translation-strings.php:28 -#: src/editor-settings.php:128 +#: dist/translation-strings.php:29 +#: src/editor-settings.php:116 #: dist/admin_welcome.js:2 msgid "Collapse other inspector panels when opening another, keeping only one open at a time." msgstr "" -#: dist/translation-strings.php:29 +#: dist/translation-strings.php:30 #: dist/admin_welcome.js:2 msgid "Block Linking (Beta)" msgstr "" -#: dist/translation-strings.php:30 -#: src/editor-settings.php:140 +#: dist/translation-strings.php:31 +#: src/editor-settings.php:128 #: dist/admin_welcome.js:2 msgid "Gives you the ability to link columns. Any changes you make on one column will automatically get applied on the other columns." msgstr "" -#: dist/translation-strings.php:31 +#: dist/translation-strings.php:32 #: src/welcome/index.php:214 #: src/welcome/index.php:217 #: dist/admin_welcome.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:293 +#: dist/translation-strings.js:239 msgid "Learn more" msgstr "" -#: dist/translation-strings.php:32 +#: dist/translation-strings.php:33 #: dist/admin_welcome.js:2 msgid "Nested Block Width" msgstr "" -#: dist/translation-strings.php:33 +#: dist/translation-strings.php:34 #: dist/admin_welcome.js:2 msgid "The width used when a Columns block has its Content Width set to center. This is automatically detected from your theme. You can adjust it if your blocks are not aligned correctly. In px, you can also use other units or use a calc() formula." msgstr "" -#: dist/translation-strings.php:34 +#: dist/translation-strings.php:35 #: dist/admin_welcome.js:2 msgid "Nested Wide Block Width" msgstr "" -#: dist/translation-strings.php:35 +#: dist/translation-strings.php:36 #: dist/admin_welcome.js:2 msgid "The width used when a Columns block has its Content Width set to wide. This is automatically detected from your theme. You can adjust it if your blocks are not aligned correctly. In px, you can also use other units or use a calc() formula." msgstr "" -#: dist/translation-strings.php:36 +#: dist/translation-strings.php:37 #: dist/admin_welcome.js:2 msgid "Google Maps API Key" msgstr "" -#: dist/translation-strings.php:37 +#: dist/translation-strings.php:38 #: dist/admin_welcome.js:2 msgid "Lazy Load Images within Carousels" msgstr "" -#: dist/translation-strings.php:38 +#: dist/translation-strings.php:39 #: dist/admin_welcome.js:2 msgid "Disable this if you encounter layout or spacing issues when using images inside carousel-type blocks because of image lazy loading." msgstr "" -#: dist/translation-strings.php:39 +#: dist/translation-strings.php:40 #: dist/admin_welcome.js:2 msgid "Tablet Breakpoint" msgstr "" -#: dist/translation-strings.php:40 +#: dist/translation-strings.php:41 #: dist/admin_welcome.js:2 msgid "Mobile Breakpoint" msgstr "" -#: dist/translation-strings.php:41 +#: dist/translation-strings.php:42 #: dist/admin_welcome.js:2 msgid "Force Typography Styles" msgstr "" -#: dist/translation-strings.php:42 +#: dist/translation-strings.php:43 #: dist/admin_welcome.js:2 msgid "Not forced" msgstr "" -#: dist/translation-strings.php:43 +#: dist/translation-strings.php:44 #: dist/admin_welcome.js:2 msgid "Force styles" msgstr "" -#: dist/translation-strings.php:44 +#: dist/translation-strings.php:45 #: dist/admin_welcome.js:2 msgid "FontAwesome Icon Library Version" msgstr "" -#: dist/translation-strings.php:45 +#: dist/translation-strings.php:46 #: dist/admin_welcome.js:2 msgid "You are using the version set in your Font Awesome Pro Kit." msgstr "" -#: dist/translation-strings.php:46 +#: dist/translation-strings.php:47 #: dist/admin_welcome.js:2 msgid "Show \"Go premium\" notices" msgstr "" -#: dist/translation-strings.php:47 +#: dist/translation-strings.php:48 #: dist/admin_welcome.js:2 msgid "Don't show help video tooltips" msgstr "" -#: dist/translation-strings.php:48 +#: dist/translation-strings.php:49 #: dist/admin_welcome.js:2 msgid "Generate Global Colors for native blocks" msgstr "" -#: dist/translation-strings.php:49 +#: dist/translation-strings.php:50 #: dist/admin_welcome.js:2 msgid "🏠 Migration Settings" msgstr "" -#: dist/translation-strings.php:50 +#: dist/translation-strings.php:51 #: dist/admin_welcome.js:2 msgid "Migrating from version 2 to version 3?" msgstr "" -#: dist/translation-strings.php:51 +#: dist/translation-strings.php:52 #: dist/admin_welcome.js:2 msgid "Learn more about migration and the settings below" msgstr "" -#: dist/translation-strings.php:52 +#: dist/translation-strings.php:53 #: src/deprecated/v2/init.php:72 #: dist/admin_welcome.js:2 msgid "Load version 2 blocks in the editor" msgstr "" -#: dist/translation-strings.php:53 +#: dist/translation-strings.php:54 #: dist/admin_welcome.js:2 msgid "Load version 2 blocks in the editor only when the page was using version 2 blocks" msgstr "" -#: dist/translation-strings.php:54 +#: dist/translation-strings.php:55 #: dist/admin_welcome.js:2 msgid "Load version 2 frontend block stylesheet and scripts for backward compatibility" msgstr "" -#: dist/translation-strings.php:55 +#: dist/translation-strings.php:56 #: dist/admin_welcome.js:2 msgid "Tutorials" msgstr "" -#: dist/translation-strings.php:56 +#: dist/translation-strings.php:57 #: dist/admin_welcome.js:2 msgid "Get to know the plugin and start your journey with our brand new Stackable Courses." msgstr "" -#: dist/translation-strings.php:57 +#: dist/translation-strings.php:58 #: src/welcome/index.php:137 #: dist/admin_welcome.js:2 msgid "Documentation" msgstr "" -#: dist/translation-strings.php:58 +#: dist/translation-strings.php:59 #: dist/admin_welcome.js:2 msgid "Visit our knowledge base for troubleshooting, guides, FAQs and updates." msgstr "" -#: dist/translation-strings.php:59 +#: dist/translation-strings.php:60 #: dist/admin_welcome.js:2 msgid "Community" msgstr "" -#: dist/translation-strings.php:60 +#: dist/translation-strings.php:61 #: dist/admin_welcome.js:2 msgid "Join our very active Stackable Community on Facebook." msgstr "" -#: dist/translation-strings.php:61 +#: dist/translation-strings.php:62 #: dist/admin_welcome.js:2 msgid "The Basics of Stackable Blocks" msgstr "" -#: dist/translation-strings.php:62 +#: dist/translation-strings.php:63 #: dist/admin_welcome.js:2 msgid "Learn how to personalize and tailor Stackable Blocks to match your website's unique style and design." msgstr "" -#: dist/translation-strings.php:63 +#: dist/translation-strings.php:64 #: dist/admin_welcome.js:2 msgid "Flexbox Controls" msgstr "" -#: dist/translation-strings.php:64 +#: dist/translation-strings.php:65 #: dist/admin_welcome.js:2 msgid "Explore the powerful Flexbox controls in Stackable that allow you to effortlessly create dynamic and responsive layouts." msgstr "" -#: dist/translation-strings.php:65 +#: dist/translation-strings.php:66 #: dist/admin_welcome.js:2 msgid "Introduction to Hover Styles" msgstr "" -#: dist/translation-strings.php:66 +#: dist/translation-strings.php:67 #: dist/admin_welcome.js:2 msgid "Discover the exciting world of hover styles in Stackable and learn how to add interactive and engaging effects to your website." msgstr "" -#: dist/translation-strings.php:67 +#: dist/translation-strings.php:68 #: dist/admin_welcome.js:2 msgid "How to Use Image Settings" msgstr "" -#: dist/translation-strings.php:68 +#: dist/translation-strings.php:69 #: dist/admin_welcome.js:2 msgid "Master the art of optimizing and enhancing images using Stackable's intuitive image settings for a visually captivating website." msgstr "" -#: dist/translation-strings.php:69 +#: dist/translation-strings.php:70 #: dist/admin_welcome.js:2 msgid "Introduction to the Design Library" msgstr "" -#: dist/translation-strings.php:70 +#: dist/translation-strings.php:71 #: dist/admin_welcome.js:2 msgid "Dive into the fundamentals of the Stackable Design Library and learn how to streamline your website development process with ease." msgstr "" -#: dist/translation-strings.php:71 +#: dist/translation-strings.php:72 #: dist/admin_welcome.js:2 msgid "All About Typography in Stackable" msgstr "" -#: dist/translation-strings.php:72 +#: dist/translation-strings.php:73 #: dist/admin_welcome.js:2 msgid "Unlock the full potential of typography in Stackable and gain insights on how to create visually stunning and impactful text designs." msgstr "" -#: dist/translation-strings.php:73 +#: dist/translation-strings.php:74 #: dist/admin_welcome.js:2 msgid "Unleash the Full Potential of the WordPress Block Editor by Turning It into a Page Builder" msgstr "" -#: dist/translation-strings.php:74 +#: dist/translation-strings.php:75 #: dist/admin_welcome.js:2 msgid "Learn the essentials in just a few minutes by watching this video. Scroll down to see more quick tutorials." msgstr "" -#: dist/translation-strings.php:75 +#: dist/translation-strings.php:76 #: src/welcome/index.php:114 #: dist/admin_welcome.js:2 msgid "Getting Started" msgstr "" -#: dist/translation-strings.php:76 +#: dist/translation-strings.php:77 #: dist/admin_welcome.js:2 msgid "Create a new page" msgstr "" -#: dist/translation-strings.php:77 +#: dist/translation-strings.php:78 #: dist/admin_welcome.js:2 msgid "Learn the essentials" msgstr "" -#: dist/translation-strings.php:78 +#: dist/translation-strings.php:79 #: dist/admin_welcome.js:2 msgid "Check out our library of tutorials and guides" msgstr "" -#: dist/translation-strings.php:79 +#: dist/translation-strings.php:80 #: dist/admin_welcome.js:2 msgid "Go to Stackable Learn" msgstr "" -#: dist/translation-strings.php:80 -#: src/welcome/index.php:29 -#: src/welcome/index.php:30 -#: src/welcome/index.php:161 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Stackable" -msgstr "" - #: dist/translation-strings.php:81 -msgid "Description for this block. You can use this space for describing your block." +#: dist/editor_blocks.js:2 +msgid "Quotation Mark Icons" msgstr "" #: dist/translation-strings.php:82 -msgid "Description for this block. Use this space for describing your block. Any text will do." +#: dist/editor_blocks.js:2 +msgid "Pick another icon" msgstr "" #: dist/translation-strings.php:83 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:140 -msgid "General" +msgid "Description for this block. Use this space for describing your block. Any text will do. Description for this block. You can use this space for describing your block." msgstr "" #: dist/translation-strings.php:84 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Open at the start" +msgid "Round Thin" msgstr "" #: dist/translation-strings.php:85 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Close adjacent on open" +msgid "Round" msgstr "" #: dist/translation-strings.php:86 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Automatically closes adjacent accordion panels when clicked." +msgid "Round Thick" msgstr "" #: dist/translation-strings.php:87 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Enable FAQ Schema" +msgid "Round Fat" msgstr "" #: dist/translation-strings.php:88 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Open Icon" +msgid "Square Thin" msgstr "" #: dist/translation-strings.php:89 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "The open icon will appear when the accordion is opened" +msgid "Square" msgstr "" #: dist/translation-strings.php:90 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Title for This Block" +msgid "Square Simple" msgstr "" #: dist/translation-strings.php:91 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Description for this block. Use this space for describing your block. Any text will do. Description for this block. You can use this space for describing your block." +msgid "Square Modern" msgstr "" #: dist/translation-strings.php:92 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgctxt "Block layout name" -msgid "%s Layout" +msgid "Square Fat" msgstr "" #: dist/translation-strings.php:93 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:229 -msgid "Default" +msgctxt "Block layout name" +msgid "%s Layout" msgstr "" #: dist/translation-strings.php:94 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:133 -msgctxt "Heading placeholder" -msgid "Title for This Block" +#: dist/translation-strings.js:246 +msgid "Default" msgstr "" #: dist/translation-strings.php:95 @@ -508,632 +506,634 @@ msgid "Description for this block. Use this space for describing your block. Any msgstr "" #: dist/translation-strings.php:96 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Plain" +msgid "Simple" msgstr "" #: dist/translation-strings.php:97 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:431 -msgid "Shadow" +msgid "Highlighted" msgstr "" #: dist/translation-strings.php:98 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Colored" +msgid "Huge" msgstr "" #: dist/translation-strings.php:99 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Plus" +msgid "Centered Quote" msgstr "" #: dist/translation-strings.php:100 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Quotation Mark Icons" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:141 +msgid "General" msgstr "" #: dist/translation-strings.php:101 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Pick another icon" +msgid "Open at the start" msgstr "" #: dist/translation-strings.php:102 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Round Thin" +msgid "Close adjacent on open" msgstr "" #: dist/translation-strings.php:103 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Round" +msgid "Automatically closes adjacent accordion panels when clicked." msgstr "" #: dist/translation-strings.php:104 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Round Thick" +msgid "Enable FAQ Schema" msgstr "" #: dist/translation-strings.php:105 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Round Fat" +msgid "Open Icon" msgstr "" #: dist/translation-strings.php:106 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Square Thin" +msgid "The open icon will appear when the accordion is opened" msgstr "" #: dist/translation-strings.php:107 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Square" +msgid "Title for This Block" msgstr "" #: dist/translation-strings.php:108 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Square Simple" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:133 +msgctxt "Heading placeholder" +msgid "Title for This Block" msgstr "" #: dist/translation-strings.php:109 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Square Modern" +msgid "Plain" msgstr "" #: dist/translation-strings.php:110 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Square Fat" +#: dist/translation-strings.js:433 +msgid "Shadow" msgstr "" #: dist/translation-strings.php:111 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Simple" +msgid "Colored" msgstr "" #: dist/translation-strings.php:112 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Highlighted" +msgid "Plus" msgstr "" #: dist/translation-strings.php:113 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Huge" +msgid "Subtitle for This Block" msgstr "" #: dist/translation-strings.php:114 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Centered Quote" +#: dist/translation-strings.js:464 +msgid "Button" msgstr "" #: dist/translation-strings.php:115 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Horizontal" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:135 +msgctxt "Subtitle placeholder" +msgid "Subtitle for This Block" msgstr "" #: dist/translation-strings.php:116 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Vertical" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:136 +msgctxt "Button placeholder" +msgid "Button" msgstr "" #: dist/translation-strings.php:117 #: dist/editor_blocks.js:2 -msgid "%s Alignment" +msgid "Default 2" msgstr "" #: dist/translation-strings.php:118 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Content" +msgid "Horizontal" msgstr "" #: dist/translation-strings.php:119 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:462 -msgid "Button" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:317 +msgid "Full" msgstr "" #: dist/translation-strings.php:120 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Full Width Buttons" +msgid "Faded" msgstr "" #: dist/translation-strings.php:121 #: dist/editor_blocks.js:2 -msgid "Flex Wrap" +msgid "Horizontal 2" msgstr "" #: dist/translation-strings.php:122 #: dist/editor_blocks.js:2 -msgid "No Wrap" +msgid "Horizontal 3" msgstr "" #: dist/translation-strings.php:123 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Wrap" +msgid "Split Centered" msgstr "" #: dist/translation-strings.php:124 #: dist/editor_blocks.js:2 -msgid "Wrap Reverse" +msgid "Column Spacing" msgstr "" #: dist/translation-strings.php:125 #: dist/editor_blocks.js:2 -msgid "Button Text" +msgid "Sets the paddings between the column content and the border." msgstr "" #: dist/translation-strings.php:126 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:461 -msgid "Icon Button" +msgid "Align Last Block to Bottom" msgstr "" #: dist/translation-strings.php:127 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:463 -msgid "Social Buttons" +msgid "Ghost" msgstr "" #: dist/translation-strings.php:128 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:464 -msgid "Add social buttons." +#: dist/translation-strings.js:462 +msgid "Link" msgstr "" #: dist/translation-strings.php:129 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Horizontal 2" +msgid "Button text" msgstr "" #: dist/translation-strings.php:130 #: dist/editor_blocks.js:2 -msgid "Horizontal 3" +msgid "Call to action" msgstr "" #: dist/translation-strings.php:131 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Split Centered" +msgid "100" msgstr "" #: dist/translation-strings.php:132 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Ghost" +msgid "One column" msgstr "" #: dist/translation-strings.php:133 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:460 -msgid "Link" +msgid "50 / 50" msgstr "" #: dist/translation-strings.php:134 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Button text" +msgid "Two columns; equal split" msgstr "" #: dist/translation-strings.php:135 #: dist/editor_blocks.js:2 -msgid "Call to action" +msgid "30 / 70" msgstr "" #: dist/translation-strings.php:136 #: dist/editor_blocks.js:2 -msgid "Column Spacing" +msgid "Two columns; one-third, two-thirds split" msgstr "" #: dist/translation-strings.php:137 #: dist/editor_blocks.js:2 -msgid "Sets the paddings between the column content and the border." +msgid "70 / 30" msgstr "" #: dist/translation-strings.php:138 #: dist/editor_blocks.js:2 -msgid "Align Last Block to Bottom" +msgid "Two columns; two-thirds, one-third split" msgstr "" #: dist/translation-strings.php:139 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Subtitle for This Block" +msgid "33 / 33 / 33" msgstr "" #: dist/translation-strings.php:140 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:135 -msgctxt "Subtitle placeholder" -msgid "Subtitle for This Block" +msgid "Three columns; equal split" msgstr "" #: dist/translation-strings.php:141 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:136 -msgctxt "Button placeholder" -msgid "Button" +msgid "25 / 50 / 25" msgstr "" #: dist/translation-strings.php:142 #: dist/editor_blocks.js:2 -msgid "Default 2" +msgid "Three columns; wide center column" msgstr "" #: dist/translation-strings.php:143 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:317 -msgid "Full" +msgid "25 / 25 / 25 / 25" msgstr "" #: dist/translation-strings.php:144 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Faded" +msgid "Four columns; equal split" msgstr "" #: dist/translation-strings.php:145 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "100" +msgid "Vertical" msgstr "" #: dist/translation-strings.php:146 #: dist/editor_blocks.js:2 -msgid "One column" +msgid "%s Alignment" msgstr "" #: dist/translation-strings.php:147 #: dist/editor_blocks.js:2 -msgid "50 / 50" +msgid "Content" msgstr "" #: dist/translation-strings.php:148 #: dist/editor_blocks.js:2 -msgid "Two columns; equal split" +msgid "Full Width Buttons" msgstr "" #: dist/translation-strings.php:149 #: dist/editor_blocks.js:2 -msgid "30 / 70" +msgid "Flex Wrap" msgstr "" #: dist/translation-strings.php:150 #: dist/editor_blocks.js:2 -msgid "Two columns; one-third, two-thirds split" +msgid "No Wrap" msgstr "" #: dist/translation-strings.php:151 #: dist/editor_blocks.js:2 -msgid "70 / 30" +msgid "Wrap" msgstr "" #: dist/translation-strings.php:152 #: dist/editor_blocks.js:2 -msgid "Two columns; two-thirds, one-third split" +msgid "Wrap Reverse" msgstr "" #: dist/translation-strings.php:153 #: dist/editor_blocks.js:2 -msgid "33 / 33 / 33" +msgid "Button Text" msgstr "" #: dist/translation-strings.php:154 #: dist/editor_blocks.js:2 -msgid "Three columns; equal split" +#: dist/translation-strings.js:463 +msgid "Icon Button" msgstr "" #: dist/translation-strings.php:155 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "25 / 50 / 25" +#: dist/translation-strings.js:465 +msgid "Social Buttons" msgstr "" #: dist/translation-strings.php:156 #: dist/editor_blocks.js:2 -msgid "Three columns; wide center column" +#: dist/translation-strings.js:466 +msgid "Add social buttons." msgstr "" #: dist/translation-strings.php:157 #: dist/editor_blocks.js:2 -msgid "25 / 25 / 25 / 25" +msgid "Slides" msgstr "" #: dist/translation-strings.php:158 #: dist/editor_blocks.js:2 -msgid "Four columns; equal split" +msgid "Carousel Type" msgstr "" #: dist/translation-strings.php:159 #: dist/editor_blocks.js:2 -msgid "Counter" +msgid "Slide" msgstr "" #: dist/translation-strings.php:160 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Duration (ms)" +msgid "Fade" msgstr "" #: dist/translation-strings.php:161 #: dist/editor_blocks.js:2 -msgid "1,234.56" +msgid "Infinite Scrolling" msgstr "" #: dist/translation-strings.php:162 #: dist/editor_blocks.js:2 -msgid "1,234,567" +msgid "Only visible in the frontend." msgstr "" #: dist/translation-strings.php:163 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Stackable Design Library" +msgid "Slides to Show" msgstr "" #: dist/translation-strings.php:164 #: dist/editor_blocks.js:2 -msgid "Open the Design Library and select a pre-designed block or layout." +msgid "Slide Gap" msgstr "" #: dist/translation-strings.php:165 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Open Design Library" +msgid "Fade duration" msgstr "" #: dist/translation-strings.php:166 #: dist/editor_blocks.js:2 -msgid "Slides" +msgid "Autoplay" msgstr "" #: dist/translation-strings.php:167 #: dist/editor_blocks.js:2 -msgid "Carousel Type" +msgid "Speed (ms)" msgstr "" #: dist/translation-strings.php:168 #: dist/editor_blocks.js:2 -msgid "Slide" +msgid "Arrows" msgstr "" #: dist/translation-strings.php:169 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Fade" +msgid "Previous Slide Icon" msgstr "" #: dist/translation-strings.php:170 #: dist/editor_blocks.js:2 -msgid "Slides to Show" +msgid "Next Slide Icon" msgstr "" #: dist/translation-strings.php:171 #: dist/editor_blocks.js:2 -msgid "Slide Gap" +msgid "Arrow Position" msgstr "" #: dist/translation-strings.php:172 #: dist/editor_blocks.js:2 -msgid "Fade duration" +msgid "Inside" msgstr "" #: dist/translation-strings.php:173 #: dist/editor_blocks.js:2 -msgid "Autoplay" +msgid "Outside" msgstr "" #: dist/translation-strings.php:174 #: dist/editor_blocks.js:2 -msgid "Speed (ms)" +msgid "%s Justify" msgstr "" #: dist/translation-strings.php:175 #: dist/editor_blocks.js:2 -msgid "Arrows" +msgid "%s Offset" msgstr "" #: dist/translation-strings.php:176 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Previous Slide Icon" +msgid "Button Gap" msgstr "" #: dist/translation-strings.php:177 #: dist/editor_blocks.js:2 -msgid "Next Slide Icon" +msgid "%s Color" msgstr "" #: dist/translation-strings.php:178 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Arrow Position" +#: dist/translation-strings.js:410 +msgid "Icon" msgstr "" #: dist/translation-strings.php:179 #: dist/editor_blocks.js:2 -msgid "Inside" +msgid "%s Width" msgstr "" #: dist/translation-strings.php:180 #: dist/editor_blocks.js:2 -msgid "Outside" +msgid "%s Height" msgstr "" #: dist/translation-strings.php:181 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "%s Justify" +#: dist/translation-strings.js:429 +msgid "Border Radius" msgstr "" #: dist/translation-strings.php:182 #: dist/editor_blocks.js:2 -msgid "%s Offset" +msgid "%s Size" msgstr "" #: dist/translation-strings.php:183 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Button Gap" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:171 +msgid "Opacity" msgstr "" #: dist/translation-strings.php:184 #: dist/editor_blocks.js:2 -msgid "%s Color" +msgid "Show %s on mobile" msgstr "" #: dist/translation-strings.php:185 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:408 -msgid "Icon" +msgid "arrows" msgstr "" #: dist/translation-strings.php:186 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "%s Width" +msgid "Dots" msgstr "" #: dist/translation-strings.php:187 #: dist/editor_blocks.js:2 -msgid "%s Height" +msgid "Dot Style" msgstr "" #: dist/translation-strings.php:188 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:427 -msgid "Border Radius" +msgid "Solid" msgstr "" #: dist/translation-strings.php:189 #: dist/editor_blocks.js:2 -msgid "%s Size" +#: dist/translation-strings.js:566 +msgid "Outline" msgstr "" #: dist/translation-strings.php:190 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:171 -msgid "Opacity" +msgid "Dot" msgstr "" #: dist/translation-strings.php:191 #: dist/editor_blocks.js:2 -msgid "Show %s on mobile" +msgid "Active Dot" msgstr "" #: dist/translation-strings.php:192 #: dist/editor_blocks.js:2 -msgid "arrows" +msgid "%s Gap" msgstr "" #: dist/translation-strings.php:193 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Dots" +msgid "To improve accessibility, the clickable area of the dots will not go below %s." msgstr "" #: dist/translation-strings.php:194 #: dist/editor_blocks.js:2 -msgid "Dot Style" +msgid "dots" msgstr "" #: dist/translation-strings.php:195 #: dist/editor_blocks.js:2 -msgid "Solid" +msgid "Accessibility" msgstr "" #: dist/translation-strings.php:196 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:564 -msgid "Outline" +msgid "%s label" msgstr "" #: dist/translation-strings.php:197 #: dist/editor_blocks.js:2 -msgid "Dot" +msgid "Previous slide" msgstr "" #: dist/translation-strings.php:198 #: dist/editor_blocks.js:2 -msgid "Active Dot" +msgid "Next slide" msgstr "" #: dist/translation-strings.php:199 #: dist/editor_blocks.js:2 -msgid "%s Gap" +msgid "Use %%d to show the slide number." msgstr "" #: dist/translation-strings.php:200 #: dist/editor_blocks.js:2 -msgid "To improve accessibility, the clickable area of the dots will not go below %s." +msgid "Slide N of N" msgstr "" #: dist/translation-strings.php:201 #: dist/editor_blocks.js:2 -msgid "dots" +msgid "Use two %%d to show the slide number and the total slides. e.g. Slide 1 of 3." msgstr "" #: dist/translation-strings.php:202 #: dist/editor_blocks.js:2 -msgid "Accessibility" +msgid "Counter" msgstr "" #: dist/translation-strings.php:203 #: dist/editor_blocks.js:2 -msgid "%s label" +msgid "Duration (ms)" msgstr "" #: dist/translation-strings.php:204 #: dist/editor_blocks.js:2 -msgid "Previous slide" +msgid "1,234.56" msgstr "" #: dist/translation-strings.php:205 #: dist/editor_blocks.js:2 -msgid "Next slide" +msgid "1,234,567" msgstr "" #: dist/translation-strings.php:206 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Use %%d to show the slide number." +msgid "Stackable Design Library" msgstr "" #: dist/translation-strings.php:207 #: dist/editor_blocks.js:2 -msgid "Slide N of N" +msgid "Open the Design Library and select a pre-designed block or layout." msgstr "" #: dist/translation-strings.php:208 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Use two %%d to show the slide number and the total slides. e.g. Slide 1 of 3." +msgid "Open Design Library" msgstr "" #: dist/translation-strings.php:209 @@ -1150,7 +1150,7 @@ msgstr "" #: dist/translation-strings.php:211 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:549 +#: dist/translation-strings.js:551 msgid "Separator" msgstr "" @@ -1313,130 +1313,133 @@ msgid "Seconds Label" msgstr "" #: dist/translation-strings.php:241 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Bar" +msgid "Description for this block. Use this space for describing your block." msgstr "" #: dist/translation-strings.php:242 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Asterisks" +msgctxt "Content placeholder" +msgid "Description for this block. Use this space for describing your block." msgstr "" #: dist/translation-strings.php:243 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Width" +msgid "Overlap Shape 1" msgstr "" #: dist/translation-strings.php:244 #: dist/editor_blocks.js:2 -msgid "Height / Size" +msgid "Overlap Shape 2" msgstr "" #: dist/translation-strings.php:245 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Some short text that can be expanded to show more details." +msgid "Overlap Shape 3" msgstr "" #: dist/translation-strings.php:246 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Show more" +msgid "Overlap Shape 4" msgstr "" #: dist/translation-strings.php:247 #: dist/editor_blocks.js:2 -msgid "Some long text that will be expanded when the show more button is clicked by the visitor." +msgid "Overlap Shape 5" msgstr "" #: dist/translation-strings.php:248 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Show less" +msgid "Overlap Background 1" msgstr "" #: dist/translation-strings.php:249 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Less text" +msgid "Overlap Background 2" msgstr "" #: dist/translation-strings.php:250 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "More text" +msgid "Overlap Background 3" msgstr "" #: dist/translation-strings.php:251 #: dist/editor_blocks.js:2 -msgid "Description for this block. Use this space for describing your block." +msgid "Overlap Background 4" msgstr "" #: dist/translation-strings.php:252 #: dist/editor_blocks.js:2 -msgctxt "Content placeholder" -msgid "Description for this block. Use this space for describing your block." +msgid "Overlap Background 5" msgstr "" #: dist/translation-strings.php:253 #: dist/editor_blocks.js:2 -msgid "Overlap Shape 1" +msgid "Float" msgstr "" #: dist/translation-strings.php:254 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Shape 2" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:137 +msgid "Title" msgstr "" #: dist/translation-strings.php:255 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Shape 3" +msgid "Large Mid" msgstr "" #: dist/translation-strings.php:256 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Shape 4" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:153 +msgid "Offset" msgstr "" #: dist/translation-strings.php:257 #: dist/editor_blocks.js:2 -msgid "Overlap Shape 5" +msgid "Zizag" msgstr "" #: dist/translation-strings.php:258 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Background 1" +msgid "Zigzag" msgstr "" #: dist/translation-strings.php:259 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Background 2" +msgid "Bar" msgstr "" #: dist/translation-strings.php:260 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Background 3" +msgid "Asterisks" msgstr "" #: dist/translation-strings.php:261 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Overlap Background 4" +msgid "Width" msgstr "" #: dist/translation-strings.php:262 #: dist/editor_blocks.js:2 -msgid "Overlap Background 5" +msgid "Height / Size" msgstr "" #: dist/translation-strings.php:263 #: dist/admin_custom_fields__premium_only.js:2 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:367 +#: dist/translation-strings.js:369 msgid "Text" msgstr "" @@ -1468,7 +1471,7 @@ msgstr "" #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:392 +#: dist/translation-strings.js:394 msgid "Align" msgstr "" @@ -1485,171 +1488,168 @@ msgstr "" #: dist/translation-strings.php:271 #: dist/editor_blocks.js:2 -msgid "Float" +msgid "Snapping" msgstr "" #: dist/translation-strings.php:272 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:137 -msgid "Title" +msgid "Snap to Start" msgstr "" #: dist/translation-strings.php:273 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Large Mid" +msgid "Snap to Center" msgstr "" #: dist/translation-strings.php:274 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:153 -msgid "Offset" +msgid "No Snapping" msgstr "" #: dist/translation-strings.php:275 #: dist/editor_blocks.js:2 -msgid "Zizag" +msgid "Item Width" msgstr "" #: dist/translation-strings.php:276 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Zigzag" +msgid "Inner Column Spacing" msgstr "" #: dist/translation-strings.php:277 #: dist/editor_blocks.js:2 -msgid "Header Title" +msgid "Gap" msgstr "" #: dist/translation-strings.php:278 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Half Overlay" +msgid "Left Offset" msgstr "" #: dist/translation-strings.php:279 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Center Overlay" +msgid "Scrollbar" msgstr "" #: dist/translation-strings.php:280 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Side Overlay" +msgid "Track Color" msgstr "" #: dist/translation-strings.php:281 #: dist/editor_blocks.js:2 -msgid "Half Layout" +msgid "Thumb Color" msgstr "" #: dist/translation-strings.php:282 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Half" +msgid "Thumb Radius" msgstr "" #: dist/translation-strings.php:283 #: dist/editor_blocks.js:2 -msgid "Snapping" +msgid "123" msgstr "" #: dist/translation-strings.php:284 #: dist/editor_blocks.js:2 -msgid "Snap to Start" +msgid "456" msgstr "" #: dist/translation-strings.php:285 #: dist/editor_blocks.js:2 -msgid "Snap to Center" +msgid "789" msgstr "" #: dist/translation-strings.php:286 #: dist/editor_blocks.js:2 -msgid "No Snapping" +msgid "Header Title" msgstr "" #: dist/translation-strings.php:287 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Item Width" +msgid "Half Overlay" msgstr "" #: dist/translation-strings.php:288 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Inner Column Spacing" +msgid "Center Overlay" msgstr "" #: dist/translation-strings.php:289 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Gap" +msgid "Side Overlay" msgstr "" #: dist/translation-strings.php:290 #: dist/editor_blocks.js:2 -msgid "Left Offset" +msgid "Half Layout" msgstr "" #: dist/translation-strings.php:291 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Scrollbar" +msgid "Half" msgstr "" #: dist/translation-strings.php:292 #: dist/editor_blocks.js:2 -msgid "Track Color" +#: dist/translation-strings.js:507 +msgid "Icon Box" msgstr "" #: dist/translation-strings.php:293 #: dist/editor_blocks.js:2 -msgid "Thumb Color" +msgid "Pill" msgstr "" #: dist/translation-strings.php:294 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Thumb Radius" +msgid "Some short text that can be expanded to show more details." msgstr "" #: dist/translation-strings.php:295 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "123" +msgid "Show more" msgstr "" #: dist/translation-strings.php:296 #: dist/editor_blocks.js:2 -msgid "456" +msgid "Some long text that will be expanded when the show more button is clicked by the visitor." msgstr "" #: dist/translation-strings.php:297 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "789" +msgid "Show less" msgstr "" #: dist/translation-strings.php:298 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:507 -msgid "Icon Label" +msgid "Less text" msgstr "" #: dist/translation-strings.php:299 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:505 -msgid "Icon Box" +msgid "More text" msgstr "" #: dist/translation-strings.php:300 #: dist/editor_blocks.js:2 -msgid "Icon Gap" +#: dist/translation-strings.js:509 +msgid "Icon Label" msgstr "" #: dist/translation-strings.php:301 #: dist/editor_blocks.js:2 -msgid "Pill" +msgid "Icon Gap" msgstr "" #: dist/translation-strings.php:302 @@ -1693,7 +1693,7 @@ msgstr "" #: dist/admin_custom_fields__premium_only.js:2 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:368 +#: dist/translation-strings.js:370 msgid "Number" msgstr "" @@ -1751,7 +1751,7 @@ msgstr "" #: dist/translation-strings.php:320 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:476 +#: dist/translation-strings.js:478 msgid "Columns" msgstr "" @@ -1763,14 +1763,14 @@ msgstr "" #: dist/translation-strings.php:322 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:398 +#: dist/translation-strings.js:400 msgid "Column Gap" msgstr "" #: dist/translation-strings.php:323 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:399 +#: dist/translation-strings.js:401 msgid "Row Gap" msgstr "" @@ -1799,7 +1799,7 @@ msgstr "" #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:296 +#: dist/translation-strings.js:242 msgid "Icon Opacity" msgstr "" @@ -1985,7 +1985,7 @@ msgstr "" #: dist/translation-strings.php:363 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:521 +#: dist/translation-strings.js:523 msgid "Map" msgstr "" @@ -2037,7 +2037,7 @@ msgstr "" #: dist/translation-strings.php:373 #: dist/editor_blocks.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:281 +#: dist/translation-strings.js:227 msgid "Shape" msgstr "" @@ -2047,445 +2047,445 @@ msgid "01" msgstr "" #: dist/translation-strings.php:375 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Notification Type" +msgid "$" msgstr "" #: dist/translation-strings.php:376 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Success" +msgid "99" msgstr "" #: dist/translation-strings.php:377 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Error" +msgid ".00" msgstr "" #: dist/translation-strings.php:378 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Warning" +msgid "Content Arrangement" msgstr "" #: dist/translation-strings.php:379 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Information" +msgid "Sets the order of the items displayed (category, title, meta, excerpt, read more button, image) for each post" msgstr "" #: dist/translation-strings.php:380 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Dismissible" +msgid "Query" msgstr "" #: dist/translation-strings.php:381 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Icon Size" +#: dist/translation-strings.js:396 +msgid "Number of items" msgstr "" #: dist/translation-strings.php:382 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:295 -msgid "Icon Color" +msgid "Order by" msgstr "" #: dist/translation-strings.php:383 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Side" +msgid "Newest to Oldest" msgstr "" #: dist/translation-strings.php:384 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Bordered" +msgid "Oldest to Newest" msgstr "" #: dist/translation-strings.php:385 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Outlined" +msgid "A → Z" msgstr "" #: dist/translation-strings.php:386 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Large Icon" +msgid "Z → A" msgstr "" #: dist/translation-strings.php:387 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Content Arrangement" +msgid "Last Modified to Oldest" msgstr "" #: dist/translation-strings.php:388 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Sets the order of the items displayed (category, title, meta, excerpt, read more button, image) for each post" +msgid "Oldest Modified to Last" msgstr "" #: dist/translation-strings.php:389 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Query" +msgid "Menu Order" msgstr "" #: dist/translation-strings.php:390 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:394 -msgid "Number of items" +msgid "Random" msgstr "" #: dist/translation-strings.php:391 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Order by" +msgid "Spacing" msgstr "" #: dist/translation-strings.php:392 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Newest to Oldest" +msgid "Featured Image" msgstr "" #: dist/translation-strings.php:393 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Oldest to Newest" +msgid "Category" msgstr "" #: dist/translation-strings.php:394 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "A → Z" +msgid "Excerpt" msgstr "" #: dist/translation-strings.php:395 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Z → A" +msgid "Meta" msgstr "" #: dist/translation-strings.php:396 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Last Modified to Oldest" +msgid "Read More Link" msgstr "" #: dist/translation-strings.php:397 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Oldest Modified to Last" +#: dist/translation-strings.js:534 +msgid "Posts" msgstr "" #: dist/translation-strings.php:398 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Menu Order" +msgid "No posts found." msgstr "" #: dist/translation-strings.php:399 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Random" +msgid "Apply hover effect when container is hovered" msgstr "" #: dist/translation-strings.php:400 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Spacing" +msgid "Highlight Color" msgstr "" #: dist/translation-strings.php:401 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Featured Image" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:310 +msgid "Excerpt Length" msgstr "" #: dist/translation-strings.php:402 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Category" +msgid "Show Author" msgstr "" #: dist/translation-strings.php:403 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Excerpt" +msgid "Show Date" msgstr "" #: dist/translation-strings.php:404 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Meta" +msgid "Show Comments" msgstr "" #: dist/translation-strings.php:405 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Read More Link" +msgid "Default (Dot)" msgstr "" #: dist/translation-strings.php:406 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:532 -msgid "Posts" +msgid "Space" msgstr "" #: dist/translation-strings.php:407 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "No posts found." +msgid "Comma" msgstr "" #: dist/translation-strings.php:408 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Apply hover effect when container is hovered" +msgid "Dash" msgstr "" #: dist/translation-strings.php:409 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Highlight Color" +msgid "Pipe" msgstr "" #: dist/translation-strings.php:410 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:310 -msgid "Excerpt Length" +msgid "Sets the separators between meta items (dot, space, comma, dash, pipe)" msgstr "" #: dist/translation-strings.php:411 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Show Author" +msgid "Add post links to images" msgstr "" #: dist/translation-strings.php:412 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Show Date" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:319 +msgid "Image Size" msgstr "" #: dist/translation-strings.php:413 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Show Comments" +msgid "Sets the image display size to thumbnail, medium, large or full size. A smaller image size will also load faster." msgstr "" #: dist/translation-strings.php:414 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: src/block/posts/index.php:330 #: dist/editor_blocks.js:2 -msgid "Default (Dot)" +msgid "Continue Reading" msgstr "" #: dist/translation-strings.php:415 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Space" +msgid "Read More Button" msgstr "" #: dist/translation-strings.php:416 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Comma" +msgid "featured" msgstr "" #: dist/translation-strings.php:417 +#: src/block/posts/index.php:70 +#: src/deprecated/v2/block/blog-posts/index.php:251 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Dash" +msgid "(Untitled)" msgstr "" #: dist/translation-strings.php:418 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Pipe" +msgid "Image Card" msgstr "" #: dist/translation-strings.php:419 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Sets the separators between meta items (dot, space, comma, dash, pipe)" +msgid "Portfolio" msgstr "" #: dist/translation-strings.php:420 #: dist/editor_blocks.js:2 -msgid "Add post links to images" +msgid "Portfolio 2" msgstr "" #: dist/translation-strings.php:421 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:319 -msgid "Image Size" +msgid "Vertical Card" msgstr "" #: dist/translation-strings.php:422 #: dist/editor_blocks.js:2 -msgid "Sets the image display size to thumbnail, medium, large or full size. A smaller image size will also load faster." +msgid "Vertical Card 2" msgstr "" #: dist/translation-strings.php:423 -#: src/block/posts/index.php:330 #: dist/editor_blocks.js:2 -msgid "Continue Reading" +msgid "Package inclusion one" msgstr "" #: dist/translation-strings.php:424 #: dist/editor_blocks.js:2 -msgid "Read More Button" +msgid "Package inclusion two" msgstr "" #: dist/translation-strings.php:425 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "featured" +msgid "Package inclusion three" msgstr "" #: dist/translation-strings.php:426 -#: src/block/posts/index.php:70 -#: src/deprecated/v2/block/blog-posts/index.php:247 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "(Untitled)" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:162 +msgid "one" msgstr "" #: dist/translation-strings.php:427 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Image Card" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:163 +msgid "two" msgstr "" #: dist/translation-strings.php:428 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Portfolio" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:164 +msgid "three" msgstr "" #: dist/translation-strings.php:429 #: dist/editor_blocks.js:2 -msgid "Portfolio 2" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:165 +msgid "Package inclusion %s" msgstr "" #: dist/translation-strings.php:430 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Vertical Card" +msgid "Compact" msgstr "" #: dist/translation-strings.php:431 #: dist/editor_blocks.js:2 -msgid "Vertical Card 2" +msgid "Banner Layout" msgstr "" #: dist/translation-strings.php:432 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Label" +msgid "Banner" msgstr "" #: dist/translation-strings.php:433 #: dist/editor_blocks.js:2 -msgid "$" +msgid "Colored Layout" msgstr "" #: dist/translation-strings.php:434 #: dist/editor_blocks.js:2 -msgid "99" +msgid "Sectioned Layout" msgstr "" #: dist/translation-strings.php:435 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid ".00" +msgid "Sectioned" msgstr "" #: dist/translation-strings.php:436 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Package inclusion one" +msgid "Label" msgstr "" #: dist/translation-strings.php:437 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Package inclusion two" +msgid "Notification Type" msgstr "" #: dist/translation-strings.php:438 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Package inclusion three" +msgid "Success" msgstr "" #: dist/translation-strings.php:439 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:162 -msgid "one" +msgid "Error" msgstr "" #: dist/translation-strings.php:440 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:163 -msgid "two" +msgid "Warning" msgstr "" #: dist/translation-strings.php:441 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:164 -msgid "three" +msgid "Information" msgstr "" #: dist/translation-strings.php:442 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:165 -msgid "Package inclusion %s" +msgid "Dismissible" msgstr "" #: dist/translation-strings.php:443 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Compact" +msgid "Icon Size" msgstr "" #: dist/translation-strings.php:444 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Banner Layout" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:241 +msgid "Icon Color" msgstr "" #: dist/translation-strings.php:445 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Banner" +msgid "Side" msgstr "" #: dist/translation-strings.php:446 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Colored Layout" +msgid "Bordered" msgstr "" #: dist/translation-strings.php:447 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Sectioned Layout" +msgid "Outlined" msgstr "" #: dist/translation-strings.php:448 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Sectioned" +msgid "Large Icon" msgstr "" #: dist/translation-strings.php:449 @@ -2506,1627 +2506,1625 @@ msgstr "" #: dist/translation-strings.php:451 #: dist/editor_blocks.js:2 -msgid "Classic" +msgid "Type / to choose a block" msgstr "" #: dist/translation-strings.php:452 #: dist/editor_blocks.js:2 -msgid "Centered Pills" +msgid "Subtitle for this block." msgstr "" #: dist/translation-strings.php:453 +#: dist/editor_blocks.js:2 +#: dist/translation-strings.js:554 +msgid "Spacer" +msgstr "" + +#: dist/translation-strings.php:454 +#: dist/editor_blocks.js:2 +msgid "Classic" +msgstr "" + +#: dist/translation-strings.php:455 +#: dist/editor_blocks.js:2 +msgid "Centered Pills" +msgstr "" + +#: dist/translation-strings.php:456 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:413 +#: dist/translation-strings.js:415 msgid "Left" msgstr "" -#: dist/translation-strings.php:454 +#: dist/translation-strings.php:457 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:414 +#: dist/translation-strings.js:416 msgid "Right" msgstr "" -#: dist/translation-strings.php:455 +#: dist/translation-strings.php:458 #: dist/editor_blocks.js:2 msgid "Top" msgstr "" -#: dist/translation-strings.php:456 +#: dist/translation-strings.php:459 #: dist/editor_blocks.js:2 msgid "Bottom" msgstr "" -#: dist/translation-strings.php:457 +#: dist/translation-strings.php:460 #: dist/editor_blocks.js:2 msgid "Move left" msgstr "" -#: dist/translation-strings.php:458 +#: dist/translation-strings.php:461 #: dist/editor_blocks.js:2 msgid "Move right" msgstr "" -#: dist/translation-strings.php:459 +#: dist/translation-strings.php:462 #: dist/editor_blocks.js:2 msgid "Add tab" msgstr "" -#: dist/translation-strings.php:460 +#: dist/translation-strings.php:463 #: dist/editor_blocks.js:2 msgid "Duplicate tab" msgstr "" -#: dist/translation-strings.php:461 +#: dist/translation-strings.php:464 #: dist/editor_blocks.js:2 msgid "Delete tab" msgstr "" -#: dist/translation-strings.php:462 +#: dist/translation-strings.php:465 #: dist/editor_blocks.js:2 msgid "Are you sure you want to delete this tab?" msgstr "" -#: dist/translation-strings.php:463 +#: dist/translation-strings.php:466 #: dist/editor_blocks.js:2 msgid "Fixed Icon Position" msgstr "" -#: dist/translation-strings.php:464 +#: dist/translation-strings.php:467 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 msgid "Icon Position" msgstr "" -#: dist/translation-strings.php:465 +#: dist/translation-strings.php:468 #: dist/editor_blocks.js:2 msgid "Tab Alignment" msgstr "" -#: dist/translation-strings.php:466 +#: dist/translation-strings.php:469 #: dist/editor_blocks.js:2 msgid "Text Alignment" msgstr "" -#: dist/translation-strings.php:467 +#: dist/translation-strings.php:470 #: dist/editor_blocks.js:2 msgid "Scrollable Tabs on Mobile" msgstr "" -#: dist/translation-strings.php:468 +#: dist/translation-strings.php:471 #: dist/editor_blocks.js:2 msgid "Tab" msgstr "" -#: dist/translation-strings.php:469 +#: dist/translation-strings.php:472 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 msgid "Text Color" msgstr "" -#: dist/translation-strings.php:470 +#: dist/translation-strings.php:473 #: dist/editor_blocks.js:2 msgid "Tab Active State" msgstr "" -#: dist/translation-strings.php:471 +#: dist/translation-strings.php:474 #: dist/editor_blocks.js:2 msgid "Typography" msgstr "" -#: dist/translation-strings.php:472 +#: dist/translation-strings.php:475 #: dist/editor_blocks.js:2 msgid "Change icons individually by clicking on each tab's icon." msgstr "" -#: dist/translation-strings.php:473 +#: dist/translation-strings.php:476 #: dist/editor_blocks.js:2 -msgid "Tab Label" +msgid "Tab Anchors" msgstr "" -#: dist/translation-strings.php:474 +#: dist/translation-strings.php:477 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:552 -msgid "Spacer" -msgstr "" - -#: dist/translation-strings.php:475 -#: dist/editor_blocks.js:2 -msgid "Type / to choose a block" -msgstr "" - -#: dist/translation-strings.php:476 -#: dist/editor_blocks.js:2 -msgid "Subtitle for this block." -msgstr "" - -#: dist/translation-strings.php:477 -#: dist/editor_blocks.js:2 -msgid "Unordered" +msgid "Assign unique anchor names to each tab so you'll be able to link directly and open each one." msgstr "" #: dist/translation-strings.php:478 #: dist/editor_blocks.js:2 -msgctxt "%s is a heading level, e.g. H1" -msgid "Include %s" +msgid "%s Anchor" msgstr "" #: dist/translation-strings.php:479 #: dist/editor_blocks.js:2 -msgid "Auto-generate missing anchor ids" +msgid "Tab Anchor" msgstr "" #: dist/translation-strings.php:480 #: dist/editor_blocks.js:2 -msgid "Scrolling" +msgid "Tab Label" msgstr "" #: dist/translation-strings.php:481 #: dist/editor_blocks.js:2 -msgid "Use smooth scroll" +msgid "Unordered" msgstr "" #: dist/translation-strings.php:482 #: dist/editor_blocks.js:2 -msgid "Scroll Top Offset " +msgctxt "%s is a heading level, e.g. H1" +msgid "Include %s" msgstr "" #: dist/translation-strings.php:483 #: dist/editor_blocks.js:2 -msgctxt "Table of Contents example text" -msgid "Introduction" +msgid "Auto-generate missing anchor ids" msgstr "" #: dist/translation-strings.php:484 #: dist/editor_blocks.js:2 -msgctxt "Table of Contents example text" -msgid "Chapter 1: Abstract" +msgid "Scrolling" msgstr "" #: dist/translation-strings.php:485 #: dist/editor_blocks.js:2 -msgctxt "Table of Contents example text" -msgid "Chapter 2: History" +msgid "Use smooth scroll" msgstr "" #: dist/translation-strings.php:486 #: dist/editor_blocks.js:2 -msgctxt "Table of Contents example text" -msgid "Chapter 3: Main Content" +msgid "Scroll Top Offset " msgstr "" #: dist/translation-strings.php:487 #: dist/editor_blocks.js:2 msgctxt "Table of Contents example text" -msgid "Chapter 4: Additional Thoughts" +msgid "Introduction" msgstr "" #: dist/translation-strings.php:488 #: dist/editor_blocks.js:2 msgctxt "Table of Contents example text" -msgid "Conclusion" +msgid "Chapter 1: Abstract" msgstr "" #: dist/translation-strings.php:489 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:560 -msgid "Table of Contents" +msgctxt "Table of Contents example text" +msgid "Chapter 2: History" msgstr "" #: dist/translation-strings.php:490 #: dist/editor_blocks.js:2 -msgid "Include heading" +msgctxt "Table of Contents example text" +msgid "Chapter 3: Main Content" msgstr "" #: dist/translation-strings.php:491 #: dist/editor_blocks.js:2 -msgid "Exclude heading" +msgctxt "Table of Contents example text" +msgid "Chapter 4: Additional Thoughts" msgstr "" #: dist/translation-strings.php:492 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:498 -msgid "Heading" +msgctxt "Table of Contents example text" +msgid "Conclusion" msgstr "" #: dist/translation-strings.php:493 #: dist/editor_blocks.js:2 -msgid "Tab %d" +#: dist/translation-strings.js:562 +msgid "Table of Contents" msgstr "" #: dist/translation-strings.php:494 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:565 -msgid "Tabs" +msgid "Include heading" msgstr "" #: dist/translation-strings.php:495 #: dist/editor_blocks.js:2 -msgid "Initial Tab Open" +msgid "Exclude heading" msgstr "" #: dist/translation-strings.php:496 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Equal tab height" +#: dist/translation-strings.js:500 +msgid "Heading" msgstr "" #: dist/translation-strings.php:497 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Tab Orientation" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:176 +msgid "Name" msgstr "" #: dist/translation-strings.php:498 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Tab Panel Offset" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:177 +msgid "Position" msgstr "" #: dist/translation-strings.php:499 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Tab Panel Effect" +msgid "Cover" msgstr "" #: dist/translation-strings.php:500 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Immediate" +msgid "Bubble" msgstr "" #: dist/translation-strings.php:501 #: dist/editor_blocks.js:2 -msgid "Text for this block. Use this space for describing your block. Any text will do. Text for this block. You can use this space for describing your block." +msgid "Inverted Vertical" msgstr "" #: dist/translation-strings.php:502 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:142 -msgctxt "Content placeholder" -msgid "Description for this block. Use this space for describing your block. Any text will do." +msgid "Text for this block. Use this space for describing your block. Any text will do. Text for this block. You can use this space for describing your block." msgstr "" #: dist/translation-strings.php:503 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:344 -msgid "Single" +msgid "Play Video" msgstr "" #: dist/translation-strings.php:504 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:290 -msgid "Gradient" +msgid "Popup Option #1: Upload Video" msgstr "" #: dist/translation-strings.php:505 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Content Position" +msgid "Use .mp4 format for videos" msgstr "" #: dist/translation-strings.php:506 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:574 -msgid "Timeline" +msgid "Popup Option #2: Video URL" msgstr "" #: dist/translation-strings.php:507 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Accent Anchor Position" +msgid "Paste a Youtube / Vimeo URL" msgstr "" #: dist/translation-strings.php:508 #: dist/editor_blocks.js:2 -msgid "Succeeding timeline blocks will also use this value." +msgid "Allow fullscreen" msgstr "" #: dist/translation-strings.php:509 #: dist/editor_blocks.js:2 -msgid "%s Border Radius" +msgid "Allow download video" msgstr "" #: dist/translation-strings.php:510 #: dist/editor_blocks.js:2 -msgid "Line Thickness" +msgid "Loop video" msgstr "" #: dist/translation-strings.php:511 #: dist/editor_blocks.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:286 -msgid "Horizontal Offset" +#: dist/translation-strings.js:139 +msgctxt "Content placeholder" +msgid "Description for this block. Use this space for describing your block. Any text will do." msgstr "" #: dist/translation-strings.php:512 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgctxt "option title" -msgid "%s #%d" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:346 +msgid "Single" msgstr "" #: dist/translation-strings.php:513 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Timeline Accent Color" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:236 +msgid "Gradient" msgstr "" #: dist/translation-strings.php:514 #: dist/editor_blocks.js:2 -msgid "Timeline Background Color" +msgid "Content Position" msgstr "" #: dist/translation-strings.php:515 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:176 -msgid "Name" +#: dist/translation-strings.js:576 +msgid "Timeline" msgstr "" #: dist/translation-strings.php:516 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:177 -msgid "Position" +msgid "Accent Anchor Position" msgstr "" #: dist/translation-strings.php:517 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Cover" +msgid "Succeeding timeline blocks will also use this value." msgstr "" #: dist/translation-strings.php:518 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Bubble" +msgid "%s Border Radius" msgstr "" #: dist/translation-strings.php:519 #: dist/editor_blocks.js:2 -msgid "Inverted Vertical" +msgid "Line Thickness" msgstr "" #: dist/translation-strings.php:520 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Popup Option #1: Upload Video" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:232 +msgid "Horizontal Offset" msgstr "" #: dist/translation-strings.php:521 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks.js:2 -msgid "Use .mp4 format for videos" +msgctxt "option title" +msgid "%s #%d" msgstr "" #: dist/translation-strings.php:522 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Popup Option #2: Video URL" +msgid "Timeline Accent Color" msgstr "" #: dist/translation-strings.php:523 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -msgid "Paste a Youtube / Vimeo URL" +msgid "Timeline Background Color" msgstr "" #: dist/translation-strings.php:524 -#: dist/editor_blocks.js:2 -msgid "Allow fullscreen" -msgstr "" - -#: dist/translation-strings.php:525 -#: dist/editor_blocks.js:2 -msgid "Allow download video" -msgstr "" - -#: dist/translation-strings.php:526 -#: dist/editor_blocks.js:2 -msgid "Loop video" -msgstr "" - -#: dist/translation-strings.php:527 -#: dist/editor_blocks.js:2 -msgid "Play Video" -msgstr "" - -#: dist/translation-strings.php:528 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Address" msgstr "" -#: dist/translation-strings.php:529 +#: dist/translation-strings.php:525 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Article" msgstr "" -#: dist/translation-strings.php:530 +#: dist/translation-strings.php:526 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Aside" msgstr "" -#: dist/translation-strings.php:531 +#: dist/translation-strings.php:527 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Blockquote" msgstr "" -#: dist/translation-strings.php:532 +#: dist/translation-strings.php:528 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Div" msgstr "" -#: dist/translation-strings.php:533 +#: dist/translation-strings.php:529 msgctxt "HTML Tag" msgid "Details" msgstr "" -#: dist/translation-strings.php:534 +#: dist/translation-strings.php:530 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Footer" msgstr "" -#: dist/translation-strings.php:535 +#: dist/translation-strings.php:531 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Header" msgstr "" -#: dist/translation-strings.php:536 +#: dist/translation-strings.php:532 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Hgroup" msgstr "" -#: dist/translation-strings.php:537 +#: dist/translation-strings.php:533 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Main" msgstr "" -#: dist/translation-strings.php:538 +#: dist/translation-strings.php:534 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Nav" msgstr "" -#: dist/translation-strings.php:539 +#: dist/translation-strings.php:535 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "HTML Tag" msgid "Section" msgstr "" -#: dist/translation-strings.php:540 +#: dist/translation-strings.php:536 msgctxt "HTML Tag" msgid "Summary" msgstr "" -#: dist/translation-strings.php:541 +#: dist/translation-strings.php:537 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgctxt "component" msgid "%s HTML Tag" msgstr "" -#: dist/translation-strings.php:542 +#: dist/translation-strings.php:538 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Block" msgstr "" -#: dist/translation-strings.php:543 +#: dist/translation-strings.php:539 msgid "Overflow" msgstr "" -#: dist/translation-strings.php:544 +#: dist/translation-strings.php:540 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Auto" msgstr "" -#: dist/translation-strings.php:545 +#: dist/translation-strings.php:541 msgid "Hidden" msgstr "" -#: dist/translation-strings.php:546 +#: dist/translation-strings.php:542 msgid "Scroll" msgstr "" -#: dist/translation-strings.php:547 +#: dist/translation-strings.php:543 msgid "Visible" msgstr "" -#: dist/translation-strings.php:548 +#: dist/translation-strings.php:544 msgid "Clear" msgstr "" -#: dist/translation-strings.php:549 +#: dist/translation-strings.php:545 msgid "Both" msgstr "" -#: dist/translation-strings.php:550 +#: dist/translation-strings.php:546 msgid "Adjusts the transparency of the entire block" msgstr "" -#: dist/translation-strings.php:551 +#: dist/translation-strings.php:547 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Z-Index" msgstr "" -#: dist/translation-strings.php:552 +#: dist/translation-strings.php:548 msgid "Sets the stack order of different blocks to make one appear in front of another. A block with a higher z-index will show up on top of another block with a lower z-index." msgstr "" -#: dist/translation-strings.php:553 +#: dist/translation-strings.php:549 msgid "Sticky position may not work across all themes" msgstr "" -#: dist/translation-strings.php:554 +#: dist/translation-strings.php:550 msgid "Static" msgstr "" -#: dist/translation-strings.php:555 +#: dist/translation-strings.php:551 msgid "Relative" msgstr "" -#: dist/translation-strings.php:556 +#: dist/translation-strings.php:552 msgid "Absolute" msgstr "" -#: dist/translation-strings.php:557 +#: dist/translation-strings.php:553 msgid "Sticky" msgstr "" +#: dist/translation-strings.php:554 +#: dist/editor_blocks.js:2 +msgid "Tab %d" +msgstr "" + +#: dist/translation-strings.php:555 +#: dist/editor_blocks.js:2 +#: dist/translation-strings.js:567 +msgid "Tabs" +msgstr "" + +#: dist/translation-strings.php:556 +#: dist/editor_blocks.js:2 +msgid "Initial Tab Open" +msgstr "" + +#: dist/translation-strings.php:557 +#: dist/editor_blocks.js:2 +msgid "Equal tab height" +msgstr "" + #: dist/translation-strings.php:558 -msgid "Styles" +#: dist/editor_blocks.js:2 +msgid "Tab Orientation" msgstr "" #: dist/translation-strings.php:559 -msgid "Supports links to images, videos, YouTube, Vimeo, and web pages that allow embedding. Opens inner image block if no link is provided" +#: dist/editor_blocks.js:2 +msgid "Tab Panel Offset" msgstr "" #: dist/translation-strings.php:560 -msgid "Block Size & Spacing" +#: dist/editor_blocks.js:2 +msgid "Tab Panel Effect" msgstr "" #: dist/translation-strings.php:561 +#: dist/editor_blocks.js:2 +msgid "Immediate" +msgstr "" + +#: dist/translation-strings.php:562 +msgid "Block Size & Spacing" +msgstr "" + +#: dist/translation-strings.php:563 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 msgid "Background" msgstr "" -#: dist/translation-strings.php:562 +#: dist/translation-strings.php:564 msgid "Borders & Shadows" msgstr "" -#: dist/translation-strings.php:563 +#: dist/translation-strings.php:565 msgid "Align Left" msgstr "" -#: dist/translation-strings.php:564 +#: dist/translation-strings.php:566 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Align Center" msgstr "" -#: dist/translation-strings.php:565 +#: dist/translation-strings.php:567 msgid "Align Right" msgstr "" -#: dist/translation-strings.php:566 +#: dist/translation-strings.php:568 msgid "Justified" msgstr "" -#: dist/translation-strings.php:567 +#: dist/translation-strings.php:569 msgid "Content Min. Height" msgstr "" -#: dist/translation-strings.php:568 +#: dist/translation-strings.php:570 msgid "Content Max Width" msgstr "" -#: dist/translation-strings.php:569 +#: dist/translation-strings.php:571 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Content Horizontal Align" msgstr "" -#: dist/translation-strings.php:570 +#: dist/translation-strings.php:572 msgid "Sets the placement of the column container to left, center or right. Not available when block width is set to full width." msgstr "" -#: dist/translation-strings.php:571 +#: dist/translation-strings.php:573 msgid "Adjusts the placement of all content in the block to align left, center or right" msgstr "" -#: dist/translation-strings.php:572 +#: dist/translation-strings.php:574 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:405 +#: dist/translation-strings.js:407 msgid "Column" msgstr "" -#: dist/translation-strings.php:573 +#: dist/translation-strings.php:575 msgid "Sets the horizontal position and spacing of the inner columns." msgstr "" -#: dist/translation-strings.php:574 +#: dist/translation-strings.php:576 msgid "Column contents need to be narrow for effect to show." msgstr "" -#: dist/translation-strings.php:575 +#: dist/translation-strings.php:577 msgid "Sets the vertical position of the inner columns relative to the columns block." msgstr "" -#: dist/translation-strings.php:576 +#: dist/translation-strings.php:578 msgid "%s Direction" msgstr "" -#: dist/translation-strings.php:577 +#: dist/translation-strings.php:579 msgid "Inner Block" msgstr "" -#: dist/translation-strings.php:578 +#: dist/translation-strings.php:580 msgid "Sets the horizontal/vertical position and spacing of the inner blocks." msgstr "" -#: dist/translation-strings.php:579 +#: dist/translation-strings.php:581 msgid "Aligns the horizontal/vertical position of the inner blocks." msgstr "" -#: dist/translation-strings.php:580 +#: dist/translation-strings.php:582 msgid "Set Content Min. Height for alignment to display properly" msgstr "" -#: dist/translation-strings.php:581 +#: dist/translation-strings.php:583 msgid "Inner Block Wrapping" msgstr "" -#: dist/translation-strings.php:582 +#: dist/translation-strings.php:584 msgid "%s %s" msgstr "" -#: dist/translation-strings.php:583 +#: dist/translation-strings.php:585 msgid "Sets the gap between the columns of inner blocks." msgstr "" -#: dist/translation-strings.php:584 +#: dist/translation-strings.php:586 msgid "Sets the gap between inner blocks." msgstr "" -#: dist/translation-strings.php:585 +#: dist/translation-strings.php:587 msgid "Sets the gap between the rows of inner blocks." msgstr "" -#: dist/translation-strings.php:586 +#: dist/translation-strings.php:588 +msgid "Supports links to images, videos, YouTube, Vimeo, and web pages that allow embedding. Opens inner image block if no link is provided" +msgstr "" + +#: dist/translation-strings.php:589 msgid "Darken" msgstr "" -#: dist/translation-strings.php:587 +#: dist/translation-strings.php:590 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:432 +#: dist/translation-strings.js:434 msgid "Lift" msgstr "" -#: dist/translation-strings.php:588 +#: dist/translation-strings.php:591 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:198 +#: dist/translation-strings.js:201 msgid "Scale" msgstr "" -#: dist/translation-strings.php:589 +#: dist/translation-strings.php:592 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Lift & Scale" msgstr "" -#: dist/translation-strings.php:590 +#: dist/translation-strings.php:593 msgid "Lift More" msgstr "" -#: dist/translation-strings.php:591 +#: dist/translation-strings.php:594 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Scale More" msgstr "" -#: dist/translation-strings.php:592 +#: dist/translation-strings.php:595 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Lift & Scale More" msgstr "" -#: dist/translation-strings.php:593 +#: dist/translation-strings.php:596 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:440 +#: dist/translation-strings.js:442 msgid "Hover Effect" msgstr "" -#: dist/translation-strings.php:594 +#: dist/translation-strings.php:597 msgid "Hover effect" msgstr "" -#: dist/translation-strings.php:595 +#: dist/translation-strings.php:598 msgid "Triggers animation or effects when you mouse over" msgstr "" -#: dist/translation-strings.php:596 +#: dist/translation-strings.php:599 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Button Color" msgstr "" -#: dist/translation-strings.php:597 +#: dist/translation-strings.php:600 msgid "Button Colors" msgstr "" -#: dist/translation-strings.php:598 +#: dist/translation-strings.php:601 msgid "Min. Button Height" msgstr "" -#: dist/translation-strings.php:599 +#: dist/translation-strings.php:602 msgid "Button Width" msgstr "" -#: dist/translation-strings.php:600 +#: dist/translation-strings.php:603 msgid "Button Padding" msgstr "" -#: dist/translation-strings.php:601 +#: dist/translation-strings.php:604 msgid "Button padding" msgstr "" -#: dist/translation-strings.php:602 +#: dist/translation-strings.php:605 msgid "Adjusts the space between the button text and button borders" msgstr "" -#: dist/translation-strings.php:603 +#: dist/translation-strings.php:606 msgid "Button Size & Spacing" msgstr "" -#: dist/translation-strings.php:604 +#: dist/translation-strings.php:607 msgid "Button Borders & Shadows" msgstr "" -#: dist/translation-strings.php:605 -msgid "Conditional Display" -msgstr "" - -#: dist/translation-strings.php:606 +#: dist/translation-strings.php:608 msgid "When enabled, the last column will be cloned instead of adding a blank column." msgstr "" -#: dist/translation-strings.php:607 +#: dist/translation-strings.php:609 #: src/welcome/index.php:119 #: src/welcome/index.php:333 msgid "Settings" msgstr "" -#: dist/translation-strings.php:608 -msgid "Sets column paddings, the space inside the block between the block elements and the column container border" -msgstr "" - -#: dist/translation-strings.php:609 -msgid "Sets the distance between two or more columns" -msgstr "" - #: dist/translation-strings.php:610 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:429 -msgid "Container" +msgid "Allow Column Wrapping" msgstr "" #: dist/translation-strings.php:611 -msgid "Container Min. Height" +msgid "Sets column paddings, the space inside the block between the block elements and the column container border" msgstr "" #: dist/translation-strings.php:612 -msgid "Max Container Width" +msgid "Sets the distance between two or more columns" msgstr "" #: dist/translation-strings.php:613 -msgid "Container Horizontal Align" +msgid "Styles" msgstr "" #: dist/translation-strings.php:614 -msgid "Container Vertical Align" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:431 +msgid "Container" msgstr "" #: dist/translation-strings.php:615 -msgid "Container Background" +msgid "Container Min. Height" msgstr "" #: dist/translation-strings.php:616 -msgid "Trigger hover state on nested blocks" +msgid "Max Container Width" msgstr "" #: dist/translation-strings.php:617 -msgid "Container Borders & Shadow" +msgid "Container Horizontal Align" msgstr "" #: dist/translation-strings.php:618 -msgid "Block Width" +msgid "Container Vertical Align" msgstr "" #: dist/translation-strings.php:619 -msgid "Align Wide" +msgid "Container Background" msgstr "" #: dist/translation-strings.php:620 -msgid "Align Full" +msgid "Trigger hover state on nested blocks" msgstr "" #: dist/translation-strings.php:621 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Content Width" +msgid "Container Borders & Shadow" msgstr "" #: dist/translation-strings.php:622 -msgid "Set the content to be smaller than the block width" +msgid "Conditional Display" msgstr "" #: dist/translation-strings.php:623 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:223 -msgid "Custom CSS" +msgid "Custom Attributes" msgstr "" #: dist/translation-strings.php:624 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:283 -msgid "Shape Color" +msgid "Block Width" msgstr "" #: dist/translation-strings.php:625 -msgid "Shape Border Radius" +msgid "Align Wide" msgstr "" #: dist/translation-strings.php:626 -msgid "Shape Padding" +msgid "Align Full" msgstr "" #: dist/translation-strings.php:627 -msgid "Shape Outline Width" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Content Width" msgstr "" #: dist/translation-strings.php:628 -msgid "Shape Outline Color" +msgid "Set the content to be smaller than the block width" msgstr "" #: dist/translation-strings.php:629 -msgid "Icon Shape" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:229 +msgid "Shape Color" msgstr "" #: dist/translation-strings.php:630 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:280 -msgid "Background Shape" +msgid "Shape Border Radius" msgstr "" #: dist/translation-strings.php:631 -#: src/welcome/index.php:257 -msgid "Motion Effects" +msgid "Shape Padding" msgstr "" #: dist/translation-strings.php:632 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Custom Attributes" +msgid "Shape Outline Width" msgstr "" #: dist/translation-strings.php:633 -msgid "When linked, styling this block would also style other linked blocks in adjacent columns." +msgid "Shape Outline Color" msgstr "" #: dist/translation-strings.php:634 -msgid "Learn more about linking" +msgid "Icon Shape" msgstr "" #: dist/translation-strings.php:635 -msgid "Navigation" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:226 +msgid "Background Shape" msgstr "" #: dist/translation-strings.php:636 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Responsive" +#: src/welcome/index.php:257 +msgid "Motion Effects" msgstr "" #: dist/translation-strings.php:637 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Hide on Desktop" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:196 +msgid "Custom CSS" msgstr "" #: dist/translation-strings.php:638 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Hide on Tablet" +msgid "Select Image" msgstr "" #: dist/translation-strings.php:639 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Hide on Mobile" +msgid "Image Url" msgstr "" #: dist/translation-strings.php:640 -msgid "Select Image" +msgid "Image width" msgstr "" #: dist/translation-strings.php:641 -msgid "Image Url" +msgid "Adjusts the image width" msgstr "" #: dist/translation-strings.php:642 -msgid "Image width" +msgid "Image height" msgstr "" #: dist/translation-strings.php:643 -msgid "Adjusts the image width" +msgid "Adjusts the image height" msgstr "" #: dist/translation-strings.php:644 -msgid "Image height" +msgid "Open Image in Lightbox" msgstr "" #: dist/translation-strings.php:645 -msgid "Adjusts the image height" +msgid "Image Alt" msgstr "" #: dist/translation-strings.php:646 -msgid "Open Image in Lightbox" +msgid "Image Shadow" msgstr "" #: dist/translation-strings.php:647 -msgid "Image Alt" -msgstr "" - -#: dist/translation-strings.php:648 -msgid "Image Shadow" -msgstr "" - -#: dist/translation-strings.php:649 msgid "Adjusts the intensity of the image shadow" msgstr "" -#: dist/translation-strings.php:650 +#: dist/translation-strings.php:648 msgid "Adjusts the radius of image corners to make them more rounded" msgstr "" -#: dist/translation-strings.php:651 +#: dist/translation-strings.php:649 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 msgid "Overlay Color" msgstr "" -#: dist/translation-strings.php:652 +#: dist/translation-strings.php:650 msgid "Overlay Opacity" msgstr "" -#: dist/translation-strings.php:653 +#: dist/translation-strings.php:651 msgid "Overlay Blend Mode" msgstr "" -#: dist/translation-strings.php:654 +#: dist/translation-strings.php:652 msgid "Sets how the overlay color blends with the image" msgstr "" -#: dist/translation-strings.php:655 +#: dist/translation-strings.php:653 msgid "Focal point" msgstr "" -#: dist/translation-strings.php:656 +#: dist/translation-strings.php:654 msgid "Image Fit" msgstr "" -#: dist/translation-strings.php:657 +#: dist/translation-strings.php:655 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Contain" msgstr "" -#: dist/translation-strings.php:658 +#: dist/translation-strings.php:656 msgid "Fill" msgstr "" -#: dist/translation-strings.php:659 +#: dist/translation-strings.php:657 msgid "Scale Down" msgstr "" -#: dist/translation-strings.php:660 +#: dist/translation-strings.php:658 msgid "Sets the fit to default, contain, cover, fill, none, and scale down. Image fit specifies how an image resizes in a container." msgstr "" -#: dist/translation-strings.php:661 +#: dist/translation-strings.php:659 msgid "Image Shape" msgstr "" -#: dist/translation-strings.php:662 +#: dist/translation-strings.php:660 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:282 +#: dist/translation-strings.js:228 msgid "Change the shape of the image" msgstr "" -#: dist/translation-strings.php:663 +#: dist/translation-strings.php:661 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Flip Shape Horizontally" msgstr "" -#: dist/translation-strings.php:664 +#: dist/translation-strings.php:662 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Flip Shape Vertically" msgstr "" -#: dist/translation-strings.php:665 +#: dist/translation-strings.php:663 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Stretch Shape Mask" msgstr "" -#: dist/translation-strings.php:666 +#: dist/translation-strings.php:664 msgid "Image Filter" msgstr "" -#: dist/translation-strings.php:667 +#: dist/translation-strings.php:665 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:400 +#: dist/translation-strings.js:402 msgid "Image" msgstr "" +#: dist/translation-strings.php:666 +msgid "When linked, styling this block would also style other linked blocks in adjacent columns." +msgstr "" + +#: dist/translation-strings.php:667 +msgid "Learn more about linking" +msgstr "" + #: dist/translation-strings.php:668 -#: dist/translation-strings.js:547 -msgid "Progress Circle" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Responsive" msgstr "" #: dist/translation-strings.php:669 -#: dist/translation-strings.js:544 -msgid "Progress Bar" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Hide on Desktop" msgstr "" #: dist/translation-strings.php:670 -msgid "Progress" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Hide on Tablet" msgstr "" #: dist/translation-strings.php:671 -msgid "Maximum Progress" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Hide on Mobile" msgstr "" #: dist/translation-strings.php:672 -msgid "Apply border radius to bar" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:425 +msgctxt "Nth Title" +msgid "%s %d" msgstr "" #: dist/translation-strings.php:673 -msgid "Thickness" +msgid "Wave" msgstr "" #: dist/translation-strings.php:674 -msgid "Bar Color #%s" +msgid "Straight" msgstr "" #: dist/translation-strings.php:675 -msgid "Bar Color" +msgid "Slant" msgstr "" #: dist/translation-strings.php:676 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:289 -msgid "Gradient Direction (degrees)" +msgid "Curve" msgstr "" #: dist/translation-strings.php:677 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Adv. Gradient Color Settings" +msgid "Rounded" msgstr "" #: dist/translation-strings.php:678 -msgid "Gradient Direction" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Design" msgstr "" #: dist/translation-strings.php:679 -msgid "Sets the direction (in degrees) of the colors" +msgid "Separator Height" msgstr "" #: dist/translation-strings.php:680 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Color %d Location" +msgid "Adjusts the height of the separator to stretch or compress vertically" msgstr "" #: dist/translation-strings.php:681 -msgid "Sets the placement of each color in relation to the other color" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Separator Width" msgstr "" #: dist/translation-strings.php:682 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Gradient Blend Mode" +#: dist/translation-strings.js:430 +msgid "Shadow / Outline" msgstr "" #: dist/translation-strings.php:683 -msgid "Sets how this background gradient/image blends into the other background" +msgid "Adjusts the intensity of the separator shadow and makes the separator more prominent" msgstr "" #: dist/translation-strings.php:684 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Color" +msgid "Invert Design" msgstr "" #: dist/translation-strings.php:685 -msgid "Rounded" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Bring to Front" msgstr "" #: dist/translation-strings.php:686 -msgid "Animate" +msgid "Brings the separator layer in front of other block elements" msgstr "" #: dist/translation-strings.php:687 -msgid "Accessibility Label" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Top Separator" msgstr "" #: dist/translation-strings.php:688 -msgid "Progress Bar Text" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Bottom Separator" msgstr "" #: dist/translation-strings.php:689 -msgid "Progress Prefix" +#: dist/translation-strings.js:549 +msgid "Progress Circle" msgstr "" #: dist/translation-strings.php:690 -msgid "Progress Suffix" +#: dist/translation-strings.js:546 +msgid "Progress Bar" msgstr "" #: dist/translation-strings.php:691 -msgid "Use theme heading margins" +msgid "Progress" msgstr "" #: dist/translation-strings.php:692 -msgid "Font Family" +msgid "Maximum Progress" msgstr "" #: dist/translation-strings.php:693 -msgid "Sets the font set to be used for the element" +msgid "Apply border radius to bar" msgstr "" #: dist/translation-strings.php:694 -msgid "Weight" +msgid "Thickness" msgstr "" #: dist/translation-strings.php:695 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:206 -msgid "Normal" +msgid "Bar Color #%s" msgstr "" #: dist/translation-strings.php:696 -msgid "Bold" +msgid "Bar Color" msgstr "" #: dist/translation-strings.php:697 -msgid "Font weight" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:235 +msgid "Gradient Direction (degrees)" msgstr "" #: dist/translation-strings.php:698 -msgid "Sets the thinness or thickness of text characters" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Adv. Gradient Color Settings" msgstr "" #: dist/translation-strings.php:699 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:244 -msgid "Transform" +msgid "Gradient Direction" msgstr "" #: dist/translation-strings.php:700 -msgid "Uppercase" +msgid "Sets the direction (in degrees) of the colors" msgstr "" #: dist/translation-strings.php:701 -msgid "Lowercase" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Color %d Location" msgstr "" #: dist/translation-strings.php:702 -msgid "Capitalize" +msgid "Sets the placement of each color in relation to the other color" msgstr "" #: dist/translation-strings.php:703 -msgid "Sets the usage of upper or lower case" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Gradient Blend Mode" msgstr "" #: dist/translation-strings.php:704 -msgid "Font Style" +msgid "Sets how this background gradient/image blends into the other background" msgstr "" #: dist/translation-strings.php:705 -msgid "Italic" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Color" msgstr "" #: dist/translation-strings.php:706 -msgid "Oblique" +msgid "Animate" msgstr "" #: dist/translation-strings.php:707 -msgid "Line-Height" +msgid "Accessibility Label" msgstr "" #: dist/translation-strings.php:708 -msgid "Line height" +msgid "Progress Bar Text" msgstr "" #: dist/translation-strings.php:709 -msgid "Sets the vertical distance between lines of text" +msgid "Progress Prefix" msgstr "" #: dist/translation-strings.php:710 -msgid "Letter Spacing" +msgid "Progress Suffix" msgstr "" #: dist/translation-strings.php:711 -msgid "Letter spacing" +msgid "Transform & Transition" msgstr "" #: dist/translation-strings.php:712 -msgid "Sets the distance or space between letters" +msgid "Use theme heading margins" msgstr "" #: dist/translation-strings.php:713 -msgid "Font size" +msgid "Font Family" msgstr "" #: dist/translation-strings.php:714 -msgid "Sets the size of text characters" +msgid "Sets the font set to be used for the element" msgstr "" #: dist/translation-strings.php:715 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:428 -msgid "Shadow / Outline" +msgid "Weight" msgstr "" #: dist/translation-strings.php:716 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:423 -msgctxt "Nth Title" -msgid "%s %d" +#: dist/editor_blocks.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:209 +msgid "Normal" msgstr "" #: dist/translation-strings.php:717 -msgid "Wave" +msgid "Bold" msgstr "" #: dist/translation-strings.php:718 -msgid "Straight" +msgid "Font weight" msgstr "" #: dist/translation-strings.php:719 -msgid "Slant" +msgid "Sets the thinness or thickness of text characters" msgstr "" #: dist/translation-strings.php:720 -msgid "Curve" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:261 +msgid "Transform" msgstr "" #: dist/translation-strings.php:721 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Design" +msgid "Uppercase" msgstr "" #: dist/translation-strings.php:722 -msgid "Separator Height" +msgid "Lowercase" msgstr "" #: dist/translation-strings.php:723 -msgid "Adjusts the height of the separator to stretch or compress vertically" +msgid "Capitalize" msgstr "" #: dist/translation-strings.php:724 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Separator Width" +msgid "Sets the usage of upper or lower case" msgstr "" #: dist/translation-strings.php:725 -msgid "Adjusts the intensity of the separator shadow and makes the separator more prominent" +msgid "Font Style" msgstr "" #: dist/translation-strings.php:726 -msgid "Invert Design" +msgid "Italic" msgstr "" #: dist/translation-strings.php:727 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Bring to Front" +msgid "Oblique" msgstr "" #: dist/translation-strings.php:728 -msgid "Brings the separator layer in front of other block elements" +msgid "Line-Height" msgstr "" #: dist/translation-strings.php:729 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Top Separator" +msgid "Line height" msgstr "" #: dist/translation-strings.php:730 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Bottom Separator" +msgid "Sets the vertical distance between lines of text" msgstr "" #: dist/translation-strings.php:731 -msgid "Transform & Transition" +msgid "Letter Spacing" msgstr "" #: dist/translation-strings.php:732 +msgid "Letter spacing" +msgstr "" + +#: dist/translation-strings.php:733 +msgid "Sets the distance or space between letters" +msgstr "" + +#: dist/translation-strings.php:734 +msgid "Font size" +msgstr "" + +#: dist/translation-strings.php:735 +msgid "Sets the size of text characters" +msgstr "" + +#: dist/translation-strings.php:736 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:309 msgid "Remove" msgstr "" -#: dist/translation-strings.php:733 +#: dist/translation-strings.php:737 msgid "#%s (no title)" msgstr "" -#: dist/translation-strings.php:734 +#: dist/translation-strings.php:738 msgid "No posts found" msgstr "" -#: dist/translation-strings.php:735 +#: dist/translation-strings.php:739 msgid "Pick a post" msgstr "" -#: dist/translation-strings.php:736 +#: dist/translation-strings.php:740 msgid "No matches found" msgstr "" -#: dist/translation-strings.php:737 +#: dist/translation-strings.php:741 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:60 msgid "Reset" msgstr "" -#: dist/translation-strings.php:738 +#: dist/translation-strings.php:742 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Start" msgstr "" -#: dist/translation-strings.php:739 +#: dist/translation-strings.php:743 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Center" msgstr "" -#: dist/translation-strings.php:740 +#: dist/translation-strings.php:744 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "End" msgstr "" -#: dist/translation-strings.php:741 +#: dist/translation-strings.php:745 msgid "Space Between" msgstr "" -#: dist/translation-strings.php:742 +#: dist/translation-strings.php:746 msgid "Space Around" msgstr "" -#: dist/translation-strings.php:743 +#: dist/translation-strings.php:747 msgid "Space Evenly" msgstr "" -#: dist/translation-strings.php:744 +#: dist/translation-strings.php:748 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Stretch" msgstr "" -#: dist/translation-strings.php:745 +#: dist/translation-strings.php:749 msgid "Baseline" msgstr "" -#: dist/translation-strings.php:746 +#: dist/translation-strings.php:750 msgid "Unit" msgstr "" -#: dist/translation-strings.php:747 +#: dist/translation-strings.php:751 msgid "Normal State" msgstr "" -#: dist/translation-strings.php:748 +#: dist/translation-strings.php:752 msgid "Hovered State" msgstr "" -#: dist/translation-strings.php:749 +#: dist/translation-strings.php:753 msgid "Parent Hovered State" msgstr "" -#: dist/translation-strings.php:750 +#: dist/translation-strings.php:754 msgid "Collapsed" msgstr "" -#: dist/translation-strings.php:751 +#: dist/translation-strings.php:755 msgid "Parent Hovered" msgstr "" -#: dist/translation-strings.php:752 +#: dist/translation-strings.php:756 msgid "Add a Container Background to a parent block to enable this state." msgstr "" -#: dist/translation-strings.php:753 +#: dist/translation-strings.php:757 msgid "Multiply" msgstr "" -#: dist/translation-strings.php:754 +#: dist/translation-strings.php:758 msgid "Screen" msgstr "" -#: dist/translation-strings.php:755 +#: dist/translation-strings.php:759 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 msgid "Overlay" msgstr "" -#: dist/translation-strings.php:756 +#: dist/translation-strings.php:760 msgid "Lighten" msgstr "" -#: dist/translation-strings.php:757 +#: dist/translation-strings.php:761 msgid "Color Dodge" msgstr "" -#: dist/translation-strings.php:758 +#: dist/translation-strings.php:762 msgid "Color Burn" msgstr "" -#: dist/translation-strings.php:759 +#: dist/translation-strings.php:763 msgid "Hard Light" msgstr "" -#: dist/translation-strings.php:760 +#: dist/translation-strings.php:764 msgid "Soft Light" msgstr "" -#: dist/translation-strings.php:761 +#: dist/translation-strings.php:765 msgid "Difference" msgstr "" -#: dist/translation-strings.php:762 +#: dist/translation-strings.php:766 msgid "Exclusion" msgstr "" -#: dist/translation-strings.php:763 +#: dist/translation-strings.php:767 msgid "Hue" msgstr "" -#: dist/translation-strings.php:764 +#: dist/translation-strings.php:768 msgid "Saturation" msgstr "" -#: dist/translation-strings.php:765 +#: dist/translation-strings.php:769 msgid "Luminosity" msgstr "" -#: dist/translation-strings.php:766 +#: dist/translation-strings.php:770 msgid "Initial" msgstr "" -#: dist/translation-strings.php:767 +#: dist/translation-strings.php:771 msgid "Inherit" msgstr "" -#: dist/translation-strings.php:768 +#: dist/translation-strings.php:772 msgid "Unset" msgstr "" -#: dist/translation-strings.php:769 +#: dist/translation-strings.php:773 msgid "Mix Blend Mode" msgstr "" -#: dist/translation-strings.php:770 +#: dist/translation-strings.php:774 #: dist/editor_blocks.js:2 msgid "Edit" msgstr "" -#: dist/translation-strings.php:771 -msgid "Global Gradients" -msgstr "" - -#: dist/translation-strings.php:772 -#: dist/editor_blocks.js:2 -msgid "Global Colors" -msgstr "" - -#: dist/translation-strings.php:773 -msgid "Add Column" -msgstr "" - -#: dist/translation-strings.php:774 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Column Widths" -msgstr "" - #: dist/translation-strings.php:775 -msgid "Adjust the individual widths of each column" +msgid "Add Column" msgstr "" #: dist/translation-strings.php:776 -msgid "Group into Container" +msgid "Adjust the individual widths of each column" msgstr "" #: dist/translation-strings.php:777 -msgid "Ungroup from Container" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Column Widths" msgstr "" #: dist/translation-strings.php:778 -msgid "You can type in custom HTML attributes for this block in the field above." +msgid "Global Gradients" msgstr "" #: dist/translation-strings.php:779 -msgid "Example:" +#: dist/editor_blocks.js:2 +msgid "Global Colors" msgstr "" #: dist/translation-strings.php:780 -msgid "Learn more about Custom Attributes" +msgid "Group into Container" msgstr "" #: dist/translation-strings.php:781 -msgid "There is an error in your custom attribute" +msgid "Ungroup from Container" msgstr "" #: dist/translation-strings.php:782 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Layout" -msgstr "" - -#: dist/translation-strings.php:783 -#: dist/translation-strings.php:1669 +#: dist/translation-strings.php:1602 #: pro__premium_only/src/welcome/custom-fields/custom-fields.php:160 #: src/welcome/index.php:208 #: src/welcome/index.php:221 @@ -4135,564 +4133,582 @@ msgstr "" msgid "Go Premium" msgstr "" -#: dist/translation-strings.php:784 +#: dist/translation-strings.php:783 msgid "No designs found" msgstr "" +#: dist/translation-strings.php:784 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Layout" +msgstr "" + #: dist/translation-strings.php:785 +msgid "You can type in custom HTML attributes for this block in the field above." +msgstr "" + +#: dist/translation-strings.php:786 +msgid "Example:" +msgstr "" + +#: dist/translation-strings.php:787 +msgid "Learn more about Custom Attributes" +msgstr "" + +#: dist/translation-strings.php:788 +msgid "There is an error in your custom attribute" +msgstr "" + +#: dist/translation-strings.php:789 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:304 msgid "Dynamic Fields" msgstr "" -#: dist/translation-strings.php:786 +#: dist/translation-strings.php:790 msgid "Font Size" msgstr "" -#: dist/translation-strings.php:787 +#: dist/translation-strings.php:791 msgid "auto" msgstr "" -#: dist/translation-strings.php:788 +#: dist/translation-strings.php:792 msgid "Individual sides" msgstr "" -#: dist/translation-strings.php:789 +#: dist/translation-strings.php:793 msgid "All sides" msgstr "" -#: dist/translation-strings.php:790 +#: dist/translation-strings.php:794 msgid "Top and Bottom" msgstr "" -#: dist/translation-strings.php:791 +#: dist/translation-strings.php:795 msgid "Left and Right" msgstr "" -#: dist/translation-strings.php:792 +#: dist/translation-strings.php:796 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:246 +#: dist/translation-strings.js:263 msgid "Top Left" msgstr "" -#: dist/translation-strings.php:793 +#: dist/translation-strings.php:797 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:248 +#: dist/translation-strings.js:265 msgid "Top Right" msgstr "" -#: dist/translation-strings.php:794 +#: dist/translation-strings.php:798 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:252 +#: dist/translation-strings.js:269 msgid "Bottom Left" msgstr "" -#: dist/translation-strings.php:795 +#: dist/translation-strings.php:799 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:254 +#: dist/translation-strings.js:271 msgid "Bottom Right" msgstr "" -#: dist/translation-strings.php:796 +#: dist/translation-strings.php:800 msgid "There are no blocks in this group, please add one." msgstr "" -#: dist/translation-strings.php:797 +#: dist/translation-strings.php:801 msgid "Add Block" msgstr "" -#: dist/translation-strings.php:798 +#: dist/translation-strings.php:802 msgid "System Fonts" msgstr "" -#: dist/translation-strings.php:799 +#: dist/translation-strings.php:803 msgid "Sans-Serif" msgstr "" -#: dist/translation-strings.php:800 +#: dist/translation-strings.php:804 msgid "Serif" msgstr "" -#: dist/translation-strings.php:801 +#: dist/translation-strings.php:805 msgid "Serif Alternative" msgstr "" -#: dist/translation-strings.php:802 +#: dist/translation-strings.php:806 msgid "Monospace" msgstr "" -#: dist/translation-strings.php:803 +#: dist/translation-strings.php:807 msgid "Google Fonts" msgstr "" -#: dist/translation-strings.php:804 -msgid "Stop showing tooltips" -msgstr "" - -#: dist/translation-strings.php:805 -#: dist/translation-strings.js:573 +#: dist/translation-strings.php:808 +#: dist/translation-strings.js:575 msgid "Paragraph" msgstr "" -#: dist/translation-strings.php:806 -msgid "Describe the purpose of the image" -msgstr "" - -#: dist/translation-strings.php:807 -msgid "Leave empty if the image is purely decorative." -msgstr "" - -#: dist/translation-strings.php:808 -msgid "Alt Text (Alternative Text)" +#: dist/translation-strings.php:809 +msgid "Stop showing tooltips" msgstr "" -#: dist/translation-strings.php:809 +#: dist/translation-strings.php:810 msgid "Type to search icon" msgstr "" -#: dist/translation-strings.php:810 +#: dist/translation-strings.php:811 msgid "Icon Settings" msgstr "" -#: dist/translation-strings.php:811 +#: dist/translation-strings.php:812 msgid "Upload SVG" msgstr "" -#: dist/translation-strings.php:812 +#: dist/translation-strings.php:813 msgid "Clear icon" msgstr "" -#: dist/translation-strings.php:813 +#: dist/translation-strings.php:814 msgid "Drop your SVG here" msgstr "" -#: dist/translation-strings.php:814 +#: dist/translation-strings.php:815 msgid "preview" msgstr "" -#: dist/translation-strings.php:815 +#: dist/translation-strings.php:816 msgid "Upload" msgstr "" -#: dist/translation-strings.php:816 +#: dist/translation-strings.php:817 msgid "Replace" msgstr "" -#: dist/translation-strings.php:817 +#: dist/translation-strings.php:818 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:220 +#: dist/translation-strings.js:223 msgid "Blur" msgstr "" -#: dist/translation-strings.php:818 +#: dist/translation-strings.php:819 msgid "Brightness" msgstr "" -#: dist/translation-strings.php:819 +#: dist/translation-strings.php:820 msgid "Contrast" msgstr "" -#: dist/translation-strings.php:820 +#: dist/translation-strings.php:821 msgid "Grayscale" msgstr "" -#: dist/translation-strings.php:821 +#: dist/translation-strings.php:822 msgid "Hue Rotate" msgstr "" -#: dist/translation-strings.php:822 +#: dist/translation-strings.php:823 msgid "Invert" msgstr "" -#: dist/translation-strings.php:823 +#: dist/translation-strings.php:824 msgid "Saturate" msgstr "" -#: dist/translation-strings.php:824 +#: dist/translation-strings.php:825 msgid "Sepia" msgstr "" -#: dist/translation-strings.php:825 +#: dist/translation-strings.php:826 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 msgid "Circle" msgstr "" -#: dist/translation-strings.php:826 +#: dist/translation-strings.php:827 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:347 +#: dist/translation-strings.js:349 msgid "Blob %s" msgstr "" -#: dist/translation-strings.php:827 -msgid "Click on any inner block in the editor to style it." -msgstr "" - #: dist/translation-strings.php:828 -msgid "Looking for other settings? They've moved to the %s tab." +msgid "Describe the purpose of the image" msgstr "" #: dist/translation-strings.php:829 -msgid "style" +msgid "Leave empty if the image is purely decorative." msgstr "" #: dist/translation-strings.php:830 -msgid "Dismiss hint" +msgid "Alt Text (Alternative Text)" msgstr "" #: dist/translation-strings.php:831 -msgid "layout" +msgid "Looking for other settings? They've moved to the %s tab." msgstr "" #: dist/translation-strings.php:832 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "All" +msgid "style" msgstr "" #: dist/translation-strings.php:833 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Designs" +msgid "Dismiss hint" msgstr "" #: dist/translation-strings.php:834 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "UI Kits" +msgid "layout" msgstr "" #: dist/translation-strings.php:835 -msgid "Wireframes" +msgid "Click on any inner block in the editor to style it." msgstr "" #: dist/translation-strings.php:836 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Latest Design Library" +msgid "Designs" msgstr "" #: dist/translation-strings.php:837 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "V2 Design Library" +msgid "Pick a design to start from, this will override your block settings" msgstr "" #: dist/translation-strings.php:838 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "E.g. light, dark, red, minimalist…" +msgid "All" msgstr "" #: dist/translation-strings.php:839 -msgid "Select Multiple" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Designs" msgstr "" #: dist/translation-strings.php:840 -msgid "Select" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "UI Kits" msgstr "" #: dist/translation-strings.php:841 -msgid "Deselect All" +msgid "Wireframes" msgstr "" #: dist/translation-strings.php:842 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Refresh Library" +msgid "Latest Design Library" msgstr "" #: dist/translation-strings.php:843 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Large preview" +msgid "V2 Design Library" msgstr "" #: dist/translation-strings.php:844 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Medium preview" +msgid "E.g. light, dark, red, minimalist…" msgstr "" #: dist/translation-strings.php:845 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Small preview" +msgid "Select Multiple" msgstr "" #: dist/translation-strings.php:846 -msgid "Add Designs" +msgid "Select" msgstr "" #: dist/translation-strings.php:847 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Designs" +msgid "Deselect All" msgstr "" #: dist/translation-strings.php:848 -msgid "Pick a design to start from, this will override your block settings" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Refresh Library" msgstr "" #: dist/translation-strings.php:849 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Layout Tab" +msgid "Large preview" msgstr "" #: dist/translation-strings.php:850 -msgid "Style" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Medium preview" msgstr "" #: dist/translation-strings.php:851 -msgid "Style Tab" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Small preview" msgstr "" #: dist/translation-strings.php:852 -msgid "Advanced" +msgid "Add Designs" msgstr "" #: dist/translation-strings.php:853 -msgid "Advanced Tab" -msgstr "" - -#: dist/translation-strings.php:854 msgid "Get More Image Shapes" msgstr "" -#: dist/translation-strings.php:855 +#: dist/translation-strings.php:854 msgid "Mask images with a variety of blob-like shapes" msgstr "" -#: dist/translation-strings.php:856 +#: dist/translation-strings.php:855 msgid "Choose from over 50 different shapes" msgstr "" -#: dist/translation-strings.php:857 +#: dist/translation-strings.php:856 msgid "Enhances the overall aesthetic of images" msgstr "" -#: dist/translation-strings.php:858 +#: dist/translation-strings.php:857 msgid "Use Dynamic Content" msgstr "" -#: dist/translation-strings.php:859 +#: dist/translation-strings.php:858 msgid "Add dynamic content from posts or post meta" msgstr "" -#: dist/translation-strings.php:860 +#: dist/translation-strings.php:859 msgid "Use third-party plugins as dynamic sources such as ACF, Meta Box, Toolset, and more" msgstr "" -#: dist/translation-strings.php:861 +#: dist/translation-strings.php:860 msgid "Build custom loop design with the Native Query Loop" msgstr "" -#: dist/translation-strings.php:862 +#: dist/translation-strings.php:861 msgid "Separator Layers" msgstr "" -#: dist/translation-strings.php:863 +#: dist/translation-strings.php:862 msgid "Add a second and third layer to separators" msgstr "" -#: dist/translation-strings.php:864 +#: dist/translation-strings.php:863 msgid "Change layer color, size and opacity" msgstr "" -#: dist/translation-strings.php:865 +#: dist/translation-strings.php:864 msgid "Greater creativity in designing separators" msgstr "" -#: dist/translation-strings.php:866 +#: dist/translation-strings.php:865 msgid "Elevate Your Icons" msgstr "" -#: dist/translation-strings.php:867 +#: dist/translation-strings.php:866 msgid "Liven up icons with gradient fills, multiple colors and background shapes" msgstr "" -#: dist/translation-strings.php:868 +#: dist/translation-strings.php:867 msgid "More design options and customization for icons" msgstr "" -#: dist/translation-strings.php:869 +#: dist/translation-strings.php:868 msgid "Choose from over 50 background shapes" msgstr "" -#: dist/translation-strings.php:870 +#: dist/translation-strings.php:869 msgid "Greater visual interest and variety for your icons" msgstr "" -#: dist/translation-strings.php:871 +#: dist/translation-strings.php:870 msgid "Liven up icons with background shapes" msgstr "" -#: dist/translation-strings.php:872 +#: dist/translation-strings.php:871 msgid "Adjust timing of CSS transitions" msgstr "" -#: dist/translation-strings.php:873 +#: dist/translation-strings.php:872 msgid "Change X and Y position of blocks" msgstr "" -#: dist/translation-strings.php:874 +#: dist/translation-strings.php:873 msgid "Scale or rotate blocks" msgstr "" -#: dist/translation-strings.php:875 +#: dist/translation-strings.php:874 msgid "Perfect for hover animations" msgstr "" -#: dist/translation-strings.php:876 +#: dist/translation-strings.php:875 msgid "Entrance fade-ins and animations when scrolling to blocks" msgstr "" -#: dist/translation-strings.php:877 +#: dist/translation-strings.php:876 msgid "Smooth scroll animations based on scrolling position" msgstr "" -#: dist/translation-strings.php:878 +#: dist/translation-strings.php:877 msgid "Create a more visually engaging and interactive experience" msgstr "" -#: dist/translation-strings.php:879 +#: dist/translation-strings.php:878 msgid "Show or hide blocks based on conditions" msgstr "" -#: dist/translation-strings.php:880 +#: dist/translation-strings.php:879 msgid "Display blocks based on time, role, meta, custom PHP, option, taxonomy and more" msgstr "" -#: dist/translation-strings.php:881 +#: dist/translation-strings.php:880 msgid "Use multiple conditions" msgstr "" -#: dist/translation-strings.php:882 +#: dist/translation-strings.php:881 msgid "Show targeted content and personalization" msgstr "" -#: dist/translation-strings.php:883 +#: dist/translation-strings.php:882 msgid "Greater control over the visibility of content" msgstr "" -#: dist/translation-strings.php:884 +#: dist/translation-strings.php:883 msgid "Add custom CSS rules specific for each block" msgstr "" -#: dist/translation-strings.php:885 +#: dist/translation-strings.php:884 msgid "Support for media queries" msgstr "" -#: dist/translation-strings.php:886 +#: dist/translation-strings.php:885 msgid "Fine-tune styling on a per block basis" msgstr "" -#: dist/translation-strings.php:887 +#: dist/translation-strings.php:886 msgid "Adjust Column Arrangement" msgstr "" -#: dist/translation-strings.php:888 +#: dist/translation-strings.php:887 msgid "Adjust the arrangement of columns when collapsed on tablet and mobile" msgstr "" -#: dist/translation-strings.php:889 +#: dist/translation-strings.php:888 msgid "Ensure that content remains organized and easily readable on mobile" msgstr "" -#: dist/translation-strings.php:890 +#: dist/translation-strings.php:889 msgid "This is a Premium Design" msgstr "" -#: dist/translation-strings.php:891 +#: dist/translation-strings.php:890 msgid "Unlock access to the entire design library and set your website apart from the rest." msgstr "" -#: dist/translation-strings.php:892 +#: dist/translation-strings.php:891 msgid "Get More Post Options" msgstr "" -#: dist/translation-strings.php:893 +#: dist/translation-strings.php:892 msgid "New Custom Post Type option" msgstr "" -#: dist/translation-strings.php:894 +#: dist/translation-strings.php:893 msgid "Offset, exclude, include specific posts" msgstr "" -#: dist/translation-strings.php:895 +#: dist/translation-strings.php:894 msgid "Hide the current post - great for synced patterns" msgstr "" -#: dist/translation-strings.php:896 +#: dist/translation-strings.php:895 msgid "This Is a Premium Feature" msgstr "" -#: dist/translation-strings.php:897 +#: dist/translation-strings.php:896 #: src/welcome/index.php:271 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Learn More" msgstr "" -#: dist/translation-strings.php:898 +#: dist/translation-strings.php:897 msgid "View Demo" msgstr "" -#: dist/translation-strings.php:899 +#: dist/translation-strings.php:898 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "You can hide premium hints in the settings" msgstr "" +#: dist/translation-strings.php:899 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Layout Tab" +msgstr "" + #: dist/translation-strings.php:900 -msgid "Desktop" +msgid "Style" msgstr "" #: dist/translation-strings.php:901 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Tablet" +msgid "Style Tab" msgstr "" #: dist/translation-strings.php:902 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Mobile" +msgid "Advanced" msgstr "" #: dist/translation-strings.php:903 -msgid "Inset" +msgid "Advanced Tab" msgstr "" #: dist/translation-strings.php:904 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:287 -msgid "Vertical Offset" +msgid "Desktop" msgstr "" #: dist/translation-strings.php:905 -msgid "Shadow Spread" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Tablet" msgstr "" #: dist/translation-strings.php:906 -msgid "Shadow Color" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Mobile" msgstr "" #: dist/translation-strings.php:907 -msgid "Shadow Opacity" +msgid "Inset" msgstr "" #: dist/translation-strings.php:908 -msgid "Advanced Shadow Options" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:233 +msgid "Vertical Offset" msgstr "" #: dist/translation-strings.php:909 +msgid "Shadow Spread" +msgstr "" + +#: dist/translation-strings.php:910 +msgid "Shadow Color" +msgstr "" + +#: dist/translation-strings.php:911 +msgid "Advanced Shadow Options" +msgstr "" + +#: dist/translation-strings.php:912 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 @@ -4700,482 +4716,486 @@ msgstr "" msgid "Custom" msgstr "" -#: dist/translation-strings.php:910 +#: dist/translation-strings.php:913 msgid "Shadow Settings" msgstr "" -#: dist/translation-strings.php:911 +#: dist/translation-strings.php:914 msgid "Shadow/Outline" msgstr "" -#: dist/translation-strings.php:912 +#: dist/translation-strings.php:915 msgid "Adjusts the intensity of the shadow/outline of the block and the appearance of the block border" msgstr "" -#: dist/translation-strings.php:913 +#: dist/translation-strings.php:916 msgid "Column Arrangement" msgstr "" -#: dist/translation-strings.php:914 +#: dist/translation-strings.php:917 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:248 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:18 msgid "Post Type" msgstr "" -#: dist/translation-strings.php:915 +#: dist/translation-strings.php:918 msgid "Filter by Taxonomy" msgstr "" -#: dist/translation-strings.php:916 +#: dist/translation-strings.php:919 msgid "Taxonomy Filter Type" msgstr "" -#: dist/translation-strings.php:917 +#: dist/translation-strings.php:920 msgid "Included In" msgstr "" -#: dist/translation-strings.php:918 +#: dist/translation-strings.php:921 msgid "Not In" msgstr "" -#: dist/translation-strings.php:919 +#: dist/translation-strings.php:922 msgid "URL" msgstr "" -#: dist/translation-strings.php:920 +#: dist/translation-strings.php:923 msgid "Opens in new tab" msgstr "" -#: dist/translation-strings.php:921 +#: dist/translation-strings.php:924 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Nofollow link" msgstr "" -#: dist/translation-strings.php:922 +#: dist/translation-strings.php:925 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Sponsored" msgstr "" -#: dist/translation-strings.php:923 +#: dist/translation-strings.php:926 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "UGC" msgstr "" -#: dist/translation-strings.php:924 +#: dist/translation-strings.php:927 msgid "Search or type url" msgstr "" -#: dist/translation-strings.php:925 +#: dist/translation-strings.php:928 msgid "Upgrade to Premium to get more design variations." msgstr "" -#: dist/translation-strings.php:926 +#: dist/translation-strings.php:929 #: dist/editor_blocks.js:2 msgid "Color & Highlight" msgstr "" -#: dist/translation-strings.php:927 +#: dist/translation-strings.php:930 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 msgid "Highlight" msgstr "" -#: dist/translation-strings.php:928 -#: dist/editor_blocks.js:2 -msgid "Low" -msgstr "" - -#: dist/translation-strings.php:929 -#: dist/editor_blocks.js:2 -msgid "Highlight Text" -msgstr "" - -#: dist/translation-strings.php:930 -#: dist/editor_blocks.js:2 -msgid "Stackable Settings" -msgstr "" - #: dist/translation-strings.php:931 #: dist/editor_blocks.js:2 -msgid "Reset layout" +msgid "Low" msgstr "" #: dist/translation-strings.php:932 #: dist/editor_blocks.js:2 -msgid "Error saving block, please make sure you only have a %s block" +msgid "Highlight Text" msgstr "" #: dist/translation-strings.php:933 #: dist/editor_blocks.js:2 -msgid "Default %s Block saved" +msgid "Stackable Settings" msgstr "" #: dist/translation-strings.php:934 #: dist/editor_blocks.js:2 -msgid "%s Block style saved" +msgid "Reset layout" msgstr "" #: dist/translation-strings.php:935 -#: dist/editor_blocks.js:2 -msgid "Default %s Block Saved!" +msgid "The page will now reload for the old blocks to load. Please reload it if it does not refresh automatically." msgstr "" #: dist/translation-strings.php:936 -#: dist/editor_blocks.js:2 -msgid "Save as Default %s Block" +msgid "Stackable V2 Block Detected" msgstr "" #: dist/translation-strings.php:937 -#: dist/editor_blocks.js:2 -msgid "Default %s Block Deleted!" +msgid "Hello! 👋" msgstr "" #: dist/translation-strings.php:938 -#: dist/editor_blocks.js:2 -msgid "Reset Default %s Block" +msgid "We noticed that the page you are editing contains old Stackable version 2 blocks. Starting Stackable version 3, old v2 blocks are not anymore loaded in the editor. This means that you would not be able to edit the old v2 blocks in the editor and any old v2 block would show a block error in the editor." msgstr "" #: dist/translation-strings.php:939 -#: dist/editor_blocks.js:2 -msgid "Couldn't update block styles, got this error:" +msgid "Do you want to enable backward compatibility, so the old blocks will be loaded in the editor?" msgstr "" #: dist/translation-strings.php:940 -#: dist/editor_blocks.js:2 -msgid "Please refresh the page and try again." +msgid "Yes, load V2 Blocks in the editor, but only when V2 blocks are present already" msgstr "" #: dist/translation-strings.php:941 -msgid "The page will now reload for the old blocks to load. Please reload it if it does not refresh automatically." +msgid "Yes, always load V2 blocks in the editor" msgstr "" #: dist/translation-strings.php:942 -msgid "Stackable V2 Block Detected" +msgid "No, don't load V2 blocks in the editor" msgstr "" #: dist/translation-strings.php:943 -msgid "Hello! 👋" +#: dist/editor_blocks.js:2 +msgid "Error saving block, please make sure you only have a %s block" msgstr "" #: dist/translation-strings.php:944 -msgid "We noticed that the page you are editing contains old Stackable version 2 blocks. Starting Stackable version 3, old v2 blocks are not anymore loaded in the editor. This means that you would not be able to edit the old v2 blocks in the editor and any old v2 block would show a block error in the editor." +#: dist/editor_blocks.js:2 +msgid "Default %s Block saved" msgstr "" #: dist/translation-strings.php:945 -msgid "Do you want to enable backward compatibility, so the old blocks will be loaded in the editor?" +#: dist/editor_blocks.js:2 +msgid "%s Block style saved" msgstr "" #: dist/translation-strings.php:946 -msgid "Yes, load V2 Blocks in the editor, but only when V2 blocks are present already" +#: dist/editor_blocks.js:2 +msgid "Default %s Block Saved!" msgstr "" #: dist/translation-strings.php:947 -msgid "Yes, always load V2 blocks in the editor" +#: dist/editor_blocks.js:2 +msgid "Save as Default %s Block" msgstr "" #: dist/translation-strings.php:948 -msgid "No, don't load V2 blocks in the editor" +#: dist/editor_blocks.js:2 +msgid "Default %s Block Deleted!" msgstr "" #: dist/translation-strings.php:949 -msgid "Facebook" +#: dist/editor_blocks.js:2 +msgid "Reset Default %s Block" msgstr "" #: dist/translation-strings.php:950 -msgid "Twitter" +#: dist/editor_blocks.js:2 +msgid "Couldn't update block styles, got this error:" msgstr "" #: dist/translation-strings.php:951 -msgid "Instagram" +#: dist/editor_blocks.js:2 +msgid "Please refresh the page and try again." msgstr "" #: dist/translation-strings.php:952 -msgid "Pinterest" +msgid "Facebook" msgstr "" #: dist/translation-strings.php:953 -msgid "LinkedIn" +msgid "Twitter" msgstr "" #: dist/translation-strings.php:954 -#: dist/translation-strings.js:580 -msgid "YouTube" +msgid "Instagram" msgstr "" #: dist/translation-strings.php:955 -msgid "Email" +msgid "Pinterest" msgstr "" #: dist/translation-strings.php:956 +msgid "LinkedIn" +msgstr "" + +#: dist/translation-strings.php:957 +#: dist/translation-strings.js:582 +msgid "YouTube" +msgstr "" + +#: dist/translation-strings.php:958 +msgid "Email" +msgstr "" + +#: dist/translation-strings.php:959 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Background Image or Video" msgstr "" -#: dist/translation-strings.php:957 +#: dist/translation-strings.php:960 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Background Image" msgstr "" -#: dist/translation-strings.php:958 +#: dist/translation-strings.php:961 msgid "Background Image Url" msgstr "" -#: dist/translation-strings.php:959 +#: dist/translation-strings.php:962 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Background Media Tint Strength" msgstr "" -#: dist/translation-strings.php:960 +#: dist/translation-strings.php:963 msgid "Adjusts the intensity of the background media tint" msgstr "" -#: dist/translation-strings.php:961 +#: dist/translation-strings.php:964 +msgid "Background Video Thumbnail" +msgstr "" + +#: dist/translation-strings.php:965 msgid "Note: Fixed Background works on Desktop and Android devices only." msgstr "" -#: dist/translation-strings.php:962 +#: dist/translation-strings.php:966 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Fixed Background" msgstr "" -#: dist/translation-strings.php:963 +#: dist/translation-strings.php:967 msgid "Keeps the background image fixed in place while scrolling" msgstr "" -#: dist/translation-strings.php:964 +#: dist/translation-strings.php:968 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Adv. Background Image Settings" msgstr "" -#: dist/translation-strings.php:965 +#: dist/translation-strings.php:969 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Image Position" msgstr "" -#: dist/translation-strings.php:966 +#: dist/translation-strings.php:970 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:247 +#: dist/translation-strings.js:264 msgid "Top Center" msgstr "" -#: dist/translation-strings.php:967 +#: dist/translation-strings.php:971 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:249 +#: dist/translation-strings.js:266 msgid "Center Left" msgstr "" -#: dist/translation-strings.php:968 +#: dist/translation-strings.php:972 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:250 +#: dist/translation-strings.js:267 msgid "Center Center" msgstr "" -#: dist/translation-strings.php:969 +#: dist/translation-strings.php:973 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:251 +#: dist/translation-strings.js:268 msgid "Center Right" msgstr "" -#: dist/translation-strings.php:970 +#: dist/translation-strings.php:974 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:253 +#: dist/translation-strings.js:270 msgid "Bottom Center" msgstr "" -#: dist/translation-strings.php:971 +#: dist/translation-strings.php:975 msgid "Chooses which part of the background image will be the focal point" msgstr "" -#: dist/translation-strings.php:972 +#: dist/translation-strings.php:976 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Image Repeat" msgstr "" -#: dist/translation-strings.php:973 +#: dist/translation-strings.php:977 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "No-Repeat" msgstr "" -#: dist/translation-strings.php:974 +#: dist/translation-strings.php:978 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Repeat" msgstr "" -#: dist/translation-strings.php:975 +#: dist/translation-strings.php:979 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Repeat-X" msgstr "" -#: dist/translation-strings.php:976 +#: dist/translation-strings.php:980 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Repeat-Y" msgstr "" -#: dist/translation-strings.php:977 +#: dist/translation-strings.php:981 msgid "Covers the background with tiled images" msgstr "" -#: dist/translation-strings.php:978 +#: dist/translation-strings.php:982 msgid "Sets the display image size" msgstr "" -#: dist/translation-strings.php:979 +#: dist/translation-strings.php:983 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Custom Size" msgstr "" -#: dist/translation-strings.php:980 +#: dist/translation-strings.php:984 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 msgid "Image Blend Mode" msgstr "" -#: dist/translation-strings.php:981 +#: dist/translation-strings.php:985 msgid "Adjusts the radius of block corners to make them more rounded" msgstr "" -#: dist/translation-strings.php:982 -msgid "Min. Height" -msgstr "" - -#: dist/translation-strings.php:983 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Max. Content Width" -msgstr "" - -#: dist/translation-strings.php:984 +#: dist/translation-strings.php:986 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:445 -msgid "Content Vertical Align" -msgstr "" - -#: dist/translation-strings.php:985 -msgid "Adjusts the minimum allowable height of the block" -msgstr "" - -#: dist/translation-strings.php:986 -msgid "Sets the placement of the content to top, center or bottom. Available when the min. block height is set to higher than default." +msgid "Link / URL" msgstr "" #: dist/translation-strings.php:987 -msgid "Adjusts the maximum allowable width of the block. The settings will depend on the block width you set on the toolbar." +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:321 +msgid "Open in new tab" msgstr "" #: dist/translation-strings.php:988 -msgid "Sets the placement of the content to left, center or right. Not available when block width is set to full width." +msgid "Open Link in Lightbox" msgstr "" #: dist/translation-strings.php:989 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Paddings" +msgid "Displaying a Google Map in a Lightbox? Use the embed iframe URL instead. Need help finding it?" msgstr "" #: dist/translation-strings.php:990 -msgid "Margins" +msgid " Check out our docs." msgstr "" #: dist/translation-strings.php:991 -msgid "Sets the block paddings, i.e the space between the inner columns and the block border" +msgid "Link rel" msgstr "" #: dist/translation-strings.php:992 -msgid "Sets the block margin, i.e. the space outside the block between the block border and the next block." +msgid "Link relationship keywords, e.g. nofollow noreferrer prefetch" msgstr "" #: dist/translation-strings.php:993 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Link / URL" +msgid "Link Title" msgstr "" #: dist/translation-strings.php:994 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:321 -msgid "Open in new tab" +msgid "Also used for lightbox caption" msgstr "" #: dist/translation-strings.php:995 -msgid "Open Link in Lightbox" +msgid "Anchor ID" msgstr "" #: dist/translation-strings.php:996 -msgid "Displaying a Google Map in a Lightbox? Use the embed iframe URL instead. Need help finding it?" +msgid "Supports links to images, videos, YouTube, Vimeo, and web pages that allow embedding" msgstr "" #: dist/translation-strings.php:997 -msgid " Check out our docs." +msgid "Min. Height" msgstr "" #: dist/translation-strings.php:998 -msgid "Link rel" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Max. Content Width" msgstr "" #: dist/translation-strings.php:999 -msgid "Link relationship keywords, e.g. nofollow noreferrer prefetch" +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:447 +msgid "Content Vertical Align" msgstr "" #: dist/translation-strings.php:1000 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Link Title" +msgid "Adjusts the minimum allowable height of the block" msgstr "" #: dist/translation-strings.php:1001 -msgid "Also used for lightbox caption" +msgid "Sets the placement of the content to top, center or bottom. Available when the min. block height is set to higher than default." msgstr "" #: dist/translation-strings.php:1002 -msgid "Anchor ID" +msgid "Adjusts the maximum allowable width of the block. The settings will depend on the block width you set on the toolbar." msgstr "" #: dist/translation-strings.php:1003 -msgid "Supports links to images, videos, YouTube, Vimeo, and web pages that allow embedding" +msgid "Sets the placement of the content to left, center or right. Not available when block width is set to full width." msgstr "" #: dist/translation-strings.php:1004 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Paddings" +msgstr "" + +#: dist/translation-strings.php:1005 +msgid "Margins" +msgstr "" + +#: dist/translation-strings.php:1006 +msgid "Sets the block paddings, i.e the space between the inner columns and the block border" +msgstr "" + +#: dist/translation-strings.php:1007 +msgid "Sets the block margin, i.e. the space outside the block between the block border and the next block." +msgstr "" + +#: dist/translation-strings.php:1008 #: dist/deprecated/admin_welcome_v2.js:2 msgid "Frontend JS & CSS Files" msgstr "" -#: dist/translation-strings.php:1005 +#: dist/translation-strings.php:1009 #: dist/deprecated/admin_welcome_v2.js:2 msgid "Load across entire site" msgstr "" -#: dist/translation-strings.php:1006 +#: dist/translation-strings.php:1010 #: dist/deprecated/admin_welcome_v2.js:2 msgid "Load only in posts with Stackable blocks" msgstr "" -#: dist/translation-strings.php:1007 +#: dist/translation-strings.php:1011 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/accordion/block.json #: src/deprecated/v2/block/accordion/block.json @@ -5183,21 +5203,21 @@ msgctxt "block title" msgid "Accordion" msgstr "" -#: dist/translation-strings.php:1008 +#: dist/translation-strings.php:1012 #: dist/deprecated/admin_welcome_v2.js:2 #: src/deprecated/v2/block/text/block.json msgctxt "block title" msgid "Advanced Text" msgstr "" -#: dist/translation-strings.php:1009 +#: dist/translation-strings.php:1013 #: dist/deprecated/admin_welcome_v2.js:2 #: src/deprecated/v2/block/heading/block.json msgctxt "block title" msgid "Advanced Heading" msgstr "" -#: dist/translation-strings.php:1010 +#: dist/translation-strings.php:1014 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/blockquote/block.json #: src/deprecated/v2/block/blockquote/block.json @@ -5205,13 +5225,13 @@ msgctxt "block title" msgid "Blockquote" msgstr "" -#: dist/translation-strings.php:1011 +#: dist/translation-strings.php:1015 #: dist/deprecated/admin_welcome_v2.js:2 msgctxt "block title" msgid "Blog Posts" msgstr "" -#: dist/translation-strings.php:1012 +#: dist/translation-strings.php:1016 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/button/block.json #: src/deprecated/v2/block/button/block.json @@ -5219,7 +5239,7 @@ msgctxt "block title" msgid "Button" msgstr "" -#: dist/translation-strings.php:1013 +#: dist/translation-strings.php:1017 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/call-to-action/block.json #: src/deprecated/v2/block/call-to-action/block.json @@ -5227,7 +5247,7 @@ msgctxt "block title" msgid "Call to Action" msgstr "" -#: dist/translation-strings.php:1014 +#: dist/translation-strings.php:1018 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/card/block.json #: src/deprecated/v2/block/card/block.json @@ -5235,21 +5255,21 @@ msgctxt "block title" msgid "Card" msgstr "" -#: dist/translation-strings.php:1015 +#: dist/translation-strings.php:1019 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/columns/block.json msgctxt "block title" msgid "Columns" msgstr "" -#: dist/translation-strings.php:1016 +#: dist/translation-strings.php:1020 #: dist/deprecated/admin_welcome_v2.js:2 #: src/deprecated/v2/block/container/block.json msgctxt "block title" msgid "Container" msgstr "" -#: dist/translation-strings.php:1017 +#: dist/translation-strings.php:1021 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/count-up/block.json #: src/deprecated/v2/block/count-up/block.json @@ -5257,13 +5277,13 @@ msgctxt "block title" msgid "Count Up" msgstr "" -#: dist/translation-strings.php:1018 +#: dist/translation-strings.php:1022 #: src/block/design-library/block.json msgctxt "block title" msgid "Design Library" msgstr "" -#: dist/translation-strings.php:1019 +#: dist/translation-strings.php:1023 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/divider/block.json #: src/deprecated/v2/block/divider/block.json @@ -5271,7 +5291,7 @@ msgctxt "block title" msgid "Divider" msgstr "" -#: dist/translation-strings.php:1020 +#: dist/translation-strings.php:1024 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/expand/block.json #: src/deprecated/v2/block/expand/block.json @@ -5279,7 +5299,7 @@ msgctxt "block title" msgid "Expand / Show More" msgstr "" -#: dist/translation-strings.php:1021 +#: dist/translation-strings.php:1025 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/feature-grid/block.json #: src/deprecated/v2/block/feature-grid/block.json @@ -5287,7 +5307,7 @@ msgctxt "block title" msgid "Feature Grid" msgstr "" -#: dist/translation-strings.php:1022 +#: dist/translation-strings.php:1026 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/feature/block.json #: src/deprecated/v2/block/feature/block.json @@ -5295,14 +5315,14 @@ msgctxt "block title" msgid "Feature" msgstr "" -#: dist/translation-strings.php:1023 +#: dist/translation-strings.php:1027 #: dist/deprecated/admin_welcome_v2.js:2 #: src/deprecated/v2/block/header/block.json msgctxt "block title" msgid "Header" msgstr "" -#: dist/translation-strings.php:1024 +#: dist/translation-strings.php:1028 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/icon/block.json #: src/deprecated/v2/block/icon/block.json @@ -5310,7 +5330,7 @@ msgctxt "block title" msgid "Icon" msgstr "" -#: dist/translation-strings.php:1025 +#: dist/translation-strings.php:1029 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/icon-list/block.json #: src/deprecated/v2/block/icon-list/block.json @@ -5318,7 +5338,7 @@ msgctxt "block title" msgid "Icon List" msgstr "" -#: dist/translation-strings.php:1026 +#: dist/translation-strings.php:1030 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/image-box/block.json #: src/deprecated/v2/block/image-box/block.json @@ -5326,7 +5346,7 @@ msgctxt "block title" msgid "Image Box" msgstr "" -#: dist/translation-strings.php:1027 +#: dist/translation-strings.php:1031 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/notification/block.json #: src/deprecated/v2/block/notification/block.json @@ -5334,7 +5354,7 @@ msgctxt "block title" msgid "Notification" msgstr "" -#: dist/translation-strings.php:1028 +#: dist/translation-strings.php:1032 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/number-box/block.json #: src/deprecated/v2/block/number-box/block.json @@ -5342,7 +5362,7 @@ msgctxt "block title" msgid "Number Box" msgstr "" -#: dist/translation-strings.php:1029 +#: dist/translation-strings.php:1033 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/pricing-box/block.json #: src/deprecated/v2/block/pricing-box/block.json @@ -5350,7 +5370,7 @@ msgctxt "block title" msgid "Pricing Box" msgstr "" -#: dist/translation-strings.php:1030 +#: dist/translation-strings.php:1034 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/separator/block.json #: src/deprecated/v2/block/separator/block.json @@ -5358,7 +5378,7 @@ msgctxt "block title" msgid "Separator" msgstr "" -#: dist/translation-strings.php:1031 +#: dist/translation-strings.php:1035 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/spacer/block.json #: src/deprecated/v2/block/spacer/block.json @@ -5366,7 +5386,7 @@ msgctxt "block title" msgid "Spacer" msgstr "" -#: dist/translation-strings.php:1032 +#: dist/translation-strings.php:1036 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/team-member/block.json #: src/deprecated/v2/block/team-member/block.json @@ -5374,7 +5394,7 @@ msgctxt "block title" msgid "Team Member" msgstr "" -#: dist/translation-strings.php:1033 +#: dist/translation-strings.php:1037 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/testimonial/block.json #: src/deprecated/v2/block/testimonial/block.json @@ -5382,7 +5402,7 @@ msgctxt "block title" msgid "Testimonial" msgstr "" -#: dist/translation-strings.php:1034 +#: dist/translation-strings.php:1038 #: dist/deprecated/admin_welcome_v2.js:2 #: src/block/video-popup/block.json #: src/deprecated/v2/block/video-popup/block.json @@ -5390,1213 +5410,1213 @@ msgctxt "block title" msgid "Video Popup" msgstr "" -#: dist/translation-strings.php:1035 +#: dist/translation-strings.php:1039 #: dist/editor_blocks.js:2 msgid "Block Defaults" msgstr "" -#: dist/translation-strings.php:1036 +#: dist/translation-strings.php:1040 #: dist/editor_blocks.js:2 msgid "Manage how Stackable blocks look when they're inserted." msgstr "" -#: dist/translation-strings.php:1037 +#: dist/translation-strings.php:1041 #: dist/editor_blocks.js:2 msgid "Learn more about Block Defaults" msgstr "" -#: dist/translation-strings.php:1038 +#: dist/translation-strings.php:1042 #: dist/editor_blocks.js:2 msgid "Any blocks that use this color will become unlinked with this global color. Delete this color?" msgstr "" -#: dist/translation-strings.php:1039 +#: dist/translation-strings.php:1043 #: dist/editor_blocks.js:2 msgid "Custom Color %s" msgstr "" -#: dist/translation-strings.php:1040 +#: dist/translation-strings.php:1044 #: dist/editor_blocks.js:2 msgid "Global Color Palette" msgstr "" -#: dist/translation-strings.php:1041 +#: dist/translation-strings.php:1045 #: dist/editor_blocks.js:2 msgid "Change your color palette for all your blocks across your site." msgstr "" -#: dist/translation-strings.php:1042 +#: dist/translation-strings.php:1046 #: dist/editor_blocks.js:2 msgid "Learn more about Global Colors" msgstr "" -#: dist/translation-strings.php:1043 +#: dist/translation-strings.php:1047 #: dist/editor_blocks.js:2 msgid "Show Theme Colors" msgstr "" -#: dist/translation-strings.php:1044 +#: dist/translation-strings.php:1048 #: dist/editor_blocks.js:2 msgid "Show Default Colors" msgstr "" -#: dist/translation-strings.php:1045 +#: dist/translation-strings.php:1049 #: dist/editor_blocks.js:2 msgid "Show Site Editor Custom Colors" msgstr "" -#: dist/translation-strings.php:1046 +#: dist/translation-strings.php:1050 #: dist/editor_blocks.js:2 msgid "Heading %d" msgstr "" -#: dist/translation-strings.php:1047 +#: dist/translation-strings.php:1051 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/editor_blocks.js:2 -#: dist/translation-strings.js:554 +#: dist/translation-strings.js:556 msgid "Subtitle" msgstr "" -#: dist/translation-strings.php:1048 +#: dist/translation-strings.php:1052 msgid "To apply this typography style, just add `%s` in your block\\'s Additional CSS classes. Also make sure that `%s` tag is set to avoid conflict with other typography styles" msgstr "" -#: dist/translation-strings.php:1049 +#: dist/translation-strings.php:1053 #: dist/editor_blocks.js:2 msgid "Body Text" msgstr "" -#: dist/translation-strings.php:1050 +#: dist/translation-strings.php:1054 #: dist/editor_blocks.js:2 msgid "Global Typography" msgstr "" -#: dist/translation-strings.php:1051 +#: dist/translation-strings.php:1055 #: dist/editor_blocks.js:2 msgid "Change the typography of your headings for all your blocks in your site." msgstr "" -#: dist/translation-strings.php:1052 +#: dist/translation-strings.php:1056 #: dist/editor_blocks.js:2 msgid "Learn more about Global Typography" msgstr "" -#: dist/translation-strings.php:1053 +#: dist/translation-strings.php:1057 #: dist/editor_blocks.js:2 msgid "Apply Typography Styles to" msgstr "" -#: dist/translation-strings.php:1054 +#: dist/translation-strings.php:1058 #: dist/editor_blocks.js:2 msgid "Stackable and native blocks only" msgstr "" -#: dist/translation-strings.php:1055 +#: dist/translation-strings.php:1059 #: dist/editor_blocks.js:2 msgid "Stackable blocks only" msgstr "" -#: dist/translation-strings.php:1056 +#: dist/translation-strings.php:1060 #: dist/editor_blocks.js:2 msgid "Stackable and all other blocks" msgstr "" -#: dist/translation-strings.php:1057 +#: dist/translation-strings.php:1061 #: dist/editor_blocks.js:2 msgid "Reset %s Global Typography Style" msgstr "" -#: dist/translation-strings.php:1058 +#: dist/translation-strings.php:1062 #: dist/editor_blocks.js:2 msgid "Resetting this typography style will revert all typography to its original style. Proceed?" msgstr "" -#: dist/translation-strings.php:1059 -msgid "Corporate" -msgstr "" - -#: dist/translation-strings.php:1060 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Basic" -msgstr "" - -#: dist/translation-strings.php:1061 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Lined to Colored" -msgstr "" - -#: dist/translation-strings.php:1062 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Reverse arrow" -msgstr "" - #: dist/translation-strings.php:1063 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Closed State Background Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:240 +msgctxt "Panel title" +msgid "%s #%d" msgstr "" #: dist/translation-strings.php:1064 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Padding" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Color Opacity" msgstr "" #: dist/translation-strings.php:1065 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Title Color" +msgid "Background Color Type" msgstr "" #: dist/translation-strings.php:1066 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Arrow" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Align Top" msgstr "" #: dist/translation-strings.php:1067 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Border" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Align Bottom" msgstr "" #: dist/translation-strings.php:1068 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Quotation Mark" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Open link in new tab" msgstr "" #: dist/translation-strings.php:1069 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:196 -msgid "Horizontal Position" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Basic" msgstr "" #: dist/translation-strings.php:1070 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:197 -msgid "Vertical Position" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Use social colors" msgstr "" #: dist/translation-strings.php:1071 -#: dist/admin_custom_fields__premium_only.js:2 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/translation-strings.js:375 -msgid "Description" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Change to Normal Button on Hover" msgstr "" #: dist/translation-strings.php:1072 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Description Color" +msgid "Button Size" msgstr "" #: dist/translation-strings.php:1073 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Spread" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Tiny" msgstr "" #: dist/translation-strings.php:1074 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Grouped" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Small" msgstr "" #: dist/translation-strings.php:1075 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Collapse Buttons On" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:315 +msgid "Medium" msgstr "" #: dist/translation-strings.php:1076 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Don't collapse" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:316 +msgid "Large" msgstr "" #: dist/translation-strings.php:1077 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:294 -msgctxt "Panel title" -msgid "%s #%d" +msgid "Vertical Padding" msgstr "" #: dist/translation-strings.php:1078 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Subtitle for this block" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Horizontal Padding" msgstr "" #: dist/translation-strings.php:1079 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:401 -msgid "Image Height" +msgid "Adv. Icon Settings" msgstr "" #: dist/translation-strings.php:1080 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:402 -msgid "Image Width" +msgid "Icon Spacing" msgstr "" #: dist/translation-strings.php:1081 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Subtitle Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Hover Opacity" msgstr "" #: dist/translation-strings.php:1082 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Horizontal Card" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Hover Colors" msgstr "" #: dist/translation-strings.php:1083 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Content Order" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:448 +msgid "Column Paddings" msgstr "" #: dist/translation-strings.php:1084 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Posts Settings" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Free" msgstr "" #: dist/translation-strings.php:1085 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Read More" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Premium" msgstr "" #: dist/translation-strings.php:1086 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:139 -msgid "Load More" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Shaped" msgstr "" #: dist/translation-strings.php:1087 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:386 -msgid "Pagination" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:343 +msgid "Icon Color Type" msgstr "" #: dist/translation-strings.php:1088 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Hover Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:237 +msgid "Multicolor" msgstr "" #: dist/translation-strings.php:1089 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Customize Read More Link" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Icon Shape / Outline Color" msgstr "" #: dist/translation-strings.php:1090 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:393 -msgid "Load More Button" +msgid "Icon Shape Border Radius" msgstr "" #: dist/translation-strings.php:1091 -#: src/deprecated/v2/block/blog-posts/index.php:312 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Continue reading" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Outline Border Radius" msgstr "" #: dist/translation-strings.php:1092 -#: src/deprecated/v2/block/blog-posts/attributes.php:1845 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:384 -msgid "Next »" +msgid "Icon Shape Padding" msgstr "" #: dist/translation-strings.php:1093 -#: src/deprecated/v2/block/blog-posts/attributes.php:1849 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:385 -msgid "« Previous" +msgid "Outline Padding" msgstr "" #: dist/translation-strings.php:1094 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Text Colors" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Outline Width" msgstr "" #: dist/translation-strings.php:1095 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Heading Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Image Position" msgstr "" #: dist/translation-strings.php:1096 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Link Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Image Repeat" msgstr "" #: dist/translation-strings.php:1097 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Link Hover Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Background Image Size" msgstr "" #: dist/translation-strings.php:1098 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "The colors above might not apply to some nested blocks." +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:404 +msgid "Image Width" msgstr "" #: dist/translation-strings.php:1099 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Abstract" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Force square image" msgstr "" #: dist/translation-strings.php:1100 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Boxed" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Blend Mode" msgstr "" #: dist/translation-strings.php:1101 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Number Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "All Block Designs" msgstr "" #: dist/translation-strings.php:1102 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Short" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Free Designs" msgstr "" #: dist/translation-strings.php:1103 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Tall" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Premium Designs" msgstr "" #: dist/translation-strings.php:1104 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Half-screen height" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgctxt "name" +msgid "%s Link" msgstr "" #: dist/translation-strings.php:1105 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Full-screen height" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Spacing" msgstr "" #: dist/translation-strings.php:1106 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Restrict to Content Width" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Min. Block Height" msgstr "" #: dist/translation-strings.php:1107 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Uneven" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Margins" msgstr "" #: dist/translation-strings.php:1108 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Tiled" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Paddings" msgstr "" #: dist/translation-strings.php:1109 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Layouts" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Column Spacing & More" msgstr "" #: dist/translation-strings.php:1110 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "No Paddings" +msgid "Block Background" msgstr "" #: dist/translation-strings.php:1111 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Custom height" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "No Paddings" msgstr "" #: dist/translation-strings.php:1112 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Custom Height" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Align center" msgstr "" #: dist/translation-strings.php:1113 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:443 -msgid "Column Vertical Align" +msgid "Wide width" msgstr "" #: dist/translation-strings.php:1114 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Vertical Margin" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Full width" msgstr "" #: dist/translation-strings.php:1115 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Half Background" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Change Alignment" msgstr "" #: dist/translation-strings.php:1116 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlap Shape %s" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "You will not lose your block content when changing designs." msgstr "" #: dist/translation-strings.php:1117 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlap Background %s" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Container Link" msgstr "" #: dist/translation-strings.php:1118 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Image Column Width" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Link / URL #%d" msgstr "" #: dist/translation-strings.php:1119 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Reverse Horizontally" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Link %d Title" msgstr "" #: dist/translation-strings.php:1120 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Container Width" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Title" msgstr "" #: dist/translation-strings.php:1121 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Container Offset" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Title Color" msgstr "" #: dist/translation-strings.php:1122 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Full Height" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Max Width" msgstr "" #: dist/translation-strings.php:1123 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlay Background" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Horizontal Align" msgstr "" #: dist/translation-strings.php:1124 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Color Opacity" +msgid "Text Align" msgstr "" #: dist/translation-strings.php:1125 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "This affects other buttons in this block" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Block Description" msgstr "" #: dist/translation-strings.php:1126 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Number of Icons / Columns" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Description Color" msgstr "" #: dist/translation-strings.php:1127 -#: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Title on Top" +msgid "Corporate" msgstr "" #: dist/translation-strings.php:1128 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Display as a grid (left to right & evenly spaced)" +msgid "Lined to Colored" msgstr "" #: dist/translation-strings.php:1129 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "List Gap" +msgid "Reverse arrow" msgstr "" #: dist/translation-strings.php:1130 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "You can click on each icon in the Icon List block to change them individually." +msgid "Closed State Background Color" msgstr "" #: dist/translation-strings.php:1131 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "List Text" +msgid "Padding" msgstr "" #: dist/translation-strings.php:1132 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Text for this block" +msgid "Arrow" msgstr "" #: dist/translation-strings.php:1133 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Line %d" +msgid "Border" msgstr "" #: dist/translation-strings.php:1134 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlay Color Type" +msgid "Quotation Mark" msgstr "" #: dist/translation-strings.php:1135 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlay Hover Color" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:199 +msgid "Horizontal Position" msgstr "" #: dist/translation-strings.php:1136 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:441 -msgid "Effects" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:200 +msgid "Vertical Position" msgstr "" #: dist/translation-strings.php:1137 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Image Hover Effect" +msgid "Spread" msgstr "" #: dist/translation-strings.php:1138 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Zoom In" +msgid "Grouped" msgstr "" #: dist/translation-strings.php:1139 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Zoom Out" +msgid "Collapse Buttons On" msgstr "" #: dist/translation-strings.php:1140 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Border Thickness" +msgid "Don't collapse" msgstr "" #: dist/translation-strings.php:1141 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Icon Location" +msgid "Horizontal Card" msgstr "" #: dist/translation-strings.php:1142 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgctxt "Nth Title with description" -msgid "%s %d %s" +msgid "Content Order" msgstr "" #: dist/translation-strings.php:1143 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Number Shape" +msgid "Posts Settings" msgstr "" #: dist/translation-strings.php:1144 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:285 -msgid "Shape Size" +msgid "Read More" msgstr "" #: dist/translation-strings.php:1145 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Number Background Color" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:140 +msgid "Load More" msgstr "" #: dist/translation-strings.php:1146 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/translation-strings.js:537 -msgid "Price" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:388 +msgid "Pagination" msgstr "" #: dist/translation-strings.php:1147 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Sub Price" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:403 +msgid "Image Height" msgstr "" #: dist/translation-strings.php:1148 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Price Prefix" +msgid "Hover Color" msgstr "" #: dist/translation-strings.php:1149 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Price Suffix" +msgid "Customize Read More Link" msgstr "" #: dist/translation-strings.php:1150 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Separator Color" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:395 +msgid "Load More Button" msgstr "" #: dist/translation-strings.php:1151 +#: src/deprecated/v2/block/blog-posts/index.php:316 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Padding Top" +msgid "Continue reading" msgstr "" #: dist/translation-strings.php:1152 +#: src/deprecated/v2/block/blog-posts/attributes.php:1845 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Padding Bottom" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:386 +msgid "Next »" msgstr "" #: dist/translation-strings.php:1153 +#: src/deprecated/v2/block/blog-posts/attributes.php:1849 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Margin Top" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:387 +msgid "« Previous" msgstr "" #: dist/translation-strings.php:1154 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Use this to pull up/down the separator to the block above it" +msgid "Text Colors" msgstr "" #: dist/translation-strings.php:1155 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Margin Bottom" +msgid "Heading Color" msgstr "" #: dist/translation-strings.php:1156 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Use this to pull up/down the separator to the block below it" +msgid "Link Color" msgstr "" #: dist/translation-strings.php:1157 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:424 -msgid "Layer" +msgid "Link Hover Color" msgstr "" #: dist/translation-strings.php:1158 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Vertical Inverse" +msgid "The colors above might not apply to some nested blocks." msgstr "" #: dist/translation-strings.php:1159 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/translation-strings.js:570 -msgid "Testimonial" +msgid "Uneven" msgstr "" #: dist/translation-strings.php:1160 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Testimonial Color" +msgid "Tiled" msgstr "" #: dist/translation-strings.php:1161 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Name Color" +msgid "Layouts" msgstr "" #: dist/translation-strings.php:1162 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Overlay Simple" +msgid "Half-screen height" msgstr "" #: dist/translation-strings.php:1163 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Social" +msgid "Full-screen height" msgstr "" #: dist/translation-strings.php:1164 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Social Button Gap" +msgid "Custom height" msgstr "" #: dist/translation-strings.php:1165 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Position Color" +msgid "Custom Height" msgstr "" #: dist/translation-strings.php:1166 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Color Type" +#: dist/translation-strings.js:445 +msgid "Column Vertical Align" msgstr "" #: dist/translation-strings.php:1167 +#: dist/admin_custom_fields__premium_only.js:2 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Play Button" +#: dist/translation-strings.js:377 +msgid "Description" msgstr "" #: dist/translation-strings.php:1168 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Button Style" +msgid "Subtitle for this block" msgstr "" #: dist/translation-strings.php:1169 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Normal Play Button" +msgid "Subtitle Color" msgstr "" #: dist/translation-strings.php:1170 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Play Button with Circle" +msgid "Short" msgstr "" #: dist/translation-strings.php:1171 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Outline Play Button" +msgid "Tall" msgstr "" #: dist/translation-strings.php:1172 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Align Top" +msgid "Restrict to Content Width" msgstr "" #: dist/translation-strings.php:1173 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Align Bottom" +msgid "Abstract" msgstr "" #: dist/translation-strings.php:1174 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Side Title" +msgid "Boxed" msgstr "" #: dist/translation-strings.php:1175 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Reverse Title" +msgid "Number Color" msgstr "" #: dist/translation-strings.php:1176 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Column Rule" +msgid "Vertical Margin" msgstr "" #: dist/translation-strings.php:1177 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Vertical Align" +msgid "Half Background" msgstr "" #: dist/translation-strings.php:1178 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Subtitle on Top" +msgid "Overlap Shape %s" msgstr "" #: dist/translation-strings.php:1179 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Title" +msgid "Overlap Background %s" msgstr "" #: dist/translation-strings.php:1180 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Hover Opacity" +msgid "Image Column Width" msgstr "" #: dist/translation-strings.php:1181 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Hover Colors" +msgid "Reverse Horizontally" msgstr "" #: dist/translation-strings.php:1182 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Open link in new tab" +msgid "Container Width" msgstr "" #: dist/translation-strings.php:1183 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Use social colors" +msgid "Container Offset" msgstr "" #: dist/translation-strings.php:1184 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Change to Normal Button on Hover" +msgid "Full Height" msgstr "" #: dist/translation-strings.php:1185 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Button Size" +msgid "Overlay Background" msgstr "" #: dist/translation-strings.php:1186 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Tiny" +msgid "This affects other buttons in this block" msgstr "" #: dist/translation-strings.php:1187 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Small" +msgid "Number of Icons / Columns" msgstr "" #: dist/translation-strings.php:1188 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:315 -msgid "Medium" +msgid "Title on Top" msgstr "" #: dist/translation-strings.php:1189 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:316 -msgid "Large" +msgid "Display as a grid (left to right & evenly spaced)" msgstr "" #: dist/translation-strings.php:1190 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Vertical Padding" +msgid "List Gap" msgstr "" #: dist/translation-strings.php:1191 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Horizontal Padding" +msgid "You can click on each icon in the Icon List block to change them individually." msgstr "" #: dist/translation-strings.php:1192 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Adv. Icon Settings" +msgid "List Text" msgstr "" #: dist/translation-strings.php:1193 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Icon Spacing" +msgid "Text for this block" msgstr "" #: dist/translation-strings.php:1194 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:446 -msgid "Column Paddings" +msgid "Line %d" msgstr "" #: dist/translation-strings.php:1195 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Free" +msgid "Overlay Color Type" msgstr "" #: dist/translation-strings.php:1196 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Premium" +msgid "Overlay Hover Color" msgstr "" #: dist/translation-strings.php:1197 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Shaped" +#: dist/translation-strings.js:443 +msgid "Effects" msgstr "" #: dist/translation-strings.php:1198 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:341 -msgid "Icon Color Type" +msgid "Image Hover Effect" msgstr "" #: dist/translation-strings.php:1199 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:291 -msgid "Multicolor" +msgid "Zoom In" msgstr "" #: dist/translation-strings.php:1200 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Icon Shape / Outline Color" +msgid "Zoom Out" msgstr "" #: dist/translation-strings.php:1201 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Icon Shape Border Radius" +msgctxt "Nth Title with description" +msgid "%s %d %s" msgstr "" #: dist/translation-strings.php:1202 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Outline Border Radius" +msgid "Number Shape" msgstr "" #: dist/translation-strings.php:1203 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Icon Shape Padding" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:231 +msgid "Shape Size" msgstr "" #: dist/translation-strings.php:1204 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Outline Padding" +msgid "Number Background Color" msgstr "" #: dist/translation-strings.php:1205 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Outline Width" +#: dist/translation-strings.js:539 +msgid "Price" msgstr "" #: dist/translation-strings.php:1206 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Image Position" +msgid "Sub Price" msgstr "" #: dist/translation-strings.php:1207 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Image Repeat" +msgid "Price Prefix" msgstr "" #: dist/translation-strings.php:1208 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Background Image Size" +msgid "Price Suffix" msgstr "" #: dist/translation-strings.php:1209 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Force square image" +msgid "Border Thickness" msgstr "" #: dist/translation-strings.php:1210 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Blend Mode" +msgid "Icon Location" msgstr "" #: dist/translation-strings.php:1211 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "All Block Designs" +msgid "Separator Color" msgstr "" #: dist/translation-strings.php:1212 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Free Designs" +msgid "Padding Top" msgstr "" #: dist/translation-strings.php:1213 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Premium Designs" +msgid "Padding Bottom" msgstr "" #: dist/translation-strings.php:1214 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgctxt "name" -msgid "%s Link" +msgid "Margin Top" msgstr "" #: dist/translation-strings.php:1215 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Pick a layout or design" +msgid "Use this to pull up/down the separator to the block above it" msgstr "" #: dist/translation-strings.php:1216 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Select a variation to start with." +msgid "Margin Bottom" msgstr "" #: dist/translation-strings.php:1217 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Or pick from our Design Library." +msgid "Use this to pull up/down the separator to the block below it" msgstr "" #: dist/translation-strings.php:1218 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Select a design from our library to start with." +#: dist/translation-strings.js:426 +msgid "Layer" msgstr "" #: dist/translation-strings.php:1219 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Skip" +msgid "Vertical Inverse" msgstr "" #: dist/translation-strings.php:1220 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Spacing" +#: dist/translation-strings.js:572 +msgid "Testimonial" msgstr "" #: dist/translation-strings.php:1221 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Min. Block Height" +msgid "Testimonial Color" msgstr "" #: dist/translation-strings.php:1222 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Margins" +msgid "Name Color" msgstr "" #: dist/translation-strings.php:1223 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Paddings" +msgid "Overlay Simple" msgstr "" #: dist/translation-strings.php:1224 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Column Spacing & More" +msgid "Social" msgstr "" #: dist/translation-strings.php:1225 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "You will not lose your block content when changing designs." +msgid "Social Button Gap" msgstr "" #: dist/translation-strings.php:1226 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Background" +msgid "Position Color" msgstr "" #: dist/translation-strings.php:1227 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Align center" +msgid "Side Title" msgstr "" #: dist/translation-strings.php:1228 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Wide width" +msgid "Reverse Title" msgstr "" #: dist/translation-strings.php:1229 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Full width" +msgid "Column Rule" msgstr "" #: dist/translation-strings.php:1230 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Change Alignment" +msgid "Vertical Align" msgstr "" #: dist/translation-strings.php:1231 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Max Width" +msgid "Subtitle on Top" msgstr "" #: dist/translation-strings.php:1232 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Horizontal Align" +msgid "Play Button" msgstr "" #: dist/translation-strings.php:1233 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Text Align" +msgid "Button Style" msgstr "" #: dist/translation-strings.php:1234 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Block Description" +msgid "Normal Play Button" msgstr "" #: dist/translation-strings.php:1235 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Container Link" +msgid "Play Button with Circle" msgstr "" #: dist/translation-strings.php:1236 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Link / URL #%d" +msgid "Outline Play Button" msgstr "" #: dist/translation-strings.php:1237 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -msgid "Link %d Title" +msgid "Pick a layout or design" msgstr "" #: dist/translation-strings.php:1238 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Check" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Select a variation to start with." msgstr "" #: dist/translation-strings.php:1239 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Cross" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Or pick from our Design Library." msgstr "" #: dist/translation-strings.php:1240 #: dist/deprecated/editor_blocks_deprecated_v2.js:2 -msgid "Star" +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Select a design from our library to start with." msgstr "" #: dist/translation-strings.php:1241 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +msgid "Skip" +msgstr "" + +#: dist/translation-strings.php:1242 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Check" +msgstr "" + +#: dist/translation-strings.php:1243 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Cross" +msgstr "" + +#: dist/translation-strings.php:1244 +#: dist/deprecated/editor_blocks_deprecated_v2.js:2 +msgid "Star" +msgstr "" + +#: dist/translation-strings.php:1245 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:9 msgid "Login Status" msgstr "" -#: dist/translation-strings.php:1242 +#: dist/translation-strings.php:1246 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:10 msgid "Role" msgstr "" -#: dist/translation-strings.php:1243 +#: dist/translation-strings.php:1247 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:11 msgid "Date & Time" msgstr "" -#: dist/translation-strings.php:1244 +#: dist/translation-strings.php:1248 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:12 msgid "Custom PHP" msgstr "" -#: dist/translation-strings.php:1245 +#: dist/translation-strings.php:1249 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:13 msgid "Conditional Tag" msgstr "" -#: dist/translation-strings.php:1246 +#: dist/translation-strings.php:1250 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:14 msgid "Query String" msgstr "" -#: dist/translation-strings.php:1247 +#: dist/translation-strings.php:1251 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:15 msgid "Post Meta" msgstr "" -#: dist/translation-strings.php:1248 +#: dist/translation-strings.php:1252 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:16 msgid "Site Option" msgstr "" -#: dist/translation-strings.php:1249 +#: dist/translation-strings.php:1253 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:17 msgid "Post IDs" msgstr "" -#: dist/translation-strings.php:1250 +#: dist/translation-strings.php:1254 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:224 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:19 msgid "Post Taxonomy" msgstr "" -#: dist/translation-strings.php:1251 +#: dist/translation-strings.php:1255 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:92 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:102 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:109 @@ -6629,699 +6649,699 @@ msgstr "" msgid "WooCommerce" msgstr "" -#: dist/translation-strings.php:1252 +#: dist/translation-strings.php:1256 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:21 msgid "Enter Conditional Tag" msgstr "" -#: dist/translation-strings.php:1253 +#: dist/translation-strings.php:1257 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:22 msgid "Home" msgstr "" -#: dist/translation-strings.php:1254 +#: dist/translation-strings.php:1258 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:23 msgid "Front Page" msgstr "" -#: dist/translation-strings.php:1255 +#: dist/translation-strings.php:1259 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:24 msgid "404 Not Found Page" msgstr "" -#: dist/translation-strings.php:1256 +#: dist/translation-strings.php:1260 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:25 msgid "Single Page" msgstr "" -#: dist/translation-strings.php:1257 +#: dist/translation-strings.php:1261 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:26 msgid "Attachment" msgstr "" -#: dist/translation-strings.php:1258 +#: dist/translation-strings.php:1262 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:27 msgid "Preview" msgstr "" -#: dist/translation-strings.php:1259 +#: dist/translation-strings.php:1263 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:28 msgid "Any Page" msgstr "" -#: dist/translation-strings.php:1260 +#: dist/translation-strings.php:1264 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:29 msgid "Privacy Policy Page" msgstr "" -#: dist/translation-strings.php:1261 +#: dist/translation-strings.php:1265 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:30 msgid "Any Archive Page" msgstr "" -#: dist/translation-strings.php:1262 +#: dist/translation-strings.php:1266 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:31 msgid "Category Page" msgstr "" -#: dist/translation-strings.php:1263 +#: dist/translation-strings.php:1267 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:32 msgid "Tag Page" msgstr "" -#: dist/translation-strings.php:1264 +#: dist/translation-strings.php:1268 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:33 msgid "Taxonomy Page" msgstr "" -#: dist/translation-strings.php:1265 +#: dist/translation-strings.php:1269 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:34 msgid "Author Page" msgstr "" -#: dist/translation-strings.php:1266 +#: dist/translation-strings.php:1270 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:35 msgid "Date Archive Page" msgstr "" -#: dist/translation-strings.php:1267 +#: dist/translation-strings.php:1271 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:36 msgid "Yearly Archive Page" msgstr "" -#: dist/translation-strings.php:1268 +#: dist/translation-strings.php:1272 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:37 msgid "Search Result Page" msgstr "" -#: dist/translation-strings.php:1269 +#: dist/translation-strings.php:1273 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:38 msgid "Trackback" msgstr "" -#: dist/translation-strings.php:1270 +#: dist/translation-strings.php:1274 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:39 msgid "Dynamic Sidebar" msgstr "" -#: dist/translation-strings.php:1271 +#: dist/translation-strings.php:1275 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:40 msgid "RTL Reading" msgstr "" -#: dist/translation-strings.php:1272 +#: dist/translation-strings.php:1276 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:41 msgid "Multisite" msgstr "" -#: dist/translation-strings.php:1273 +#: dist/translation-strings.php:1277 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:42 msgid "Main Site" msgstr "" -#: dist/translation-strings.php:1274 +#: dist/translation-strings.php:1278 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:43 msgid "Child Theme" msgstr "" -#: dist/translation-strings.php:1275 +#: dist/translation-strings.php:1279 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:44 msgid "Customize Preview" msgstr "" -#: dist/translation-strings.php:1276 +#: dist/translation-strings.php:1280 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:45 msgid "Multi-author Site" msgstr "" -#: dist/translation-strings.php:1277 +#: dist/translation-strings.php:1281 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:46 msgid "Feed" msgstr "" -#: dist/translation-strings.php:1278 +#: dist/translation-strings.php:1282 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:47 msgid "Sticky Post" msgstr "" -#: dist/translation-strings.php:1279 +#: dist/translation-strings.php:1283 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:48 msgid "Hierarchical Post Type" msgstr "" -#: dist/translation-strings.php:1280 +#: dist/translation-strings.php:1284 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:49 msgid "Archive Post Type" msgstr "" -#: dist/translation-strings.php:1281 +#: dist/translation-strings.php:1285 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:50 msgid "Comments Open" msgstr "" -#: dist/translation-strings.php:1282 +#: dist/translation-strings.php:1286 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:51 msgid "Pings Open" msgstr "" -#: dist/translation-strings.php:1283 +#: dist/translation-strings.php:1287 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:52 msgid "Has Excerpt" msgstr "" -#: dist/translation-strings.php:1284 +#: dist/translation-strings.php:1288 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:53 msgid "Has Post Thumbnail" msgstr "" -#: dist/translation-strings.php:1285 +#: dist/translation-strings.php:1289 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:54 msgid "Has Tags" msgstr "" -#: dist/translation-strings.php:1286 +#: dist/translation-strings.php:1290 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:55 msgid "Has Terms" msgstr "" -#: dist/translation-strings.php:1287 +#: dist/translation-strings.php:1291 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:56 msgid "Has Primary Nav Menu" msgstr "" -#: dist/translation-strings.php:1288 +#: dist/translation-strings.php:1292 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:57 msgid "The Custom PHP allows you to configure the block’s visibility based on the expression entered. If the expression evaluates to true, the block will be displayed." msgstr "" -#: dist/translation-strings.php:1289 +#: dist/translation-strings.php:1293 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:58 msgid "Sample PHP code:" msgstr "" -#: dist/translation-strings.php:1290 +#: dist/translation-strings.php:1294 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:59 msgid "If a syntax error is present, check your PHP code" msgstr "" -#: dist/translation-strings.php:1291 +#: dist/translation-strings.php:1295 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:62 msgid "Now" msgstr "" -#: dist/translation-strings.php:1292 +#: dist/translation-strings.php:1296 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:64 msgid "Never" msgstr "" -#: dist/translation-strings.php:1293 +#: dist/translation-strings.php:1297 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:65 msgid "Days of the Week" msgstr "" -#: dist/translation-strings.php:1294 +#: dist/translation-strings.php:1298 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:66 msgid "If set, the block will be displayed / hidden on selected days." msgstr "" -#: dist/translation-strings.php:1295 +#: dist/translation-strings.php:1299 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:67 msgid "Sunday" msgstr "" -#: dist/translation-strings.php:1296 +#: dist/translation-strings.php:1300 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:68 msgid "Monday" msgstr "" -#: dist/translation-strings.php:1297 +#: dist/translation-strings.php:1301 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:69 msgid "Tuesday" msgstr "" -#: dist/translation-strings.php:1298 +#: dist/translation-strings.php:1302 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:70 msgid "Wednesday" msgstr "" -#: dist/translation-strings.php:1299 +#: dist/translation-strings.php:1303 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:71 msgid "Thursday" msgstr "" -#: dist/translation-strings.php:1300 +#: dist/translation-strings.php:1304 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:72 msgid "Friday" msgstr "" -#: dist/translation-strings.php:1301 +#: dist/translation-strings.php:1305 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:73 msgid "Saturday" msgstr "" -#: dist/translation-strings.php:1302 +#: dist/translation-strings.php:1306 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:75 msgid "Logged-In Users" msgstr "" -#: dist/translation-strings.php:1303 +#: dist/translation-strings.php:1307 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:76 msgid "Logged-Out Users" msgstr "" -#: dist/translation-strings.php:1304 +#: dist/translation-strings.php:1308 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:77 msgid "Enter Post IDs" msgstr "" -#: dist/translation-strings.php:1305 +#: dist/translation-strings.php:1309 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:78 msgid "Post Meta Key" msgstr "" -#: dist/translation-strings.php:1306 +#: dist/translation-strings.php:1310 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:79 msgid "Operator" msgstr "" -#: dist/translation-strings.php:1307 +#: dist/translation-strings.php:1311 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:80 msgid "True" msgstr "" -#: dist/translation-strings.php:1308 +#: dist/translation-strings.php:1312 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:81 msgid "False" msgstr "" -#: dist/translation-strings.php:1309 +#: dist/translation-strings.php:1313 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:82 msgid "Equal" msgstr "" -#: dist/translation-strings.php:1310 +#: dist/translation-strings.php:1314 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:83 msgid "Not Equal" msgstr "" -#: dist/translation-strings.php:1311 +#: dist/translation-strings.php:1315 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:84 msgid "Less Than" msgstr "" -#: dist/translation-strings.php:1312 +#: dist/translation-strings.php:1316 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:85 msgid "Less Than & Equal To" msgstr "" -#: dist/translation-strings.php:1313 +#: dist/translation-strings.php:1317 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:86 msgid "Greater Than" msgstr "" -#: dist/translation-strings.php:1314 +#: dist/translation-strings.php:1318 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:87 msgid "Greater Than & Equal To" msgstr "" -#: dist/translation-strings.php:1315 +#: dist/translation-strings.php:1319 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:88 msgid "Contains" msgstr "" -#: dist/translation-strings.php:1316 +#: dist/translation-strings.php:1320 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:89 msgid "Does Not Contain" msgstr "" -#: dist/translation-strings.php:1317 +#: dist/translation-strings.php:1321 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:90 msgid "Regular Expression" msgstr "" -#: dist/translation-strings.php:1318 +#: dist/translation-strings.php:1322 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:91 msgid "Enter Value" msgstr "" -#: dist/translation-strings.php:1319 +#: dist/translation-strings.php:1323 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:92 msgid "Value to compare with the post meta value." msgstr "" -#: dist/translation-strings.php:1320 +#: dist/translation-strings.php:1324 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:93 msgid "Enter Post Types" msgstr "" -#: dist/translation-strings.php:1321 +#: dist/translation-strings.php:1325 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:94 msgid "Enter Queries" msgstr "" -#: dist/translation-strings.php:1322 +#: dist/translation-strings.php:1326 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:95 msgid "Enter one query string per line. The block will be displayed / hidden if any of the query strings match." msgstr "" -#: dist/translation-strings.php:1323 +#: dist/translation-strings.php:1327 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:96 msgid "Enter Role" msgstr "" -#: dist/translation-strings.php:1324 +#: dist/translation-strings.php:1328 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:97 msgid "Option Name" msgstr "" -#: dist/translation-strings.php:1325 +#: dist/translation-strings.php:1329 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:98 msgid "Value to compare with the option value." msgstr "" -#: dist/translation-strings.php:1326 +#: dist/translation-strings.php:1330 #: pro__premium_only/src/dynamic-content/sources/current-page.php:31 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:99 msgid "Current Post" msgstr "" -#: dist/translation-strings.php:1327 +#: dist/translation-strings.php:1331 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:100 msgid "Choose Product" msgstr "" -#: dist/translation-strings.php:1328 +#: dist/translation-strings.php:1332 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:101 msgid "Property" msgstr "" -#: dist/translation-strings.php:1329 +#: dist/translation-strings.php:1333 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:102 msgid "Sales" msgstr "" -#: dist/translation-strings.php:1330 +#: dist/translation-strings.php:1334 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:103 msgid "Stock Quantity" msgstr "" -#: dist/translation-strings.php:1331 +#: dist/translation-strings.php:1335 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:104 msgid "Is Downloadable" msgstr "" -#: dist/translation-strings.php:1332 +#: dist/translation-strings.php:1336 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:105 msgid "Is Featured" msgstr "" -#: dist/translation-strings.php:1333 +#: dist/translation-strings.php:1337 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:106 msgid "Is in Stock" msgstr "" -#: dist/translation-strings.php:1334 +#: dist/translation-strings.php:1338 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:107 msgid "Is on Backorder" msgstr "" -#: dist/translation-strings.php:1335 +#: dist/translation-strings.php:1339 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:108 msgid "Is on Sale" msgstr "" -#: dist/translation-strings.php:1336 +#: dist/translation-strings.php:1340 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:109 msgid "Is Purchasable" msgstr "" -#: dist/translation-strings.php:1337 +#: dist/translation-strings.php:1341 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:110 msgid "Is Shipping Taxable" msgstr "" -#: dist/translation-strings.php:1338 +#: dist/translation-strings.php:1342 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:111 msgid "Is Sold Individually" msgstr "" -#: dist/translation-strings.php:1339 +#: dist/translation-strings.php:1343 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:112 msgid "Is Taxable" msgstr "" -#: dist/translation-strings.php:1340 +#: dist/translation-strings.php:1344 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:113 msgid "Value" msgstr "" -#: dist/translation-strings.php:1341 -#: pro__premium_only/src/dynamic-content/sources/acf.php:249 -#: pro__premium_only/src/dynamic-content/sources/jetengine.php:312 -#: pro__premium_only/src/dynamic-content/sources/jetengine.php:322 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:284 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:251 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:114 -msgid "%s Placeholder" -msgstr "" - -#: dist/translation-strings.php:1342 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:115 -msgid "Placeholder" -msgstr "" - -#: dist/translation-strings.php:1343 +#: dist/translation-strings.php:1345 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:116 msgid "Full Access" msgstr "" -#: dist/translation-strings.php:1344 +#: dist/translation-strings.php:1346 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:117 msgid "Manager" msgstr "" -#: dist/translation-strings.php:1345 +#: dist/translation-strings.php:1347 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:118 msgid "No Access" msgstr "" -#: dist/translation-strings.php:1346 +#: dist/translation-strings.php:1348 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:121 msgid "Full editing mode" msgstr "" -#: dist/translation-strings.php:1347 +#: dist/translation-strings.php:1349 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:122 msgid "Content only editing" msgstr "" -#: dist/translation-strings.php:1348 +#: dist/translation-strings.php:1350 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:123 msgid "Let me enter my Font Awesome Pro Kit code" msgstr "" -#: dist/translation-strings.php:1349 +#: dist/translation-strings.php:1351 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:124 msgid "Don't show me this again" msgstr "" -#: dist/translation-strings.php:1350 +#: dist/translation-strings.php:1352 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:125 msgid "FontAwesome Pro Kit" msgstr "" -#: dist/translation-strings.php:1351 +#: dist/translation-strings.php:1353 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:126 msgid "Please wait…" msgstr "" -#: dist/translation-strings.php:1352 +#: dist/translation-strings.php:1354 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:127 msgid "Paste your Kit code %s" msgstr "" -#: dist/translation-strings.php:1353 +#: dist/translation-strings.php:1355 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:128 msgid "Please make sure you have Pro icons selected in your kit. Edit your kit settings at: " msgstr "" -#: dist/translation-strings.php:1354 +#: dist/translation-strings.php:1356 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:129 msgid "Click here to check again" msgstr "" -#: dist/translation-strings.php:1355 +#: dist/translation-strings.php:1357 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:130 msgid "Please enter a valid Font Awesome Pro Kit code." msgstr "" -#: dist/translation-strings.php:1356 +#: dist/translation-strings.php:1358 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:131 msgid "If you have Font Awesome Pro, you can use your Pro icons by inputting your Pro Kit code here." msgstr "" -#: dist/translation-strings.php:1357 +#: dist/translation-strings.php:1359 #: dist/admin_welcome__premium_only.js:2 #: dist/translation-strings.js:132 msgid "Need help? Read our guide." msgstr "" -#: dist/translation-strings.php:1358 +#: dist/translation-strings.php:1360 +#: pro__premium_only/src/dynamic-content/sources/acf.php:249 +#: pro__premium_only/src/dynamic-content/sources/jetengine.php:312 +#: pro__premium_only/src/dynamic-content/sources/jetengine.php:322 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:284 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:329 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:141 +#: dist/translation-strings.js:114 +msgid "%s Placeholder" +msgstr "" + +#: dist/translation-strings.php:1361 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:115 +msgid "Placeholder" +msgstr "" + +#: dist/translation-strings.php:1362 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:142 msgid "Number of Items" msgstr "" -#: dist/translation-strings.php:1359 +#: dist/translation-strings.php:1363 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:143 msgid "URL Query String" msgstr "" -#: dist/translation-strings.php:1360 +#: dist/translation-strings.php:1364 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:144 msgid "This is the string appended to the URL when changing pages." msgstr "" -#: dist/translation-strings.php:1361 +#: dist/translation-strings.php:1365 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:145 msgid "Show Next & Previous Button" msgstr "" -#: dist/translation-strings.php:1362 +#: dist/translation-strings.php:1366 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:146 msgid "Next Label" msgstr "" -#: dist/translation-strings.php:1363 +#: dist/translation-strings.php:1367 #: pro__premium_only/src/block/pagination/index.php:74 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:147 msgid "Next" msgstr "" -#: dist/translation-strings.php:1364 +#: dist/translation-strings.php:1368 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:148 msgid "Previous Label" msgstr "" -#: dist/translation-strings.php:1365 +#: dist/translation-strings.php:1369 #: pro__premium_only/src/block/pagination/index.php:73 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:149 msgid "Previous" msgstr "" -#: dist/translation-strings.php:1366 +#: dist/translation-strings.php:1370 #: pro__premium_only/src/block/pagination/index.php:278 #: pro__premium_only/src/deprecated/v2/block/blog-posts/pagination.php:198 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 @@ -7330,7 +7350,7 @@ msgstr "" msgid "Previous page" msgstr "" -#: dist/translation-strings.php:1367 +#: dist/translation-strings.php:1371 #: pro__premium_only/src/block/pagination/index.php:299 #: pro__premium_only/src/deprecated/v2/block/blog-posts/pagination.php:219 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 @@ -7339,7 +7359,7 @@ msgstr "" msgid "Page %s" msgstr "" -#: dist/translation-strings.php:1368 +#: dist/translation-strings.php:1372 #: pro__premium_only/src/block/pagination/index.php:324 #: pro__premium_only/src/deprecated/v2/block/blog-posts/pagination.php:244 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 @@ -7348,159 +7368,159 @@ msgstr "" msgid "Next page" msgstr "" -#: dist/translation-strings.php:1369 +#: dist/translation-strings.php:1373 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:154 msgid "Offset your posts by a specific number of items." msgstr "" -#: dist/translation-strings.php:1370 +#: dist/translation-strings.php:1374 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:155 msgid "Exclude Post IDs" msgstr "" -#: dist/translation-strings.php:1371 +#: dist/translation-strings.php:1375 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:156 msgid "Excludes specific IDs from the display. Enter post IDs separated by a commas" msgstr "" -#: dist/translation-strings.php:1372 +#: dist/translation-strings.php:1376 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:157 msgid "Hide the current post" msgstr "" -#: dist/translation-strings.php:1373 +#: dist/translation-strings.php:1377 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:158 msgid "Removes the current post from the posts list" msgstr "" -#: dist/translation-strings.php:1374 +#: dist/translation-strings.php:1378 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:159 msgid "Display Specific Post IDs" msgstr "" -#: dist/translation-strings.php:1375 +#: dist/translation-strings.php:1379 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:160 msgid "Limit display to only these specific IDs. Enter post IDs separated by a commas" msgstr "" -#: dist/translation-strings.php:1376 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:161 -msgid "Sale" -msgstr "" - -#: dist/translation-strings.php:1377 +#: dist/translation-strings.php:1380 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:166 msgid "Layer %s" msgstr "" -#: dist/translation-strings.php:1378 +#: dist/translation-strings.php:1381 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:168 msgid "Layer Height" msgstr "" -#: dist/translation-strings.php:1379 +#: dist/translation-strings.php:1382 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:169 msgid "Layer Width" msgstr "" -#: dist/translation-strings.php:1380 +#: dist/translation-strings.php:1383 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:172 msgid "Layer Opacity" msgstr "" -#: dist/translation-strings.php:1381 +#: dist/translation-strings.php:1384 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:173 msgid "Adjusts the transparency of the separator layer" msgstr "" -#: dist/translation-strings.php:1382 +#: dist/translation-strings.php:1385 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:174 msgid "Layer Blend mode" msgstr "" -#: dist/translation-strings.php:1383 +#: dist/translation-strings.php:1386 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:175 msgid "Sets how the sepator layer is blended into the background" msgstr "" -#: dist/translation-strings.php:1384 +#: dist/translation-strings.php:1387 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:161 +msgid "Sale" +msgstr "" + +#: dist/translation-strings.php:1388 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:178 msgid "Delete Condition" msgstr "" -#: dist/translation-strings.php:1385 +#: dist/translation-strings.php:1389 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:179 msgid "Deleting will remove this condition for the block. Proceed?" msgstr "" -#: dist/translation-strings.php:1386 +#: dist/translation-strings.php:1390 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:180 msgid "Delete" msgstr "" -#: dist/translation-strings.php:1387 +#: dist/translation-strings.php:1391 #: dist/admin_custom_fields__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:181 msgid "Cancel" msgstr "" -#: dist/translation-strings.php:1388 +#: dist/translation-strings.php:1392 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:182 msgid "Condition Type" msgstr "" -#: dist/translation-strings.php:1389 +#: dist/translation-strings.php:1393 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:183 msgid "Visibility" msgstr "" -#: dist/translation-strings.php:1390 +#: dist/translation-strings.php:1394 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:184 msgid "Show on condition match" msgstr "" -#: dist/translation-strings.php:1391 +#: dist/translation-strings.php:1395 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:185 msgid "Hide on condition match" msgstr "" -#: dist/translation-strings.php:1392 +#: dist/translation-strings.php:1396 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:186 msgid "No conditions yet. Add your first condition." msgstr "" #. translators: This is the separator between conditions: OR / AND. -#: dist/translation-strings.php:1393 +#: dist/translation-strings.php:1397 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:188 msgid "OR" @@ -7508,1178 +7528,1190 @@ msgstr "" #. translators: This is the separator between conditions: OR / AND. #. translators: This is the separator between conditions: OR / AND. -#: dist/translation-strings.php:1394 +#: dist/translation-strings.php:1398 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:190 msgid "AND" msgstr "" #. translators: This is the separator between conditions: OR / AND. -#: dist/translation-strings.php:1395 +#: dist/translation-strings.php:1399 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:191 msgid "Trigger if ANY condition matches" msgstr "" -#: dist/translation-strings.php:1396 +#: dist/translation-strings.php:1400 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:192 msgid "Trigger if ALL conditions match" msgstr "" -#: dist/translation-strings.php:1397 +#: dist/translation-strings.php:1401 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:193 msgid "Add New" msgstr "" -#: dist/translation-strings.php:1398 +#: dist/translation-strings.php:1402 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:194 msgid "Add New Condition" msgstr "" -#: dist/translation-strings.php:1399 +#: dist/translation-strings.php:1403 #: dist/editor_blocks__premium_only.js:2 #: dist/translation-strings.js:195 msgid "Learn more about Conditional Display" msgstr "" -#: dist/translation-strings.php:1400 +#: dist/translation-strings.php:1404 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:224 +#: dist/translation-strings.js:197 msgid "You can use this area to further customize your block. Any custom CSS added here will only affect this block." msgstr "" -#: dist/translation-strings.php:1401 +#: dist/translation-strings.php:1405 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:225 +#: dist/translation-strings.js:198 msgid "Media queries are supported. Use the widths 1024px and 768px for tablet and mobile breakpoints." msgstr "" -#: dist/translation-strings.php:1402 +#: dist/translation-strings.php:1406 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:199 +#: dist/translation-strings.js:202 msgid "Rotate" msgstr "" -#: dist/translation-strings.php:1403 +#: dist/translation-strings.php:1407 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:200 +#: dist/translation-strings.js:203 msgid "Effect" msgstr "" -#: dist/translation-strings.php:1404 +#: dist/translation-strings.php:1408 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:201 +#: dist/translation-strings.js:204 msgid "Entrance Animation" msgstr "" -#: dist/translation-strings.php:1405 +#: dist/translation-strings.php:1409 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:202 +#: dist/translation-strings.js:205 msgid "Scroll Animation" msgstr "" -#: dist/translation-strings.php:1406 +#: dist/translation-strings.php:1410 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:203 +#: dist/translation-strings.js:206 msgid "Start Position" msgstr "" -#: dist/translation-strings.php:1407 +#: dist/translation-strings.php:1411 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:204 +#: dist/translation-strings.js:207 msgid "Entrance Animation Speed" msgstr "" -#: dist/translation-strings.php:1408 +#: dist/translation-strings.php:1412 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:205 +#: dist/translation-strings.js:208 msgid "Slow" msgstr "" -#: dist/translation-strings.php:1409 +#: dist/translation-strings.php:1413 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:207 +#: dist/translation-strings.js:210 msgid "Fast" msgstr "" -#: dist/translation-strings.php:1410 +#: dist/translation-strings.php:1414 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:208 +#: dist/translation-strings.js:211 msgid "Entrance Animation Delay" msgstr "" -#: dist/translation-strings.php:1411 +#: dist/translation-strings.php:1415 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:209 +#: dist/translation-strings.js:212 msgid "Smoothen Scroll Animation" msgstr "" -#: dist/translation-strings.php:1412 +#: dist/translation-strings.php:1416 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:210 +#: dist/translation-strings.js:213 msgid "Use 3D Transforms" msgstr "" -#: dist/translation-strings.php:1413 +#: dist/translation-strings.php:1417 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:211 +#: dist/translation-strings.js:214 msgid "Perspective" msgstr "" -#: dist/translation-strings.php:1414 +#: dist/translation-strings.php:1418 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:212 +#: dist/translation-strings.js:215 msgid "Exit Animation" msgstr "" -#: dist/translation-strings.php:1415 +#: dist/translation-strings.php:1419 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:213 +#: dist/translation-strings.js:216 msgid "This block has Transforms assigned to it, Motion Effects may not work as expected." msgstr "" -#: dist/translation-strings.php:1416 +#: dist/translation-strings.php:1420 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:214 +#: dist/translation-strings.js:217 msgid "Learn more about Motion Effects" msgstr "" -#: dist/translation-strings.php:1417 +#: dist/translation-strings.php:1421 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:215 +#: dist/translation-strings.js:218 msgid "Translate X" msgstr "" -#: dist/translation-strings.php:1418 +#: dist/translation-strings.php:1422 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:216 +#: dist/translation-strings.js:219 msgid "TranslateY" msgstr "" -#: dist/translation-strings.php:1419 +#: dist/translation-strings.php:1423 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:217 +#: dist/translation-strings.js:220 msgid "TranslateZ" msgstr "" -#: dist/translation-strings.php:1420 +#: dist/translation-strings.php:1424 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:218 +#: dist/translation-strings.js:221 msgid "RotateX" msgstr "" -#: dist/translation-strings.php:1421 +#: dist/translation-strings.php:1425 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:219 +#: dist/translation-strings.js:222 msgid "RotateY" msgstr "" -#: dist/translation-strings.php:1422 +#: dist/translation-strings.php:1426 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:221 +#: dist/translation-strings.js:224 msgid "Skew X" msgstr "" -#: dist/translation-strings.php:1423 +#: dist/translation-strings.php:1427 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:222 +#: dist/translation-strings.js:225 msgid "Skew Y" msgstr "" -#: dist/translation-strings.php:1424 +#: dist/translation-strings.php:1428 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:227 +#: dist/translation-strings.js:244 msgid "Transition Duration (secs)" msgstr "" -#: dist/translation-strings.php:1425 +#: dist/translation-strings.php:1429 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:228 +#: dist/translation-strings.js:245 msgid "Transition Function" msgstr "" -#: dist/translation-strings.php:1426 +#: dist/translation-strings.php:1430 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:230 +#: dist/translation-strings.js:247 msgid "Ease" msgstr "" -#: dist/translation-strings.php:1427 +#: dist/translation-strings.php:1431 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:231 +#: dist/translation-strings.js:248 msgid "Ease In" msgstr "" -#: dist/translation-strings.php:1428 +#: dist/translation-strings.php:1432 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:232 +#: dist/translation-strings.js:249 msgid "Ease Out" msgstr "" -#: dist/translation-strings.php:1429 +#: dist/translation-strings.php:1433 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:233 +#: dist/translation-strings.js:250 msgid "Ease In Out" msgstr "" -#: dist/translation-strings.php:1430 +#: dist/translation-strings.php:1434 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:234 +#: dist/translation-strings.js:251 msgid "Linear" msgstr "" -#: dist/translation-strings.php:1431 +#: dist/translation-strings.php:1435 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:235 +#: dist/translation-strings.js:252 msgid "Ease In Quad" msgstr "" -#: dist/translation-strings.php:1432 +#: dist/translation-strings.php:1436 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:236 +#: dist/translation-strings.js:253 msgid "Ease Out Quad" msgstr "" -#: dist/translation-strings.php:1433 +#: dist/translation-strings.php:1437 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:237 +#: dist/translation-strings.js:254 msgid "Ease In Out Quad" msgstr "" -#: dist/translation-strings.php:1434 +#: dist/translation-strings.php:1438 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:238 +#: dist/translation-strings.js:255 msgid "Ease In Expo" msgstr "" -#: dist/translation-strings.php:1435 +#: dist/translation-strings.php:1439 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:239 +#: dist/translation-strings.js:256 msgid "Ease Out Expo" msgstr "" -#: dist/translation-strings.php:1436 +#: dist/translation-strings.php:1440 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:240 +#: dist/translation-strings.js:257 msgid "Ease In Out Expo" msgstr "" -#: dist/translation-strings.php:1437 +#: dist/translation-strings.php:1441 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:241 +#: dist/translation-strings.js:258 msgid "Ease In Back" msgstr "" -#: dist/translation-strings.php:1438 +#: dist/translation-strings.php:1442 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:242 +#: dist/translation-strings.js:259 msgid "Ease Out Back" msgstr "" -#: dist/translation-strings.php:1439 +#: dist/translation-strings.php:1443 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:243 +#: dist/translation-strings.js:260 msgid "Ease In Out Back" msgstr "" -#: dist/translation-strings.php:1440 +#: dist/translation-strings.php:1444 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:245 +#: dist/translation-strings.js:262 msgid "Transform Origin" msgstr "" -#: dist/translation-strings.php:1441 +#: dist/translation-strings.php:1445 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:255 +#: dist/translation-strings.js:272 msgid "This block has Motion Effects assigned to it, applying transforms above may prevent the Motion Effects from working as expected." msgstr "" -#: dist/translation-strings.php:1442 +#: dist/translation-strings.php:1446 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:256 +#: dist/translation-strings.js:273 msgid "Translate Y" msgstr "" -#: dist/translation-strings.php:1443 +#: dist/translation-strings.php:1447 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:284 +#: dist/translation-strings.js:230 msgid "Shape Opacity" msgstr "" -#: dist/translation-strings.php:1444 +#: dist/translation-strings.php:1448 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:288 +#: dist/translation-strings.js:234 msgid "Icon Color #%s" msgstr "" -#: dist/translation-strings.php:1445 +#: dist/translation-strings.php:1449 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:292 +#: dist/translation-strings.js:238 msgid "Multicolor only works for custom uploaded icons that have multiple path elements or for Font Awesome Pro Duotones." msgstr "" -#: dist/translation-strings.php:1446 +#: dist/translation-strings.php:1450 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:226 +#: dist/translation-strings.js:243 msgid "Separator Layer %s" msgstr "" -#: dist/translation-strings.php:1447 -#: dist/translation-strings.js:257 +#: dist/translation-strings.php:1451 +#: dist/translation-strings.js:274 msgid "No saved designs yet" msgstr "" -#: dist/translation-strings.php:1448 -#: dist/translation-strings.js:258 +#: dist/translation-strings.php:1452 +#: dist/translation-strings.js:275 msgid "Click here to save your block's design" msgstr "" -#: dist/translation-strings.php:1449 -#: dist/translation-strings.js:259 +#: dist/translation-strings.php:1453 +#: dist/translation-strings.js:276 msgid "Error Getting Designs" msgstr "" -#: dist/translation-strings.php:1450 -#: dist/translation-strings.js:260 +#: dist/translation-strings.php:1454 +#: dist/translation-strings.js:277 msgid "Click here to retry fetching your saved designs" msgstr "" -#: dist/translation-strings.php:1451 -#: dist/translation-strings.js:261 +#: dist/translation-strings.php:1455 +#: dist/translation-strings.js:278 msgid "Save as new block design" msgstr "" -#: dist/translation-strings.php:1452 -#: dist/translation-strings.js:262 +#: dist/translation-strings.php:1456 +#: dist/translation-strings.js:279 msgid "Manage saved designs" msgstr "" -#: dist/translation-strings.php:1453 -#: dist/translation-strings.js:263 +#: dist/translation-strings.php:1457 +#: dist/translation-strings.js:280 msgid "(default)" msgstr "" -#: dist/translation-strings.php:1454 -#: dist/translation-strings.js:264 +#: dist/translation-strings.php:1458 +#: dist/translation-strings.js:281 msgid "Favorite" msgstr "" -#: dist/translation-strings.php:1455 -#: dist/translation-strings.js:265 +#: dist/translation-strings.php:1459 +#: dist/translation-strings.js:282 msgid "Save Changes" msgstr "" -#: dist/translation-strings.php:1456 -#: dist/translation-strings.js:266 +#: dist/translation-strings.php:1460 +#: dist/translation-strings.js:283 msgid "Saved Block Designs" msgstr "" -#: dist/translation-strings.php:1457 -#: dist/translation-strings.js:267 +#: dist/translation-strings.php:1461 +#: dist/translation-strings.js:284 msgid "Save designs to reuse them across your site. Note that using saved designs will override your current block settings." msgstr "" -#: dist/translation-strings.php:1458 -#: dist/translation-strings.js:268 -msgid "You have unsaved changes, discard them?" -msgstr "" - -#: dist/translation-strings.php:1459 -#: dist/translation-strings.js:269 -msgid "Manage Saved Designs" -msgstr "" - -#: dist/translation-strings.php:1460 -#: dist/translation-strings.js:270 -msgid "Design Name" -msgstr "" - -#: dist/translation-strings.php:1461 -#: dist/translation-strings.js:271 -msgid "Set as a favorite design" -msgstr "" - #: dist/translation-strings.php:1462 -#: dist/translation-strings.js:272 -msgid "Design name" +#: dist/translation-strings.js:285 +msgid "You have unsaved changes, discard them?" msgstr "" #: dist/translation-strings.php:1463 -#: dist/translation-strings.js:273 -msgid "Set as default block design" +#: dist/translation-strings.js:286 +msgid "Manage Saved Designs" msgstr "" #: dist/translation-strings.php:1464 -#: dist/translation-strings.js:274 -msgid "My Block Design" +#: dist/translation-strings.js:287 +msgid "Design Name" msgstr "" #: dist/translation-strings.php:1465 -#: dist/translation-strings.js:275 -msgid "Save as New Block Design" +#: dist/translation-strings.js:288 +msgid "Set as a favorite design" msgstr "" #: dist/translation-strings.php:1466 -#: dist/translation-strings.js:276 -msgid "Set as favorite" +#: dist/translation-strings.js:289 +msgid "Design name" msgstr "" #: dist/translation-strings.php:1467 -#: dist/translation-strings.js:277 -msgid "Place at the top of the list of saved designs" +#: dist/translation-strings.js:290 +msgid "Set as default block design" msgstr "" #: dist/translation-strings.php:1468 -#: dist/translation-strings.js:278 -msgid "New blocks created will use this design automatically" +#: dist/translation-strings.js:291 +msgid "My Block Design" msgstr "" #: dist/translation-strings.php:1469 -#: dist/translation-strings.js:279 -msgid "Add New Design" +#: dist/translation-strings.js:292 +msgid "Save as New Block Design" msgstr "" #: dist/translation-strings.php:1470 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:342 -msgid "Learn more how multicolor works" +#: dist/translation-strings.js:293 +msgid "Set as favorite" msgstr "" #: dist/translation-strings.php:1471 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:343 -msgid "here" +#: dist/translation-strings.js:294 +msgid "Place at the top of the list of saved designs" msgstr "" #: dist/translation-strings.php:1472 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:345 -msgid "Outline Color" +#: dist/translation-strings.js:295 +msgid "New blocks created will use this design automatically" msgstr "" #: dist/translation-strings.php:1473 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:346 -msgid "Icon Shape Color" +#: dist/translation-strings.js:296 +msgid "Add New Design" msgstr "" #: dist/translation-strings.php:1474 +#: src/welcome/index.php:256 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:297 -msgid "Show as link" +#: dist/translation-strings.js:350 +msgid "Dynamic Content" msgstr "" #: dist/translation-strings.php:1475 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:298 -msgid "Custom Text" +#: dist/translation-strings.js:351 +msgid "Style copied successfully!" msgstr "" #: dist/translation-strings.php:1476 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:300 -msgid "Date Format" +#: dist/translation-strings.js:352 +msgid "Style pasted successfully!" msgstr "" #: dist/translation-strings.php:1477 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:301 -msgid "Custom Format" +#: dist/translation-strings.js:353 +msgid "Used to copy core/stackable block styles" msgstr "" #: dist/translation-strings.php:1478 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:302 -msgid "Change the date format of your dynamic content." +#: dist/translation-strings.js:354 +msgid "Used to paste core/stackable block styles" msgstr "" #: dist/translation-strings.php:1479 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:303 -msgid "Learn more about date formats" +#: dist/translation-strings.js:355 +msgid "Adv Copy Styles" msgstr "" #: dist/translation-strings.php:1480 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:305 -msgid "Dynamic Source" +#: dist/translation-strings.js:356 +msgid "Adv Paste Styles" msgstr "" #: dist/translation-strings.php:1481 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:306 -msgid "Field" +#: dist/translation-strings.js:357 +msgid "Copy & paste styles" msgstr "" #: dist/translation-strings.php:1482 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:307 -msgid "Learn how to use Dynamic Content" +#: dist/translation-strings.js:358 +msgid "Remove the selected block(s)." msgstr "" #: dist/translation-strings.php:1483 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:308 -msgid "Apply" +#: dist/translation-strings.js:359 +msgid "Content Editing mode is enabled" msgstr "" #: dist/translation-strings.php:1484 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:311 -msgid "Add Custom Format" +#: dist/translation-strings.js:360 +msgid "To unlock Full Editing mode, please contact your administrator." msgstr "" #: dist/translation-strings.php:1485 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:312 -msgid "Content Format" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:361 +msgid "Field cannot be empty" msgstr "" #: dist/translation-strings.php:1486 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:313 -msgid "Add your custom format by adding %s." +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:362 +msgid "Slug contains invalid characters" msgstr "" #: dist/translation-strings.php:1487 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:314 -msgid "Thumbnail" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:363 +msgid "Slug must be unique" msgstr "" #: dist/translation-strings.php:1488 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:318 -msgid "Image Quality" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:364 +msgid "https://" msgstr "" #: dist/translation-strings.php:1489 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:320 -msgid "Text Field" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:365 +msgid "Link title" msgstr "" #: dist/translation-strings.php:1490 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:322 -msgid "Taxonomy Type" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:366 +msgid "Do you want to delete this field?" msgstr "" #: dist/translation-strings.php:1491 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:323 -msgid "Display Option" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:367 +msgid "Add New Field" msgstr "" #: dist/translation-strings.php:1492 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:324 -msgid "All values" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:368 +msgid "Field Type" msgstr "" #: dist/translation-strings.php:1493 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:325 -msgid "%s value" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:371 +msgid "Date" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1494 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:59 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:102 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:230 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:326 -msgid "1st" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:372 +msgid "Time" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1495 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:107 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:231 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:327 -msgid "2nd" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:373 +msgid "Url" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1496 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:112 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:232 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:328 -msgid "3rd" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:374 +msgid "Field Name" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1497 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:117 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:233 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:329 -msgid "4th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:375 +msgid "Field Slug" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1498 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:122 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:234 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:330 -msgid "5th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:376 +msgid "A unique string that will be used to identify this field. Must contain only letters, numbers, underscores and dashes." msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1499 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:127 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:235 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:331 -msgid "6th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:378 +msgid "Save field" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1500 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:132 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:236 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:332 -msgid "7th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:379 +msgid "Add a custom field now to start exploring the possibilities." msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1501 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:137 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:237 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:333 -msgid "8th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:380 +msgid "Add field" msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1502 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:142 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:238 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:334 -msgid "9th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:381 +msgid "You don't have any custom fields." msgstr "" -#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1503 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:147 -#: pro__premium_only/src/dynamic-content/sources/latest-post.php:239 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:335 -msgid "10th" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:382 +msgid "Save changes" msgstr "" #: dist/translation-strings.php:1504 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:336 -msgid "Delimiter" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:383 +msgid "You have unsaved changes" msgstr "" #: dist/translation-strings.php:1505 -#: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:337 -msgid "Display text when true" +#: dist/admin_custom_fields__premium_only.js:2 +#: dist/translation-strings.js:384 +msgid "Error in saving content" msgstr "" #: dist/translation-strings.php:1506 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:338 -msgid "Display text when false" +#: dist/translation-strings.js:297 +msgid "Show as link" msgstr "" #: dist/translation-strings.php:1507 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:89 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:339 -msgid "Fields" +#: dist/translation-strings.js:298 +msgid "Custom Text" msgstr "" #: dist/translation-strings.php:1508 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:340 -msgid "Attributes" +#: dist/translation-strings.js:300 +msgid "Date Format" msgstr "" #: dist/translation-strings.php:1509 -#: src/welcome/index.php:256 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:348 -msgid "Dynamic Content" +#: dist/translation-strings.js:301 +msgid "Custom Format" msgstr "" #: dist/translation-strings.php:1510 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:349 -msgid "Style copied successfully!" +#: dist/translation-strings.js:302 +msgid "Change the date format of your dynamic content." msgstr "" #: dist/translation-strings.php:1511 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:350 -msgid "Style pasted successfully!" +#: dist/translation-strings.js:303 +msgid "Learn more about date formats" msgstr "" #: dist/translation-strings.php:1512 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:351 -msgid "Used to copy core/stackable block styles" +#: dist/translation-strings.js:305 +msgid "Dynamic Source" msgstr "" #: dist/translation-strings.php:1513 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:352 -msgid "Used to paste core/stackable block styles" +#: dist/translation-strings.js:306 +msgid "Field" msgstr "" #: dist/translation-strings.php:1514 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:353 -msgid "Adv Copy Styles" +#: dist/translation-strings.js:307 +msgid "Learn how to use Dynamic Content" msgstr "" #: dist/translation-strings.php:1515 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:354 -msgid "Adv Paste Styles" +#: dist/translation-strings.js:308 +msgid "Apply" msgstr "" #: dist/translation-strings.php:1516 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:355 -msgid "Copy & paste styles" +#: dist/translation-strings.js:311 +msgid "Add Custom Format" msgstr "" #: dist/translation-strings.php:1517 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:356 -msgid "Remove the selected block(s)." +#: dist/translation-strings.js:312 +msgid "Content Format" msgstr "" #: dist/translation-strings.php:1518 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:357 -msgid "Content Editing mode is enabled" +#: dist/translation-strings.js:313 +msgid "Add your custom format by adding %s." msgstr "" #: dist/translation-strings.php:1519 #: dist/editor_blocks__premium_only.js:2 -#: dist/translation-strings.js:358 -msgid "To unlock Full Editing mode, please contact your administrator." +#: dist/translation-strings.js:314 +msgid "Thumbnail" msgstr "" #: dist/translation-strings.php:1520 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:359 -msgid "Field cannot be empty" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:318 +msgid "Image Quality" msgstr "" #: dist/translation-strings.php:1521 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:360 -msgid "Slug contains invalid characters" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:320 +msgid "Text Field" msgstr "" #: dist/translation-strings.php:1522 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:361 -msgid "Slug must be unique" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:322 +msgid "Taxonomy Type" msgstr "" #: dist/translation-strings.php:1523 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:362 -msgid "https://" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:323 +msgid "Display Option" msgstr "" #: dist/translation-strings.php:1524 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:363 -msgid "Link title" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:324 +msgid "All values" msgstr "" #: dist/translation-strings.php:1525 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:364 -msgid "Do you want to delete this field?" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:325 +msgid "%s value" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1526 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:365 -msgid "Add New Field" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:59 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:102 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:230 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:326 +msgid "1st" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1527 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:366 -msgid "Field Type" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:107 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:231 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:327 +msgid "2nd" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1528 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:369 -msgid "Date" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:112 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:232 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:328 +msgid "3rd" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1529 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:370 -msgid "Time" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:117 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:233 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:329 +msgid "4th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1530 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:371 -msgid "Url" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:122 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:234 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:330 +msgid "5th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1531 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:372 -msgid "Field Name" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:127 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:235 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:331 +msgid "6th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1532 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:373 -msgid "Field Slug" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:132 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:236 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:332 +msgid "7th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1533 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:374 -msgid "A unique string that will be used to identify this field. Must contain only letters, numbers, underscores and dashes." +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:137 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:237 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:333 +msgid "8th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1534 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:376 -msgid "Save field" +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:142 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:238 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:334 +msgid "9th" msgstr "" +#. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #: dist/translation-strings.php:1535 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:377 -msgid "Add a custom field now to start exploring the possibilities." +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:147 +#: pro__premium_only/src/dynamic-content/sources/latest-post.php:239 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:335 +msgid "10th" msgstr "" #: dist/translation-strings.php:1536 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:378 -msgid "Add field" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:336 +msgid "Delimiter" msgstr "" #: dist/translation-strings.php:1537 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:379 -msgid "You don't have any custom fields." +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:337 +msgid "Strip HTML tags" msgstr "" #: dist/translation-strings.php:1538 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:380 -msgid "Save changes" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:338 +msgid "If this option is false, the content rendered in the editor will still be stripped to prevent an error from occuring" msgstr "" #: dist/translation-strings.php:1539 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:381 -msgid "You have unsaved changes" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:339 +msgid "Display text when true" msgstr "" #: dist/translation-strings.php:1540 -#: dist/admin_custom_fields__premium_only.js:2 -#: dist/translation-strings.js:382 -msgid "Error in saving content" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:340 +msgid "Display text when false" msgstr "" #: dist/translation-strings.php:1541 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:383 -msgid "Offset your posts by a specific number of items" +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:89 +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:341 +msgid "Fields" msgstr "" #: dist/translation-strings.php:1542 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:387 -msgid "Show previous and next buttons" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:342 +msgid "Attributes" msgstr "" #: dist/translation-strings.php:1543 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:388 -msgid "Previous label" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:344 +msgid "Learn more how multicolor works" msgstr "" #: dist/translation-strings.php:1544 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:389 -msgid "Next label" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:345 +msgid "here" msgstr "" #: dist/translation-strings.php:1545 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:390 -msgid "Hover & Active Opacity" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:347 +msgid "Outline Color" msgstr "" #: dist/translation-strings.php:1546 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:391 -msgid "Hover & Active Colors" +#: dist/editor_blocks__premium_only.js:2 +#: dist/translation-strings.js:348 +msgid "Icon Shape Color" msgstr "" #: dist/translation-strings.php:1547 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:395 +#: dist/translation-strings.js:397 msgid "Reverse columns" msgstr "" #: dist/translation-strings.php:1548 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:396 +#: dist/translation-strings.js:398 msgid "Collapsed Row Gap" msgstr "" #: dist/translation-strings.php:1549 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:397 +#: dist/translation-strings.js:399 msgid "Collapsed Col. Arrangement" msgstr "" #: dist/translation-strings.php:1550 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:406 -msgid "Override settings for column %d" +#: dist/translation-strings.js:385 +msgid "Offset your posts by a specific number of items" msgstr "" #: dist/translation-strings.php:1551 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:407 -msgid "Column Background" +#: dist/translation-strings.js:389 +msgid "Show previous and next buttons" msgstr "" #: dist/translation-strings.php:1552 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:403 -msgid "Collapse image on Mobile" +#: dist/translation-strings.js:390 +msgid "Previous label" msgstr "" #: dist/translation-strings.php:1553 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:404 -msgid "Collapse image height" +#: dist/translation-strings.js:391 +msgid "Next label" msgstr "" #: dist/translation-strings.php:1554 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:420 -msgid "Number Background" +#: dist/translation-strings.js:392 +msgid "Hover & Active Opacity" msgstr "" #: dist/translation-strings.php:1555 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:409 -msgid "Tilt" +#: dist/translation-strings.js:393 +msgid "Hover & Active Colors" msgstr "" #: dist/translation-strings.php:1556 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:410 -msgid "Zoom & Tilt" +#: dist/translation-strings.js:408 +msgid "Override settings for column %d" msgstr "" #: dist/translation-strings.php:1557 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:411 -msgid "Up" +#: dist/translation-strings.js:409 +msgid "Column Background" msgstr "" #: dist/translation-strings.php:1558 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:412 -msgid "Down" +#: dist/translation-strings.js:405 +msgid "Collapse image on Mobile" msgstr "" #: dist/translation-strings.php:1559 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:415 -msgid "Blur In" +#: dist/translation-strings.js:406 +msgid "Collapse image height" msgstr "" #: dist/translation-strings.php:1560 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:416 -msgid "Blur Out" +#: dist/translation-strings.js:411 +msgid "Tilt" msgstr "" #: dist/translation-strings.php:1561 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:417 -msgid "Grayscale In" +#: dist/translation-strings.js:412 +msgid "Zoom & Tilt" msgstr "" #: dist/translation-strings.php:1562 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:418 -msgid "Grayscale Out" +#: dist/translation-strings.js:413 +msgid "Up" msgstr "" #: dist/translation-strings.php:1563 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:419 -msgid "Box Hover Effect" +#: dist/translation-strings.js:414 +msgid "Down" msgstr "" #: dist/translation-strings.php:1564 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:417 +msgid "Blur In" +msgstr "" + +#: dist/translation-strings.php:1565 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:418 +msgid "Blur Out" +msgstr "" + +#: dist/translation-strings.php:1566 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:419 +msgid "Grayscale In" +msgstr "" + +#: dist/translation-strings.php:1567 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:420 +msgid "Grayscale Out" +msgstr "" + +#: dist/translation-strings.php:1568 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:421 +msgid "Box Hover Effect" +msgstr "" + +#: dist/translation-strings.php:1569 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:423 msgid "Column Header" msgstr "" -#: dist/translation-strings.php:1565 +#: dist/translation-strings.php:1570 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:422 +#: dist/translation-strings.js:424 msgctxt "Nth Title" msgid "%s #%d" msgstr "" -#: dist/translation-strings.php:1566 +#: dist/translation-strings.php:1571 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:425 +#: dist/translation-strings.js:422 +msgid "Number Background" +msgstr "" + +#: dist/translation-strings.php:1572 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:427 msgid "Layer Color" msgstr "" -#: dist/translation-strings.php:1567 +#: dist/translation-strings.php:1573 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:426 +#: dist/translation-strings.js:428 msgid "Color on Hover" msgstr "" -#: dist/translation-strings.php:1568 +#: dist/translation-strings.php:1574 +#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 +#: dist/translation-strings.js:432 +msgid "Bubble Background" +msgstr "" + +#: dist/translation-strings.php:1575 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:433 -msgid "%s More" +#: dist/translation-strings.js:444 +msgid "Column / Container Spacing" msgstr "" -#: dist/translation-strings.php:1569 +#: dist/translation-strings.php:1576 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:434 -msgid "Lift w/ shadow" +#: dist/translation-strings.js:446 +msgid "Min. Column Height" msgstr "" -#: dist/translation-strings.php:1570 +#: dist/translation-strings.php:1577 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:435 -msgid "Staggered lift" +msgid "%s More" msgstr "" -#: dist/translation-strings.php:1571 +#: dist/translation-strings.php:1578 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:436 -msgid "Staggered lift w/ shadow" +msgid "Lift w/ shadow" msgstr "" -#: dist/translation-strings.php:1572 +#: dist/translation-strings.php:1579 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:437 -msgid "Scale w/ shadow" +msgid "Staggered lift" msgstr "" -#: dist/translation-strings.php:1573 +#: dist/translation-strings.php:1580 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:438 -msgid "Lower" +msgid "Staggered lift w/ shadow" msgstr "" -#: dist/translation-strings.php:1574 +#: dist/translation-strings.php:1581 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 #: dist/translation-strings.js:439 -msgid "Grayscale Hover Effect" -msgstr "" - -#: dist/translation-strings.php:1575 -#: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:430 -msgid "Bubble Background" +msgid "Scale w/ shadow" msgstr "" -#: dist/translation-strings.php:1576 +#: dist/translation-strings.php:1582 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:442 -msgid "Column / Container Spacing" +#: dist/translation-strings.js:440 +msgid "Lower" msgstr "" -#: dist/translation-strings.php:1577 +#: dist/translation-strings.php:1583 #: dist/deprecated/editor_blocks_deprecated_v2__premium_only.js:2 -#: dist/translation-strings.js:444 -msgid "Min. Column Height" +#: dist/translation-strings.js:441 +msgid "Grayscale Hover Effect" msgstr "" -#: dist/translation-strings.php:1578 +#: dist/translation-strings.php:1584 #: pro__premium_only/src/custom-fields.php:88 msgid "Settings that control custom fields functionality and permissions." msgstr "" -#: dist/translation-strings.php:1579 +#: dist/translation-strings.php:1585 #: pro__premium_only/src/editor-mode.php:68 msgid "Roles which only allow content only editing." msgstr "" -#: dist/translation-strings.php:1580 +#: dist/translation-strings.php:1586 #: pro__premium_only/src/icons.php:169 msgid "Hold on! We noticed that you're using the Font Awesome plugin and that you're using a free Kit. If you have a FontAwesome Pro subscription, you can just set your Kit to use Pro Icons, and you should be able to use your Pro Icons inside your Stackable blocks. %sLearn more about this here.%s" msgstr "" -#: dist/translation-strings.php:1581 +#: dist/translation-strings.php:1587 #: pro__premium_only/src/icons.php:173 msgid "Hold on! We noticed that you're using the Font Awesome plugin and that you're using the free CDN. If you have a FontAwesome Pro subscription, you can just set your CDN to use Pro Icons, and you should be able to use your Pro Icons inside your Stackable blocks. %sLearn more about this here.%s" msgstr "" -#: dist/translation-strings.php:1582 +#: dist/translation-strings.php:1588 #: pro__premium_only/src/icons.php:176 #: pro__premium_only/src/icons.php:180 msgid "Good news! We noticed that you're using the Font Awesome plugin. Your Font Awesome Pro icons are already available inside your Stackable blocks." msgstr "" -#: dist/translation-strings.php:1583 +#: dist/translation-strings.php:1589 #: pro__premium_only/src/icons.php:177 msgid "Make sure you need to add your WordPress site to the %sallowed domains for your CDN%s." msgstr "" -#: dist/translation-strings.php:1584 -#: pro__premium_only/src/dynamic-content/init.php:290 -msgid "Invalid parameters. Please try again." -msgstr "" - -#: dist/translation-strings.php:1585 +#: dist/translation-strings.php:1590 #: pro__premium_only/src/welcome/icons.php:63 msgid "Don't show Font Awesome plugin settings error" msgstr "" -#: dist/translation-strings.php:1586 +#: dist/translation-strings.php:1591 #: pro__premium_only/src/welcome/icons.php:75 msgid "Font Awesome Kit ID" msgstr "" -#: dist/translation-strings.php:1587 +#: dist/translation-strings.php:1592 #: pro__premium_only/src/welcome/icons.php:87 msgid "Font Awesome icon version to server" msgstr "" -#: dist/translation-strings.php:1588 +#: dist/translation-strings.php:1593 +#: pro__premium_only/src/dynamic-content/init.php:290 +msgid "Invalid parameters. Please try again." +msgstr "" + +#: dist/translation-strings.php:1594 #: pro__premium_only/src/block/load-more/index.php:49 #: pro__premium_only/src/deprecated/v2/block/blog-posts/pagination.php:28 #: src/custom-block-styles.php:157 @@ -8687,7 +8719,7 @@ msgstr "" msgid "%s must be a string." msgstr "" -#: dist/translation-strings.php:1589 +#: dist/translation-strings.php:1595 #: pro__premium_only/src/components/panel-design-user-library/ajax.php:21 #: pro__premium_only/src/components/panel-design-user-library/ajax.php:47 #: src/deprecated/v2/disabled-blocks.php:62 @@ -8695,64 +8727,87 @@ msgstr "" msgid "Security error, please refresh the page and try again." msgstr "" -#: dist/translation-strings.php:1590 +#: dist/translation-strings.php:1596 #: pro__premium_only/src/components/panel-design-user-library/ajax.php:28 #: pro__premium_only/src/components/panel-design-user-library/ajax.php:53 msgid "Invalid arguments." msgstr "" -#: dist/translation-strings.php:1591 +#: dist/translation-strings.php:1597 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:48 +msgid "Data from Stackable custom fields" +msgstr "" + +#: dist/translation-strings.php:1598 +#: pro__premium_only/src/dynamic-content/sources/custom-fields.php:41 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:88 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:137 +msgid "Stackable Custom Fields" +msgstr "" + +#: dist/translation-strings.php:1599 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:146 +#: src/welcome/index.php:226 +msgid "📋 Custom Fields" +msgstr "" + +#: dist/translation-strings.php:1600 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:151 +msgid "You can add small pieces of content here which you can use across your website - things like your contact email or the number of customers you've served. You can find these fields under the \"Site source\" area when placing \"Dynamic Content\" in your blocks. %sLearn more%s." +msgstr "" + +#: dist/translation-strings.php:1601 +#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:160 +#: src/welcome/index.php:221 +#: src/welcome/index.php:232 +msgid "This is only available in Stackable Premium." +msgstr "" + +#: dist/translation-strings.php:1603 #: pro__premium_only/src/dynamic-content/sources/acf.php:57 msgid "ACF" msgstr "" -#: dist/translation-strings.php:1592 +#: dist/translation-strings.php:1604 #: pro__premium_only/src/dynamic-content/sources/acf.php:201 #: pro__premium_only/src/dynamic-content/sources/acf.php:229 #: pro__premium_only/src/dynamic-content/sources/custom-fields.php:97 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:183 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:577 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:230 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:308 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:100 #: pro__premium_only/src/dynamic-content/sources/site.php:77 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:67 msgid "The field type provided is not valid." msgstr "" -#: dist/translation-strings.php:1593 +#: dist/translation-strings.php:1605 #: pro__premium_only/src/dynamic-content/sources/acf.php:355 #: pro__premium_only/src/dynamic-content/sources/acf.php:548 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:361 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:317 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:486 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:533 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:409 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:581 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:637 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:353 -#: pro__premium_only/src/dynamic-content/sources/other-posts.php:635 +#: pro__premium_only/src/dynamic-content/sources/other-posts.php:648 #: pro__premium_only/src/dynamic-content/sources/site.php:134 msgid "Text input is empty" msgstr "" -#: dist/translation-strings.php:1594 +#: dist/translation-strings.php:1606 #: pro__premium_only/src/dynamic-content/sources/acf.php:410 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:387 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:364 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:469 msgid "`whenTrueText` and `whenFalseText` arguments are required." msgstr "" -#: dist/translation-strings.php:1595 -#: pro__premium_only/src/dynamic-content/sources/custom-fields.php:41 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:88 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:137 -msgid "Stackable Custom Fields" -msgstr "" - -#: dist/translation-strings.php:1596 +#: dist/translation-strings.php:1607 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:62 #: pro__premium_only/src/dynamic-content/sources/jetengine.php:86 msgid "JetEngine" msgstr "" -#: dist/translation-strings.php:1597 +#: dist/translation-strings.php:1608 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:53 msgid "Latest Post" msgstr "" @@ -8770,8 +8825,8 @@ msgstr "" #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) -#: dist/translation-strings.php:1598 -#: dist/translation-strings.php:1601 +#: dist/translation-strings.php:1609 +#: dist/translation-strings.php:1612 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:57 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:59 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:102 @@ -8799,14 +8854,14 @@ msgstr "" #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) -#: dist/translation-strings.php:1599 +#: dist/translation-strings.php:1610 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:57 msgid "Nth" msgstr "" #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) #. translators: first %s is an ordinal number (e.g. 1st, 2nd), second %s is the name of the entity (e.g. Post, Page) -#: dist/translation-strings.php:1600 +#: dist/translation-strings.php:1611 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:57 #: pro__premium_only/src/dynamic-content/sources/latest-post.php:59 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:208 @@ -8821,108 +8876,113 @@ msgstr "" #: pro__premium_only/src/dynamic-content/sources/other-posts.php:245 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:249 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:253 -#: pro__premium_only/src/dynamic-content/sources/other-posts.php:810 -#: pro__premium_only/src/dynamic-content/sources/other-posts.php:844 +#: pro__premium_only/src/dynamic-content/sources/other-posts.php:823 +#: pro__premium_only/src/dynamic-content/sources/other-posts.php:857 msgid "Post" msgstr "" -#: dist/translation-strings.php:1602 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:67 +#: dist/translation-strings.php:1613 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:74 msgid "Meta Box" msgstr "" -#: dist/translation-strings.php:1603 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:160 +#: dist/translation-strings.php:1614 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:196 +msgid "Meta Box | " +msgstr "" + +#: dist/translation-strings.php:1615 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:249 msgid "Multiple select not supported in this field." msgstr "" -#: dist/translation-strings.php:1604 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:521 +#: dist/translation-strings.php:1616 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:625 msgid "You have not selected an image." msgstr "" -#: dist/translation-strings.php:1605 -#: pro__premium_only/src/dynamic-content/sources/metabox.php:554 +#: dist/translation-strings.php:1617 +#: pro__premium_only/src/dynamic-content/sources/metabox.php:656 msgid "Text fields are empty" msgstr "" -#: dist/translation-strings.php:1606 +#: dist/translation-strings.php:1618 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:32 msgid "Other Posts" msgstr "" -#: dist/translation-strings.php:1607 +#: dist/translation-strings.php:1619 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:35 msgid "Posts/Pages" msgstr "" -#: dist/translation-strings.php:1608 +#: dist/translation-strings.php:1620 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:36 msgid "Search for posts/pages" msgstr "" -#: dist/translation-strings.php:1609 +#: dist/translation-strings.php:1621 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:121 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:169 msgid "Detected Custom Fields" msgstr "" -#: dist/translation-strings.php:1610 +#: dist/translation-strings.php:1622 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:207 msgid "Post Title" msgstr "" -#: dist/translation-strings.php:1611 +#: dist/translation-strings.php:1623 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:211 msgid "Post URL" msgstr "" -#: dist/translation-strings.php:1612 +#: dist/translation-strings.php:1624 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:216 msgid "Post ID" msgstr "" -#: dist/translation-strings.php:1613 +#: dist/translation-strings.php:1625 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:220 msgid "Post Slug" msgstr "" -#: dist/translation-strings.php:1614 +#: dist/translation-strings.php:1626 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:228 msgid "Post Excerpt" msgstr "" -#: dist/translation-strings.php:1615 +#: dist/translation-strings.php:1627 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:232 msgid "Post Date" msgstr "" -#: dist/translation-strings.php:1616 +#: dist/translation-strings.php:1628 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:236 msgid "Post Date GMT" msgstr "" -#: dist/translation-strings.php:1617 +#: dist/translation-strings.php:1629 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:240 msgid "Post Modified" msgstr "" -#: dist/translation-strings.php:1618 +#: dist/translation-strings.php:1630 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:244 msgid "Post Modified GMT" msgstr "" -#: dist/translation-strings.php:1619 +#: dist/translation-strings.php:1631 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:252 msgid "Post Status" msgstr "" -#: dist/translation-strings.php:1620 +#: dist/translation-strings.php:1632 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:257 msgid "Author Name" msgstr "" -#: dist/translation-strings.php:1621 +#: dist/translation-strings.php:1633 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:258 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:262 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:266 @@ -8933,68 +8993,68 @@ msgstr "" msgid "Author" msgstr "" -#: dist/translation-strings.php:1622 +#: dist/translation-strings.php:1634 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:261 msgid "Author ID" msgstr "" -#: dist/translation-strings.php:1623 +#: dist/translation-strings.php:1635 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:265 msgid "Author Posts URL" msgstr "" -#: dist/translation-strings.php:1624 +#: dist/translation-strings.php:1636 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:270 msgid "Author Profile Picture URL" msgstr "" -#: dist/translation-strings.php:1625 +#: dist/translation-strings.php:1637 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:275 msgid "Author Posts" msgstr "" -#: dist/translation-strings.php:1626 +#: dist/translation-strings.php:1638 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:279 msgid "Author First Name" msgstr "" -#: dist/translation-strings.php:1627 +#: dist/translation-strings.php:1639 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:283 msgid "Author Last Name" msgstr "" -#: dist/translation-strings.php:1628 +#: dist/translation-strings.php:1640 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:288 msgid "Comment Number" msgstr "" -#: dist/translation-strings.php:1629 +#: dist/translation-strings.php:1641 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:289 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:293 msgid "Comment" msgstr "" -#: dist/translation-strings.php:1630 +#: dist/translation-strings.php:1642 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:292 msgid "Comment Status" msgstr "" -#: dist/translation-strings.php:1631 +#: dist/translation-strings.php:1643 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:297 msgid "Featured Image URL" msgstr "" -#: dist/translation-strings.php:1632 +#: dist/translation-strings.php:1644 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:298 msgid "Media" msgstr "" -#: dist/translation-strings.php:1633 +#: dist/translation-strings.php:1645 #: pro__premium_only/src/dynamic-content/sources/other-posts.php:480 msgid "Post not found." msgstr "" -#: dist/translation-strings.php:1634 +#: dist/translation-strings.php:1646 #: pro__premium_only/src/dynamic-content/sources/site.php:27 #: pro__premium_only/src/dynamic-content/sources/site.php:45 #: pro__premium_only/src/dynamic-content/sources/site.php:49 @@ -9002,179 +9062,156 @@ msgstr "" msgid "Site" msgstr "" -#: dist/translation-strings.php:1635 +#: dist/translation-strings.php:1647 #: pro__premium_only/src/dynamic-content/sources/site.php:44 msgid "Site Tagline" msgstr "" -#: dist/translation-strings.php:1636 +#: dist/translation-strings.php:1648 #: pro__premium_only/src/dynamic-content/sources/site.php:48 msgid "Site Title" msgstr "" -#: dist/translation-strings.php:1637 +#: dist/translation-strings.php:1649 #: pro__premium_only/src/dynamic-content/sources/site.php:52 msgid "Site URL" msgstr "" -#: dist/translation-strings.php:1638 +#: dist/translation-strings.php:1650 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:91 msgid "Product Url" msgstr "" -#: dist/translation-strings.php:1639 +#: dist/translation-strings.php:1651 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:101 msgid "Product Name" msgstr "" -#: dist/translation-strings.php:1640 +#: dist/translation-strings.php:1652 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:108 msgid "Product Description" msgstr "" -#: dist/translation-strings.php:1641 +#: dist/translation-strings.php:1653 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:115 msgid "Product Short Description" msgstr "" -#: dist/translation-strings.php:1642 +#: dist/translation-strings.php:1654 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:122 msgid "Product Purchase Note" msgstr "" -#: dist/translation-strings.php:1643 +#: dist/translation-strings.php:1655 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:129 msgid "Product Image" msgstr "" -#: dist/translation-strings.php:1644 +#: dist/translation-strings.php:1656 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:136 msgid "Product Price" msgstr "" -#: dist/translation-strings.php:1645 +#: dist/translation-strings.php:1657 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:143 msgid "Product Price (Regular)" msgstr "" -#: dist/translation-strings.php:1646 +#: dist/translation-strings.php:1658 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:150 msgid "Product Price (No Tax)" msgstr "" -#: dist/translation-strings.php:1647 +#: dist/translation-strings.php:1659 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:157 msgid "Produce Price (Sale)" msgstr "" -#: dist/translation-strings.php:1648 +#: dist/translation-strings.php:1660 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:164 msgid "Product Date Created" msgstr "" -#: dist/translation-strings.php:1649 +#: dist/translation-strings.php:1661 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:171 msgid "Product Sale Date From" msgstr "" -#: dist/translation-strings.php:1650 +#: dist/translation-strings.php:1662 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:178 msgid "Product Sale Date To" msgstr "" -#: dist/translation-strings.php:1651 +#: dist/translation-strings.php:1663 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:185 msgid "Product Add to Cart URL" msgstr "" -#: dist/translation-strings.php:1652 +#: dist/translation-strings.php:1664 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:193 msgid "Product SKU" msgstr "" -#: dist/translation-strings.php:1653 +#: dist/translation-strings.php:1665 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:200 msgid "Product Total Sales" msgstr "" -#: dist/translation-strings.php:1654 +#: dist/translation-strings.php:1666 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:207 msgid "Product Total Stock" msgstr "" -#: dist/translation-strings.php:1655 +#: dist/translation-strings.php:1667 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:214 msgid "Product Low Stock" msgstr "" -#: dist/translation-strings.php:1656 +#: dist/translation-strings.php:1668 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:221 msgid "Product Weight" msgstr "" -#: dist/translation-strings.php:1657 +#: dist/translation-strings.php:1669 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:228 msgid "Product Width" msgstr "" -#: dist/translation-strings.php:1658 +#: dist/translation-strings.php:1670 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:235 msgid "Product Length" msgstr "" -#: dist/translation-strings.php:1659 +#: dist/translation-strings.php:1671 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:242 msgid "Product Height" msgstr "" -#: dist/translation-strings.php:1660 +#: dist/translation-strings.php:1672 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:249 msgid "Product Review Count" msgstr "" -#: dist/translation-strings.php:1661 +#: dist/translation-strings.php:1673 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:256 msgid "Product Tax Status" msgstr "" -#: dist/translation-strings.php:1662 +#: dist/translation-strings.php:1674 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:263 msgid "Product Tax Class" msgstr "" -#: dist/translation-strings.php:1663 +#: dist/translation-strings.php:1675 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:270 msgid "Product Tags" msgstr "" -#: dist/translation-strings.php:1664 +#: dist/translation-strings.php:1676 #: pro__premium_only/src/dynamic-content/sources/woocommerce.php:277 msgid "Product Attributes" msgstr "" -#: dist/translation-strings.php:1665 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:48 -msgid "Data from Stackable custom fields" -msgstr "" - -#: dist/translation-strings.php:1666 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:146 -#: src/welcome/index.php:226 -msgid "📋 Custom Fields" -msgstr "" - -#: dist/translation-strings.php:1667 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:151 -msgid "You can add small pieces of content here which you can use across your website - things like your contact email or the number of customers you've served. You can find these fields under the \"Site source\" area when placing \"Dynamic Content\" in your blocks. %sLearn more%s." -msgstr "" - -#: dist/translation-strings.php:1668 -#: pro__premium_only/src/welcome/custom-fields/custom-fields.php:160 -#: src/welcome/index.php:221 -#: src/welcome/index.php:232 -msgid "This is only available in Stackable Premium." -msgstr "" - #: plugin.php:49 msgid "%s\"Stackable\" can not be activated. %s It requires PHP version 5.3.0 or higher, but PHP version %s is used on the site. Please upgrade your PHP version first ✌️ %s Back %s" msgstr "" @@ -9193,41 +9230,41 @@ msgstr "" #: src/block/posts/index.php:103 #: src/block/posts/index.php:561 -#: src/deprecated/v2/block/blog-posts/index.php:285 -#: src/deprecated/v2/block/blog-posts/index.php:539 +#: src/deprecated/v2/block/blog-posts/index.php:289 +#: src/deprecated/v2/block/blog-posts/index.php:543 msgid "%d comment" msgid_plural "%d comments" msgstr[0] "" msgstr[1] "" #: src/block/posts/index.php:235 -#: src/deprecated/v2/block/blog-posts/index.php:414 +#: src/deprecated/v2/block/blog-posts/index.php:418 msgid "Different sized featured images" msgstr "" #: src/block/posts/index.php:247 -#: src/deprecated/v2/block/blog-posts/index.php:426 +#: src/deprecated/v2/block/blog-posts/index.php:430 msgid "Post excerpt for Stackable" msgstr "" #: src/block/posts/index.php:259 -#: src/deprecated/v2/block/blog-posts/index.php:438 +#: src/deprecated/v2/block/blog-posts/index.php:442 msgid "Category list links" msgstr "" #: src/block/posts/index.php:271 -#: src/deprecated/v2/block/blog-posts/index.php:450 +#: src/deprecated/v2/block/blog-posts/index.php:454 msgid "Author information" msgstr "" #: src/block/posts/index.php:284 -#: src/deprecated/v2/block/blog-posts/index.php:462 +#: src/deprecated/v2/block/blog-posts/index.php:466 msgid "Number of comments" msgstr "" #: src/block/posts/index.php:517 -#: src/deprecated/v2/block/blog-posts/index.php:261 -#: src/deprecated/v2/block/blog-posts/index.php:550 +#: src/deprecated/v2/block/blog-posts/index.php:265 +#: src/deprecated/v2/block/blog-posts/index.php:554 msgid ", " msgstr "" @@ -9315,18 +9352,14 @@ msgid "Optimizes inlined CSS styles, combines together similar selectors" msgstr "" #: src/editor-settings.php:92 -msgid "Adds a persistent Navigation panel across all Stackable blocks" -msgstr "" - -#: src/editor-settings.php:104 msgid "The width used when a Columns block has its Content Width set to center." msgstr "" -#: src/editor-settings.php:116 +#: src/editor-settings.php:104 msgid "The width used when a Columns block has its Content Width set to wide." msgstr "" -#: src/editor-settings.php:163 +#: src/editor-settings.php:151 msgid "Disables image lazy loading when using images inside carousel-type blocks to prevent space or layout issues ." msgstr "" @@ -9563,447 +9596,447 @@ msgstr "" msgid "To apply this typography style, just add `%s` in your block's Additional CSS classes. Also make sure that `%s` tag is set to avoid conflict with other typography styles" msgstr "" -#: dist/translation-strings.js:447 +#: dist/translation-strings.js:449 msgid "Load more button for your Stackable Posts block" msgstr "" -#: dist/translation-strings.js:448 +#: dist/translation-strings.js:450 msgid "Pagination for your Stackable Posts block" msgstr "" -#: dist/translation-strings.js:449 +#: dist/translation-strings.js:451 msgid "New Block" msgstr "" -#: dist/translation-strings.js:450 +#: dist/translation-strings.js:452 msgid "A new block." msgstr "" -#: dist/translation-strings.js:451 +#: dist/translation-strings.js:453 msgid "Keywords that are not in the title" msgstr "" -#: dist/translation-strings.js:452 +#: dist/translation-strings.js:454 msgid "Accordion" msgstr "" -#: dist/translation-strings.js:453 +#: dist/translation-strings.js:455 msgid "A title that your visitors can toggle to view more text. Use as FAQs or multiple ones for an Accordion." msgstr "" -#: dist/translation-strings.js:454 +#: dist/translation-strings.js:456 msgid "Toggle" msgstr "" -#: dist/translation-strings.js:455 +#: dist/translation-strings.js:457 msgid "Faq" msgstr "" -#: dist/translation-strings.js:456 +#: dist/translation-strings.js:458 msgid "Blockquote" msgstr "" -#: dist/translation-strings.js:457 +#: dist/translation-strings.js:459 msgid "Display a quote in style" msgstr "" -#: dist/translation-strings.js:458 +#: dist/translation-strings.js:460 msgid "Button Group" msgstr "" -#: dist/translation-strings.js:459 +#: dist/translation-strings.js:461 msgid "Add a customizable button." msgstr "" -#: dist/translation-strings.js:465 +#: dist/translation-strings.js:467 msgid "Call to Action" msgstr "" -#: dist/translation-strings.js:466 +#: dist/translation-strings.js:468 msgid "A small section you can use to call the attention of your visitors. Great for calling attention to your products or deals." msgstr "" -#: dist/translation-strings.js:467 +#: dist/translation-strings.js:469 msgid "CTA" msgstr "" -#: dist/translation-strings.js:468 +#: dist/translation-strings.js:470 msgid "Card" msgstr "" -#: dist/translation-strings.js:469 +#: dist/translation-strings.js:471 msgid "Describe a single subject in a small card. You can use this to describe your product, service or a person." msgstr "" -#: dist/translation-strings.js:470 +#: dist/translation-strings.js:472 msgid "Carousel" msgstr "" -#: dist/translation-strings.js:471 +#: dist/translation-strings.js:473 msgid "A carousel slider." msgstr "" -#: dist/translation-strings.js:472 +#: dist/translation-strings.js:474 msgid "Slider" msgstr "" -#: dist/translation-strings.js:473 +#: dist/translation-strings.js:475 msgid "Inner Column" msgstr "" -#: dist/translation-strings.js:474 +#: dist/translation-strings.js:476 msgid "A single column with advanced layout options." msgstr "" -#: dist/translation-strings.js:475 +#: dist/translation-strings.js:477 msgid "Section rows" msgstr "" -#: dist/translation-strings.js:477 +#: dist/translation-strings.js:479 msgid "Multiple columns with advanced layout options." msgstr "" -#: dist/translation-strings.js:478 +#: dist/translation-strings.js:480 msgid "Count Up" msgstr "" -#: dist/translation-strings.js:479 +#: dist/translation-strings.js:481 msgid "Showcase your stats. Display how many customers you have or the number of downloads of your app." msgstr "" -#: dist/translation-strings.js:480 +#: dist/translation-strings.js:482 msgid "Countdown" msgstr "" -#: dist/translation-strings.js:481 +#: dist/translation-strings.js:483 msgid "Display a countdown timer on your website." msgstr "" -#: dist/translation-strings.js:482 +#: dist/translation-strings.js:484 msgid "Timer" msgstr "" -#: dist/translation-strings.js:484 +#: dist/translation-strings.js:486 msgid "Choose a layout or block from the Stackable Design Library." msgstr "" -#: dist/translation-strings.js:485 +#: dist/translation-strings.js:487 msgid "Template" msgstr "" -#: dist/translation-strings.js:486 +#: dist/translation-strings.js:488 msgid "Divider" msgstr "" -#: dist/translation-strings.js:487 +#: dist/translation-strings.js:489 msgid "Add a pause between your content." msgstr "" -#: dist/translation-strings.js:488 +#: dist/translation-strings.js:490 msgid "Horizontal Rule" msgstr "" -#: dist/translation-strings.js:489 +#: dist/translation-strings.js:491 msgid "HR" msgstr "" -#: dist/translation-strings.js:490 +#: dist/translation-strings.js:492 msgid "Expand / Show More" msgstr "" -#: dist/translation-strings.js:491 +#: dist/translation-strings.js:493 msgid "Display a small snippet of text. Your readers can toggle it to show more information." msgstr "" -#: dist/translation-strings.js:492 +#: dist/translation-strings.js:494 msgid "Hide" msgstr "" -#: dist/translation-strings.js:493 +#: dist/translation-strings.js:495 msgid "Less" msgstr "" -#: dist/translation-strings.js:494 +#: dist/translation-strings.js:496 msgid "Feature Grid" msgstr "" -#: dist/translation-strings.js:495 +#: dist/translation-strings.js:497 msgid "Display multiple product features or services. You can use Feature Grids one after another." msgstr "" -#: dist/translation-strings.js:496 +#: dist/translation-strings.js:498 msgid "Feature" msgstr "" -#: dist/translation-strings.js:497 +#: dist/translation-strings.js:499 msgid "Display a product feature or a service in a large area." msgstr "" -#: dist/translation-strings.js:499 +#: dist/translation-strings.js:501 msgid "Introduce new sections of your content in style." msgstr "" -#: dist/translation-strings.js:500 +#: dist/translation-strings.js:502 msgid "Hero" msgstr "" -#: dist/translation-strings.js:501 +#: dist/translation-strings.js:503 msgid "A large hero area. Typically used at the very top of a page." msgstr "" -#: dist/translation-strings.js:502 +#: dist/translation-strings.js:504 msgid "Header" msgstr "" -#: dist/translation-strings.js:503 +#: dist/translation-strings.js:505 msgid "Horizontal Scroller" msgstr "" -#: dist/translation-strings.js:504 +#: dist/translation-strings.js:506 msgid "A slider that scrolls horizontally." msgstr "" -#: dist/translation-strings.js:506 +#: dist/translation-strings.js:508 msgid "A small text area with an icon that can be used to summarize features or services" msgstr "" -#: dist/translation-strings.js:508 +#: dist/translation-strings.js:510 msgid "An Icon and Heading paired together." msgstr "" -#: dist/translation-strings.js:509 +#: dist/translation-strings.js:511 msgid "SVG" msgstr "" -#: dist/translation-strings.js:510 +#: dist/translation-strings.js:512 msgid "Icon List Item" msgstr "" -#: dist/translation-strings.js:511 +#: dist/translation-strings.js:513 msgid "A single list entry in the Icon List block" msgstr "" -#: dist/translation-strings.js:512 +#: dist/translation-strings.js:514 msgid "Icon List" msgstr "" -#: dist/translation-strings.js:513 +#: dist/translation-strings.js:515 msgid "An unordered list with icons. You can use this as a list of features or benefits." msgstr "" -#: dist/translation-strings.js:514 +#: dist/translation-strings.js:516 msgid "Checklist" msgstr "" -#: dist/translation-strings.js:515 +#: dist/translation-strings.js:517 msgid "Bullets" msgstr "" -#: dist/translation-strings.js:516 +#: dist/translation-strings.js:518 msgid "Number list" msgstr "" -#: dist/translation-strings.js:517 +#: dist/translation-strings.js:519 msgid "Pick an icon or upload your own SVG icon to decorate your content." msgstr "" -#: dist/translation-strings.js:518 +#: dist/translation-strings.js:520 msgid "Image Box" msgstr "" -#: dist/translation-strings.js:519 +#: dist/translation-strings.js:521 msgid "Display an image that shows more information when hovered on. Can be used as a fancy link to other pages." msgstr "" -#: dist/translation-strings.js:520 +#: dist/translation-strings.js:522 msgid "An image with advanced controls to make a visual statement." msgstr "" -#: dist/translation-strings.js:522 +#: dist/translation-strings.js:524 msgid "Embedded Google Map with advanced controls." msgstr "" -#: dist/translation-strings.js:523 +#: dist/translation-strings.js:525 msgid "location" msgstr "" -#: dist/translation-strings.js:524 +#: dist/translation-strings.js:526 msgid "address" msgstr "" -#: dist/translation-strings.js:525 +#: dist/translation-strings.js:527 msgid "Notification" msgstr "" -#: dist/translation-strings.js:526 +#: dist/translation-strings.js:528 msgid "Show a notice to your readers. People can dismiss the notice to permanently hide it." msgstr "" -#: dist/translation-strings.js:527 +#: dist/translation-strings.js:529 msgid "Notice" msgstr "" -#: dist/translation-strings.js:528 +#: dist/translation-strings.js:530 msgid "Alert" msgstr "" -#: dist/translation-strings.js:529 +#: dist/translation-strings.js:531 msgid "Number Box" msgstr "" -#: dist/translation-strings.js:530 +#: dist/translation-strings.js:532 msgid "Display steps or methods that your users will do in your service." msgstr "" -#: dist/translation-strings.js:531 +#: dist/translation-strings.js:533 msgid "Steps" msgstr "" -#: dist/translation-strings.js:533 +#: dist/translation-strings.js:535 msgid "Your latest blog posts. Use this to showcase a few of your posts in your landing pages." msgstr "" -#: dist/translation-strings.js:534 +#: dist/translation-strings.js:536 msgid "Blog Posts" msgstr "" -#: dist/translation-strings.js:535 +#: dist/translation-strings.js:537 msgid "Lastest Posts" msgstr "" -#: dist/translation-strings.js:536 +#: dist/translation-strings.js:538 msgid "Query Loop" msgstr "" -#: dist/translation-strings.js:538 +#: dist/translation-strings.js:540 msgid "Show a price of a product or service with currency and a suffix styled with different weights" msgstr "" -#: dist/translation-strings.js:539 +#: dist/translation-strings.js:541 msgid "Currency" msgstr "" -#: dist/translation-strings.js:540 +#: dist/translation-strings.js:542 msgid "Pricing" msgstr "" -#: dist/translation-strings.js:541 +#: dist/translation-strings.js:543 msgid "Pricing Box" msgstr "" -#: dist/translation-strings.js:542 +#: dist/translation-strings.js:544 msgid "Display the different pricing tiers of your business." msgstr "" -#: dist/translation-strings.js:543 +#: dist/translation-strings.js:545 msgid "Pricing Table" msgstr "" -#: dist/translation-strings.js:545 +#: dist/translation-strings.js:547 msgid "Visualize a progress value or percentage in a bar." msgstr "" -#: dist/translation-strings.js:546 +#: dist/translation-strings.js:548 msgid "percentage status" msgstr "" -#: dist/translation-strings.js:548 +#: dist/translation-strings.js:550 msgid "Visualize a progress value or percentage in a circle." msgstr "" -#: dist/translation-strings.js:550 +#: dist/translation-strings.js:552 msgid "A fancy separator to be placed between content." msgstr "" -#: dist/translation-strings.js:551 +#: dist/translation-strings.js:553 msgid "Svg Divider" msgstr "" -#: dist/translation-strings.js:553 +#: dist/translation-strings.js:555 msgid "Sometimes you just need some space." msgstr "" -#: dist/translation-strings.js:555 +#: dist/translation-strings.js:557 msgid "Subtitle text that you can add custom styling to from the global settings." msgstr "" -#: dist/translation-strings.js:556 +#: dist/translation-strings.js:558 msgid "Tab Content" msgstr "" -#: dist/translation-strings.js:557 +#: dist/translation-strings.js:559 msgid "A wrapper for tab panels." msgstr "" -#: dist/translation-strings.js:558 +#: dist/translation-strings.js:560 msgid "Tab Labels" msgstr "" -#: dist/translation-strings.js:559 +#: dist/translation-strings.js:561 msgid "Create interactive navigation within tabs." msgstr "" -#: dist/translation-strings.js:561 +#: dist/translation-strings.js:563 msgid "Automatically generated table of contents based on Heading blocks." msgstr "" -#: dist/translation-strings.js:562 +#: dist/translation-strings.js:564 msgid "ToC" msgstr "" -#: dist/translation-strings.js:563 +#: dist/translation-strings.js:565 msgid "Index" msgstr "" -#: dist/translation-strings.js:566 +#: dist/translation-strings.js:568 msgid "Organize and display content in multiple tabs." msgstr "" -#: dist/translation-strings.js:567 +#: dist/translation-strings.js:569 msgid "toggle" msgstr "" -#: dist/translation-strings.js:568 +#: dist/translation-strings.js:570 msgid "Team Member" msgstr "" -#: dist/translation-strings.js:569 +#: dist/translation-strings.js:571 msgid "Display members of your team or your office. Use multiple Team Member blocks if you have a large team." msgstr "" -#: dist/translation-strings.js:571 +#: dist/translation-strings.js:573 msgid "Showcase what your users say about your product or service." msgstr "" -#: dist/translation-strings.js:572 +#: dist/translation-strings.js:574 msgid "Start with the building block of all page layouts." msgstr "" -#: dist/translation-strings.js:575 +#: dist/translation-strings.js:577 msgid "Show events in chronological order" msgstr "" -#: dist/translation-strings.js:576 +#: dist/translation-strings.js:578 msgid "history" msgstr "" -#: dist/translation-strings.js:577 +#: dist/translation-strings.js:579 msgid "milestone" msgstr "" -#: dist/translation-strings.js:578 +#: dist/translation-strings.js:580 msgid "Video Popup" msgstr "" -#: dist/translation-strings.js:579 +#: dist/translation-strings.js:581 msgid "Display a large thumbnail that your users can click to play a video full-screen. Great for introductory or tutorial videos." msgstr "" -#: dist/translation-strings.js:581 +#: dist/translation-strings.js:583 msgid "Vimeo" msgstr "" -#: dist/translation-strings.js:582 +#: dist/translation-strings.js:584 msgid "Embed Mp4" msgstr "" diff --git a/package.json b/package.json index f7637b8ca..c0d50852c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stackable", - "version": "3.12.11", + "version": "3.12.15", "private": true, "description": "Blocks for everyone", "author": "Benjamin Intal of Gambit", diff --git a/plugin.php b/plugin.php index 2b740ca11..7d3c82799 100644 --- a/plugin.php +++ b/plugin.php @@ -6,7 +6,7 @@ * Author: Gambit Technologies, Inc * Author URI: http://gambit.ph * Text Domain: stackable-ultimate-gutenberg-blocks - * Version: 3.12.11 + * Version: 3.12.15 * * @package Stackable */ @@ -24,7 +24,7 @@ defined( 'STACKABLE_SHOW_PRO_NOTICES' ) || define( 'STACKABLE_SHOW_PRO_NOTICES', true ); defined( 'STACKABLE_BUILD' ) || define( 'STACKABLE_BUILD', 'free' ); -defined( 'STACKABLE_VERSION' ) || define( 'STACKABLE_VERSION', '3.12.11' ); +defined( 'STACKABLE_VERSION' ) || define( 'STACKABLE_VERSION', '3.12.15' ); defined( 'STACKABLE_FILE' ) || define( 'STACKABLE_FILE', __FILE__ ); defined( 'STACKABLE_I18N' ) || define( 'STACKABLE_I18N', 'stackable-ultimate-gutenberg-blocks' ); // Plugin slug. defined( 'STACKABLE_DESIGN_LIBRARY_URL' ) || define( 'STACKABLE_DESIGN_LIBRARY_URL', 'https://storage.googleapis.com/stackable-plugin-assets' ); // Design Library CDN URL @@ -176,6 +176,8 @@ function stackable_deactivation_cleanup() { delete_option( 'stackable_dynamic_content_meta_keys_frontend' ); // Delete old v2 go premium notice status. delete_option( 'stackable_inspector_premium_notice_status' ); + // Delete old Navigation Panel setting. + delete_option( 'stackable_enable_navigation_panel' ); } register_deactivation_hook( __FILE__, 'stackable_deactivation_cleanup' ); } diff --git a/readme.txt b/readme.txt index 3d8ac7808..e01cbd27c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,10 +1,10 @@ === Stackable - Page Builder Gutenberg Blocks === Contributors: bfintal, gambitph, freemius Tags: blocks, gutenberg, gutenberg blocks, page builder, WordPress blocks -Requires at least: 6.1 -Tested up to: 6.4.3 +Requires at least: 6.2 +Tested up to: 6.5.2 Requires PHP: 7.3 -Stable tag: 3.12.11 +Stable tag: 3.12.15 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html @@ -294,6 +294,46 @@ Nope. Stackable only works with Gutenberg, the new WordPress editor. == Changelog == += 3.12.15 = +* New: Tabs Block - added new option to set anchor links per tab that you can use to open each tab #3124 +* New: Accordion Block - added support for anchor links that you can use to open each accordion block #3136 +* Fixed: Accordion Block - now shows gradient colors with the correct z-index #3138 +* Fixed: Accordion Block - removed video background option since it's not supported by browsers #3138 +* Fixed: Metabox Settings - now shows properly other options registered in settings pages #335 +* Fixed: Video Popup Block - prevent theme from adding button styles to the video popup #3121 +* Fixed: Carousel Block - no longer clones slides when the screen is resized #3132 +* Fixed: Carousel Block - DOM events now work correctly in slides when infinite scrolling is enabled #3137 +* Fixed: Columns Block - block error when deleting a block in Firefox #3148 + += 3.12.14 = +* Fixed: Table of Contents Block - WordPress 6.5 compatibility in the Site Editor #3133 +* Fixed: Table of Contents Block - Auto-generate anchors now work after the editor refreshes #3133 +* Fixed: (Hotfix) Rolled back separator fix since it was producing errors #3131 +* Fixed: Some blocks may produce errors when editing in multisite when editing as a non-super user #3130 +* Fixed: In multisite, prevent parts of custom icons from being stripped #3130 +* Fixed: Buttons block - full width now occupies the entire full width correctly #2991 + += 3.12.13 = +* Fixed: (Hotfix update) Rolled back some optimizations that caused styling issues in the frontend after saving. + += 3.12.12 = +* New: WordPress 6.5 compatibility #3115 #3116 #333 +* New: Improved editor and saving performance #3119 #3114 +* New: Added support for Metabox settings #330 +* New: Columns Block - you can now wrap columns in desktop view #3072 +* New: Carousel Block - new infinite scroll option #3060 +* New: Added thumbnail option for video backgrounds #3040 +* New: Border color picker now has the new opacity slider #3074 +* New: Design Library - added error logger in the network tab for easy checking of errors #3112 +* New: WooCommerce - dynamic content product description now has option to not strip HTML tags #331 +* Change: Removed Navigation Panel feature - it was already disabled by default back in 3.10.2 #3119 +* Fixed: Prevent bottom separator from overlapping content #3081 +* Fixed: Card block - fixed possible block error when reseting layouts #3080 +* Fixed: Posts block - better display for horizontal layouts with large featured image #3108 +* Fixed: Tabs block - changing styles now updates the border radius correctly #3106 +* Fixed: Lightbox - prevent possible PHP error #3083 +* Fixed: Security improvements + = 3.12.11 = * New: You can now use YouTube shorts and unlisted Vimeo videos in the Video Popup block * Fixed: Ordered Icon List block numerals no longer wrap to the next line @@ -562,665 +602,3 @@ Nope. Stackable only works with Gutenberg, the new WordPress editor. * Fixed: The Block Linking learn more link redirects to the wrong page #2564 * Fixed: In the free version, premium notices have lower priority * Fixed: Dynamic Content can now be used in the Progress Bar and Progress Circle percentage value #2647 - -= 3.7.2 = -* New: WordPress 6.2 compatibility -* New: Stackable blocks now appear in the new Style Book -* New: Stackable global settings are now available in the Site Editor / FSE -* Fixed: Responsive block settings now working in the Site Editor -* Fixed: Tablet styles sometimes show up in the editor when the screen is small -* Fixed: Reusable blocks performance improvements -* Fixed: Blocksy theme responsive breakpoints conflict -* Change: Removed v2 editor migration helper (it's been 1.5 years since it was introduced) - -= 3.7.1 = -* Fixed: Dynamic Content issue where ACF image fields sometimes did not output correctly -* Fixed: Shape separators were always covering some content in some blocks #2268 -* Fixed: Cannot select a color for shape separator layers -* Fixed: Custom roles did not appear in the Conditional Display role picker #2409 -* Fixed: Shape separator layer 2 options were not visible -* Fixed: Block error that resulted when using a Display Condition taxonomy that was deleted -* Fixed: CSS optimization post meta options are now hidden from the custom fields view -* Fixed: Some strings in the Countdown block were not translated #2585 -* Fixed: Some JS hook tweaks #2588 - -= 3.7.0 = -[Introducing: New Horizontal Scroller and Countdown Blocks](https://wpstackable.com/blog/introducing-new-horizontal-scroller-and-countdown-blocks/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Horizontal Scroller block #2494 -* New: Countdown block #2501 -* Fixed: Dynamic Content database performance, no more duplicate db calls #2569 -* Fixed: Some tablet and mobile styling options were being overwritten by desktop values #2571 -* Fixed: Right clicking on an Image block now triggers on the image itself - -= 3.6.5 = -* Fixed: Possible error if the theme color palette is unavailable - -= 3.6.4 = -* New: Inversed the behavior of the Heading's margins (it now doesn't use the theme's margins by default) #2190 -* Fixed: Editor performance improvements #2446 -* Fixed: Better PHP 8.1 compatibility #2560 -* Fixed: Max content width doesn't show correctly in the editor #2531 -* Fixed: Posts block not showing hover colors correctly in the editor #2351 #2473 - -= 3.6.3 = -* New: The Table of Contents block can now have a title #2346 -* Fixed: In Conditional Display, added support for named and 0 timezones #2530 -* Fixed: FontAwesome script loading is now delayed in the editor -* Fixed: Possible error in the Accordion block's icon #2546 -* Fixed: Tablet and mobile units are not being followed in the editor #2547 -* Fixed: Added missing translation strings #2399 #2402 #2472 #2498 (Thanks DAnn2012) -* Fixed: Table of Contents block now support the Stackable v2 Heading block #2376 -* Fixed: Content vertical align option in the Column block doesn't appear correctly in the editor #2408 -* Fixed: Using a custom SVG in the Icon block can result in it losing its colors #2137 -* Fixed: Image Box block selection goes past its container in the editor #2369 -* Fixed: Block example show a "no blocks in the group" placeholder #2405 -* Fixed: Image alt now no longer gets overridden when picking images #2524 - -= 3.6.2 = -* New: (Freemius) Granular opt-out controls -* New: (Freemius) Support for anonymous license activation -* New: (Freemius) New opt-in screen -* New: (Freemius) User IP is no longer sent during opt-in -* New: (Freemius) No data is now sent when skipping the opt-in screen -* New: (Freemius) Admin query strings no longer include a Freemius flag -* New: (Freemius) Better PHP 8 compatibility -* Fixed: Some PHP 8 warning messages with Twenty Twenty Three theme and Dynamic Content #2508 #2503 -* Fixed: Design Library button text label now shows properly #2486 -* Fixed: Possible Block error with v2 Button blocks and Blocksy #2484 - -= 3.6.1 = -* New: WordPress 6.1 compatibility -* New: You can now change the Query String of the Posts block's Pagination Block #2313 -* New: Added Advanced Tab > Responsive > Tablet column arrangement option ##2325 -* New: Added Advanced Tab > Responsive > Tablet and mobile column arrangement option #2361 -* Fixed: RankMath compatibility for the Table of Contents block #2424 -* Fixed: Newly created columns are not cloned correctly when using the Columns block's Columns option #2476 -* Fixed: Posts block pagination could not navigate back to page 1 #2313 -* Fixed: Reset button on icon options now reset correctly #2329 -* Fixed: Copy and pasting styles on the Progress Circle and Bar blocks also copied some content #2469 -* Fixed: Progress Bar block percentage text can wrap around spaces #2464 -* Fixed: Button blocks can still be added even if they're disabled in the admin #2305 -* Fixed: Possible block error when adding conditional display about dates #2477 - -= 3.6.0 = -[Introducing: New Progress Circle and Progress Bar Blocks](https://wpstackable.com/blog/introducing-new-progress-circle-and-progress-bar-blocks/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Progress Circle and Progress Bar Blocks -* Fixed: You can now select transparent as the color for the 2nd gradient background color #2358 - -= 3.5.0 = -[No Bloat & Improved Performance](https://wpstackable.com/blog/improved-performance/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Various performance improvements -* New: Smaller plugin filesize -* New: New exposed window.stk API (undocumented) -* New: Support for block theme contentSize and wideSize -* Fixed: Wide and fullwidth blocks sometimes showed centered in the editor -* Fixed: Column content vertical align did not show up correctly in the editor -* Fixed: Some block options not showing up in the editor -* Fixed: Column block's Content Vertical Align not displaying correctly in the editor -* Fixed: Icon block margin and size options not displaying correctly in the editor #2426 -* Fixed: Card block horizontal layout image resizing issues in tablet and mobile -* Fixed: Hero block can get an error when switching layouts -* Fixed: Accordion content in the editor overlapped sometimes -* Fixed: Some styles did not show in the editor when changing hover states -* Fixed: Some shadows flicker or get clipped in Safari #2328 -* Fixed: Accordions close adjacent doesn't work with reduced motion OS setting #2352 -* Fixed: Custom Fields PHP warnings #2415 -* Fixed: Using custom SVGs with colors can sometimes cause block errors #2411 - -= 3.4.5 = -* Fixed: Accordion containers incorrectly collapsed when placed inside columns - -= 3.4.4 = -* Fixed: This update fixes some issues which were found in v3.4.3 in the Accordion and Image box blocks -* Fixed: Accordion column height issues -* Fixed: Hard to select the accordion block contents -* Fixed: Containers with containers inside incorrectly inherit the parent container's size styles -* Fixed: Content alignment issue in the image box block -* Fixed: Content vertical align option now works correctly in the icon box block #2404 - -= 3.4.3 = -* New: Added duration option for the Count Up block #2355 -* New: Added button alignment & full-width options for the Button Group block -* Change: Remove doubled Stackable icons in the block inserter #2383 -* Change: Video popup now uses YouTube's no-cookie domain #2392 -* Fixed: Buttons stacking on mobile adds a margin to some buttons #2249 -* Fixed: Full width buttons force other non-full width buttons to wrap text -* Fixed: Multiple full width buttons in a group incorrectly wrap in mobile -* Fixed: Buttons with borders sometimes show a thin white border -* Fixed: Typing in a global color name is slow #2339 -* Fixed: Resetting max width doesn't reset content horizontal align #2338 -* Fixed: Icon panel doesn't close -* Fixed: Icon list block contents are also copied when copying styles #2320 -* Fixed: Columns & Button group blocks show "add block" panel when used in reusable blocks & in widget editor #2371 -* Fixed: Dynamic content button is not aligned in link inspector control #2332 -* Fixed: Remove highlight toolbar button for button blocks #2314 -* Fixed: Icon is not visible in some notification block layouts #2323 -* Fixed: Position "sticky" doesn't work as intended inside columns #2212 -* Fixed: Global typography does not show in tablet & mobile and in FSE #2340 & #2289 -* Fixed: Fatal error with Freemius in edge case when blog no longer exists in multisite -* Fixed: ACF & Metabox dynamic content images show blurry #2064 -* Fixed: ACF & Metabox added image size selector for dynamic content image fields #2064 -* Fixed: Added single image field type support for Metabox -* Fixed: Related map block scripts now do not appear in the frontend when no map block is used #2386 - -= 3.4.2 = -* Fixed: Editor speed performance improvements when editing blocks -* Fixed: Error when saving a page when styling some blocks with PHP 8 -* Fixed: Taxonomies and post types now show up in Dynamic Content if you have more than 10 -* Fixed: Rare block error when using the highlight text color -* Fixed: Updated Freemius SDK to 2.5.0 for PHP 8.1 support - -= 3.4.1 = -* New: JetEngine post and taxonomy meta box integration with Stackable Dynamic Content -* Fixed: Icon speed improvements -* Fixed: Resizing the 1st column to 33.33% can make the second column wrap -* Fixed: Added missing translation text domains -* Fixed: Minor UI, warning & security fixes - -= 3.4.0 = -[Introducing: Map Block](https://wpstackable.com/blog/introducing-map-block/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) -* New: Map Block -* Fixed: Editing Default Blocks now work when the Classic Editor plugin is activated - -= 3.3.5 = -* New: Updated Stackable logos to the new one -* Fixed: Font family picker cannot be clicked -* Fixed: Posts block sometimes do not render correctly in the frontend -* Fixed: In some servers the Posts Block won't display columns side by side - -= 3.3.4 = -* New: Metabox plugin integration with Stackable Dynamic Content -* Fixed: Margin bottom indicators won't show up when inside a native Row Block -* Fixed: Dynamic Content field dropdown gets cut when inside a popover -* Fixed: Icon block styles now work correctly when used inside a Query Loop block -* Fixed: Block widths now collapse as expected when used in a Row Block - -= 3.3.3 = -* New: WordPress 6.0 compatibility -* New: Optimized selectors when combining CSS, this results in 40% less generated CSS size! -* Fixed: Possible PHP 5.6 error -* Fixed: Fixed background are now correctly forced to scroll and show up in iOS devices -* Fixed: Some editor optimizations - -= 3.3.2 = -* New: You can now select multiple designs in the Design Library -* Fixed: Custom breakpoints do not work with Optimize Inline CSS -* Fixed: Some overriding issues with Optimize Inline CSS and responsive styles -* Fixed: The dynamic content popover can get hidden behind the editor's sides / inspector / admin menu -* Fixed: The contents of text highlight and dynamic content popovers go past their bounds -* Fixed: Some slider controls now show the correct slider position at default -* Fixed: Accordion block now opens on Windows if 'Show Animations on Windows' is turned off -* Fixed: Column gap option also affects Icon Label block in the editor -* Fixed: Sometimes theme colors do not show up in shadows and other color pickers -* Fixed: Hovering your mouse over the corner of the column size indicator makes it flicker -* Fixed: Icon list block bottom margin will not conflict with theme styles -* Fixed: Overflow can sometimes not be followed when there is a border radius on a block - -= 3.3.1 = -* New: Added block list in the getting started page -* Fixed: Now loads JS scripts in the footer to prevent blocking the page render -* Fixed: Inline CSS Optimization sometimes made Parent Hovered style work incorrectly (if this is happening to you, update your post) -* Fixed: Image Box (v2) images sometimes won't show in Chrome - -= 3.3.0 = -[Saving Block Defaults](https://wpstackable.com/blog/saving-block-defaults/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: You can now Save Block Defaults (Check out the Block Defaults panel in the Stackable sidebar) -* New: Inline CSS Optimization -* Fixed: Issues with Block Themes such as fullwidth & options missing -* Fixed: Astra compatibility, some Gutenberg options are missing and fixed spacing -* Fixed: LearnDash compatibility, Inspector shows blank when navigation panel is enabled -* Fixed: WordPress 5.8.x compatibility, prevents block errors -* Fixed: Fullwidth buttons no longer go past their containers -* Fixed: Multiple Posts block with Load More buttons now work correctly -* Fixed: Responsive toggles now work in the widgets editor, you can now edit tablet and mobile styles -* Fixed: Posts Block Card variation was not showing the post title -* Fixed: The last column of the native Posts block wraps sometimes when Global Typography is used -* Fixed: Removed alignment option of the Icon Label block -* Fixed: Block inserter doesn't appear if the last block is a text block -* Fixed: Hide button overlaps with long text in the table of contents block -* Fixed: Long text in table of contents block gets cut when using columns - -= 3.2.0 = -[Table of Contents Block](https://wpstackable.com/blog/table-of-contents-block/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Table of Contents block -* Fixed: Button shadows don't show when the button has a border radius -* Fixed: Added button text alignment button -* Fixed: Buttons do not wrap text -* Fixed: Buttons and links get followed when previewing in tablet or mobile -* Fixed: Using a video background with a top/bottom separator now shows the content correctly -* Fixed: Card block Horizontal layout mobile collapse issue -* Fixed: Image now clickable in the image card variation in the Posts block -* Fixed: When changing typography color type to gradient for the first time, the text becomes transparent -* Fixed: Enqueue CodeMirror only in Gutenberg, it might interfere with other plugins that use it -* Fixed: Changing the block's HTML tag now shows the block in the correct width in the editor -* Fixed: Button block popover closes when clicking edit (v2) - -= 3.1.5 = -* New: Navigation Panel -* Fixed: Missing Featured Image in the Default Posts block variation -* Fixed: Content order issues in the Posts block -* Fixed: Content order Posts block always shows the reset button -* Fixed: A block can show an error when saving without picking a layout -* Fixed: The margin bottom resizer can be visible when picking a layout -* Fixed: Security fixes - -= 3.1.4 = -* Fixed: Blocks with variations couldn't be added (free only) -* Fixed: Layout switcher button doesn't show - -= 3.1.3 = -* New: You can now change the Layout after adding a block -* New: Added Row Gap option in Icon List block -* New: Added Horizontal 2 layout for the Posts block (inverse of Horizontal layout) -* Fixed: Editor performance improvements -* Fixed: Accordion block support for some older browsers -* Fixed: Featured Image bottom margin can now be changed in the Posts block -* Fixed: Sometimes line-height won't get applied to the post titles in the Posts block -* Fixed: Column resizer handlers now show correctly for nested column blocks -* Fixed: Text and heading blocks now appear when in Content Editing Mode -* Fixed: Added center, wide and fullwidth to the Header block -* Fixed: Posts block Horizontal layout doesn't collapse correctly in mobile -* Fixed: Some Posts block content go past their containers in mobile -* Fixed: Using custom color pickers can close the current popover -* Fixed: Using rem font size shows the font size differently in mobile -* Fixed: The button appender button is now on the right side of the block -* Fixed: Alignment of the top & bottom lines of the header block now work in tablet/mobile correctly if there's a desktop alignment provided -* Fixed: Multiple copy and paste notifications won't anymore fill up the screen -* Fixed: Column styles can affect inner blocks in the editor -* Fixed: Jetpack form goes side-by-side in the editor -* Fixed: Hitting return while editing image dimensions in the size popover opens the Media Library - -= 3.1.2 = -* New: WordPress 5.9 compatibility & FSE compatibility -* New: Added Overlay Colors to the Image block - now you can add solid or gradient colored overlays! -* Fixed: Clicking the expand block link scrolls the screen down -* Fixed: Inspector tabs went behind the visible area when scrolling down -* Fixed: Clearing a text highlight color, resets the highlight type. -* Fixed: Possible PHP error when a custom post used in Dynamic Content becomes unavailable - -= 3.1.1 = -* New: Added link option to the Image Block -* New: Added back ability to change the column order when columns collapse in mobile (premium) -* New: Added Post Taxonomies in dynamic content (premium) -* Fixed: Trigger when all display conditions are met is not triggering properly -* Fixed: Entrance animation speeds and delay do not take effect correctly -* Fixed: Column gap and fit columns options now work in Feature Grid block -* Fixed: Display conditions: post meta & site option true & false condition now works if the value is '' -* Fixed: Display conditions: Post meta & site option contains & does-not-contain condition now works if the string matched is at the start of the string -* Fixed: Content Vertical Align option prevents the responsive display options from being applied -* Fixed: Top and bottom lines in Heading block not left aligning -* Fixed: Icon block custom CSS not showing correctly in the editor - -= 3.1.0 = -[Introducing: Wireframes](https://wpstackable.com/blog/introducing-wireframes/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Added Wireframes in the Design Library -* Change: Removed plugin deactivation feedback -* Fixed: Block alignments not inherited properly in tablet and mobile -* Fixed: Text in post block not aligning in tablet and mobile -* Fixed: Shadows in the design library are cut when viewing only a few designs - -= 3.0.7 = -* Fixed: Button link popover is hard to close -* Fixed: Less Content Layout Shift (CLS) -* Fixed: Memory usage optimization (10% memory savings) -* Fixed: Aligning content in tablet doesn't inherit correctly in mobile -* Fixed: Column gap in desktop collapses columns in tablet -* Fixed: Unwanted delay when icons change color on hover -* Fixed: Translations are now properly applied across the plugin - -= 3.0.6 = -* New: Dynamic Content can now be used for link titles -* New: Added Row Gap option for the Columns block -* Fixed: Design Library won't load designs in some server configurations -* Fixed: Column collapsing in tablet and mobile now takes into account the column gap -* Fixed: Resizing columns is jumpy when there is a column gap -* Fixed: In some themes alignfull does not work properly -* Fixed: Icon Button block styles get applied to the button instead of the background -* Fixed: Prevent Column block from being added as a reusable block -* Fixed: Added transform panel in the Separator block -* Fixed: Error when saving an Icon block while having a non-administrator role in multisite -* Fixed: Load more button now gets removed properly when all posts have loaded -* Fixed: Added missing translations -* Fixed: Updated FontAwesome script to use CDN -* Fixed: Some WordPress 5.7 and 5.6 compatibility issues - -= 3.0.5 = -* Fixed: Design library infinite loading spinner and fails to load design -* Fixed: PublishPress workaround - Stackable blocks won't load -* Fixed: Posts block can affect the display of other Posts block in the editor -* Fixed: Posts block won't show featured image if size is not full -* Fixed: Icon list columns flexbox issue -* Fixed: Accordion block affects the icon of nested accordion blocks -* Fixed: Pricing box alignment in some layouts -* Fixed: Notification block close button can go out of the container -* Fixed: Kadence compatibility - dots added to the blog posts meta (v2 block) -* Fixed: Image box can have a small white gap if the container size has fractions in its widt (v2 block) - -= 3.0.4 = -* New: Added note at the bottom of the Style tab in some blocks about how to style inner blocks. -* New: Added tip to open the List View -* Change: Renamed Columns block to "Columns / Container" block -* Fixed: Added another failsafe in case the frontend migration doesn't get automatically enabled when v2 blocks are present. -* Fixed: Removed small gap between full width blocks in the editor so they look merged together -* Fixed: Separator now preserve aspect ratio correctly in mobile - -= 3.0.3 = -* New: Added a modal popup to help with the migration process to version 3 -* New: Shadow options can now be styled on hover -* Fixed: Block widths when nested -* Fixed: Column content widths sometimes didn't apply especially when nested -* Fixed: Layout styles of the Blog Posts and Card block -* Fixed: The image cannot be selected some Card block layouts -* Fixed: Posts Block title tag can't be changed -* Fixed: Remove unwanted bottom margin in columns -* Fixed: Content Vertical Align did not apply -* Fixed: Icon Label block icon gap showing incorrectly in the backend when you have multiple icon labels -* Fixed: PHP warning for themes using theme.json -* Fixed: Feature block horizontal layout didn't show as horizontal -* Fixed: Image Box block layouts were not aligned correctly -* Fixed: Image placeholder height now shows correctly -* Fixed: Blocks can be linked together if creating multiple columns at once -* Fixed: Compatibility with wide/full align when Kadence blocks is enabled -* Fixed: Fixed typo in the wizard text - -= 3.0.2 = -* Fixed: Compatibility with some plugins when backward compatibility with v2 blocks is enabled -* Fixed: Backward compatibility with v2 blocks now work with reusable blocks -* Fixed: Possible too many redirects when going to the wizard - -= 3.0.1 = -* Fixed: The onboarding / migration wizard sometimes did not appear -* Fixed: Auto-updating to v3 doesn't perform the migration process immediately - -= 3.0.0 = -[How To Shift From Version 2 to Version 3](https://wpstackable.com/blog/how-to-shift-from-version-2-to-version-3/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: New version 3 blocks (old version 2 blocks will still be available) -* New: Completely new way to use Stackable blocks -* New: Now very lightweight -* New: Advanced Columns which are immensely responsive (you can control how they collapse in tablet and mobile) -* New: Style blocks when they're hovered -* New: Dyanmic Breakpoints -* New: Stackable Custom Fields (premium) -* New: Use Dynamic Content in images, buttons, and other content (premium) -* New: Motion Effects (premium) -* New: Conditionally Display blocks (premium) -* New: A lot more - - -= 2.17.1 = -* Fixed: Compatibility fix with Toolset -* Fixed: Turning on Optimization settings prevents global colors from working in Divider block colors -* Fixed: When no aria-label is given in Image Box blocks, role="img" is no longer added -* Fixed: WordPress 5.8 compatibility issues -* Fixed: Removed some attributes which should not be included when copy and pasting styles - -= 2.17.0 = -[Custom Attributes and Optimization](https://wpstackable.com/blog/custom-attributes-and-optimization/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: You can now add your own Custom Attributes in Stackable blocks -* New: You can now opt to only load JS and CSS frontend files only in pages that use Stackable blocks -* Fixed: The featured image in blog posts blocks now correctly use the image's alt text -* Fixed: JS error encountered when a global color becomes null -* Fixed: Icon block's icon alignment issue when align is set to right -* Fixed: Compatibility with WP Review Pro in the blog posts block -* Fixed: Possible PHP warning when encountering a block without attributes when loading Google Fonts -* Fixed: Possible dynamic content PHP warning -* Fixed: Block error with ACF Pro when using Wysiwyg fields from Options pages as dynamic content -* Fixed: Container links should not be included when copy and pasting styles -* Fixed: Increased clamped padding in tablets from 30 to 100 -* Fixed: Updated documentation links -* Fixed: The icon's column gap did not take effect in mobile - -= 2.16.0 = -[Clickable Containers and Pagination](https://wpstackable.com/blog/clickable-containers-and-pagination/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Containers in some blocks can now become links -* New: Added pagination to the Blog Posts block (premium) -* Change: Increased the minimum PHP to 5.6 -* Fixed: Jetpack social sharing buttons won't show up anymore in the blog posts block excerpt -* Fixed: Compatibility with WP Review Pro in the blog posts block -* Fixed: The Video Popup block play button can be misaligned -* Fixed: Right and bottom Container paddings in tablet and mobile are interchanged -* Fixed: Global colors can have an error when colors are set to null -* Fixed: A vertical scrollbar can be present in the block editor - -= 2.15.3 = -* Fixed: Backward compatibility with WordPress 5.6 -* Change: Increased minimum compatibility of Stackable to at least WordPress 5.5.4 - -= 2.15.2 = -* Fixed: Constant naming issue in PHP 5.3 - -= 2.15.1 = -* Fixed: E_PARSE PHP warning -* Fixed: Deprecated warning shown in PHP 8 - -= 2.15.0 = -[Introducing Dynamic Content](https://wpstackable.com/blog/introducing-dynamic-content/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: You can now add Dynamic Content to your blocks from the Dynamic Fields toolbar button (premium) -* Fixed: Changed "Gutenberg plugin is active" notice message to be clearer -* Fixed: Team Member block image now doesn't grow bigger than its container -* Fixed: Global color reset popover width -* Fixed: Corrected custom CSS selector name in the blog post block - -= 2.14.2 = -* Fixed: Added Auto Block Recovery support for reusable blocks -* Fixed: Video Popup block play button SEO and accessibility issues -* Fixed: Possible PHP undefined variable warning in global settings -* Fixed: Image border radius now properly shows in mobile for the Feature block -* Fixed: Gradient backgrounds would overlap if there's a border in Column blocks -* Fixed: Picking a global color did not visibly show as active -* Fixed: Text highlight toolbar button now shows pressed state when active -* Fixed: Block title and Block description spacing in some blocks didn't get applied -* Fixed: Count Up and Notification block's icon alignment not working in tablet and mobile -* Fixed: Some em units did not display as active -* Fixed: Missing stretch class in Feature block -* Fixed: Disabled html editing in the Accordion block -* Fixed: Text of some blocks now are blank when you first add them so you can type immediately -* Fixed: Get the correct color from custom properties in Icon List block icons -* Fixed: Better color picker support for Neve Theme colors -* Fixed: Image Box block now properly adds min-height - -= 2.14.1 = -* Fixed: Compatibility adjustments for WordPress 5.7 -* Fixed: Advanced tab can sometimes be visible in the Styles tab - -= 2.14.0 = -[Copy and Paste Block Styles](https://wpstackable.com/blog/copy-and-paste-block-styles/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: You can now copy and paste Stackable and native block styles! (premium) -* New: Added block previews -* Fixed: Feature Grid block container image is always set to cover -* Fixed: Removed inapplicable margin/padding unit in separators -* Fixed: Accordion text content can be a bit blurry -* Fixed: Don't enqueue blank Google Fonts in Global Settings -* Fixed: Expand block text color doesn't apply in backend -* Fixed: Icon block, title alignment in tablet and mobile did not apply -* Fixed: Auto block recovery should not affect v1 blocks -* Fixed: Margins of the Icon block title won't apply - -= 2.13.4 = -* Fixed: Issue with styling duplicated blocks -* Fixed: Accordion block migration error -* Fixed: Google Fonts possible enqueueing issue - -= 2.13.3 = -* New: You can now select titles to use Pargraph tags instead of H1-H6 -* Fixed: Can't convert reusable blocks to regular blocks -* Fixed: Some inspector style conflicts -* Fixed: Nested Accordion block arrows did not rotate when opened -* Fixed: Feature Grid image shape for the column is now working -* Fixed: Clicking on the default quote icon in the Blockquote block - -= 2.13.2 = -* Fixed: Accordion SEO issue with heading levels -* Fixed: Blocks didn't re-render when some props changed -* Fixed: Don't show number spacing for some layouts - -= 2.13.1 = -* Fixed: Blog posts block load more button stopped working -* Fixed: Number box alignment does not apply for some layouts - -= 2.13.0 = -[UI Kits, Borders & Improved Performance](https://wpstackable.com/blog/ui-kits-borders/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: UI Kits, check the Design Library -* New: Border options for all blocks -* New: Inspector performance improvements -* New: Added ID anchor tags to all blocks -* New: Revamped getting started page -* New: Compatibility with WordPress 5.6 -* New: Gave the Design Library window a face lift -* Fixed: Blog Posts block now handle custom taxonomies in posts and pages correctly -* Fixed: Blog Posts block now shows the correct number of entries when specifying post IDs -* Fixed: Expand block typography can sometimes not apply in the frontend -* Fixed: Blockquote block background image tint not working -* Fixed: Global Settings will no longer show up when in content only editing mode -* Fixed: PHP error when other plugins use the plugin_action_links filter incorrectly -* Fixed: Some slider controls are stuck on the left when moving them - -= 2.12.2 = -* Fixed: WordPress 5.4 compatibility -* Fixed: Blocks without a layout tab would not show options when they're first added -* Fixed: Some image width options won't respond - -= 2.12.1 = -* Fixed: Blog Posts block filter wasn't called correctly. - -= 2.12.0 = -[Better User Interface and User Experience](https://wpstackable.com/blog/better-user-interface-and-user-experience/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: You can now pick multiple categories / taxonomies in the Blog Posts block -* New: Improved UX/UI for the block inspector and popups -* New: Speed improvements when editing block styles -* Fixed: Now easier to set left/right paddings to zero -* Fixed: Compatibility issue when coming from a Stackable beta build -* Fixed: Some disabled toggle buttons did not display as disabled -* Fixed: Unable to reset range controls when the value has been previously changed -* Fixed: Do not include post attributes when importing Blog Posts block designs -* Fixed: SEO warning about duplicate id attributes -* Fixed: A few CSS styling issues with some block layouts -* Fixed: Some JavaScript warnings - -= 2.11.4 = -* New: Redesigned responsive toggles to make them easier to use and discover -* New: Added deactivation notice when the Gutenberg plugin is detected to be activated -* New: Added settings and Go Premium links to the plugins page -* Fixed: Possible error when you previously installed the beta version and updated to the released version -* Fixed: Global colors can possibly show a warning if a theme has invalid colors -* Fixed: Footer text was in the middle of the screen in the Stackable accounts page - -= 2.11.3 = -* Fixed: Only add attribute identifiers in some native blocks if needed for Global Typography -* Fixed: Partial compatibility with Gutenberg v9.1 - -= 2.11.2 = -* Fixed: Potential PHP warnings when generating global styles - -= 2.11.1 = -* Fixed: Custom HTML block can result in invalid HTML and can cause frontend display issues -* Fixed: Global colors can possibly show a warning - -= 2.11.0 = -[Introducing Global Colors and Global Typography](https://wpstackable.com/blog/global-colors-and-global-typography/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Global Colors -* New: Global Typography -* Fixed: Speed improvements -* Fixed: Some popup settings close right away when clicking in Firefox -* Fixed: Blocksy compatibility when detecting dark colors - -= 2.10.4 = -* Fixed: Some responsive font-sizes won't apply -* Fixed: Feature grid block default title tag shows as H2 in the Block Editor - -= 2.10.3 = -* Fixed: Block errors in nested blocks -* Fixed: PHP warning undefined index page - -= 2.10.2 = -* Change: Moved Stackable admin settings inside Settings menu -* Fixed: Column blocks and other blocks that use innerBlocks do not auto-recover -* Fixed: WordPress 5.4 compatibility -* Fixed: Background color and image in Video Popup won't apply -* Fixed: Force removal of pseudo elements in the Blockquote block -* Fixed: Kadence Theme color picker issue -* Fixed: CORS error when editing in mobile or tablet if Stackable's CSS files are located in a another domain. When it happens now, live responsive editing will just not work. - -= 2.10.1 = -* Change: Added "Other" options on the bottom of the admin settings -* Fixed: Icon list text were flowing over the other lines in the editor -* Fixed: Admin spinner was always visible -* Fixed: Responsive hiding doesn't show blocks on exactly 600px and 960px widths -* Fixed: Load more button in Blog Posts block wasn't centered correctly -* Fixed: Typography mobile font size issue when inheriting clipped desktop values -* Fixed: Group into Container was producing an error -* Fixed: AdvancedToolbarControl fullwidth console warning -* Fixed: Block bottom margin placeholder now correctly shows 35 instead of 0 -* Fixed: Images with labels can produce invalid block html output -* Fixed: Console warning for alignRight when displaying block designs in the inspector -* Fixed: Added aria-label "Play" in Video Popup block -* Fixed: Max. Content Width option now gets inherited in tablet and mobile -* Fixed: Min. Block Height option now gets inherited in tablet and mobile -* Fixed: Block and column margins and paddings now get inherited in tablets -* Fixed: Some styles will now get inherited in tablets also -* Fixed: Block errors may appear and not auto-recover when using the Gutenberg plugin - -= 2.10.0 = -[Better Responsive Controls, Better List Block Icons and Low-Highlight Effect](https://wpstackable.com/blog/better-responsive-controls-better-list-block-icons-low-highlight-effect/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Better responsiveness controls: some tablet and mobile options do not automatically inherit desktop styles -* New: You can now pick any icon for the Icon List block -* New: You can now have different icons per line in the Icon List block -* New: Additional icon options in the Icon List block -* New: Icon size is now responsive in the Icon List block -* New: Added low-highlight text formatting style -* New: Now compatible with Kadence Theme global color palette -* New: You can now select the text color for highlighted text styles -* Fixed: Multisite or unfiltered HTML issue where some container styles do not reflect in the frontend -* Fixed: Icon list block didn't follow tablet and mobile column counts. -* Fixed: Blog Posts Block doesn't detect category and tag taxonomies for custom post types -* Fixed: When in white label mode, the pricing tab still appears in the settings page -* Fixed: Container blocks with small content widths have large paddings in mobile - -= 2.9.1 = -* Fixed: Columns Block uneven columns -* Fixed: PHP Rest API notice about register_rest_route used incorrectly. -* Change: Removed affiliate page -* Change: Removed main menu notification for a more unobtrusive experience - -= 2.9.0 = -[Introducing: Live Responsive Editing](https://wpstackable.com/blog/introducing-live-responsive-editing/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: Responsive Preview and Editing! -* New: Multi-block editing support -* New: Improved styling for the admin settings -* New: Complete WordPress 5.5 support -* Fixed: Separator can show a thin white line sometimes -* Fixed: Divider block alignment not being applied -* Fixed: Column gap option not working in Icon Block -* Fixed: Expand block showed wrong heading tag in the editor -* Fixed: PHP Rest API notice about register_setting used incorrectly. - -= 2.8.0 = -[Introducing: Role Manager for Gutenberg](https://wpstackable.com/blog/introducing-role-manager-for-gutenberg/?utm_source=wp-repo&utm_campaign=readme&utm_medium=link) - -* New: User Role Manager (premium) -* New: Updated URL picker -* New: Added alt text for image using title and subtitle in Image Box block. -* Fixed: Partial WordPress 5.5 compatibility -* Fixed: Responsive breakpoint for hiding in desktop. -* Fixed: Missing guided CSS rules for Card Block (premium). -* Fixed: Only show Stackable menu for users that have the manage_options capability -* Fixed: Text transform "normal" was not working as expected. -* Fixed: IconButton deprecation warnings. -* Fixed: Disabling the title can possibly make the Image Box block error out -* Fixed: Social buttons give block errors in Team Member blocks. diff --git a/src/block-components/alignment/edit.js b/src/block-components/alignment/edit.js index 355d0bc41..43de26bdd 100644 --- a/src/block-components/alignment/edit.js +++ b/src/block-components/alignment/edit.js @@ -13,7 +13,6 @@ import { useBlockAttributesContext, useBlockSetAttributesContext, useDeviceType, - useBlockContext, } from '~stackable/hooks' /** @@ -26,7 +25,7 @@ import { import { Fragment } from '@wordpress/element' import { sprintf, __ } from '@wordpress/i18n' import { addFilter } from '@wordpress/hooks' -import { select } from '@wordpress/data' +import { select, useSelect } from '@wordpress/data' const ALIGN_OPTIONS = [ { @@ -356,13 +355,14 @@ export const Edit = props => { // Add additional classes when browser is Firefox to fix alignment const userAgent = navigator?.userAgent if ( userAgent && userAgent.indexOf( 'Firefox' ) !== -1 ) { - addFilter( 'stackable.block-components.block-div.classnames', 'alignment-editor-has-polyfill', classes => { - const { - hasInnerBlocks, numInnerBlocks, innerBlocks, - } = useBlockContext() + addFilter( 'stackable.block-components.block-div.classnames', 'alignment-editor-has-polyfill', ( classes, props ) => { + // Use WP's block edit context since our useBlockContext might still be updating when a block is removed + const innerBlocks = useSelect( select => { + return select( 'core/block-editor' ).getBlock( props.clientId )?.innerBlocks || [] + }, [ props.clientId ] ) - if ( hasInnerBlocks ) { - for ( let i = 0; i < numInnerBlocks; i++ ) { + if ( innerBlocks.length > 0 ) { + for ( let i = 0; i < innerBlocks.length; i++ ) { const innerBlockClientId = innerBlocks[ i ].clientId const { blockMargin } = select( 'core/block-editor' ).getBlockAttributes( innerBlockClientId ) if ( blockMargin && ( blockMargin.top === 'auto' || blockMargin.bottom === 'auto' ) ) { diff --git a/src/block-components/block-div/deprecated.js b/src/block-components/block-div/deprecated.js index b0a7bacb8..f8f2655b8 100644 --- a/src/block-components/block-div/deprecated.js +++ b/src/block-components/block-div/deprecated.js @@ -1,4 +1,4 @@ -import { deprecationBackgrounColorOpacity } from '../helpers' +import { deprecationBackgrounColorOpacity, deprecateShadowColor } from '../helpers' import { addFilter } from '@wordpress/hooks' import { semverCompare } from '~stackable/util' @@ -29,3 +29,12 @@ export const deprecateBlockBackgroundColorOpacity = { return deprecationBackgrounColorOpacity.migrate( 'block%s' )( attributes ) }, } + +export const deprecateBlockShadowColor = { + isEligible: attributes => { + return deprecateShadowColor.isEligible( 'block%s' )( attributes ) + }, + migrate: attributes => { + return deprecateShadowColor.migrate( 'block%s' )( attributes ) + }, +} diff --git a/src/block-components/block-div/edit.js b/src/block-components/block-div/edit.js index a1bdae64b..4c1a2da73 100644 --- a/src/block-components/block-div/edit.js +++ b/src/block-components/block-div/edit.js @@ -30,6 +30,7 @@ export const Edit = props => { const { hasSizeSpacing, initialOpen, + backgroundMediaAllowVideo, } = props const hasBackground = useBlockAttributesContext( attributes => attributes.hasBackground ) const setAttributes = useBlockSetAttributesContext() @@ -69,7 +70,10 @@ export const Edit = props => { onChange={ hasBackground => setAttributes( { hasBackground } ) } initialOpen={ initialOpen === 'background' } > - + { const { @@ -87,6 +87,9 @@ export const BlockDiv = props => { backgroundUrl={ attributes.blockBackgroundMediaUrl || attributes.blockBackgroundMediaExternalUrl } backgroundUrlTablet={ attributes.blockBackgroundMediaUrlTablet || attributes.blockBackgroundMediaExternalUrlTablet } backgroundUrlMobile={ attributes.blockBackgroundMediaUrlMobile || attributes.blockBackgroundMediaExternalUrlMobile } + backgroundThumbnailUrl={ attributes.blockBackgroundMediaThumbnailUrl } + backgroundThumbnailUrlTablet={ attributes.blockBackgroundMediaThumbnailUrlTablet } + backgroundThumbnailUrlMobile={ attributes.blockBackgroundMediaThumbnailUrlMobile } backgroundColorType={ attributes.blockBackgroundColorType } { ...applyFilters( 'stackable.block-components.block-div.attributes', {}, attributes ) } > @@ -151,6 +154,9 @@ BlockDiv.Content = props => { backgroundUrl={ attributes.blockBackgroundMediaUrl || attributes.blockBackgroundMediaExternalUrl } backgroundUrlTablet={ attributes.blockBackgroundMediaUrlTablet || attributes.blockBackgroundMediaExternalUrlTablet } backgroundUrlMobile={ attributes.blockBackgroundMediaUrlMobile || attributes.blockBackgroundMediaExternalUrlMobile } + backgroundThumbnailUrl={ attributes.blockBackgroundMediaThumbnailUrl } + backgroundThumbnailUrlTablet={ attributes.blockBackgroundMediaThumbnailUrlTablet } + backgroundThumbnailUrlMobile={ attributes.blockBackgroundMediaThumbnailUrlMobile } backgroundColorType={ attributes.blockBackgroundColorType } { ...applyFilters( 'stackable.block-components.block-div.attributes.content', {}, attributes ) } /> diff --git a/src/block-components/column/attributes.js b/src/block-components/column/attributes.js index b0f0e5f77..cb6590fd2 100644 --- a/src/block-components/column/attributes.js +++ b/src/block-components/column/attributes.js @@ -12,6 +12,10 @@ export const addAttributes = attrObject => { type: 'number', default: '', }, + columnWrapDesktop: { + type: 'boolean', + default: false, + }, }, versionAdded: '3.0.0', versionDeprecated: '', diff --git a/src/block-components/column/style.js b/src/block-components/column/style.js index a1f0002dd..0d240cd5d 100644 --- a/src/block-components/column/style.js +++ b/src/block-components/column/style.js @@ -74,7 +74,7 @@ const ColumnStyles = props => { attrName="columnWidth" key="columnWidth-save-flex" responsive={ [ 'desktopTablet', 'tabletOnly', 'mobile' ] } - format="1 1 %s%" + format="var(--stk-flex-grow, 1) 1 %s%" dependencies={ [ 'columnAdjacentCount', ...dependencies, @@ -89,7 +89,7 @@ const ColumnStyles = props => { // 30% columns in tablet/mobile, they will expand to 50% 50%) // // No need to do this in the editor since it already does this. - const value = device === 'desktop' ? _value : _value.replace( /^1 1/, '0 1' ) + const value = device === 'desktop' && ! getAttribute( 'columnWrapDesktop' ) ? _value : _value.replace( /^var(--stk-flex-grow, 1) 1/, '0 1' ) const adjacentCount = getAttribute( 'columnAdjacentCount', device ) if ( adjacentCount ) { diff --git a/src/block-components/column/use-column.js b/src/block-components/column/use-column.js index 81e6f9994..a81b8240c 100644 --- a/src/block-components/column/use-column.js +++ b/src/block-components/column/use-column.js @@ -21,6 +21,7 @@ export const useColumn = () => { results[ 1 ][ clientId ] = { columnWidth: width, columnAdjacentCount: widths.length, + columnWrapDesktop: false, } return results }, [ [], {} ] ) @@ -29,6 +30,33 @@ export const useColumn = () => { } } + const onChangeDesktopWrap = ( width, widths ) => { + const clientIds = [ clientId ] + const attributes = { + [ clientId ]: { columnWidth: width }, + } + + const { parentBlock } = select( 'stackable/block-context' ).getBlockContext( clientId ) + const adjacentBlocks = parentBlock?.innerBlocks || [] + + if ( adjacentBlocks.length ) { + const columnRows = getRowsFromColumns( widths ) + + // Update multiple blocks. + widths.forEach( ( width, i ) => { + const clientId = adjacentBlocks[ i ].clientId + clientIds.push( clientId ) + attributes[ clientId ] = { + columnWidth: width, + columnAdjacentCount: columnRows.filter( n => n === columnRows[ i ] ).length, + columnWrapDesktop: true, + } + } ) + } + + dispatch( 'core/block-editor' ).updateBlockAttributes( clientIds, attributes, true ) // eslint-disable-line stackable/no-update-block-attributes + } + const onChangeTablet = ( width, widths ) => { const clientIds = [ clientId ] const attributes = { @@ -103,6 +131,7 @@ export const useColumn = () => { return { onChangeDesktop, + onChangeDesktopWrap, onChangeTablet, onChangeMobile, onResetDesktop, diff --git a/src/block-components/columns/attributes.js b/src/block-components/columns/attributes.js index 527494413..fe482cd78 100644 --- a/src/block-components/columns/attributes.js +++ b/src/block-components/columns/attributes.js @@ -17,6 +17,10 @@ export const addAttributes = attrObject => { type: 'number', default: '', }, + columnWrapDesktop: { // Only applies to desktops + type: 'boolean', + default: false, + }, }, versionAdded: '3.0.0', versionDeprecated: '', diff --git a/src/block-components/columns/edit.js b/src/block-components/columns/edit.js index f05c2f233..89c6b3a2c 100644 --- a/src/block-components/columns/edit.js +++ b/src/block-components/columns/edit.js @@ -10,6 +10,7 @@ import { getRowsFromColumns } from '../column/util' import { i18n } from 'stackable' import { AdvancedRangeControl, + AdvancedToggleControl, ColumnsWidthControl, ColumnsWidthMultiControl, ControlSeparator, @@ -39,6 +40,7 @@ export const Controls = props => { return { columnArrangementTablet: attributes.columnArrangementTablet, columnArrangementMobile: attributes.columnArrangementMobile, + columnWrapDesktop: attributes.columnWrapDesktop, } } ) const setAttributes = useBlockSetAttributesContext() @@ -71,7 +73,13 @@ export const Controls = props => { return ( <> { props.hasColumnsControl && } - { numInnerBlocks > 1 && deviceType !== 'Tablet' && deviceType !== 'Mobile' && + { numInnerBlocks > 1 && deviceType === 'Desktop' && + + } + { numInnerBlocks > 1 && deviceType !== 'Tablet' && deviceType !== 'Mobile' && ! attributes.columnWrapDesktop && { } } /> } - { numInnerBlocks > 1 && ( deviceType === 'Tablet' || deviceType === 'Mobile' ) && + { numInnerBlocks > 1 && ( deviceType === 'Tablet' || deviceType === 'Mobile' || attributes.columnWrapDesktop ) && { const columnRows = getRowsFromColumns( columnWidths ) diff --git a/src/block-components/columns/style.js b/src/block-components/columns/style.js index e206758da..5d855194a 100644 --- a/src/block-components/columns/style.js +++ b/src/block-components/columns/style.js @@ -23,6 +23,7 @@ const Styles = props => { } const { hasRowGap = true, + columnWrapDesktopSaveStyleRule = '', numColumns, } = props @@ -57,6 +58,39 @@ const Styles = props => { format="%spx" responsive="all" /> + value ? 'wrap' : undefined } + /> + value ? 'wrap' : undefined } + /> + { /* + * Desktop columns stretch to the whole width because of flex-grow, + * we need to force it to not grow or else we cannot specify a + * column that's 50% (and alone without any column beside it) + * because it will always stretch to 100%. */ + } + value ? '0' : undefined } + /> { hasRowGap && <> { @@ -8,3 +8,12 @@ export const deprecateContainerBackgroundColorOpacity = { return deprecationBackgrounColorOpacity.migrate( 'container%s' )( attributes ) }, } + +export const deprecateContainerShadowColor = { + isEligible: attributes => { + return deprecateShadowColor.isEligible( 'container%s' )( attributes ) + }, + migrate: attributes => { + return deprecateShadowColor.migrate( 'container%s' )( attributes ) + }, +} diff --git a/src/block-components/container-div/index.js b/src/block-components/container-div/index.js index a64380fb5..89fdb5e93 100644 --- a/src/block-components/container-div/index.js +++ b/src/block-components/container-div/index.js @@ -8,7 +8,7 @@ import { getUniqueBlockClass, useQueryLoopInstanceId } from '~stackable/util' import { useBlockAttributesContext } from '~stackable/hooks' import { applyFilters } from '@wordpress/hooks' -export { deprecateContainerBackgroundColorOpacity } from './deprecated' +export { deprecateContainerBackgroundColorOpacity, deprecateContainerShadowColor } from './deprecated' export const ContainerDiv = props => { const attributes = useBlockAttributesContext( attributes => { diff --git a/src/block-components/helpers/backgrounds/attributes.js b/src/block-components/helpers/backgrounds/attributes.js index 809954413..b8b2aad89 100644 --- a/src/block-components/helpers/backgrounds/attributes.js +++ b/src/block-components/helpers/backgrounds/attributes.js @@ -20,6 +20,16 @@ export const backgroundAttributes = { type: 'string', default: '', }, + backgroundMediaThumbnailId: { + stkResponsive: true, + type: 'string', + default: '', + }, + backgroundMediaThumbnailUrl: { + stkResponsive: true, + type: 'string', + default: '', + }, backgroundGradientBlendMode: { type: 'string', default: '', diff --git a/src/block-components/helpers/backgrounds/edit.js b/src/block-components/helpers/backgrounds/edit.js index 5a6b6b495..8b9a0b6b8 100644 --- a/src/block-components/helpers/backgrounds/edit.js +++ b/src/block-components/helpers/backgrounds/edit.js @@ -61,13 +61,15 @@ export const BackgroundControls = props => { getAttribute( 'backgroundMediaExternalUrl' ) || getAttribute( 'backgroundMediaExternalUrlTablet' ) || getAttribute( 'backgroundMediaExternalUrlMobile' ) - const isBackgroundVideo = () => { + const checkIsBackgroundVideo = () => { return [ getAttribute( 'backgroundMediaUrl' ), getAttribute( 'backgroundMediaUrlTablet' ), getAttribute( 'backgroundMediaUrlMobile' ) ] .filter( value => value ) .filter( urlIsVideo ) .length > 0 } + const isBackgroundVideo = checkIsBackgroundVideo() + return ( { props.hasGradient && @@ -173,7 +175,34 @@ export const BackgroundControls = props => { /> } - { hasBackgroundMedia && ! isBackgroundVideo() && + { hasBackgroundMedia && isBackgroundVideo && + { + const attrNameId = getAttributeName( `${ getAttrName( 'backgroundMediaThumbnail' ) }Id`, deviceType ) + const attrNameUrl = getAttributeName( `${ getAttrName( 'backgroundMediaThumbnail' ) }Url`, deviceType ) + const attrWidthAttribute = getAttributeName( `${ getAttrName( 'backgroundMediaThumbnail' ) }HeightAttribute`, deviceType ) + const attrHeightAttribute = getAttributeName( `${ getAttrName( 'backgroundMediaThumbnail' ) }WidthAttribute`, deviceType ) + const attrAlt = getAttributeName( `${ getAttrName( 'backgroundMediaThumbnail' ) }Alt`, deviceType ) + + const attributes = { + [ attrNameId ]: image.id, + [ attrNameUrl ]: image.url, + [ attrWidthAttribute ]: image.width || '', + [ attrHeightAttribute ]: image.height || '', + [ attrAlt ]: image.alt || '', + } + + setAttributes( attributes ) + } + } + responsive="all" + /> + } + + { hasBackgroundMedia && ! isBackgroundVideo && { + deprecatedAddAttributes( attrObject, attrNameTemplate ) + attrObject.add( { attributes: borderAttributes, attrNameTemplate, diff --git a/src/block-components/helpers/borders/deprecated.js b/src/block-components/helpers/borders/deprecated.js index da44f8b2f..e2b0d5293 100644 --- a/src/block-components/helpers/borders/deprecated.js +++ b/src/block-components/helpers/borders/deprecated.js @@ -1,3 +1,7 @@ +import { + extractRgba, rgbaToHexAlpha, getAttrNameFunction, +} from '~stackable/util' + import { addFilter } from '@wordpress/hooks' import { dispatch } from '@wordpress/data' @@ -32,3 +36,62 @@ addFilter( 'stackable.block-component.helpers.borders', 'borders', ( output, get } ) } } ) + +export const deprecatedAddAttributes = ( attrObject, attrNameTemplate = '%s' ) => { + attrObject.add( { + attributes: { + shadow: { + type: 'string', + default: '', + }, + }, + versionAdded: '3.0.0', + versionDeprecated: '3.12.11', + attrNameTemplate, + } ) +} + +export const deprecateShadowColor = { + isEligible: attrNameTemplate => attributes => { + const getAttrName = getAttrNameFunction( attrNameTemplate ) + const getAttribute = _attrName => attributes[ getAttrName( _attrName ) ] + + if ( getAttribute( 'shadow' ) || getAttribute( 'shadowHover' ) || getAttribute( 'shadowParentHover' ) ) { + return true + } + + return false + }, + migrate: attrNameTemplate => attributes => { + const getAttrName = getAttrNameFunction( attrNameTemplate ) + const getAttribute = _attrName => attributes[ getAttrName( _attrName ) ] + + const newAttributes = { + ...attributes, + } + + const shadow = getAttribute( 'shadow' ) + const shadowHover = getAttribute( 'shadowHover' ) || shadow + const shadowParentHover = getAttribute( 'shadowParentHover' ) || shadowHover + + if ( getAttribute( 'shadow' ) && getAttribute( 'shadow' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadow ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'shadow' ) ] = `${ options } ${ hex }` + } + + if ( getAttribute( 'shadowHover' ) && getAttribute( 'shadowHover' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadowHover ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'shadowHover' ) ] = `${ options } ${ hex }` + } + + if ( getAttribute( 'shadowParentHover' ) && getAttribute( 'shadowParentHover' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadowParentHover ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'shadowParentHover' ) ] = `${ options } ${ hex }` + } + + return newAttributes + }, +} diff --git a/src/block-components/index.js b/src/block-components/index.js index 84c5da742..d82e51ff3 100644 --- a/src/block-components/index.js +++ b/src/block-components/index.js @@ -19,7 +19,6 @@ export * from './icon' export * from './image' export * from './linking' export * from './link' -export * from './navigation-view' export * from './separator' export * from './style' export * from './margin-bottom' diff --git a/src/block-components/navigation-view/edit.js b/src/block-components/navigation-view/edit.js deleted file mode 100644 index 97cbfd93a..000000000 --- a/src/block-components/navigation-view/edit.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Internal dependencies - */ -import './store' -import { PanelAdvancedSettings } from '~stackable/components' - -/** - * External dependencies - */ -import classnames from 'classnames' -import { i18n } from 'stackable' - -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n' -import { - __experimentalListView as ListView, // eslint-disable-line @wordpress/no-unsafe-wp-apis - store as blockEditorStore, - InspectorControls, -} from '@wordpress/block-editor' -import { ResizableBox } from '@wordpress/components' -import { useSelect, dispatch } from '@wordpress/data' -import { addFilter } from '@wordpress/hooks' -import { useState } from '@wordpress/element' - -const MIN_HEIGHT = 38 - -export const Edit = props => { - const { clientId, isSelected } = props - const [ isResizing, setIsResizing ] = useState( false ) - - const { - height, - isOpen, - blocks, - isOnlyBlock, - } = useSelect( select => { - const { rootBlockClientId, hasInnerBlocks } = select( 'stackable/block-context' ).getBlockContext( clientId ) - const childBlocks = select( blockEditorStore ).__unstableGetClientIdsTree( rootBlockClientId ) - - return { - height: select( 'stackable/navigation-view' ).getHeight(), - isOpen: select( 'stackable/navigation-view' ).getIsOpen(), - isOnlyBlock: ! hasInnerBlocks && rootBlockClientId === clientId, - blocks: [ { - clientId: rootBlockClientId, - innerBlocks: childBlocks, - } ], - } - } ) - - // ListView is not available in WP 5.8.4 and below, don't show it if it's not available. - if ( ! ListView ) { - return null - } - - // Don't show if this is the only block. - if ( ! isSelected || isOnlyBlock ) { - return null - } - - const classNames = classnames( [ - 'stk-navigation-view__wrapper', - 'edit-post-sidebar', // So that we can get the width of the sidebar. - ], { - 'stk--is-resizing': isResizing, - } ) - - return ( - - { /** This adds the styling necessary for the inspector to allot some space for the list view. */ } - - { - setIsResizing( true ) - } } - onResizeStop={ ( e, direction, ref, d ) => { - const newHeight = height + d.height - // There may be times that the height goes negative, prevent that. - dispatch( 'stackable/navigation-view' ).updateHeight( newHeight < MIN_HEIGHT ? MIN_HEIGHT : newHeight ) - setIsResizing( false ) - } } - minHeight={ MIN_HEIGHT } - maxHeight={ 500 } - > - dispatch( 'stackable/navigation-view' ).updateIsOpen( ! isOpen ) } - > -
- { isOpen && } -
-
-
-
- ) -} - -Edit.defaultProps = { - hasToggle: false, -} - -// Don't include the list view from auto-closing. -addFilter( 'stackable.panel.tabs.panel-auto-close', 'stackable/navigation-view', ( doToggle, toggle ) => { - if ( toggle.closest( '.ugb-panel--navigation-view' ) ) { - return false - } - return doToggle -} ) diff --git a/src/block-components/navigation-view/editor.scss b/src/block-components/navigation-view/editor.scss deleted file mode 100644 index 55f678537..000000000 --- a/src/block-components/navigation-view/editor.scss +++ /dev/null @@ -1,105 +0,0 @@ -:is(.edit-post-sidebar, .edit-widgets-sidebar, .interface-complementary-area) { - --stk-inspector-navigation-view: 290px; -} - - -.stk-navigation-view__wrapper { - position: fixed !important; - bottom: 25px; - width: 280px !important; - z-index: 9; - background: #fafafa; - top: revert !important; // Prevents Learndash's styles from conflicting with the mini nav component. - .ugb-panel--navigation-view { - padding: 0 !important; - } - &:not(.stk--is-resizing) { - height: auto !important; - .ugb-panel--navigation-view.is-opened { - height: var(--stk-inspector-navigation-view); - } - } - - // Make top more apparent. - box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.2), 0 -2px 0 0 #d4d4d4; - - .components-panel__body-toggle { - padding: 12px 16px !important; - } - .components-panel__body-title { - // The title can become sticky because of how our panels are set up. - position: revert !important; - // The title when closed has side margins. - margin: 0 !important; - } - - // The list view goes out of the container. - table { - table-layout: fixed; - width: 100%; - } - - // Fixing the scrollbar. - .ugb-panel--navigation-view { - display: flex; - flex-direction: column; - > .components-panel__body-title { - margin-bottom: 0 !important; - } - .stk-panel--navigation-view__wrapper { - flex-shrink: 1; - overflow: auto; - padding: 8px; - } - } - - // The resizer should be available only when the navigation view is open. - &:has(.ugb-panel--navigation-view:not(.is-opened)) { - .components-resizable-box__handle { - display: none !important; - } - } - &:has(.ugb-panel--navigation-view.is-opened) { - .components-resizable-box__handle { - display: block !important; - } - } - - // Hide the circle resize indicator. - .components-resizable-box__handle::after { - display: none !important; - } - // The resize bar should be more visible. - .components-resizable-box__side-handle { - z-index: 4 !important; - } -} - -// Just add a padding bottom to make way for the navigation view. We do this all -// the time because FF doesn't have support for :has selector. Uncomment below -// when FF finally supports :has selector -// :is(.edit-post-sidebar, .edit-widgets-sidebar, .interface-complementary-area).ugb--has-panel-tabs:has(.ugb-panel--navigation-view) { -:is(.edit-post-sidebar, .edit-widgets-sidebar, .interface-complementary-area).ugb--has-panel-tabs { - padding-bottom: 50px; -} - -// If the navigation view is open, then add more padding to the bottom so that -// the entire inspector area is still scrollable. -:is(.edit-post-sidebar, .edit-widgets-sidebar, .interface-complementary-area).ugb--has-panel-tabs:has(.ugb-panel--navigation-view.is-opened) { - padding-bottom: var(--stk-inspector-navigation-view); - > .components-panel { - height: 100%; - > .block-editor-block-inspector { - height: 100%; - } - } -} - -// Lessen the amount of indentation of the list view in the navigation since we have a smaller area. -.stk-panel--navigation-view__wrapper { - @for $i from 1 through 20 { - .block-editor-list-view-leaf[aria-level="#{ $i }"] .block-editor-list-view__expander { - margin-left: 16px * ($i - 1); - } - } -} diff --git a/src/block-components/navigation-view/index.js b/src/block-components/navigation-view/index.js deleted file mode 100644 index f3cad67b5..000000000 --- a/src/block-components/navigation-view/index.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Internal dependencies - */ -import { Edit } from './edit' - -export const NavigationView = {} - -NavigationView.InspectorControls = Edit diff --git a/src/block-components/navigation-view/store.js b/src/block-components/navigation-view/store.js deleted file mode 100644 index 7a1a6a7d5..000000000 --- a/src/block-components/navigation-view/store.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * This store keeps the height and open state of the navigation view so that it can be - * shared across all navigation views. - */ - -/** - * WordPress dependencies - */ -import { registerStore } from '@wordpress/data' - -const DEFAULT_HEIGHT = 220 - -let height = window.localStorage.getItem( 'stk__navigation_view_height' ) -height = height ? JSON.parse( height ) : DEFAULT_HEIGHT -if ( height > 1000 ) { - height = 1000 -} - -let isOpen = window.localStorage.getItem( 'stk__navigation_view_is_open' ) -isOpen = isOpen ? JSON.parse( isOpen ) : true - -// Include all the stored state. -const DEFAULT_STATE = { - height, - isOpen, -} - -const STORE_ACTIONS = { - updateHeight: height => { - window.localStorage.setItem( 'stk__navigation_view_height', height ) - return { - type: 'UPDATE_NAVIGATION_VIEW_HEIGHT', - height, - } - }, - updateIsOpen: isOpen => { - window.localStorage.setItem( 'stk__navigation_view_is_open', isOpen ) - return { - type: 'UPDATE_NAVIGATION_VIEW_ISOPEN', - isOpen, - } - }, -} - -const STORE_SELECTORS = { - getHeight: state => state.height, - getIsOpen: state => state.isOpen, -} - -const STORE_REDUCER = ( state = DEFAULT_STATE, action ) => { - switch ( action.type ) { - case 'UPDATE_NAVIGATION_VIEW_HEIGHT': { - return { - ...state, - height: action.height, - } - } - case 'UPDATE_NAVIGATION_VIEW_ISOPEN': { - return { - ...state, - isOpen: action.isOpen, - } - } - } - return state -} - -registerStore( 'stackable/navigation-view', { - reducer: STORE_REDUCER, - actions: STORE_ACTIONS, - selectors: STORE_SELECTORS, -} ) diff --git a/src/block-components/separator/style.scss b/src/block-components/separator/style.scss index 5e7ab554a..e7f83e569 100644 --- a/src/block-components/separator/style.scss +++ b/src/block-components/separator/style.scss @@ -50,7 +50,6 @@ pointer-events: none; inset: -1px 0; // -1px on the sides might make horizontal scrollbars appear. overflow: hidden; - svg { filter: drop-shadow(0px 2px 20px rgba(153, 153, 153, 0.2)); left: 0; diff --git a/src/block-components/typography/deprecated.js b/src/block-components/typography/deprecated.js index c9c8f873a..968b06698 100644 --- a/src/block-components/typography/deprecated.js +++ b/src/block-components/typography/deprecated.js @@ -1,4 +1,6 @@ -import { getAttrNameFunction } from '~stackable/util' +import { + extractRgba, rgbaToHexAlpha, getAttrNameFunction, +} from '~stackable/util' export const deprecatedAddAttributes = ( attrObject, options ) => { const { @@ -49,3 +51,48 @@ export const deprecateTypographyGradientColor = { return newAttributes }, } + +export const deprecateTypographyShadowColor = { + isEligible: attrNameTemplate => attributes => { + const getAttrName = getAttrNameFunction( attrNameTemplate ) + const getAttribute = _attrName => attributes[ getAttrName( _attrName ) ] + + if ( getAttribute( 'textShadow' ) || getAttribute( 'textShadowHover' ) || getAttribute( 'textShadowParentHover' ) ) { + return true + } + + return false + }, + migrate: attrNameTemplate => attributes => { + const getAttrName = getAttrNameFunction( attrNameTemplate ) + const getAttribute = _attrName => attributes[ getAttrName( _attrName ) ] + + const newAttributes = { + ...attributes, + } + + const shadow = getAttribute( 'textShadow' ) + const shadowHover = getAttribute( 'textShadowHover' ) || shadow + const shadowParentHover = getAttribute( 'textShadowParentHover' ) || shadowHover + + if ( getAttribute( 'textShadow' ) && getAttribute( 'textShadow' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadowHover ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'textShadow' ) ] = `${ options } ${ hex }` + } + + if ( getAttribute( 'textShadowHover' ) && getAttribute( 'textShadowHover' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadowHover ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'textShadowHover' ) ] = `${ options } ${ hex }` + } + + if ( getAttribute( 'textShadowParentHover' ) && getAttribute( 'textShadowParentHover' ).indexOf( 'rgba' ) !== -1 ) { + const { options, color } = extractRgba( shadowParentHover ) + const hex = rgbaToHexAlpha( color ) + newAttributes[ getAttrName( 'textShadowParentHover' ) ] = `${ options } ${ hex }` + } + + return newAttributes + }, +} diff --git a/src/block-components/typography/index.js b/src/block-components/typography/index.js index 7e877769c..ec6198113 100644 --- a/src/block-components/typography/index.js +++ b/src/block-components/typography/index.js @@ -28,7 +28,7 @@ import { memo, } from '@wordpress/element' -export { deprecateTypographyGradientColor } from './deprecated' +export { deprecateTypographyGradientColor, deprecateTypographyShadowColor } from './deprecated' export const Typography = memo( forwardRef( ( props, ref ) => { const { diff --git a/src/block/accordion/deprecated.js b/src/block/accordion/deprecated.js index 1a6f40cae..962ab1715 100644 --- a/src/block/accordion/deprecated.js +++ b/src/block/accordion/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -30,7 +56,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/accordion/edit.js b/src/block/accordion/edit.js index ebbb9acdd..eba0b644f 100644 --- a/src/block/accordion/edit.js +++ b/src/block/accordion/edit.js @@ -156,7 +156,7 @@ const Edit = props => { - + diff --git a/src/block/accordion/frontend-accordion.js b/src/block/accordion/frontend-accordion.js index 327be2df5..990369d33 100644 --- a/src/block/accordion/frontend-accordion.js +++ b/src/block/accordion/frontend-accordion.js @@ -116,10 +116,24 @@ class StackableAccordion { } ) } } + + // If the accordion has an anchor ID, update the URL hash. + if ( el.open && el.getAttribute( 'id' ) && window.location.hash !== el.getAttribute( 'id' ) ) { + // use history API to update the URL hash without scrolling the page + history.pushState( {}, '', `#${ el.getAttribute( 'id' ) }` ) + } + + // If accordion is closed, remove the URL hash because if accordion is closed and the URL hash matches the ID, + // the accordion won't open if an anchor linked to the accordion was clicked. + if ( ! el.hasAttribute( 'open' ) && el.getAttribute( 'id' ) && + window.location.hash === `#${ el.getAttribute( 'id' ) }` ) { + history.pushState( {}, '', window.location.href.replace( `#${ el.getAttribute( 'id' ) }`, '' ) ) + } } ) } ) const els = document.querySelectorAll( '.stk-block-accordion' ) + const elsAnchors = {} els.forEach( el => { if ( ! el._StackableHasInitAccordion ) { el.contentEl = el.querySelector( '.stk-block-accordion__content' ) @@ -130,10 +144,31 @@ class StackableAccordion { attributeFilter: [ 'open' ], attributeOldValue: true, } ) + + if ( el.getAttribute( 'id' ) ) { + elsAnchors[ el.getAttribute( 'id' ) ] = el + } el._StackableHasInitAccordion = true } } ) + // Add window event listener only when there are accordion anchors + if ( Object.keys( elsAnchors ).length ) { + // eslint-disable-next-line @wordpress/no-global-event-listener + window.addEventListener( 'hashchange', () => { + const hash = window.location.hash.slice( 1 ) + if ( hash in elsAnchors ) { + elsAnchors[ hash ].setAttribute( 'open', '' ) + } + } ) + + // Opens the accordion on first load when there is a hash in the URL. + const hash = window.location.hash.slice( 1 ) + if ( hash in elsAnchors ) { + elsAnchors[ hash ].setAttribute( 'open', '' ) + } + } + const addWrapperHack = el => { // wrap el with div if it is inside a columns block const wrapper = document.createElement( 'div' ) diff --git a/src/block/blockquote/deprecated.js b/src/block/blockquote/deprecated.js index 5f940d480..da35e425a 100644 --- a/src/block/blockquote/deprecated.js +++ b/src/block/blockquote/deprecated.js @@ -2,9 +2,37 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + version: 2, + } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + + return newAttributes + }, + }, { // Support the new combined opacity and color. attributes: attributes( '3.11.9' ), @@ -22,6 +50,8 @@ const deprecated = [ version: 2, } + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) @@ -63,6 +93,8 @@ const deprecated = [ } } + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) diff --git a/src/block/button-group/deprecated/index.js b/src/block/button-group/deprecated/index.js index 2fde64245..55251ee12 100644 --- a/src/block/button-group/deprecated/index.js +++ b/src/block/button-group/deprecated/index.js @@ -4,9 +4,33 @@ import { Save } from '../save' import { attributes } from '../schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -22,6 +46,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -31,7 +57,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/button-group/style.js b/src/block/button-group/style.js index 92206045a..39b668d58 100644 --- a/src/block/button-group/style.js +++ b/src/block/button-group/style.js @@ -196,17 +196,6 @@ const Styles = props => { return value ? '1' : undefined } } /> - { - return value ? '100%' : undefined - } } - /> ) } diff --git a/src/block/button/deprecated.js b/src/block/button/deprecated.js index 260438d3a..e7b1f9feb 100644 --- a/src/block/button/deprecated.js +++ b/src/block/button/deprecated.js @@ -3,10 +3,36 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { - deprecateBlockBackgroundColorOpacity, deprecateButtonGradientColor, deprecateContainerBackgroundColorOpacity, + deprecateBlockBackgroundColorOpacity, deprecateButtonGradientColor, + deprecateContainerBackgroundColorOpacity, deprecateShadowColor, + deprecateContainerShadowColor, deprecateBlockShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasButtonShadow = deprecateShadowColor.isEligible( 'button%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasButtonShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + + return newAttributes + }, + }, { // Support the new combined opacity and color. attributes: attributes( '3.11.9' ), @@ -24,6 +50,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) return newAttributes }, @@ -35,6 +64,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/call-to-action/deprecated.js b/src/block/call-to-action/deprecated.js index 96da7f730..e185c0314 100644 --- a/src/block/call-to-action/deprecated.js +++ b/src/block/call-to-action/deprecated.js @@ -8,7 +8,10 @@ import { attributes } from './schema' * External dependencies */ import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, +} from '~stackable/block-components' import compareVersions from 'compare-versions' /** @@ -32,6 +35,80 @@ addFilter( 'stackable.call-to-action.save.innerClassNames', 'stackable/3.8.0', ( } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + + return [ newAttributes, innerBlocks ] + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +173,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return [ newAttributes, innerBlocks ] }, @@ -174,6 +255,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/card/deprecated.js b/src/block/card/deprecated.js index 6aece8e7e..da6cd555b 100644 --- a/src/block/card/deprecated.js +++ b/src/block/card/deprecated.js @@ -10,7 +10,9 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' import { - deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecationImageOverlayOpacity, getAlignmentClasses, + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecationImageOverlayOpacity, getAlignmentClasses, + deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' /** @@ -84,6 +86,77 @@ addFilter( 'stackable.card.save.innerClassNames', 'stackable/3.0.2', ( output, p } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ), + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return [ newAttributes, innerBlocks ] + }, + }, { // We have to repeat this because the older deprecations are not called when this triggers. attributes: attributes( '3.11.9' ), @@ -149,6 +222,8 @@ const deprecated = [ newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ), newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, @@ -228,6 +303,8 @@ const deprecated = [ newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ), newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/card/edit.js b/src/block/card/edit.js index 0f4623471..14a21aaf1 100644 --- a/src/block/card/edit.js +++ b/src/block/card/edit.js @@ -156,7 +156,7 @@ const Edit = props => { className={ blockClassNames } enableVariationPicker={ true } > - + { props.attributes.uniqueId && { renderAppender={ renderAppender } /> - + } { props.isHovered && hasInnerBlocks && } diff --git a/src/block/card/save.js b/src/block/card/save.js index aa933c98b..e6feb4420 100644 --- a/src/block/card/save.js +++ b/src/block/card/save.js @@ -74,7 +74,7 @@ export const Save = props => { > - @@ -92,7 +92,7 @@ export const Save = props => { ), props, innerClassNames ) } - + } ) } diff --git a/src/block/carousel/deprecated.js b/src/block/carousel/deprecated.js index a3df0531b..047bfa76c 100644 --- a/src/block/carousel/deprecated.js +++ b/src/block/carousel/deprecated.js @@ -1,10 +1,38 @@ -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, +} from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +48,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/carousel/edit.js b/src/block/carousel/edit.js index ff70f082d..11a03e81f 100644 --- a/src/block/carousel/edit.js +++ b/src/block/carousel/edit.js @@ -98,6 +98,7 @@ const Edit = props => { { 'stk--is-slide': carouselType === 'slide', 'stk--is-fade': carouselType === 'fade', + 'stk--infinite-scroll': carouselType === 'slide' && attributes.infiniteScroll, 'stk--hide-mobile-arrows': attributes.showArrowsOnMobile === false, 'stk--hide-mobile-dots': attributes.showDotsOnMobile === false, @@ -277,6 +278,15 @@ const Edit = props => { ] } attribute="carouselType" /> + { carouselType === 'slide' && + setAttributes( { infiniteScroll } ) } + defaultValue={ false } + help={ __( 'Only visible in the frontend.', i18n ) } + /> + } { carouselType === 'slide' && ( <> node.cloneNode( true ) ) + + this.clones.map( ( node, i ) => { + node.classList.add( `stk-slide-clone-${ i + 1 }` ) + if ( i === this.clones.length - 1 ) { + return this.sliderEl.insertBefore( node, this.slideEls[ 0 ] ) + } + + return this.sliderEl.appendChild( node ) + } ) + + // Scroll without animation to the first slide + this.sliderEl.style.scrollBehavior = 'unset' + this.sliderEl.scrollLeft = this.slideEls[ 0 ].offsetLeft + this.sliderEl.style.scrollBehavior = '' + + this.currentSlide = 1 + this.swappedSlides = 0 + } + this.updateDots() } @@ -82,7 +106,9 @@ class _StackableCarousel { const dotLabel = this.dotsEl.dataset.label this.slideEls.forEach( ( slideEl, i ) => { - if ( ! this.isRTL && i >= this.slideEls.length - this.slidesToShow + 1 ) { + if ( ! this.infiniteScroll && + ! this.isRTL && + i >= this.slideEls.length - this.slidesToShow + 1 ) { return } @@ -90,7 +116,7 @@ class _StackableCarousel { const dotEl = document.createElement( 'button' ) listEl.setAttribute( 'role', 'listitem' ) dotEl.classList.add( 'stk-block-carousel__dot' ) - dotEl.setAttribute( 'aria-label', dotLabel.replace( /%+d/, ( i + 1 ) ) ) + dotEl.setAttribute( 'aria-label', dotLabel.replace( /%+d/, i + 1 ) ) if ( this.currentSlide === i + 1 ) { dotEl.classList.add( 'stk-block-carousel__dot--active' ) } @@ -164,9 +190,19 @@ class _StackableCarousel { return maxSlides } + needToSwapCount = slide => { + return this.slidesToShow - ( this.slideEls.length - slide + 1 ) + } + nextSlide = () => { let newSlide = this.currentSlide + 1 - if ( newSlide > this.maxSlides() ) { + + if ( this.infiniteScroll && newSlide > this.maxSlides() ) { + this.swapSlides( newSlide, 'N' ) + return + } + + if ( ! this.infiniteScroll && newSlide > this.maxSlides() ) { newSlide = this.slideOffset } this.goToSlide( newSlide ) @@ -174,12 +210,61 @@ class _StackableCarousel { prevSlide = () => { let newSlide = this.currentSlide - 1 - if ( newSlide < this.slideOffset ) { + + if ( this.infiniteScroll && + ( newSlide < this.slideOffset || this.needToSwapCount( newSlide ) >= 0 ) ) { + this.swapSlides( newSlide, 'P' ) + return + } + + if ( ! this.infiniteScroll && newSlide < this.slideOffset ) { newSlide = this.maxSlides() } this.goToSlide( newSlide ) } + swapSlides = ( slide, dir ) => { + let setScrollToClone = false + if ( dir === 'N' && slide > this.slideEls.length ) { + slide = this.slideOffset + setScrollToClone = true + } else if ( dir === 'P' && slide < this.slideOffset ) { + slide = this.slideEls.length + setScrollToClone = true + } + + const needToSwap = this.needToSwapCount( slide ) + if ( needToSwap > 0 && this.swappedSlides < needToSwap ) { + // swap original and clone slides + const original = [ ...this.slideEls.slice( this.swappedSlides, needToSwap ) ] + const clones = [ ...this.clones.slice( this.swappedSlides, needToSwap ) ] + + original.map( node => this.sliderEl.insertBefore( node, this.clones[ needToSwap ] ) ) + clones.map( node => this.sliderEl.insertBefore( node, this.slideEls[ needToSwap ] ) ) + this.swappedSlides = needToSwap + } else if ( this.swappedSlides > needToSwap ) { + // unswap original and clone slides that are not needed + const _needToSwap = needToSwap > 0 ? needToSwap : 0 + const original = [ ...this.slideEls.slice( _needToSwap, this.swappedSlides ) ] + const clones = [ ...this.clones.slice( _needToSwap, this.swappedSlides ) ] + original.map( node => this.sliderEl.insertBefore( node, this.slideEls[ this.swappedSlides ] ) ) + clones.map( node => this.sliderEl.insertBefore( node, this.clones[ this.swappedSlides ] ) ) + this.swappedSlides = _needToSwap + } + + if ( setScrollToClone ) { + this.sliderEl.style.scrollBehavior = 'unset' + this.sliderEl.scrollLeft = dir === 'N' + ? this.clones[ this.currentSlide - 1 ].offsetLeft + : this.slideEls[ this.currentSlide - 1 ].offsetLeft + this.sliderEl.style.scrollBehavior = '' + } + + setTimeout( () => { + this.goToSlide( slide ) + }, 1 ) + } + goToSlide = ( slide, force = false ) => { if ( slide === this.currentSlide && ! force ) { return @@ -190,7 +275,7 @@ class _StackableCarousel { if ( this.type === 'slide' ) { this.sliderEl.scrollLeft = this.slideEls[ slide - 1 ].offsetLeft - } else { // fade + } else if ( this.type === 'fade' ) { // fade const slidePrevEl = this.slideEls[ this.currentSlide - 1 ] slidePrevEl.style.opacity = 0 @@ -250,7 +335,9 @@ class _StackableCarousel { setDotActive = slide => { this.dotEls?.forEach( ( dotEl, i ) => { - if ( slide === i + 1 ) { + if ( slide === i + 1 || + ( this.infiniteScroll && slide === 0 && i === this.dotEls.length - 1 ) ) { + // sets active dot to the last dot if slider goes to the previous slide from the first slide dotEl.classList.add( 'stk-block-carousel__dot--active' ) } else { dotEl.classList.remove( 'stk-block-carousel__dot--active' ) @@ -308,6 +395,21 @@ class _StackableCarousel { this.wheelTimeout = null }, 500 ) } + // For infinite scrolling, set the scroll position to the actual slide ( not to the clone of the slide ) + } else if ( this.infiniteScroll && e.deltaX <= -1 && this.sliderEl.scrollLeft === 0 ) { + this.sliderEl.style.scrollBehavior = 'unset' + this.sliderEl.scrollLeft = this.slideEls[ this.slideEls.length - 1 ].offsetLeft + this.sliderEl.style.scrollBehavior = '' + } else if ( this.infiniteScroll && e.deltaX >= 1 && this.sliderEl.scrollLeft >= this.clones[ 0 ].offsetLeft ) { + this.clones.every( ( clone, i ) => { + if ( this.sliderEl.scrollLeft === clone.offsetLeft ) { + this.sliderEl.style.scrollBehavior = 'unset' + this.sliderEl.scrollLeft = this.slideEls[ i ].offsetLeft + this.sliderEl.style.scrollBehavior = '' + return false + } + return true + } ) } } @@ -330,9 +432,19 @@ class _StackableCarousel { dragMouseMove = e => { // How far the mouse has been moved - const dx = e.clientX - this.initialClientX + let dx = e.clientX - this.initialClientX if ( this.type === 'slide' ) { + if ( this.infiniteScroll && this.sliderEl.scrollLeft === 0 && dx > 0 ) { + this.initialScrollLeft = this.slideEls[ this.slideEls.length - 1 ].offsetLeft + this.initialClientX = e.clientX + dx = 0 + } else if ( this.infiniteScroll && this.sliderEl.scrollLeft >= this.clones[ 0 ].offsetLeft && dx < 0 ) { + this.initialScrollLeft = this.slideEls[ 0 ].offsetLeft + this.initialClientX = e.clientX + dx = 0 + } + // Scroll the element this.sliderEl.scrollTo( { left: this.initialScrollLeft - dx, @@ -431,7 +543,8 @@ class _StackableCarousel { return } const scrollLeft = this.sliderEl.scrollLeft - const { slide } = this.slideEls.reduce( ( result, slideEl, i ) => { + const slideEls = this.infiniteScroll ? [ ...this.slideEls, ...this.clones ] : this.slideEls + let { slide } = slideEls.reduce( ( result, slideEl, i ) => { const slide = i + 1 const offsetDiff = Math.abs( slideEl.offsetLeft - scrollLeft ) if ( offsetDiff <= result.offsetDiff ) { @@ -440,6 +553,10 @@ class _StackableCarousel { return result }, { slide: 1, offsetDiff: 1000 } ) + if ( this.infiniteScroll && slide > this.slideEls.length ) { + slide -= this.slideEls.length + } + this.currentSlide = slide this.setDotActive( slide ) } diff --git a/src/block/carousel/save.js b/src/block/carousel/save.js index 43c79c511..a58d22ec3 100644 --- a/src/block/carousel/save.js +++ b/src/block/carousel/save.js @@ -47,6 +47,7 @@ export const Save = props => { { 'stk--is-slide': attributes.carouselType === '', 'stk--is-fade': attributes.carouselType === 'fade', + 'stk--infinite-scroll': attributes.carouselType === '' && attributes.infiniteScroll, 'stk--hide-mobile-arrows': attributes.showArrowsOnMobile === false, 'stk--hide-mobile-dots': attributes.showDotsOnMobile === false, diff --git a/src/block/carousel/schema.js b/src/block/carousel/schema.js index 637c25e6e..fafa0a5e0 100644 --- a/src/block/carousel/schema.js +++ b/src/block/carousel/schema.js @@ -66,6 +66,10 @@ export const attributes = ( version = VERSION ) => { default: '', stkResponsive: true, }, + infiniteScroll: { + type: 'boolean', + default: false, + }, /** * Arrows. diff --git a/src/block/column/block.json b/src/block/column/block.json index 4b4a25776..fce9089cc 100644 --- a/src/block/column/block.json +++ b/src/block/column/block.json @@ -4,7 +4,7 @@ "title": "Inner Column", "description": "A single column with advanced layout options.", "category": "stackable", - "usesContext": [ "postId", "postType", "queryId", "stackable/innerBlockOrientation" ], + "usesContext": [ "postId", "postType", "queryId", "stackable/innerBlockOrientation", "stackable/columnWrapDesktop" ], "providesContext": { "stackable/innerBlockOrientation": "innerBlockOrientation" }, diff --git a/src/block/column/deprecated.js b/src/block/column/deprecated.js index aabb51fd7..1c889b75e 100644 --- a/src/block/column/deprecated.js +++ b/src/block/column/deprecated.js @@ -15,7 +15,10 @@ import classnames from 'classnames/dedupe' */ import { addFilter } from '@wordpress/hooks' import { semverCompare } from '~stackable/util' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' // Version 3.8 added horizontal flex, we changed the stk--block-orientation-* to stk--block-horizontal-flex. addFilter( 'stackable.column.save.innerClassNames', 'stackable/3.8.0', ( output, props ) => { @@ -72,6 +75,80 @@ addFilter( 'stackable.column.save.blockClassNames', 'stackable/3.8.0', ( output, } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 4 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 4 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 4, + className: classnames( attributes.className, { + 'stk-block-column--v2': false, + 'stk-block-column--v3': false, + } ), + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return [ newAttributes, innerBlocks ] + }, + }, { // Support the new combined opacity and color. attributes: attributes( '3.11.9' ), @@ -140,6 +217,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, @@ -222,6 +301,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/columns/block.json b/src/block/columns/block.json index d68a38da9..93ff48c38 100644 --- a/src/block/columns/block.json +++ b/src/block/columns/block.json @@ -14,7 +14,8 @@ "Container" ], "providesContext": { - "stackable/innerBlockOrientation": "columnJustify" + "stackable/innerBlockOrientation": "columnJustify", + "stackable/columnWrapDesktop": "columnWrapDesktop" }, "textdomain": "stackable-ultimate-gutenberg-blocks", "stk-type": "essential", diff --git a/src/block/columns/deprecated.js b/src/block/columns/deprecated.js index 5110794c0..8b6d5db02 100644 --- a/src/block/columns/deprecated.js +++ b/src/block/columns/deprecated.js @@ -14,7 +14,10 @@ import { withVersion } from '~stackable/higher-order' */ import { addFilter } from '@wordpress/hooks' import { semverCompare } from '~stackable/util' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, +} from '~stackable/block-components' // Version 3.6.2 Deprecations, we now don't need the stk--has-column-order class. addFilter( 'stackable.columns.save.contentClassNames', 'stackable/3.8.0', ( classes, props ) => { @@ -33,6 +36,37 @@ addFilter( 'stackable.columns.save.contentClassNames', 'stackable/3.8.0', ( clas } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + const hasColumnFit = !! attributes.columnFit + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow || hasColumnFit + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + columnFit: '', + columnFitAlign: '', + columnJustify: !! attributes.columnFit ? ( attributes.columnFitAlign || 'flex-start' ) : '', + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + + return newAttributes + }, + }, { // Support the new combined opacity and color. attributes: attributes( '3.11.9' ), @@ -54,6 +88,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, @@ -76,6 +114,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/count-up/deprecated.js b/src/block/count-up/deprecated.js index a0679333e..0db656007 100644 --- a/src/block/count-up/deprecated.js +++ b/src/block/count-up/deprecated.js @@ -4,9 +4,34 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateTypographyShadowColor, deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -35,6 +63,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/countdown/deprecated.js b/src/block/countdown/deprecated.js index 79d8d301d..31e834a1a 100644 --- a/src/block/countdown/deprecated.js +++ b/src/block/countdown/deprecated.js @@ -1,5 +1,6 @@ import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' @@ -7,6 +8,31 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'digit%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'label%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'message%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -29,6 +55,8 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'digit%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'label%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'message%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -70,6 +98,8 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'digit%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'label%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'message%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -83,6 +113,8 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'digit%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'label%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'message%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, diff --git a/src/block/countdown/editor.scss b/src/block/countdown/editor.scss index d23401644..b9a9d5113 100644 --- a/src/block/countdown/editor.scss +++ b/src/block/countdown/editor.scss @@ -7,3 +7,13 @@ display: none; } } + +.ugb-panel--countdown .components-datetime__date { + :last-child { + row-gap: 8px; + column-gap: 4px; + div:nth-of-type(7) { + justify-self: auto; + } + } +} diff --git a/src/block/divider/deprecated.js b/src/block/divider/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/divider/deprecated.js +++ b/src/block/divider/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/expand/deprecated.js b/src/block/expand/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/expand/deprecated.js +++ b/src/block/expand/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/feature-grid/block.json b/src/block/feature-grid/block.json index 9bd502ae3..bb62bda42 100644 --- a/src/block/feature-grid/block.json +++ b/src/block/feature-grid/block.json @@ -5,6 +5,9 @@ "description": "Display multiple product features or services. You can use Feature Grids one after another.", "category": "stackable", "usesContext": [ "postId", "postType", "queryId" , "stackable/innerBlockOrientation" ], + "providesContext": { + "stackable/columnWrapDesktop": "columnWrapDesktop" + }, "textdomain": "stackable-ultimate-gutenberg-blocks", "stk-type": "section", "stk-demo": "https://wpstackable.com/feature-grid-block/?utm_source=welcome&utm_medium=settings&utm_campaign=view_demo&utm_content=demolink" diff --git a/src/block/feature-grid/deprecated.js b/src/block/feature-grid/deprecated.js index d4ea669e0..d863d3c19 100644 --- a/src/block/feature-grid/deprecated.js +++ b/src/block/feature-grid/deprecated.js @@ -10,7 +10,9 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' import { - deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, getResponsiveClasses, getSeparatorClasses, + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + getResponsiveClasses, getSeparatorClasses, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, } from '~stackable/block-components' /** @@ -36,6 +38,37 @@ addFilter( 'stackable.feature-grid.save.blockClassNames', 'stackable/3.1.0', ( o } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + const hasColumnFit = !! attributes.columnFit + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow || hasColumnFit + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + columnFit: '', + columnFitAlign: '', + columnJustify: !! attributes.columnFit ? ( attributes.columnFitAlign || 'flex-start' ) : '', + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -57,6 +90,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, @@ -75,6 +112,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/feature/block.json b/src/block/feature/block.json index 2177137de..422623c38 100644 --- a/src/block/feature/block.json +++ b/src/block/feature/block.json @@ -5,6 +5,9 @@ "description": "Display a product feature or a service in a large area.", "category": "stackable", "usesContext": [ "postId", "postType", "queryId" , "stackable/innerBlockOrientation" ], + "providesContext": { + "stackable/columnWrapDesktop": "columnWrapDesktop" + }, "textdomain": "stackable-ultimate-gutenberg-blocks", "stk-type": "section", "stk-demo": "https://wpstackable.com/feature-block/?utm_source=welcome&utm_medium=settings&utm_campaign=view_demo&utm_content=demolink" diff --git a/src/block/feature/deprecated.js b/src/block/feature/deprecated.js index 1b7ea594b..851ca5574 100644 --- a/src/block/feature/deprecated.js +++ b/src/block/feature/deprecated.js @@ -13,6 +13,7 @@ import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, getAlignmentClasses, getContentAlignmentClasses, getRowClasses, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, } from '~stackable/block-components' /** @@ -61,6 +62,46 @@ addFilter( 'stackable.feature.save.innerClassNames', 'stackable/3.8.0', ( output } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow || isNotV4 + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + version: 2, + } + + // Update the old column fit into flexbox + const hasOldColumnFit = !! attributes.columnFit + if ( hasOldColumnFit ) { + newAttributes = { + ...newAttributes, + columnFit: '', + columnFitAlign: '', + columnJustify: attributes.columnFitAlign, + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -91,6 +132,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, @@ -143,6 +188,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/feature/style.js b/src/block/feature/style.js index b53796300..d2c7c676c 100644 --- a/src/block/feature/style.js +++ b/src/block/feature/style.js @@ -100,7 +100,13 @@ BlockStyles.Content = props => { - + { ColumnOrderStyle && } diff --git a/src/block/feature/style.scss b/src/block/feature/style.scss index 6e6f3e60d..556e902dc 100644 --- a/src/block/feature/style.scss +++ b/src/block/feature/style.scss @@ -16,3 +16,20 @@ } } } + +.stk-block-feature { + > * > .stk-row { + display: flex; + flex-direction: row; + // We need to add wrapping here for the desktop wrapping to work. We + // need to be able to override this. + flex-wrap: var(--stk-feature-flex-wrap, wrap); + } + @include desktop { + > * > .stk-row { + // We need to add wrapping here for the desktop wrapping to work. We + // need to be able to override this. + flex-wrap: var(--stk-feature-flex-wrap, nowrap); + } + } +} diff --git a/src/block/heading/deprecated.js b/src/block/heading/deprecated.js index d72e92c9f..e8cc3be19 100644 --- a/src/block/heading/deprecated.js +++ b/src/block/heading/deprecated.js @@ -11,6 +11,7 @@ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, getResponsiveClasses, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateTypographyShadowColor, } from '~stackable/block-components' /** @@ -33,6 +34,30 @@ addFilter( 'stackable.heading.save.blockClassNames', 'stackable/3.6.1', ( output } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -50,6 +75,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -61,6 +89,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/hero/deprecated.js b/src/block/hero/deprecated.js index 30056da2f..cc43238e3 100644 --- a/src/block/hero/deprecated.js +++ b/src/block/hero/deprecated.js @@ -9,7 +9,10 @@ import { attributes } from './schema' */ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, +} from '~stackable/block-components' /** * WordPress dependencies @@ -32,6 +35,80 @@ addFilter( 'stackable.hero.save.innerClassNames', 'stackable/3.8.0', ( output, p } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTopSeparatorShadow = deprecateShadowColor.isEligible( 'topSeparator%s' )( attributes ) + const hasBottomSeparatorShadow = deprecateShadowColor.isEligible( 'bottomSeparator%s' )( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || hasTopSeparatorShadow || hasBottomSeparatorShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +173,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return newAttributes }, @@ -175,6 +256,10 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'topSeparator%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'bottomSeparator%s' )( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/horizontal-scroller/deprecated.js b/src/block/horizontal-scroller/deprecated.js index a78388812..a3d054b75 100644 --- a/src/block/horizontal-scroller/deprecated.js +++ b/src/block/horizontal-scroller/deprecated.js @@ -2,7 +2,10 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' import { addFilter } from '@wordpress/hooks' import compareVersions from 'compare-versions' @@ -19,6 +22,27 @@ addFilter( 'stackable.horizontal-scroller.save.contentClassNames', 'stackable/3_ } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -34,6 +58,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -43,7 +69,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/icon-box/deprecated.js b/src/block/icon-box/deprecated.js index e58a4e675..7a6bc048e 100644 --- a/src/block/icon-box/deprecated.js +++ b/src/block/icon-box/deprecated.js @@ -2,9 +2,48 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -35,6 +74,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -87,6 +128,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, diff --git a/src/block/icon-button/deprecated.js b/src/block/icon-button/deprecated.js index 1a2a3555f..9bf89108c 100644 --- a/src/block/icon-button/deprecated.js +++ b/src/block/icon-button/deprecated.js @@ -3,10 +3,36 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { - deprecateBlockBackgroundColorOpacity, deprecateButtonGradientColor, deprecateContainerBackgroundColorOpacity, + deprecateBlockBackgroundColorOpacity, deprecateButtonGradientColor, + deprecateContainerBackgroundColorOpacity, deprecateShadowColor, + deprecateContainerShadowColor, deprecateBlockShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasButtonShadow = deprecateShadowColor.isEligible( 'button%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasButtonShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +50,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) return newAttributes }, @@ -35,6 +64,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateButtonGradientColor.migrate( 'button%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'button%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/icon-label/deprecated.js b/src/block/icon-label/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/icon-label/deprecated.js +++ b/src/block/icon-label/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/icon-list-item/deprecated.js b/src/block/icon-list-item/deprecated.js new file mode 100644 index 000000000..2c6633b1a --- /dev/null +++ b/src/block/icon-list-item/deprecated.js @@ -0,0 +1,28 @@ +import { Save } from './save' +import { attributes } from './schema' + +import { withVersion } from '~stackable/higher-order' +import { deprecateBlockShadowColor, deprecateContainerShadowColor } from '~stackable/block-components' + +const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, +] +export default deprecated diff --git a/src/block/icon-list-item/index.js b/src/block/icon-list-item/index.js index deb186ac8..ce8886c3f 100644 --- a/src/block/icon-list-item/index.js +++ b/src/block/icon-list-item/index.js @@ -11,6 +11,7 @@ import save from './save' import schema from './schema' import metadata from './block.json' import example from './example' +import deprecated from './deprecated' export const settings = { ...metadata, @@ -23,6 +24,7 @@ export const settings = { example, edit, save, + deprecated, merge( attributes, attributesToMerge ) { return { ...attributes, diff --git a/src/block/icon-list/deprecated/index.js b/src/block/icon-list/deprecated/index.js index 07ae044f0..3339592e6 100644 --- a/src/block/icon-list/deprecated/index.js +++ b/src/block/icon-list/deprecated/index.js @@ -4,6 +4,7 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' import { createBlock } from '@wordpress/blocks' @@ -66,6 +67,65 @@ const getEquivalentIconSize = iconSize => { } const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + supports: { + anchor: true, + spacing: true, + __unstablePasteTextInline: true, + __experimentalSelector: 'ol,ul', + __experimentalOnMerge: true, + }, + migrate: ( attributes, innerBlocks ) => { + let newAttributes = { ...attributes } + const { + text, icons, iconSize, ordered, iconGap, + } = attributes + + const _iconSize = iconSize ? iconSize : 1 + const _iconGap = iconGap ? iconGap : 0 + + newAttributes = { + ...newAttributes, + listFullWidth: false, + iconVerticalAlignment: 'baseline', + iconGap: _iconGap + 4, // Our gap is smaller now. + iconSize: ordered + ? getEquivalentFontSize( _iconSize ) + : getEquivalentIconSize( _iconSize ), + } + + if ( ! text ) { + const block = createBlock( 'stackable/icon-list-item' ) + innerBlocks = [ block ] + } else { + const contents = textToArray( text ) + const blocks = contents.map( ( content, index ) => { + return createBlock( 'stackable/icon-list-item', { + text: content, + icon: getUniqueIcon( icons, index ), + } ) + } ) + innerBlocks = blocks + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return [ newAttributes, innerBlocks ] + }, + }, { attributes: attributes( '3.12.8' ), save: withVersion( '3.12.8' )( Save ), @@ -112,6 +172,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, @@ -133,6 +195,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -144,6 +208,8 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, diff --git a/src/block/icon/deprecated.js b/src/block/icon/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/icon/deprecated.js +++ b/src/block/icon/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/image-box/deprecated.js b/src/block/image-box/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/image-box/deprecated.js +++ b/src/block/image-box/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/image/deprecated.js b/src/block/image/deprecated.js index e06640083..04e709ee1 100644 --- a/src/block/image/deprecated.js +++ b/src/block/image/deprecated.js @@ -4,6 +4,7 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecationImageOverlayOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, } from '~stackable/block-components' import { RichText } from '@wordpress/block-editor' @@ -58,6 +59,30 @@ addFilter( 'stackable.image.save.wrapper', 'stackable/image-caption-wrapper', ( } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasImageShadow = deprecateShadowColor.isEligible( 'image%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasImageShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) + + return newAttributes + }, + }, { attributes: attributes( '3.12.6' ), save: withVersion( '3.12.6' )( Save ), @@ -82,6 +107,9 @@ const deprecated = [ newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ) newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) return newAttributes }, @@ -93,6 +121,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecationImageOverlayOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/map/deprecated.js b/src/block/map/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/map/deprecated.js +++ b/src/block/map/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/notification/deprecated.js b/src/block/notification/deprecated.js index 59afe1fcf..843109e86 100644 --- a/src/block/notification/deprecated.js +++ b/src/block/notification/deprecated.js @@ -9,7 +9,10 @@ import { attributes } from './schema' */ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' /** * WordPress dependencies @@ -32,6 +35,76 @@ addFilter( 'stackable.notification.save.innerClassNames', 'stackable/3.8.0', ( o } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +169,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -174,6 +249,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/number-box/deprecated.js b/src/block/number-box/deprecated.js index c7953dcf3..d66bfcf0e 100644 --- a/src/block/number-box/deprecated.js +++ b/src/block/number-box/deprecated.js @@ -4,9 +4,32 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateTypographyGradientColor, deprecationBackgrounColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasShapeShadow = deprecateShadowColor.isEligible( 'shape%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasShapeShadow + }, + migrate: attributes => { + let newAttributes = deprecateBlockBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecationBackgrounColorOpacity.migrate( 'shape%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'shape%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +43,9 @@ const deprecated = [ let newAttributes = deprecateBlockBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecationBackgrounColorOpacity.migrate( 'shape%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'shape%s' )( newAttributes ) return newAttributes }, }, @@ -32,6 +58,9 @@ const deprecated = [ let newAttributes = deprecateBlockBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecationBackgrounColorOpacity.migrate( 'shape%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'shape%s' )( newAttributes ) return newAttributes }, }, diff --git a/src/block/posts/deprecated.js b/src/block/posts/deprecated.js index 282d61d17..88bb28a62 100644 --- a/src/block/posts/deprecated.js +++ b/src/block/posts/deprecated.js @@ -10,7 +10,9 @@ import { Save } from './save' import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' import { - Image, deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, deprecationImageOverlayOpacity, + Image, deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateTypographyGradientColor, deprecationImageOverlayOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, } from '~stackable/block-components' /** @@ -39,6 +41,68 @@ addFilter( 'stackable.posts.title.readmore-content', 'stackable/3_0_2', addUndef addFilter( 'stackable.posts.feature-image', 'stackable/3_6_3', determineFeatureImage ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasImageShadow = deprecateShadowColor.isEligible( 'image%s' )( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || hasImageShadow || isNotV4 + }, + migrate: attributes => { + let newAttributes = { + ...attributes, + version: 2, + } + + // We used to have an "Inner content width" which is now just the block width + const hasOldInnerContentWidth = attributes.innerBlockContentWidth || attributes.innerBlockContentWidthTablet || attributes.innerBlockContentWidthMobile + + if ( hasOldInnerContentWidth ) { + newAttributes = { + ...newAttributes, + innerBlockContentWidth: '', + innerBlockContentWidthTablet: '', + innerBlockContentWidthMobile: '', + innerBlockContentWidthUnit: 'px', + innerBlockContentWidthUnitTablet: '', + innerBlockContentWidthUnitMobile: '', + blockWidth: attributes.innerBlockContentWidth, + blockWidthTablet: attributes.innerBlockContentWidthTablet, + blockWidthMobile: attributes.innerBlockContentWidthMobile, + blockWidthUnit: attributes.innerBlockContentWidthUnit, + blockWidthUnitTablet: attributes.innerBlockContentWidthUnitTablet, + blockWidthUnitMobile: attributes.innerBlockContentWidthUnitMobile, + innerBlockAlign: '', + innerBlockAlignTablet: '', + innerBlockAlignMobile: '', + blockHorizontalAlign: attributes.innerBlockAlign, + blockHorizontalAlignTablet: attributes.innerBlockAlignTablet, + blockHorizontalAlignMobile: attributes.innerBlockAlignMobile, + } + } + + newAttributes = deprecationImageOverlayOpacity.migrate( newAttributes ) + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + + newAttributes = deprecateTypographyGradientColor.migrate( 'title%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'category%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'excerpt%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'meta%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'readmore%s' )( newAttributes ) + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) + + return newAttributes + }, + }, { // Support the new combined opacity and color. // We have to repeat this because the older deprecations are not called when this triggers. @@ -110,6 +174,10 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'meta%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'readmore%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) + return newAttributes }, }, @@ -185,6 +253,10 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'meta%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'readmore%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'image%s' )( newAttributes ) + return newAttributes }, }, diff --git a/src/block/posts/style.js b/src/block/posts/style.js index e801a728c..59ca69d54 100644 --- a/src/block/posts/style.js +++ b/src/block/posts/style.js @@ -318,6 +318,28 @@ const Styles = props => { enabledCallback={ () => blockStyle === 'list' } dependencies={ [ 'imageWidthUnit', 'className' ] } /> + { + return ( getAttribute( 'imageWidthUnit' ) === '%' || + getAttribute( 'imageWidthUnitTablet' ) === '%' ) && + [ 'horizontal', 'horizontal-2' ].includes( blockStyle ) && + getAttribute( 'imageHasLink' ) + } } + dependencies={ [ + 'imageWidthUnitTablet', + 'imageWidthUnit', + 'imageHasLink', + 'className', + ] } + /> ) } @@ -356,6 +378,8 @@ PostsStyles.defaultProps = { version: '', } +// Note: Styles do not get rerendered on editor refresh. Rerender only happens when margin bottom is clicked on. +// Ideally should rerender on editor refresh. PostsStyles.Content = props => { if ( props.attributes.generatedCss ) { return @@ -363,9 +387,20 @@ PostsStyles.Content = props => { const blockStyle = getBlockStyle( variations, props.attributes.className ) + const enableWidth = () => { + if ( [ 'horizontal', 'horizontal-2' ].includes( blockStyle?.name ) ) { + if ( props.attributes.imageHasLink ) { + return false + } + return true + } + return true + } + const imageOptions = { ..._imageOptions, enableHeight: ! [ 'portfolio' ].includes( blockStyle?.name ), + enableWidth: enableWidth(), ...( [ 'list' ].includes( blockStyle?.name ) && props.attributes.imageHasLink ? { selector: `${ itemSelector } .stk-block-posts__image-link`, widthStyleRule: 'flexBasis' } : {} ), } diff --git a/src/block/price/deprecated.js b/src/block/price/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/price/deprecated.js +++ b/src/block/price/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/pricing-box/deprecated.js b/src/block/pricing-box/deprecated.js index 7cd380348..aa0e1113f 100644 --- a/src/block/pricing-box/deprecated.js +++ b/src/block/pricing-box/deprecated.js @@ -9,8 +9,10 @@ import { attributes } from './schema' */ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' - +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' /** * WordPress dependencies */ @@ -32,6 +34,76 @@ addFilter( 'stackable.pricing-box.save.innerClassNames', 'stackable/3.8.0', ( ou } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +168,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -174,6 +248,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/progress-bar/deprecated.js b/src/block/progress-bar/deprecated.js index a0679333e..0db656007 100644 --- a/src/block/progress-bar/deprecated.js +++ b/src/block/progress-bar/deprecated.js @@ -4,9 +4,34 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateTypographyShadowColor, deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -35,6 +63,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/progress-circle/deprecated.js b/src/block/progress-circle/deprecated.js index a0679333e..0db656007 100644 --- a/src/block/progress-circle/deprecated.js +++ b/src/block/progress-circle/deprecated.js @@ -4,9 +4,34 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateTypographyShadowColor, deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -35,6 +63,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/separator/deprecated.js b/src/block/separator/deprecated.js index 0914b7646..329d461cd 100644 --- a/src/block/separator/deprecated.js +++ b/src/block/separator/deprecated.js @@ -2,9 +2,35 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasSeparatorShadow = deprecateShadowColor.isEligible( 'separator%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasSeparatorShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'separator%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +46,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'separator%s' )( newAttributes ) return newAttributes }, @@ -29,7 +58,10 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'separator%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/spacer/deprecated.js b/src/block/spacer/deprecated.js index 0914b7646..395ffb36b 100644 --- a/src/block/spacer/deprecated.js +++ b/src/block/spacer/deprecated.js @@ -2,9 +2,33 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +55,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/subtitle/deprecated.js b/src/block/subtitle/deprecated.js index a0679333e..a0c6c4240 100644 --- a/src/block/subtitle/deprecated.js +++ b/src/block/subtitle/deprecated.js @@ -4,9 +4,34 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateTypographyShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -35,6 +63,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/tab-content/deprecated.js b/src/block/tab-content/deprecated.js index a3df0531b..57fd88d26 100644 --- a/src/block/tab-content/deprecated.js +++ b/src/block/tab-content/deprecated.js @@ -1,10 +1,34 @@ -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +44,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, diff --git a/src/block/tab-content/edit.js b/src/block/tab-content/edit.js index 5a8e44d59..48452bc12 100644 --- a/src/block/tab-content/edit.js +++ b/src/block/tab-content/edit.js @@ -32,7 +32,6 @@ import { Transform, getContentAlignmentClasses, } from '~stackable/block-components' -import { useBlockContext } from '~stackable/hooks' import { withBlockAttributeContext, withBlockWrapper, @@ -45,6 +44,10 @@ import { import { compose } from '@wordpress/compose' import { __ } from '@wordpress/i18n' import { useSetActiveTabContext } from '../tabs/with-active-tab' +import { + useSelect, +} from '@wordpress/data' + const ALLOWED_INNER_BLOCKS = [ 'stackable/column' ] @@ -75,8 +78,17 @@ const Edit = props => { const rowClass = getRowClasses( props.attributes ) const separatorClass = getSeparatorClasses( props.attributes ) const blockAlignmentClass = getAlignmentClasses( props.attributes ) - const { innerBlocks, hasInnerBlocks } = useBlockContext() const [ columnProviderValue, columnTooltipClass ] = ColumnInnerBlocks.useContext() + const { innerBlocks, hasInnerBlocks } = useSelect( + select => { + const innerBlocks = select( 'core/block-editor' ).getBlock( clientId ).innerBlocks + return { + innerBlocks: innerBlocks, + hasInnerBlocks: innerBlocks.length > 0, + } + }, + [ clientId ] + ) const blockClassNames = classnames( [ className, diff --git a/src/block/tab-labels/block-styles.js b/src/block/tab-labels/block-styles.js index 329ce9a97..4e676afcd 100644 --- a/src/block/tab-labels/block-styles.js +++ b/src/block/tab-labels/block-styles.js @@ -71,6 +71,18 @@ const ATTRIBUTES_TO_CLEAR = { activeTabIconColor1: '', tabIconColor1Hover: '', activeTabIconColor1Hover: '', + tabBorderRadius2: { + top: '', + right: '', + bottom: '', + left: '', + }, + blockBorderRadius2: { + top: '', + right: '', + bottom: '', + left: '', + }, } export const blockStyles = [ diff --git a/src/block/tab-labels/deprecated.js b/src/block/tab-labels/deprecated.js index 5c6d9e3cf..6f6cca19d 100644 --- a/src/block/tab-labels/deprecated.js +++ b/src/block/tab-labels/deprecated.js @@ -1,5 +1,6 @@ import { deprecateBlockBackgroundColorOpacity, deprecateButtonGradientColor, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateBlockShadowColor, deprecateContainerShadowColor, deprecateShadowColor, deprecateTypographyShadowColor, } from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' @@ -7,6 +8,36 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTabButtonShadow = deprecateShadowColor.isEligible( 'tab%s' )( attributes ) + const hasActiveTabButtonShadow = deprecateShadowColor.isEligible( 'activeTab%s' )( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( 'tab%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow || hasTabButtonShadow || hasActiveTabButtonShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'tab%s' )( newAttributes ) + newAttributes = deprecateButtonGradientColor.migrate( 'tab%s' )( newAttributes ) + newAttributes = deprecateButtonGradientColor.migrate( 'activeTab%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'tab%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'activeTab%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -28,6 +59,11 @@ const deprecated = [ newAttributes = deprecateTypographyGradientColor.migrate( 'tab%s' )( newAttributes ) newAttributes = deprecateButtonGradientColor.migrate( 'tab%s' )( newAttributes ) newAttributes = deprecateButtonGradientColor.migrate( 'activeTab%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'tab%s' )( newAttributes ) + newAttributes = deprecateShadowColor.migrate( 'activeTab%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/tab-labels/edit.js b/src/block/tab-labels/edit.js index f6c2ed56d..cf46c2be4 100644 --- a/src/block/tab-labels/edit.js +++ b/src/block/tab-labels/edit.js @@ -34,6 +34,8 @@ import classnames from 'classnames' import { InspectorTabs, InspectorLayoutControls, + InspectorAdvancedControls, + AdvancedTextControl, AdvancedToggleControl, AdvancedRangeControl, InspectorStyleControls, @@ -50,20 +52,23 @@ import { withBlockWrapper, withQueryLoopContext, } from '~stackable/higher-order' -import { getBlockStyle, useBlockContext } from '~stackable/hooks' -import { cloneDeep } from 'lodash' +import { getBlockStyle } from '~stackable/hooks' +import { cloneDeep, kebabCase } from 'lodash' /** * WordPress dependencies */ -import { __ } from '@wordpress/i18n' +import { __, sprintf } from '@wordpress/i18n' import { - useRef, useCallback, createRef, + useRef, useCallback, createRef, useState, useEffect, } from '@wordpress/element' -import { dispatch } from '@wordpress/data' +import { dispatch, useSelect } from '@wordpress/data' import { compose } from '@wordpress/compose' import { BlockControls } from '@wordpress/block-editor' -import { ToolbarGroup, ToolbarButton } from '@wordpress/components' +import { + ToolbarGroup, ToolbarButton, + BaseControl as GutBaseControl, +} from '@wordpress/components' import { getBlockFromExample } from '@wordpress/blocks' // These are the style names (in block-styles.js) that are only available if the @@ -107,7 +112,16 @@ const Edit = props => { const [ activeTab, setActiveTab, , setTemplateLock ] = useSetActiveTabContext() const textClasses = getTypographyClasses( props.attributes ) const blockAlignmentClass = getAlignmentClasses( props.attributes ) - const { parentBlock } = useBlockContext() + const { parentBlock } = useSelect( + select => { + const parentClientId = select( 'core/block-editor' ).getBlockRootClientId( clientId ) + const parentBlock = select( 'core/block-editor' ).getBlock( parentClientId ) + return { + parentBlock, + } + }, + [ clientId ] + ) const getRef = useGetRef() @@ -276,6 +290,12 @@ const Edit = props => { } } ) + const [ tabLabels, setTabLabels ] = useState( props.attributes.tabLabels ) + + useEffect( () => { + setTabLabels( props.attributes.tabLabels ) + }, [ props.attributes.tabLabels ] ) + const blockClassNames = classnames( [ className, 'stk-block-tab-labels', @@ -583,6 +603,46 @@ const Edit = props => { + + + + + { tabLabels.map( ( tab, index ) => ( + { + const updatedLabels = cloneDeep( tabLabels ) + updatedLabels[ index ].anchor = value + setTabLabels( updatedLabels ) + + if ( ! value ) { + setAttributes( { tabLabels: updatedLabels } ) + } + } } + onBlur={ () => { + const updatedLabels = tabLabels + if ( updatedLabels[ index ].anchor ) { + updatedLabels[ index ].anchor = kebabCase( updatedLabels[ index ].anchor ) + setAttributes( { tabLabels: updatedLabels } ) + } + } } + /> + ) ) } + + + + diff --git a/src/block/tab-labels/save.js b/src/block/tab-labels/save.js index cc08f150f..a89976e5c 100644 --- a/src/block/tab-labels/save.js +++ b/src/block/tab-labels/save.js @@ -65,6 +65,7 @@ export const Save = props => { className="stk-block-tabs__tab" role="tab" key={ index } + id={ props.attributes.tabLabels[ index ].anchor ?? undefined } > { props.attributes.showIcon && ( { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( 'title%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -54,6 +78,8 @@ const deprecated = [ newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'title%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -66,6 +92,8 @@ const deprecated = [ let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( 'title%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/table-of-contents/edit.js b/src/block/table-of-contents/edit.js index bef23aeef..7f2d54f10 100644 --- a/src/block/table-of-contents/edit.js +++ b/src/block/table-of-contents/edit.js @@ -4,11 +4,7 @@ import { TableOfContentsStyles } from './style' import { generateAnchor } from './autogenerate-anchors' import TableOfContentsList from './table-of-contents-list' -import { - getAllBlocks, - getUpdatedHeadings, - linearToNestedHeadingList, -} from './util' +import { getUpdatedHeadings, linearToNestedHeadingList } from './util' /*** * External dependencies @@ -155,7 +151,7 @@ const Edit = props => { const { getEditorDom } = useSelect( 'stackable/editor-dom' ) const [ headings, setHeadings ] = useState( attributes.headings ) const { getEditedPostContent } = useSelect( 'core/editor' ) - const { getBlocks } = useSelect( 'core/block-editor' ) + const { getBlock } = useSelect( 'core/block-editor' ) // This is used by the generate anchors button to force the update of heading data. const [ forceUpdateHeadings, setForceUpdateHeadings ] = useState( 0 ) @@ -318,23 +314,67 @@ const Edit = props => { 'ugb/heading': 'title', } ) - const supportedBlocks = Object.keys( BLOCK_ANCHOR_CONTENT ) - const blocks = getAllBlocks( getBlocks ).filter( block => supportedBlocks.includes( block.name ) ) + const blocks = headings.map( heading => { + const block = getBlock( heading.clientId ) + if ( block ) { + return block + } - blocks.map( block => { - const content = block.attributes[ BLOCK_ANCHOR_CONTENT[ block.name ] ] - const { anchor } = block.attributes - if ( ! anchor && content ) { - const anchor = generateAnchor( content, blocks ) - // This side-effect should not create an undo level. - block.attributes.anchor = anchor !== null ? anchor : uniqueId( 'stk-' ) + // If we cannot find the clientId, it means it changed (or the + // editor was refreshed and clientIds changed), try looking for it + // in other ways. + const editorDom = getEditorDom() + const blockTypes = Object.keys( BLOCK_ANCHOR_CONTENT ) + // Look for the element with the same text + const blockTypeSelector = blockTypes.map( type => { + return `[data-type="${ type }"]` + } ).join( ',' ) + + let clientId = null + + // Try looking using the anchor. + if ( heading.anchor ) { + let blockEl = editorDom.querySelector( `[id="${ heading.anchor }"]` ) + if ( blockEl ) { + blockEl = blockEl.closest( blockTypeSelector ) + clientId = blockEl?.getAttribute( 'data-block' ) + } + } + // Look for the element with the same text + if ( ! clientId && heading.content ) { + Array.from( editorDom.querySelectorAll( blockTypeSelector ) || [] ).some( blockEl => { + if ( heading.content === blockEl.textContent ) { + clientId = blockEl.getAttribute( 'data-block' ) + return true + } + return false + } ) + } + if ( clientId ) { + return getBlock( clientId ) + } + return null + } ) + + blocks.forEach( block => { + if ( block ) { + const content = block.attributes[ BLOCK_ANCHOR_CONTENT[ block.name ] ] + const { anchor } = block.attributes + if ( ! anchor && content ) { + const anchor = generateAnchor( content, blocks ) + + // This side-effect should not create an undo level. + dispatch( 'core/block-editor' ).__unstableMarkNextChangeAsNotPersistent() + dispatch( 'core/block-editor' ).updateBlockAttributes( block.clientId, { + anchor: anchor !== null ? anchor : uniqueId( 'stk-' ), + } ) + } } - return block } ) // Sometimes this doesn't trigger the headings to be updated. setForceUpdateHeadings( forceUpdateHeadings + 1 ) - }, [] ) + }, [ headings ] ) // When generating an example block preview, just show a list of headings. // @see example.js diff --git a/src/block/table-of-contents/util.js b/src/block/table-of-contents/util.js index 61a576893..c62f85e23 100644 --- a/src/block/table-of-contents/util.js +++ b/src/block/table-of-contents/util.js @@ -39,7 +39,9 @@ const convertBlockToHeadingObject = block => { // Fix things. heading.tag = heading.level - heading.content = striptags( heading.content ) + // In WP 6.5, the content is now an object and not just a string. + const textContent = typeof heading.content === 'string' ? heading.content : heading.content?.text + heading.content = striptags( textContent || '' ) return heading } @@ -155,6 +157,14 @@ export const getHeadingsFromEditorDom = editorDom => { const headingBlocks = editorDom.querySelectorAll( query ) return [ ...headingBlocks ].reduce( ( headings, heading ) => { + // Do not include blocks which are part of the Site Editor heading and footer. + const template = heading.closest( '[data-type="core/template-part"]' ) + if ( template ) { + if ( template.tagName === 'HEADER' || template.tagName === 'FOOTER' ) { + return headings + } + } + const clientId = heading.getAttribute( 'data-block' ) const block = select( 'core/block-editor' ).getBlock( clientId ) if ( block ) { diff --git a/src/block/tabs/deprecated.js b/src/block/tabs/deprecated.js index 5a76247f3..85ccf8730 100644 --- a/src/block/tabs/deprecated.js +++ b/src/block/tabs/deprecated.js @@ -1,10 +1,45 @@ -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + const hasContainerOpacity = deprecateContainerBackgroundColorOpacity.isEligible( attributes ) + if ( hasContainerOpacity ) { + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + } + + const hasBlockOpacity = deprecateBlockBackgroundColorOpacity.isEligible( attributes ) + if ( hasBlockOpacity ) { + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + } + + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return { + ...newAttributes, + equalTabHeight: true, + } + }, + }, { attributes: attributes( '3.12.3' ), migrate: attributes => { @@ -21,6 +56,9 @@ const deprecated = [ newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) } + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + return { ...newAttributes, equalTabHeight: true, @@ -43,6 +81,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, diff --git a/src/block/tabs/edit.js b/src/block/tabs/edit.js index 00cf746fe..bcf064ae3 100644 --- a/src/block/tabs/edit.js +++ b/src/block/tabs/edit.js @@ -38,7 +38,6 @@ import { ColumnsControl, } from '~stackable/block-components' import { InnerBlocks } from '@wordpress/block-editor' -import { useBlockContext } from '~stackable/hooks' import { withBlockAttributeContext, withBlockWrapperIsHovered, @@ -49,7 +48,9 @@ import { * WordPress dependencies */ import { compose } from '@wordpress/compose' -import { dispatch, select } from '@wordpress/data' +import { + dispatch, select, useSelect, +} from '@wordpress/data' import { __, sprintf } from '@wordpress/i18n' const TEMPLATE = [ @@ -92,7 +93,17 @@ const Edit = props => { const separatorClass = getSeparatorClasses( props.attributes ) const blockAlignmentClass = getAlignmentClasses( props.attributes ) - const { innerBlocks, hasInnerBlocks } = useBlockContext() + + const { innerBlocks, hasInnerBlocks } = useSelect( + select => { + const innerBlocks = select( 'core/block-editor' ).getBlock( clientId ).innerBlocks + return { + innerBlocks, + hasInnerBlocks: innerBlocks.length > 0, + } + }, + [ clientId ] + ) let tabContentBlock = null, tabLabelsBlock = null diff --git a/src/block/tabs/frontend-tabs.js b/src/block/tabs/frontend-tabs.js index 67022abe7..d47232da4 100644 --- a/src/block/tabs/frontend-tabs.js +++ b/src/block/tabs/frontend-tabs.js @@ -1,3 +1,4 @@ +/* eslint-disable @wordpress/no-global-event-listener */ /** * WordPress dependencies */ @@ -9,6 +10,7 @@ class _StackableTabs { this.parentEl = el this.getDefaultState() this.initTabs() + this.initWindowEventListeners() } getDefaultState = () => { @@ -17,12 +19,28 @@ class _StackableTabs { this.tabList = this.parentEl.querySelector( '[role="tablist"]' ) this.tabs = this.parentEl.querySelector( '.stk-block-tab-labels__wrapper' ).children this.contents = this.parentEl.querySelector( '.stk-block-tab-content > .stk-inner-blocks' ).children + + this.customTabAnchors = {} } initTabs = () => { + const tabAnchors = [] // Set Aria attributes - Array.from( this.tabs ).forEach( ( tab, index ) => { - tab.setAttribute( 'id', `stk-block-tab-label-${ this.uniqueId }-${ index + 1 }` ) + Array.from( this.tabs ).forEach( ( tab, index, tabs ) => { + let isCustomAnchor = true + if ( tab.getAttribute( 'id' ) ) { + this.customTabAnchors[ tab.getAttribute( 'id' ) ] = { index: index + 1, tab } + } else { + tab.setAttribute( 'id', `stk-block-tab-label-${ this.uniqueId }-${ index + 1 }` ) + isCustomAnchor = false + } + tabAnchors.push( tab.getAttribute( 'id' ) ) + + if ( window.location.hash === `#${ tab.getAttribute( 'id' ) }` ) { + tabs[ this.activeTab - 1 ].classList.remove( 'stk-block-tabs__tab--active' ) + this.activeTab = index + 1 + } + tab.setAttribute( 'aria-controls', `stk-block-tab-content-${ this.uniqueId }-${ index + 1 }` ) tab.setAttribute( 'aria-selected', this.activeTab === ( index + 1 ) ? 'true' : 'false' ) tab.setAttribute( 'tabindex', this.activeTab === ( index + 1 ) ? '0' : '-1' ) @@ -34,13 +52,17 @@ class _StackableTabs { // Add the click event. tab.addEventListener( 'click', () => { this.changeTab( index + 1 ) + if ( isCustomAnchor && window.location.hash !== `#${ tab.getAttribute( 'id' ) }` ) { + // Update URL hash without scrolling + history.pushState( {}, '', `#${ tab.getAttribute( 'id' ) }` ) + } } ) } ) // Set Aria attributes Array.from( this.contents ).forEach( ( content, index ) => { content.setAttribute( 'id', `stk-block-tab-content-${ this.uniqueId }-${ index + 1 }` ) - content.setAttribute( 'aria-labelledby', `stk-block-tab-label-${ this.uniqueId }-${ index + 1 }` ) + content.setAttribute( 'aria-labelledby', tabAnchors[ index ] ) content.setAttribute( 'tabindex', '0' ) if ( this.activeTab !== ( index + 1 ) ) { content.setAttribute( 'hidden', 'true' ) @@ -106,6 +128,28 @@ class _StackableTabs { this.activeTab = tabIndex } + + initWindowEventListeners = () => { + // Add window event listener only when there are custom tab anchors + if ( Object.keys( this.customTabAnchors ).length ) { + // Change the active tab on hash change + window.addEventListener( 'hashchange', () => { + // Get hash without the # symbol + const hash = window.location.hash.slice( 1 ) + if ( hash in this.customTabAnchors ) { + this.changeTab( this.customTabAnchors[ hash ].index ) + } + } ) + + // Allows scrolling to tab on page load + window.addEventListener( 'beforeunload', () => { + const hash = window.location.hash.slice( 1 ) + if ( hash in this.customTabAnchors ) { + this.customTabAnchors[ hash ].tab.scrollIntoView() + } + } ) + } + } } class StackableTabs { diff --git a/src/block/team-member/deprecated.js b/src/block/team-member/deprecated.js index 4259223e9..ef5c7d6b2 100644 --- a/src/block/team-member/deprecated.js +++ b/src/block/team-member/deprecated.js @@ -9,7 +9,10 @@ import { attributes } from './schema' */ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' /** * WordPress dependencies @@ -32,6 +35,76 @@ addFilter( 'stackable.team-member.save.innerClassNames', 'stackable/3.8.0', ( ou } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +169,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -174,6 +249,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/testimonial/deprecated.js b/src/block/testimonial/deprecated.js index d60d73f51..cc64e5fd2 100644 --- a/src/block/testimonial/deprecated.js +++ b/src/block/testimonial/deprecated.js @@ -9,7 +9,10 @@ import { attributes } from './schema' */ import { withVersion } from '~stackable/higher-order' import compareVersions from 'compare-versions' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' /** * WordPress dependencies @@ -32,6 +35,76 @@ addFilter( 'stackable.testimonial.save.innerClassNames', 'stackable/3.8.0', ( ou } ) const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + return hasBlockShadow || hasContainerShadow || isNotV4 + }, + migrate: ( attributes, innerBlocks ) => { + const isNotV4 = attributes.version < 2 || typeof attributes.version === 'undefined' + + let newAttributes = { + ...attributes, + } + + if ( isNotV4 ) { + newAttributes = { + ...newAttributes, + version: 2, + } + + // Update the vertical align into flexbox + const hasOldVerticalAlign = !! attributes.containerVerticalAlign // Column only, this was changed to flexbox + + if ( hasOldVerticalAlign ) { + newAttributes = { + ...newAttributes, + containerVerticalAlign: '', + innerBlockAlign: attributes.containerVerticalAlign, + } + } + + // If the inner blocks are horizontal, adjust to accomodate the new + // column gap, it will modify blocks because people used block + // margins before instead of a proper column gap. + if ( attributes.innerBlockOrientation === 'horizontal' ) { + innerBlocks.forEach( ( block, index ) => { + if ( index ) { + if ( ! block.attributes.blockMargin ) { + block.attributes.blockMargin = { + top: '', + right: '', + bottom: '', + left: '', + } + } + if ( block.attributes.blockMargin.left === '' ) { + block.attributes.blockMargin.left = 24 + } + } + } ) + + newAttributes = { + ...newAttributes, + innerBlockColumnGap: 0, + } + } + } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -96,6 +169,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -174,6 +249,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return [ newAttributes, innerBlocks ] }, diff --git a/src/block/text/deprecated.js b/src/block/text/deprecated.js index 37c393bad..57d902aa2 100644 --- a/src/block/text/deprecated.js +++ b/src/block/text/deprecated.js @@ -4,9 +4,34 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateTypographyShadowColor, deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.4' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, @@ -35,6 +63,9 @@ const deprecated = [ migrate: attributes => { let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/timeline/deprecated.js b/src/block/timeline/deprecated.js index 2e2b59051..8ef5054ff 100644 --- a/src/block/timeline/deprecated.js +++ b/src/block/timeline/deprecated.js @@ -1,5 +1,6 @@ import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, deprecateTypographyGradientColor, + deprecateTypographyShadowColor, deprecateBlockShadowColor, deprecateContainerShadowColor, } from '~stackable/block-components' import { Save } from './save' import { attributes } from './schema' @@ -7,6 +8,30 @@ import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' const deprecated = [ + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + const hasTextShadow = deprecateTypographyShadowColor.isEligible( '%s' )( attributes ) + + return hasBlockShadow || hasContainerShadow || hasTextShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -24,6 +49,9 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateTypographyGradientColor.migrate( '%s' )( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + newAttributes = deprecateTypographyShadowColor.migrate( '%s' )( newAttributes ) return newAttributes }, diff --git a/src/block/video-popup/deprecated.js b/src/block/video-popup/deprecated.js index 0914b7646..7d84849ea 100644 --- a/src/block/video-popup/deprecated.js +++ b/src/block/video-popup/deprecated.js @@ -2,9 +2,57 @@ import { Save } from './save' import { attributes } from './schema' import { withVersion } from '~stackable/higher-order' -import { deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity } from '~stackable/block-components' +import { semverCompare } from '~stackable/util' +import { i18n } from 'stackable' +import { + deprecateBlockBackgroundColorOpacity, deprecateContainerBackgroundColorOpacity, + deprecateBlockShadowColor, deprecateContainerShadowColor, +} from '~stackable/block-components' + +/** + * WordPress dependencies + */ +import { InnerBlocks } from '@wordpress/block-editor' +import { addFilter } from '@wordpress/hooks' +import { __ } from '@wordpress/i18n' + +addFilter( 'stackable.video-popup.save.div.content', 'stackable/3.12.14', ( output, props, contentClassNames ) => { + if ( semverCompare( props.version, '<', '3.12.14' ) ) { + return ( + + ) + } + return output +} ) const deprecated = [ + { + attributes: attributes( '3.12.14' ), + save: withVersion( '3.12.14' )( Save ), + }, + { + // Support the new shadow color. + attributes: attributes( '3.12.11' ), + save: withVersion( '3.12.11' )( Save ), + isEligible: attributes => { + const hasBlockShadow = deprecateBlockShadowColor.isEligible( attributes ) + const hasContainerShadow = deprecateContainerShadowColor.isEligible( attributes ) + + return hasBlockShadow || hasContainerShadow + }, + migrate: attributes => { + let newAttributes = { ...attributes } + + newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) + + return newAttributes + }, + }, // Support the new combined opacity and color. { attributes: attributes( '3.11.9' ), @@ -20,6 +68,8 @@ const deprecated = [ newAttributes = deprecateContainerBackgroundColorOpacity.migrate( newAttributes ) newAttributes = deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return newAttributes }, @@ -29,7 +79,9 @@ const deprecated = [ attributes: attributes( '3.7.9' ), save: withVersion( '3.7.9' )( Save ), migrate: attributes => { - const newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + let newAttributes = deprecateContainerBackgroundColorOpacity.migrate( attributes ) + newAttributes = deprecateBlockShadowColor.migrate( newAttributes ) + newAttributes = deprecateContainerShadowColor.migrate( newAttributes ) return deprecateBlockBackgroundColorOpacity.migrate( newAttributes ) }, }, diff --git a/src/block/video-popup/frontend-video-popup.js b/src/block/video-popup/frontend-video-popup.js index 7a71ab18b..58f884179 100644 --- a/src/block/video-popup/frontend-video-popup.js +++ b/src/block/video-popup/frontend-video-popup.js @@ -107,7 +107,8 @@ class StackableVideoPopup { } } els.forEach( el => { - el.querySelector( 'button' ).addEventListener( 'click', ev => { + // We're now using divs, but keep the `button` selector for backward compatibility. + el.querySelector( 'div[role="button"], button' ).addEventListener( 'click', ev => { ev.preventDefault() openVideo( el ) } ) diff --git a/src/block/video-popup/save.js b/src/block/video-popup/save.js index d5c3f9bb8..e4889ddf4 100644 --- a/src/block/video-popup/save.js +++ b/src/block/video-popup/save.js @@ -22,6 +22,7 @@ import { */ import { InnerBlocks } from '@wordpress/block-editor' import { compose } from '@wordpress/compose' +import { applyFilters } from '@wordpress/hooks' import { __ } from '@wordpress/i18n' export const Save = props => { @@ -60,9 +61,17 @@ export const Save = props => { > - + { applyFilters( 'stackable.video-popup.save.div.content', ( +
+ +
+ ), props, contentClassNames ) } + ) } diff --git a/src/components/div/index.js b/src/components/div/index.js index 2bb338bad..b032d8d4d 100644 --- a/src/components/div/index.js +++ b/src/components/div/index.js @@ -12,6 +12,9 @@ const Div = props => { backgroundUrl, backgroundUrlTablet, backgroundUrlMobile, + backgroundThumbnailUrl, + backgroundThumbnailUrlTablet, + backgroundThumbnailUrlMobile, backgroundColorType, ...propsToPass } = props @@ -29,6 +32,9 @@ const Div = props => { videoUrl={ backgroundUrl } videoUrlTablet={ backgroundUrlTablet } videoUrlMobile={ backgroundUrlMobile } + videoThumbnailUrl={ backgroundThumbnailUrl } + videoThumbnailUrlTablet={ backgroundThumbnailUrlTablet } + videoThumbnailUrlMobile={ backgroundThumbnailUrlMobile } /> ) @@ -52,6 +58,9 @@ Div.Content = props => { backgroundUrl, backgroundUrlTablet, backgroundUrlMobile, + backgroundThumbnailUrl, + backgroundThumbnailUrlTablet, + backgroundThumbnailUrlMobile, backgroundColorType, ...propsToPass } = props @@ -69,6 +78,9 @@ Div.Content = props => { videoUrl={ backgroundUrl } videoUrlTablet={ backgroundUrlTablet } videoUrlMobile={ backgroundUrlMobile } + videoThumbnailUrl={ backgroundThumbnailUrl } + videoThumbnailUrlTablet={ backgroundThumbnailUrlTablet } + videoThumbnailUrlMobile={ backgroundThumbnailUrlMobile } /> ) diff --git a/src/components/div/style.scss b/src/components/div/style.scss index 2b196079e..a633ddaa3 100644 --- a/src/components/div/style.scss +++ b/src/components/div/style.scss @@ -14,7 +14,7 @@ bottom: 0; z-index: 2; } - > * { + > *:not(.stk-video-background) { position: relative; z-index: 3; } diff --git a/src/components/div/video-background.js b/src/components/div/video-background.js index 63371ee9d..8e2b9956c 100644 --- a/src/components/div/video-background.js +++ b/src/components/div/video-background.js @@ -12,6 +12,7 @@ import { Fragment } from '@wordpress/element' const VideoBackground = props => { let backgroundSrc = props.videoUrl + let backgroundThumbnailSrc = props.videoThumbnailUrl const deviceType = useDeviceType() if ( deviceType !== 'Desktop' && props.videoUrlTablet ) { backgroundSrc = props.videoUrlTablet @@ -20,6 +21,13 @@ const VideoBackground = props => { backgroundSrc = props.videoUrlMobile } + if ( deviceType !== 'Desktop' && props.videoThumbnailUrlTablet ) { + backgroundThumbnailSrc = props.videoThumbnailUrlTablet + } + if ( deviceType === 'Mobile' && props.videoThumbnailUrlMobile ) { + backgroundThumbnailSrc = props.videoThumbnailUrlMobile + } + if ( ! urlIsVideo( backgroundSrc ) ) { return null } @@ -32,6 +40,7 @@ const VideoBackground = props => { loop playsinline src={ backgroundSrc } + poster={ backgroundThumbnailSrc } /> ) } @@ -40,6 +49,9 @@ VideoBackground.defaultProps = { videoUrl: '', videoUrlTablet: '', videoUrlMobile: '', + videoThumbnailUrl: '', + videoThumbnailUrlTablet: '', + videoThumbnailUrlMobile: '', } VideoBackground.Content = props => { @@ -72,6 +84,7 @@ VideoBackground.Content = props => { loop playsinline src={ props.videoUrl } + poster={ props.videoThumbnailUrl } /> } { urlIsVideo( props.videoUrlTablet ) && @@ -82,6 +95,7 @@ VideoBackground.Content = props => { loop playsinline src={ props.videoUrlTablet } + poster={ props.videoThumbnailUrlTablet } /> } { urlIsVideo( props.videoUrlMobile ) && @@ -92,6 +106,7 @@ VideoBackground.Content = props => { loop playsinline src={ props.videoUrlMobile } + poster={ props.videoThumbnailUrlMobile } /> }
@@ -102,6 +117,9 @@ VideoBackground.Content.defaultProps = { videoUrl: '', videoUrlTablet: '', videoUrlMobile: '', + videoThumbnailUrl: '', + videoThumbnailUrlTablet: '', + videoThumbnailUrlMobile: '', } export default VideoBackground diff --git a/src/components/font-family-control/google-fonts.json b/src/components/font-family-control/google-fonts.json index 98ab44a77..75d1cf4d7 100644 --- a/src/components/font-family-control/google-fonts.json +++ b/src/components/font-family-control/google-fonts.json @@ -2905,7 +2905,9 @@ ], "subsets": [ "latin", - "latin-ext" + "latin-ext", + "math", + "symbols" ] }, { @@ -4681,6 +4683,8 @@ "hebrew", "latin", "latin-ext", + "math", + "symbols", "vietnamese" ] }, @@ -6402,12 +6406,12 @@ "family": "Gelasio", "variants": [ "regular", - "italic", "500", - "500italic", "600", - "600italic", "700", + "italic", + "500italic", + "600italic", "700italic" ], "subsets": [ @@ -8206,6 +8210,28 @@ "vietnamese" ] }, + { + "family": "Jacquard 12 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols" + ] + }, + { + "family": "Jacquard 24", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, { "family": "Jacquarda Bastarda 9", "variants": [ @@ -8218,6 +8244,18 @@ "symbols" ] }, + { + "family": "Jacquarda Bastarda 9 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols" + ] + }, { "family": "Jacques Francois", "variants": [ @@ -8248,6 +8286,76 @@ "latin-ext" ] }, + { + "family": "Jersey 10", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 10 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 15", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 15 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 20", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 20 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, + { + "family": "Jersey 25", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, { "family": "JetBrains Mono", "variants": [ @@ -10379,6 +10487,18 @@ "latin-ext" ] }, + { + "family": "Madimi One", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols" + ] + }, { "family": "Magra", "variants": [ @@ -11044,6 +11164,18 @@ "symbols" ] }, + { + "family": "Micro 5 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols" + ] + }, { "family": "Milonga", "variants": [ @@ -12110,7 +12242,11 @@ "900" ], "subsets": [ - "arabic" + "arabic", + "latin", + "latin-ext", + "math", + "symbols" ] }, { @@ -12135,7 +12271,9 @@ "subsets": [ "arabic", "latin", - "latin-ext" + "latin-ext", + "math", + "symbols" ] }, { @@ -12381,7 +12519,9 @@ "subsets": [ "brahmi", "latin", - "latin-ext" + "latin-ext", + "math", + "symbols" ] }, { @@ -12693,9 +12833,13 @@ "900" ], "subsets": [ + "cyrillic-ext", "georgian", + "greek-ext", "latin", - "latin-ext" + "latin-ext", + "math", + "symbols" ] }, { @@ -15023,6 +15167,19 @@ "nushu" ] }, + { + "family": "Noto Znamenny Musical Notation", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols", + "znamenny" + ] + }, { "family": "Nova Cut", "variants": [ @@ -15216,6 +15373,25 @@ "vietnamese" ] }, + { + "family": "Ojuju", + "variants": [ + "200", + "300", + "regular", + "500", + "600", + "700", + "800" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols", + "vietnamese" + ] + }, { "family": "Old Standard TT", "variants": [ @@ -16103,6 +16279,28 @@ "latin-ext" ] }, + { + "family": "Platypi", + "variants": [ + "300", + "regular", + "500", + "600", + "700", + "800", + "300italic", + "italic", + "500italic", + "600italic", + "700italic", + "800italic" + ], + "subsets": [ + "latin", + "latin-ext", + "vietnamese" + ] + }, { "family": "Play", "variants": [ @@ -16361,7 +16559,6 @@ "900italic" ], "subsets": [ - "devanagari", "latin", "latin-ext" ] @@ -17172,6 +17369,24 @@ "latin-ext" ] }, + { + "family": "Reddit Mono", + "variants": [ + "200", + "300", + "regular", + "500", + "600", + "700", + "800", + "900" + ], + "subsets": [ + "latin", + "latin-ext", + "vietnamese" + ] + }, { "family": "Redressed", "variants": [ @@ -18559,6 +18774,17 @@ "latin-ext" ] }, + { + "family": "Sedan", + "variants": [ + "regular", + "italic" + ], + "subsets": [ + "latin", + "latin-ext" + ] + }, { "family": "Sedgwick Ave", "variants": [ @@ -19932,6 +20158,19 @@ "latin-ext" ] }, + { + "family": "Tac One", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "latin-ext", + "math", + "symbols", + "vietnamese" + ] + }, { "family": "Tai Heritage Pro", "variants": [ @@ -21362,6 +21601,50 @@ "latin-ext" ] }, + { + "family": "Yarndings 12", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "math", + "symbols" + ] + }, + { + "family": "Yarndings 12 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "math", + "symbols" + ] + }, + { + "family": "Yarndings 20", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "math", + "symbols" + ] + }, + { + "family": "Yarndings 20 Charted", + "variants": [ + "regular" + ], + "subsets": [ + "latin", + "math", + "symbols" + ] + }, { "family": "Yatra One", "variants": [ diff --git a/src/components/link-control/editor.scss b/src/components/link-control/editor.scss index b7a46bfa6..036a1589c 100644 --- a/src/components/link-control/editor.scss +++ b/src/components/link-control/editor.scss @@ -1,5 +1,6 @@ .stk-link-control__input { - width: 100%; + // Adjust width to ensure reset button is visible. + width: calc(100% - 32px); > .block-editor-link-control { min-width: auto; @@ -89,5 +90,9 @@ .stk-link-control__input { margin-top: -1px; } + + .components-button.is-compact.has-icon:not(.has-text) { + margin-top: 2px; + } } } diff --git a/src/components/resizable-column/index.js b/src/components/resizable-column/index.js index 575ff96e9..788d35832 100644 --- a/src/components/resizable-column/index.js +++ b/src/components/resizable-column/index.js @@ -54,6 +54,7 @@ const ResizableColumn = props => { // Block context is provided from the parent Columns block. const allowResize = ! props.context[ 'stackable/innerBlockOrientation' ] + const columnWrapDesktop = !! props.context[ 'stackable/columnWrapDesktop' ] // This is used to add editor classes based on the preview device type. // Mainly for generating editor styles. @@ -94,6 +95,12 @@ const ResizableColumn = props => { } }, [ adjacentBlocks ] ) + useEffect( () => { + if ( parentBlock && isDesktop && ! columnWrapDesktop ) { + fixWidthOnDisableWrap() + } + }, [ columnWrapDesktop ] ) + // We have a timeout below, this ensures that our timeout only runs while // this Component is mounted. const [ isMounted, setIsMounted ] = useState( false ) @@ -116,9 +123,9 @@ const ResizableColumn = props => { const enable = { top: false, - right: deviceType === 'Desktop' ? ! isOnlyBlock && ! isLastBlock : ! isOnlyBlock, + right: deviceType === 'Desktop' ? ! isOnlyBlock && ( ! isLastBlock || columnWrapDesktop ) : ! isOnlyBlock, bottom: false, - left: deviceType === 'Desktop' ? ! isOnlyBlock && ! isFirstBlock : false, + left: deviceType === 'Desktop' ? ! isOnlyBlock && ! isFirstBlock && ! columnWrapDesktop : false, topRight: false, bottomRight: false, bottomLeft: false, @@ -147,7 +154,7 @@ const ResizableColumn = props => { const adjacentBlocks = _adjacentBlocks.current = parentBlock.innerBlocks // In desktop, get all the column widths. - if ( isDesktop ) { + if ( isDesktop && ! columnWrapDesktop ) { // In desktop, the column gaps will affect the width of the parent column, take it into account. const totalColumnGap = parentColumnGaps.desktop * ( adjacentBlocks.length - 1 ) @@ -203,7 +210,7 @@ const ResizableColumn = props => { const adjacentBlocks = _adjacentBlocks.current // In desktop, when one column is resized, the next column is adjusted also. - if ( isDesktop ) { + if ( isDesktop && ! columnWrapDesktop ) { // Compute for the new widths. const columnWidths = [ ...currentWidths ] const totalWidth = currentWidths.reduce( ( a, b ) => a + b, 0 ) @@ -292,7 +299,7 @@ const ResizableColumn = props => { // Update the block widths. if ( delta.width ) { - if ( isDesktop ) { + if ( isDesktop && ! columnWrapDesktop ) { // For even 3-columns, floats have a tendency of being // unequal, e.g. 33.35 or 33.43, assume to be equal. if ( isEqual( newWidthsPercent.map( n => n | 0 ), [ 33, 33, 33 ] ) ) { // eslint-disable-line no-bitwise @@ -300,6 +307,13 @@ const ResizableColumn = props => { } else { props.onChangeDesktop( newWidthsPercent ) } + } else if ( isDesktop ) { + const columnWidths = adjacentBlocks.map( ( { attributes } ) => { + return attributes.columnWidth || 100 / adjacentBlocks.length + } ) + columnWidths[ blockIndex ] = newWidthsPercent + + props.onChangeDesktopWrap( newWidthsPercent, columnWidths, blockIndex ) } else if ( isTablet ) { // Get the current column widths for tablet. const columnWidths = adjacentBlocks.map( ( { attributes } ) => { @@ -342,7 +356,7 @@ const ResizableColumn = props => { const adjacentBlocks = parentBlock.innerBlocks // For desktop, column adjustments also affect the adjacent column. - if ( isDesktop ) { + if ( isDesktop && ! columnWrapDesktop ) { // Get the current column widths. const isFirstResize = adjacentBlocks.every( ( { attributes } ) => ! attributes.columnWidth ) const columnWidths = adjacentBlocks.map( ( { attributes } ) => { @@ -365,6 +379,17 @@ const ResizableColumn = props => { columnWidths[ blockIndex ] = finalWidth props.onChangeDesktop( columnWidths ) + } else if ( isDesktop ) { + // Get the current column widths. + const columnWidths = adjacentBlocks.map( ( { attributes } ) => { + return attributes.columnWidth || 100 / adjacentBlocks.length + } ) + + const finalWidth = width ? clamp( width, MIN_COLUMN_WIDTH_PERCENTAGE[ deviceType ], 100 ) : '' + + columnWidths[ blockIndex ] = finalWidth + + props.onChangeDesktopWrap( finalWidth, columnWidths, blockIndex ) } else if ( isTablet ) { // Get the current column widths. const columnWidths = adjacentBlocks.map( ( { attributes } ) => { @@ -392,6 +417,29 @@ const ResizableColumn = props => { } } + const fixWidthOnDisableWrap = () => { + const parentBlock = select( 'core/block-editor' ).getBlock( parentBlockClientId ) + const adjacentBlocks = _adjacentBlocks.current = parentBlock.innerBlocks + + let totalPercentages = 0 + const columnPercentages = adjacentBlocks.map( ( { attributes } ) => { + totalPercentages += attributes.columnWidth + return attributes.columnWidth + } ) + + // Update the last column width to make it 100% + // if the columnWidth of adjacent blocks is set and the total percentage is less than 100 + if ( totalPercentages < 100 && totalPercentages > 0 ) { + columnPercentages[ columnPercentages.length - 1 ] += ( 100 - totalPercentages ) + + if ( isEqual( columnPercentages.map( n => n | 0 ), [ 33, 33, 33 ] ) ) { // eslint-disable-line no-bitwise + props.onChangeDesktop( [ 33.33, 33.33, 33.33 ] ) + } else { + props.onChangeDesktop( columnPercentages ) + } + } + } + /** * Tooltip context stuff to display all tooltip widths across all sibling columns. */ diff --git a/src/components/shadow-control/index.js b/src/components/shadow-control/index.js index 397100ecd..c16c45955 100644 --- a/src/components/shadow-control/index.js +++ b/src/components/shadow-control/index.js @@ -2,13 +2,10 @@ * External dependencies */ import { i18n } from 'stackable' -import { - compact, isNumber, isEqual, -} from 'lodash' +import { compact, isEqual } from 'lodash' import { AdvancedRangeControl, AdvancedToggleControl, ColorPaletteControl, Popover, } from '~stackable/components' -import { hexToRgba, extractColor } from '~stackable/util' import AdvancedControl, { extractControlProps } from '~stackable/components/base-control2' import { useControlHandlers } from '~stackable/components/base-control2/hooks' @@ -103,34 +100,8 @@ const FILTERS = [ key: 'shadowColor', props: { label: __( 'Shadow Color', i18n ), - disableAlpha: false, - }, - default: 'rgba(0,0,0,1)', - changeCallback: color => { - if ( color?.startsWith( 'rgba(' ) ) { - return color - } - - if ( color?.startsWith( 'rgb(' ) ) { - return color?.replace( 'rgb', 'rgba' ).replace( /\)$/g, ', 1)' ) || '' - } - - color = extractColor( color ) - - const rgba = hexToRgba( color ) - - return rgba.startsWith( 'rgb(' ) ? rgba.replace( 'rgb', 'rgba' ).replace( /\)$/g, ', 1)' ) : rgba - }, - }, - { - component: AdvancedRangeControl, - key: 'opacity', - props: { - label: __( 'Shadow Opacity', i18n ), - min: 0, - max: 1, - step: 0.1, }, + default: '#000000', }, ] @@ -142,17 +113,6 @@ const filterToValue = ( props, filters ) => { return filters[ key ] ? 'inset' : '' } - if ( key === 'opacity' ) { - return undefined - } - - if ( key === 'shadowColor' ) { - const opacity = filters.opacity - if ( isNumber( opacity ) || opacity === '' || opacity === undefined ) { - return ( filters[ key ] || filterItem.default || '' ).replace( /,[\d| ||\.]*\)$/g, () => `, ${ ! isNumber( opacity ) ? 1 : opacity })` ) - } - } - if ( filterItem.show && ! filterItem.show( props ) ) { return undefined } @@ -176,12 +136,9 @@ const ShadowFilterControl = props => { useEffect( () => { if ( value ) { let _value = value - let rgbaValue = '' - let opacity = 1 - _value = _value.replace( /rgba\(.*\)$/g, value => { - rgbaValue = value - opacity = value.match( /[\d| ||\.]*\)$/g )[ 0 ] - opacity = parseFloat( opacity ) + let hexValue = '' + _value = _value.replace( /#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})([0-9a-fA-F]{2})?$/g, value => { + hexValue = value return '' } ).trim() @@ -197,8 +154,7 @@ const ShadowFilterControl = props => { filters.verticalOffset = parseInt( verticalOffset ) filters.blur = parseInt( blur ) filters.shadowSpread = isNaN( parseInt( spread ) ) ? '' : parseInt( spread ) - filters.shadowColor = rgbaValue - filters.opacity = opacity + filters.shadowColor = hexValue setFilters( { ...filters } ) } }, [ value ] ) diff --git a/src/css-optimize.php b/src/css-optimize.php index ac387c4a0..b169b8588 100644 --- a/src/css-optimize.php +++ b/src/css-optimize.php @@ -131,6 +131,7 @@ public function generate_optimied_css_for_post( $post_id, $post, $update ) { $styles_only[] = $block_style[1]; } } + $optimized_css = count( $styles_only ) ? self::generate_css( $styles_only ) : ''; // Save the optimized CSS to the post if it changed. @@ -187,6 +188,7 @@ public static function parse_block_style( $block, &$style_arr ) { } // Add the styles to our list of styles to optimize. + // Add only the css inside the style tag to minimize memory usage. $all_block_styles[] = array( $styles[0][ $i ], $styles[1][ $i ], @@ -293,8 +295,14 @@ public function strip_optimized_block_styles( $block_content, $block ) { $css_to_strip = $this->css_raw[ $unique_id ]; foreach ( $css_to_strip as $style ) { // $style[0] - contains the whole style tag. - if ( stripos( $block_content, $style[0] ) !== false ) { - $block_content = str_replace( $style[0], '', $block_content ); + if ( is_array( $style ) ) { + if ( stripos( $block_content, $style[0] ) !== false ) { + $block_content = str_replace( $style[0], '', $block_content ); + } + } else if ( is_string( $style ) ) { + if ( stripos( $block_content, '' ) !== false ) { + $block_content = str_replace( '', '', $block_content ); + } } } } @@ -474,7 +482,9 @@ public static function generate_css( $styles ) { * @return boolean */ public function protect_optimized_css_meta( $protected, $meta_key ) { - if ( $meta_key === 'stackable_optimized_css' || $meta_key === 'stackable_optimized_css_raw' ) { + if ( $meta_key === 'stackable_optimized_css' || + $meta_key === 'stackable_optimized_css_raw' || + $meta_key === 'stackable_css_hash' ) { return true; } return $protected; diff --git a/src/deprecated/v2/block/blog-posts/index.php b/src/deprecated/v2/block/blog-posts/index.php index d4b479d98..3b17292ad 100644 --- a/src/deprecated/v2/block/blog-posts/index.php +++ b/src/deprecated/v2/block/blog-posts/index.php @@ -241,6 +241,10 @@ function stackable_render_blog_posts_block_v2( $attributes, $content ) { } } + if ( ! in_array( $attributes['titleTag'], [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p' ] ) ) { + $attachment['titleTag'] = 'h3'; + } + // Title. $title = get_the_title( $post_id ); if ( ! $title ) { @@ -372,7 +376,7 @@ function stackable_render_blog_posts_block_v2( $attributes, $content ) { do_action( 'stackable/blog-posts/v2/render', $attributes, $content ); - return apply_filters( 'stackable/blog-posts/v2/edit.output.markup', $posts_markup, $attributes, $content ); + return wp_kses_post( apply_filters( 'stackable/blog-posts/v2/edit.output.markup', $posts_markup, $attributes, $content ) ); } } diff --git a/src/design-library/init.php b/src/design-library/init.php index e7177d52b..3f12c3b12 100644 --- a/src/design-library/init.php +++ b/src/design-library/init.php @@ -118,14 +118,33 @@ public function _get_design_library() { // Fetch designs. if ( empty( $designs ) ) { + $designs = array(); + $content = null; + $response = wp_remote_get( self::get_cdn_url() . 'library-v3/library.json' ); - $content = wp_remote_retrieve_body( $response ); - $content = apply_filters( 'stackable_design_library_retreive_body', $content ); + + if ( is_wp_error( $response ) ) { + // Add our error message so we can see it in the network tab. + $designs['wp_remote_get_error'] = array( + 'code' => $response->get_error_code(), + 'message' => $response->get_error_message(), + ); + } else { + $content_body = wp_remote_retrieve_body( $response ); + $content = apply_filters( 'stackable_design_library_retreive_body', $content_body ); + $content = json_decode( $content, true ); + + // Add our error message so we can see it in the network tab. + if ( empty( $content ) ) { + $designs['content_error'] = array( + 'message' => $content_body, + ); + } + + } // We add the latest designs in the `v3` area. - $designs = array( - self::API_VERSION => json_decode( $content, true ), - ); + $designs[ self::API_VERSION ] = $content; // Allow deprecated code to fetch other designs $designs = apply_filters( 'stackable_fetch_design_library', $designs ); diff --git a/src/dynamic-breakpoints.php b/src/dynamic-breakpoints.php index 839b0b4ba..70bc2a8c0 100644 --- a/src/dynamic-breakpoints.php +++ b/src/dynamic-breakpoints.php @@ -15,7 +15,7 @@ function stackable_get_responsive_css() { // NOTE: THE VALUE BELOW IS AUTOMATICALLY GENERATED BY THE BUILD PROCESS. return <<.stk-inner-blocks.stk-block-tabs--vertical{grid-template-columns:auto 1fr auto}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-labels:first-child{grid-column:1/2}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-content:last-child{grid-column:2/4}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-content:first-child{grid-column:1/3}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-labels:last-child{grid-column:3/4}.stk-block .stk-block.aligncenter,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align:not(.alignwide):not(.alignfull){margin-left:auto;margin-right:auto;max-width:var(--stk-block-default-width,var(--stk-block-width-default-detected,900px));width:100%}.stk-block .stk-block.alignwide,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align.alignwide{margin-left:auto;margin-right:auto;max-width:var(--stk-block-wide-width,var(--stk-block-width-wide-detected,80vw));width:100%}.stk-row.stk-columns-2>.stk-column{flex:1 1 50%;max-width:50%}.stk-row.stk-columns-3>.stk-column{flex:1 1 33.3333333333%;max-width:33.3333333333%}.stk-row.stk-columns-4>.stk-column{flex:1 1 25%;max-width:25%}.stk-row.stk-columns-5>.stk-column{flex:1 1 20%;max-width:20%}.stk-row.stk-columns-6>.stk-column{flex:1 1 16.6666666667%;max-width:16.6666666667%}.stk-row.stk-columns-7>.stk-column{flex:1 1 14.2857142857%;max-width:14.2857142857%}.stk-row.stk-columns-8>.stk-column{flex:1 1 12.5%;max-width:12.5%}.stk-row.stk-columns-9>.stk-column{flex:1 1 11.1111111111%;max-width:11.1111111111%}.stk-row.stk-columns-10>.stk-column{flex:1 1 10%;max-width:10%}}@media only screen and (min-width:768px) and (max-width:1023px){:where(.has-text-align-left-tablet) .stk-block-divider{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}:where(.has-text-align-right-tablet) .stk-block-divider{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}:where(.has-text-align-center-tablet) .stk-block-divider{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk--hide-tablet,.stk--hide-tablet.stk-block{display:none!important}.stk-button-group:is(.stk--collapse-on-tablet) .stk-block:is(.stk-block-button,.stk-block-icon-button){margin-inline-end:var(--stk-alignment-margin-right);margin-inline-start:var(--stk-alignment-margin-left)}}@media only screen and (max-width:1023px){.stk-block-button{min-width:-moz-fit-content;min-width:fit-content}.stk-block.stk-block-divider.has-text-align-center-tablet{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-right-tablet{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-left-tablet{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}.stk-block-timeline.stk-block-timeline__ios-polyfill{--fixed-bg:linear-gradient(to bottom,var(--line-accent-bg-color,#000) 0,var(--line-accent-bg-color-2,#000) var(--line-accent-bg-location,50%))}.has-text-align-center-tablet{--stk-alignment-padding-left:0;--stk-alignment-justify-content:center;--stk-alignment-text-align:center;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-left-tablet{--stk-alignment-justify-content:flex-start;--stk-alignment-text-align:start;--stk-alignment-margin-left:0;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-right-tablet{--stk-alignment-justify-content:flex-end;--stk-alignment-text-align:end;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:0;text-align:var(--stk-alignment-text-align,start)}.has-text-align-justify-tablet{--stk-alignment-text-align:justify}.has-text-align-space-between-tablet{--stk-alignment-justify-content:space-between}.has-text-align-space-around-tablet{--stk-alignment-justify-content:space-around}.has-text-align-space-evenly-tablet{--stk-alignment-justify-content:space-evenly}}@media only screen and (max-width:767px){.stk-block-carousel.stk--hide-mobile-arrows>.stk-block-carousel__content-wrapper>*>.stk-block-carousel__buttons,.stk-block-carousel.stk--hide-mobile-dots>.stk-block-carousel__content-wrapper>.stk-block-carousel__dots{display:none}:where(.has-text-align-left-mobile) .stk-block-divider{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}:where(.has-text-align-right-mobile) .stk-block-divider{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}:where(.has-text-align-center-mobile) .stk-block-divider{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-center-mobile{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-right-mobile{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-left-mobile{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}.stk-block.stk-block-feature:is(.is-style-default,.is-style-horizontal)>.stk-container>.stk-inner-blocks.stk-block-content{flex-direction:column-reverse}.stk-block-posts{--stk-columns:1}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile){overflow-x:auto!important;width:100%}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile)::-webkit-scrollbar{height:0!important}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile) .stk-block-tab-labels__wrapper{flex-wrap:nowrap;min-width:-webkit-fill-available;min-width:fill-available;width:max-content}.stk-block-tabs>.stk-inner-blocks{grid-template-columns:1fr}.stk-block-tabs>.stk-inner-blocks>.stk-block-tab-labels:last-child{grid-row:1/2}.stk-block.stk-block-timeline{--content-line:0!important;padding-top:0}.stk-block-timeline>.stk-inner-blocks{align-items:flex-start;grid-template-columns:var(--line-dot-size,16px) 1fr;grid-template-rows:auto 1fr;padding-left:16px}.stk-block-timeline>.stk-inner-blocks:after{inset-inline-start:calc(var(--line-dot-size, 16px)/2 - var(--line-bg-width, 3px)/2 + 16px)}.stk-block-timeline .stk-block-timeline__middle{inset-block-start:8px;inset-inline-start:16px;position:absolute}.stk-block-timeline .stk-block-timeline__content{grid-column:2/3;grid-row:2/3;text-align:start}.stk-block-timeline .stk-block-timeline__date{grid-column:2/3;grid-row:1/2;text-align:start}.stk-block-timeline>.stk-inner-blocks:after{bottom:calc(100% - var(--line-dot-size, 16px)/2 - .5em);top:calc(var(--line-dot-size, 16px)/2 + .5em)}.stk-block-timeline+.stk-block-timeline>.stk-inner-blocks:after{top:-16px}:root{--stk-block-margin-bottom:16px;--stk-container-padding:24px 24px;--stk-container-padding-large:32px 24px;--stk-container-padding-small:8px 24px;--stk-column-margin:8px;--stk-block-background-padding:16px 16px}.stk-block .stk-block:is(.aligncenter,.alignwide),.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align.alignwide,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align:not(.alignwide):not(.alignfull){width:100%}.stk-column{flex:1 1 100%;max-width:100%}.stk--hide-mobile,.stk--hide-mobile.stk-block{display:none!important}.stk-button-group:is(.stk--collapse-on-mobile) .stk-block:is(.stk-block-button,.stk-block-icon-button),.stk-button-group:is(.stk--collapse-on-tablet) .stk-block:is(.stk-block-button,.stk-block-icon-button){margin-inline-end:var(--stk-alignment-margin-right);margin-inline-start:var(--stk-alignment-margin-left)}.has-text-align-center-mobile{--stk-alignment-padding-left:0;--stk-alignment-justify-content:center;--stk-alignment-text-align:center;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-left-mobile{--stk-alignment-justify-content:flex-start;--stk-alignment-text-align:start;--stk-alignment-margin-left:0;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-right-mobile{--stk-alignment-justify-content:flex-end;--stk-alignment-text-align:end;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:0;text-align:var(--stk-alignment-text-align,start)}.has-text-align-justify-mobile{--stk-alignment-text-align:justify}.has-text-align-space-between-mobile{--stk-alignment-justify-content:space-between}.has-text-align-space-around-mobile{--stk-alignment-justify-content:space-around}.has-text-align-space-evenly-mobile{--stk-alignment-justify-content:space-evenly}.entry-content .stk-block.stk-has-top-separator{padding-top:23vw}.entry-content .stk-block.stk-has-bottom-separator{padding-bottom:23vw}.entry-content .stk-block .stk-separator__wrapper{height:23vw}}#end-resizable-editor-section{display:none} +#start-resizable-editor-section{display:none}@media only screen and (min-width:1024px){:where(.has-text-align-left) .stk-block-divider{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}:where(.has-text-align-right) .stk-block-divider{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}:where(.has-text-align-center) .stk-block-divider{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-center{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-right{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-left{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}.stk-block-feature>*>.stk-row{flex-wrap:var(--stk-feature-flex-wrap,nowrap)}.stk-row{flex-wrap:nowrap}.stk--hide-desktop,.stk--hide-desktop.stk-block{display:none!important}}@media only screen and (min-width:768px){:where(body:not(.wp-admin) .stk-block-column:first-child:nth-last-child(2)){flex:1 1 calc(50% - var(--stk-column-gap, 0px)*1/2)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(2):last-child){flex:1 1 calc(50% - var(--stk-column-gap, 0px)*1/2)!important}:where(body:not(.wp-admin) .stk-block-column:first-child:nth-last-child(3)){flex:1 1 calc(33.33333% - var(--stk-column-gap, 0px)*2/3)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(2):nth-last-child(2)){flex:1 1 calc(33.33333% - var(--stk-column-gap, 0px)*2/3)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(3):last-child){flex:1 1 calc(33.33333% - var(--stk-column-gap, 0px)*2/3)!important}:where(body:not(.wp-admin) .stk-block-column:first-child:nth-last-child(4)){flex:1 1 calc(25% - var(--stk-column-gap, 0px)*3/4)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(2):nth-last-child(3)){flex:1 1 calc(25% - var(--stk-column-gap, 0px)*3/4)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(3):nth-last-child(2)){flex:1 1 calc(25% - var(--stk-column-gap, 0px)*3/4)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(4):last-child){flex:1 1 calc(25% - var(--stk-column-gap, 0px)*3/4)!important}:where(body:not(.wp-admin) .stk-block-column:first-child:nth-last-child(5)){flex:1 1 calc(20% - var(--stk-column-gap, 0px)*4/5)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(2):nth-last-child(4)){flex:1 1 calc(20% - var(--stk-column-gap, 0px)*4/5)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(3):nth-last-child(3)){flex:1 1 calc(20% - var(--stk-column-gap, 0px)*4/5)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(4):nth-last-child(2)){flex:1 1 calc(20% - var(--stk-column-gap, 0px)*4/5)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(5):last-child){flex:1 1 calc(20% - var(--stk-column-gap, 0px)*4/5)!important}:where(body:not(.wp-admin) .stk-block-column:first-child:nth-last-child(6)){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(2):nth-last-child(5)){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(3):nth-last-child(4)){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(4):nth-last-child(3)){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(5):nth-last-child(2)){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}:where(body:not(.wp-admin) .stk-block-column:nth-child(6):last-child){flex:1 1 calc(16.66667% - var(--stk-column-gap, 0px)*5/6)!important}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical{grid-template-columns:auto 1fr auto}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-labels:first-child{grid-column:1/2}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-content:last-child{grid-column:2/4}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-content:first-child{grid-column:1/3}.stk-block-tabs>.stk-inner-blocks.stk-block-tabs--vertical>.stk-block-tab-labels:last-child{grid-column:3/4}.stk-block .stk-block.aligncenter,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align:not(.alignwide):not(.alignfull){margin-left:auto;margin-right:auto;max-width:var(--stk-block-default-width,var(--stk-block-width-default-detected,900px));width:100%}.stk-block .stk-block.alignwide,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align.alignwide{margin-left:auto;margin-right:auto;max-width:var(--stk-block-wide-width,var(--stk-block-width-wide-detected,80vw));width:100%}.stk-row.stk-columns-2>.stk-column{flex:1 1 50%;max-width:50%}.stk-row.stk-columns-3>.stk-column{flex:1 1 33.3333333333%;max-width:33.3333333333%}.stk-row.stk-columns-4>.stk-column{flex:1 1 25%;max-width:25%}.stk-row.stk-columns-5>.stk-column{flex:1 1 20%;max-width:20%}.stk-row.stk-columns-6>.stk-column{flex:1 1 16.6666666667%;max-width:16.6666666667%}.stk-row.stk-columns-7>.stk-column{flex:1 1 14.2857142857%;max-width:14.2857142857%}.stk-row.stk-columns-8>.stk-column{flex:1 1 12.5%;max-width:12.5%}.stk-row.stk-columns-9>.stk-column{flex:1 1 11.1111111111%;max-width:11.1111111111%}.stk-row.stk-columns-10>.stk-column{flex:1 1 10%;max-width:10%}}@media only screen and (min-width:768px) and (max-width:1023px){:where(.has-text-align-left-tablet) .stk-block-divider{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}:where(.has-text-align-right-tablet) .stk-block-divider{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}:where(.has-text-align-center-tablet) .stk-block-divider{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk--hide-tablet,.stk--hide-tablet.stk-block{display:none!important}.stk-button-group:is(.stk--collapse-on-tablet) .stk-block:is(.stk-block-button,.stk-block-icon-button){margin-inline-end:var(--stk-alignment-margin-right);margin-inline-start:var(--stk-alignment-margin-left)}}@media only screen and (max-width:1023px){.stk-block-button{min-width:-moz-fit-content;min-width:fit-content}.stk-block.stk-block-divider.has-text-align-center-tablet{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-right-tablet{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-left-tablet{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}.stk-block-timeline.stk-block-timeline__ios-polyfill{--fixed-bg:linear-gradient(to bottom,var(--line-accent-bg-color,#000) 0,var(--line-accent-bg-color-2,#000) var(--line-accent-bg-location,50%))}.has-text-align-center-tablet{--stk-alignment-padding-left:0;--stk-alignment-justify-content:center;--stk-alignment-text-align:center;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-left-tablet{--stk-alignment-justify-content:flex-start;--stk-alignment-text-align:start;--stk-alignment-margin-left:0;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-right-tablet{--stk-alignment-justify-content:flex-end;--stk-alignment-text-align:end;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:0;text-align:var(--stk-alignment-text-align,start)}.has-text-align-justify-tablet{--stk-alignment-text-align:justify}.has-text-align-space-between-tablet{--stk-alignment-justify-content:space-between}.has-text-align-space-around-tablet{--stk-alignment-justify-content:space-around}.has-text-align-space-evenly-tablet{--stk-alignment-justify-content:space-evenly}}@media only screen and (max-width:767px){.stk-block-carousel.stk--hide-mobile-arrows>.stk-block-carousel__content-wrapper>*>.stk-block-carousel__buttons,.stk-block-carousel.stk--hide-mobile-dots>.stk-block-carousel__content-wrapper>.stk-block-carousel__dots{display:none}:where(.has-text-align-left-mobile) .stk-block-divider{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}:where(.has-text-align-right-mobile) .stk-block-divider{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}:where(.has-text-align-center-mobile) .stk-block-divider{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-center-mobile{--stk-dots-margin-right:auto;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-right-mobile{--stk-dots-margin-right:0;--stk-dots-margin-left:auto}.stk-block.stk-block-divider.has-text-align-left-mobile{--stk-dots-margin-left:0;--stk-dots-margin-right:auto}.stk-block.stk-block-feature:is(.is-style-default,.is-style-horizontal)>.stk-container>.stk-inner-blocks.stk-block-content{flex-direction:column-reverse}.stk-block-posts{--stk-columns:1}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile){overflow-x:auto!important;width:100%}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile)::-webkit-scrollbar{height:0!important}.stk-block-tab-labels:not(.stk-block-tab-labels--wrap-mobile) .stk-block-tab-labels__wrapper{flex-wrap:nowrap;min-width:-webkit-fill-available;min-width:fill-available;width:max-content}.stk-block-tabs>.stk-inner-blocks{grid-template-columns:1fr}.stk-block-tabs>.stk-inner-blocks>.stk-block-tab-labels:last-child{grid-row:1/2}.stk-block.stk-block-timeline{--content-line:0!important;padding-top:0}.stk-block-timeline>.stk-inner-blocks{align-items:flex-start;grid-template-columns:var(--line-dot-size,16px) 1fr;grid-template-rows:auto 1fr;padding-left:16px}.stk-block-timeline>.stk-inner-blocks:after{inset-inline-start:calc(var(--line-dot-size, 16px)/2 - var(--line-bg-width, 3px)/2 + 16px)}.stk-block-timeline .stk-block-timeline__middle{inset-block-start:8px;inset-inline-start:16px;position:absolute}.stk-block-timeline .stk-block-timeline__content{grid-column:2/3;grid-row:2/3;text-align:start}.stk-block-timeline .stk-block-timeline__date{grid-column:2/3;grid-row:1/2;text-align:start}.stk-block-timeline>.stk-inner-blocks:after{bottom:calc(100% - var(--line-dot-size, 16px)/2 - .5em);top:calc(var(--line-dot-size, 16px)/2 + .5em)}.stk-block-timeline+.stk-block-timeline>.stk-inner-blocks:after{top:-16px}:root{--stk-block-margin-bottom:16px;--stk-container-padding:24px 24px;--stk-container-padding-large:32px 24px;--stk-container-padding-small:8px 24px;--stk-column-margin:8px;--stk-block-background-padding:16px 16px}.stk-block .stk-block:is(.aligncenter,.alignwide),.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align.alignwide,.stk-block:is(.aligncenter,.alignwide,.alignfull)>.stk-content-align:not(.alignwide):not(.alignfull){width:100%}.stk-column{flex:1 1 100%;max-width:100%}.stk--hide-mobile,.stk--hide-mobile.stk-block{display:none!important}.stk-button-group:is(.stk--collapse-on-mobile) .stk-block:is(.stk-block-button,.stk-block-icon-button),.stk-button-group:is(.stk--collapse-on-tablet) .stk-block:is(.stk-block-button,.stk-block-icon-button){margin-inline-end:var(--stk-alignment-margin-right);margin-inline-start:var(--stk-alignment-margin-left)}.has-text-align-center-mobile{--stk-alignment-padding-left:0;--stk-alignment-justify-content:center;--stk-alignment-text-align:center;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-left-mobile{--stk-alignment-justify-content:flex-start;--stk-alignment-text-align:start;--stk-alignment-margin-left:0;--stk-alignment-margin-right:auto;text-align:var(--stk-alignment-text-align,start)}.has-text-align-right-mobile{--stk-alignment-justify-content:flex-end;--stk-alignment-text-align:end;--stk-alignment-margin-left:auto;--stk-alignment-margin-right:0;text-align:var(--stk-alignment-text-align,start)}.has-text-align-justify-mobile{--stk-alignment-text-align:justify}.has-text-align-space-between-mobile{--stk-alignment-justify-content:space-between}.has-text-align-space-around-mobile{--stk-alignment-justify-content:space-around}.has-text-align-space-evenly-mobile{--stk-alignment-justify-content:space-evenly}.entry-content .stk-block.stk-has-top-separator{padding-top:23vw}.entry-content .stk-block.stk-has-bottom-separator{padding-bottom:23vw}.entry-content .stk-block .stk-separator__wrapper{height:23vw}}#end-resizable-editor-section{display:none} STK_RESPONSIVE_CSS; } } diff --git a/src/editor-settings.php b/src/editor-settings.php index 247aa764a..a348c9843 100644 --- a/src/editor-settings.php +++ b/src/editor-settings.php @@ -84,18 +84,6 @@ public function register_settings() { ) ); - register_setting( - 'stackable_editor_settings', - 'stackable_enable_navigation_panel', - array( - 'type' => 'boolean', - 'description' => __( 'Adds a persistent Navigation panel across all Stackable blocks', STACKABLE_I18N ), - 'sanitize_callback' => 'sanitize_text_field', - 'show_in_rest' => true, - 'default' => '', - ) - ); - register_setting( 'stackable_editor_settings', 'stackable_block_default_width', @@ -207,7 +195,6 @@ public function add_settings( $settings ) { $settings['stackable_disabled_blocks'] = get_option( 'stackable_disabled_blocks' ); $settings['stackable_enable_design_library'] = get_option( 'stackable_enable_design_library' ); $settings['stackable_optimize_inline_css'] = get_option( 'stackable_optimize_inline_css' ); - $settings['stackable_enable_navigation_panel'] = get_option( 'stackable_enable_navigation_panel' ); $settings['stackable_auto_collapse_panels'] = get_option( 'stackable_auto_collapse_panels' ); $settings['stackable_enable_block_linking'] = get_option( 'stackable_enable_block_linking' ); $settings['stackable_enable_carousel_lazy_loading'] = get_option( 'stackable_enable_carousel_lazy_loading' ); diff --git a/src/hooks/use-block-context.js b/src/hooks/use-block-context.js index 226e1cf38..b4f7d1d3d 100644 --- a/src/hooks/use-block-context.js +++ b/src/hooks/use-block-context.js @@ -20,14 +20,14 @@ import { * WordPress dependencies */ import { - subscribe, select, createReduxStore, register, dispatch, useSelect, + select, createReduxStore, register, useSelect, } from '@wordpress/data' import { useBlockEditContext } from '@wordpress/block-editor' // Create our store. const STORE_ACTIONS = { - setBlockTree: blockTree => { - return { type: 'UPDATE_BLOCK_TREE', blockTree } + updateClientTree: () => { + return { type: 'UPDATE_BLOCK_TREE' } }, } @@ -35,50 +35,112 @@ const STORE_SELECTORS = { getBlockContext: ( state, clientId ) => state[ clientId ] || {}, } +/** + * This function is used in Gutenberg's List View. + * https://github.com/WordPress/gutenberg/blob/trunk/packages/block-editor/src/store/private-selectors.js#L75 + * + * @param {?string} rootClientId + */ +const getUnmemoizedClientTree = rootClientId => { + const blockOrder = select( 'core/block-editor' ).getBlockOrder( rootClientId ) + const result = [] + + for ( const clientId of blockOrder ) { + const innerBlocks = getUnmemoizedClientTree( clientId ) + const blockEditingMode = select( 'core/block-editor' ).getBlockEditingMode?.( clientId ) + if ( blockEditingMode !== 'disabled' ) { + result.push( { clientId, innerBlocks } ) + } else { + result.push( ...innerBlocks ) + } + } + + return result +} + +// Use to correct the blocks returned from getBlocks. +// Applies only core/block (reusable blocks) - Adds missing innerBlocks +const fixReusableInnerBlocks = blocks => { + return ( blocks || [] ).map( block => { + return { + ...block, + innerBlocks: fixReusableInnerBlocks( block.innerBlocks ), + name: select( 'core/block-editor' ).getBlockName( block.clientId ), + } + } ) +} + const STORE_REDUCER = ( state = {}, action ) => { switch ( action.type ) { case 'UPDATE_BLOCK_TREE': { const blocks = {} - action.blockTree.forEach( ( rootBlock, index, siblingBlocks ) => { - // Gather information about the root block. - const { - clientId, innerBlocks, name, - } = rootBlock - blocks[ clientId ] = { - blockIndex: index, - numInnerBlocks: innerBlocks.length, - hasInnerBlocks: !! innerBlocks.length, - adjacentBlocks: siblingBlocks || [], - nextBlock: nth( siblingBlocks, index + 1 ), - previousBlock: index === 0 ? undefined : nth( siblingBlocks, index - 1 ), // nth will loop back to the last if index is -1. - innerBlocks, - rootBlockClientId: clientId, - parentTree: [], - } - - // Form the block name tree so inner blocks would know their locations. - const parentTree = [ { clientId, name } ] - - const parseBlock = ( innerBlocks, parentBlock ) => { - innerBlocks.forEach( ( block, index ) => { - // Some of our other blocks use the Column block in - // non-column arrangements, for those, we need to - // set special parameters so that the other UI - // elements (like column width drag handlers) do not - // show up. - if ( block.name === 'stackable/column' ) { - const supportsColumnResize = select( 'core/blocks' ).getBlockSupport( parentBlock.name, 'stkColumnResize' ) !== false - if ( ! supportsColumnResize ) { + let tree = getUnmemoizedClientTree() + if ( tree ) { + tree = fixReusableInnerBlocks( tree ) + + tree.forEach( ( rootBlock, index, siblingBlocks ) => { + // Gather information about the root block. + const { + clientId, innerBlocks, name, + } = rootBlock + blocks[ clientId ] = { + blockIndex: index, + numInnerBlocks: innerBlocks.length, + hasInnerBlocks: !! innerBlocks.length, + adjacentBlocks: siblingBlocks || [], + nextBlock: nth( siblingBlocks, index + 1 ), + previousBlock: index === 0 ? undefined : nth( siblingBlocks, index - 1 ), // nth will loop back to the last if index is -1. + innerBlocks, + rootBlockClientId: clientId, + parentTree: [], + } + + // Form the block name tree so inner blocks would know their locations. + const parentTree = [ { clientId, name } ] + + const parseBlock = ( innerBlocks, parentBlock ) => { + innerBlocks.forEach( ( block, index ) => { + // Some of our other blocks use the Column block in + // non-column arrangements, for those, we need to + // set special parameters so that the other UI + // elements (like column width drag handlers) do not + // show up. + if ( block.name === 'stackable/column' ) { + const supportsColumnResize = select( 'core/blocks' ).getBlockSupport( parentBlock.name, 'stkColumnResize' ) !== false + if ( ! supportsColumnResize ) { + blocks[ block.clientId ] = { + blockIndex: index, + parentBlock, + isFirstBlock: true, + isLastBlock: true, + isOnlyBlock: true, + adjacentBlock: null, + adjacentBlockIndex: -1, + adjacentBlocks: [], + numInnerBlocks: block.innerBlocks.length, + hasInnerBlocks: !! block.innerBlocks.length, + innerBlocks: block.innerBlocks, + rootBlockClientId: rootBlock.clientId, + parentTree: cloneDeep( parentTree ), + } + } + } + + // Gather all the info about the block. + if ( ! blocks[ block.clientId ] ) { + const isLastBlock = innerBlocks.length - 1 === index blocks[ block.clientId ] = { blockIndex: index, parentBlock, - isFirstBlock: true, - isLastBlock: true, - isOnlyBlock: true, - adjacentBlock: null, - adjacentBlockIndex: -1, - adjacentBlocks: [], + isFirstBlock: index === 0, + isLastBlock, + isOnlyBlock: innerBlocks.length === 1, + adjacentBlock: nth( innerBlocks, ! isLastBlock ? index + 1 : index - 1 ), + adjacentBlockIndex: ! isLastBlock ? index + 1 : index - 1, + adjacentBlocks: innerBlocks || [], + nextBlock: nth( innerBlocks, index + 1 ), + previousBlock: index === 0 ? undefined : nth( innerBlocks, index - 1 ), // nth will loop back to the last if index is -1. numInnerBlocks: block.innerBlocks.length, hasInnerBlocks: !! block.innerBlocks.length, innerBlocks: block.innerBlocks, @@ -86,47 +148,25 @@ const STORE_REDUCER = ( state = {}, action ) => { parentTree: cloneDeep( parentTree ), } } - } - - // Gather all the info about the block. - if ( ! blocks[ block.clientId ] ) { - const isLastBlock = innerBlocks.length - 1 === index - blocks[ block.clientId ] = { - blockIndex: index, - parentBlock, - isFirstBlock: index === 0, - isLastBlock, - isOnlyBlock: innerBlocks.length === 1, - adjacentBlock: nth( innerBlocks, ! isLastBlock ? index + 1 : index - 1 ), - adjacentBlockIndex: ! isLastBlock ? index + 1 : index - 1, - adjacentBlocks: innerBlocks || [], - nextBlock: nth( innerBlocks, index + 1 ), - previousBlock: index === 0 ? undefined : nth( innerBlocks, index - 1 ), // nth will loop back to the last if index is -1. - numInnerBlocks: block.innerBlocks.length, - hasInnerBlocks: !! block.innerBlocks.length, - innerBlocks: block.innerBlocks, - rootBlockClientId: rootBlock.clientId, - parentTree: cloneDeep( parentTree ), - } - } - // Update the parent tree. - parentTree.push( { - clientId: block.clientId, - name: block.name, - } ) + // Update the parent tree. + parentTree.push( { + clientId: block.clientId, + name: block.name, + } ) - // Recurse innerBlocks. - parseBlock( block.innerBlocks, block ) + // Recurse innerBlocks. + parseBlock( block.innerBlocks, block ) - // Update the parent tree. - parentTree.pop() - } ) - } + // Update the parent tree. + parentTree.pop() + } ) + } - // Go through all the inner blocks. - parseBlock( innerBlocks, rootBlock ) - } ) + // Go through all the inner blocks. + parseBlock( innerBlocks, rootBlock ) + } ) + } return { ...blocks } } @@ -140,43 +180,6 @@ register( createReduxStore( 'stackable/block-context', { selectors: STORE_SELECTORS, } ) ) -// This holds the current tree of client ids, we check against this if the -// block/content structure has changed. -let prevClientIds = null - -// Subscribe to all editor changes, so we can listen in to block structure -// changes. -subscribe( () => { - const tree = select( 'core/block-editor' ).__unstableGetClientIdsTree() - if ( ! prevClientIds ) { - prevClientIds = tree - const blocks = fixReusableInnerBlocks( tree ) - dispatch( 'stackable/block-context' ).setBlockTree( blocks ) - return - } - - // We can do a direct comparison here since the object being returned - // isn't changed unless the client id tree is changed, so this holds up - // even when blocks are edited. - if ( tree !== prevClientIds ) { - prevClientIds = tree - const blocks = fixReusableInnerBlocks( tree ) - dispatch( 'stackable/block-context' ).setBlockTree( blocks ) - } -} ) - -// Use to correct the blocks returned from getBlocks. -// Applies only core/block (reusable blocks) - Adds missing innerBlocks -const fixReusableInnerBlocks = blocks => { - return ( blocks || [] ).map( block => { - return { - ...block, - innerBlocks: fixReusableInnerBlocks( block.innerBlocks ), - name: select( 'core/block-editor' ).getBlockName( block.clientId ), - } - } ) -} - // The default context if none is found. This can be true when the block is // being previewed as an example. const DEFAULT_CONTEXT = { diff --git a/src/lightbox/index.php b/src/lightbox/index.php index f4c8f097a..1f722e549 100644 --- a/src/lightbox/index.php +++ b/src/lightbox/index.php @@ -11,7 +11,7 @@ if ( ! function_exists( 'stackable_load_lightbox_frontend_script' ) ) { function stackable_load_lightbox_frontend_script( $block_content, $block ) { - if ( array_key_exists( 'attrs', $block ) ) { + if ( array_key_exists( 'attrs', $block ) && is_array( $block['attrs'] ) ) { // If the block has one of these 3 attributes, then we'll need // to load the lightbox script and styles. if ( ( array_key_exists( 'imageHasLightbox', $block['attrs'] ) && $block['attrs']['imageHasLightbox'] ) || diff --git a/src/multisite.php b/src/multisite.php index e39979343..f1d772451 100644 --- a/src/multisite.php +++ b/src/multisite.php @@ -61,7 +61,11 @@ function stackable_allow_safe_style_css( $styles ) { * @return array Modified HTML tags & attributes. */ function stackable_allow_wp_kses_allowed_html( $tags, $context ) { - $tags['style'] = array(); + $tags['style'] = array( + 'id' => true, + 'class' => true, + 'type' => true, + ); // Used by Separators & Icons. $tags['svg'] = array( @@ -79,12 +83,41 @@ function stackable_allow_wp_kses_allowed_html( $tags, $context ) { 'style' => true, ); $tags['path'] = array( - 'class' => true, - 'fill' => true, 'd' => true, ); - $tags['filter'] = array( - 'id' => true, + $tags['circle'] = array( + 'cx' => true, + 'cy' => true, + 'r' => true, + ); + $tags['polygon'] = array( + 'points' => true, + ); + $tags['polyline'] = array( + 'points' => true, + ); + $tags['rect'] = array( + 'x' => true, + 'y' => true, + 'width' => true, + 'height' => true, + 'rx' => true, + 'ry' => true, + ); + $tags['line'] = array( + 'x1' => true, + 'x2' => true, + 'y1' => true, + 'y2' => true, + ); + $tags['clippath'] = array(); + $tags['filter'] = array(); + $tags['g'] = array(); + $tags['text'] = array( + 'font-size' => true, + 'font-family' => true, + 'font-weight' => true, + 'font-*' => true, ); $tags['fegaussianblur'] = array( 'in' => true, @@ -113,8 +146,26 @@ function stackable_allow_wp_kses_allowed_html( $tags, $context ) { 'x2' => true, 'y1' => true, 'y2' => true, + 'gradientunits' => true, + 'gradienttransform' => true, + ); + + // Used by posts block. + $tags['time'] = array( + 'datetime' => true, ); + _stackable_svg_attributes( $tags, 'path' ); + _stackable_svg_attributes( $tags, 'circle' ); + _stackable_svg_attributes( $tags, 'polygon' ); + _stackable_svg_attributes( $tags, 'polyline' ); + _stackable_svg_attributes( $tags, 'line' ); + _stackable_svg_attributes( $tags, 'rect' ); + _stackable_svg_attributes( $tags, 'g' ); + _stackable_svg_attributes( $tags, 'clippath' ); + _stackable_svg_attributes( $tags, 'filter' ); + _stackable_svg_attributes( $tags, 'text' ); + _stackable_common_attributes( $tags, 'div' ); _stackable_common_attributes( $tags, 'h1' ); _stackable_common_attributes( $tags, 'h2' ); @@ -127,6 +178,24 @@ function stackable_allow_wp_kses_allowed_html( $tags, $context ) { return $tags; } + function _stackable_svg_attributes( &$tags, $tag ) { + $tags[ $tag ]['id'] = true; + $tags[ $tag ]['class'] = true; + $tags[ $tag ]['style'] = true; + $tags[ $tag ]['fill'] = true; + $tags[ $tag ]['fill-rule'] = true; + $tags[ $tag ]['fill-opacity'] = true; + $tags[ $tag ]['fill-*'] = true; + $tags[ $tag ]['clip-path'] = true; + $tags[ $tag ]['transform'] = true; + $tags[ $tag ]['stroke'] = true; + $tags[ $tag ]['stroke-width'] = true; + $tags[ $tag ]['stroke-linejoin'] = true; + $tags[ $tag ]['stroke-miterlimit'] = true; + $tags[ $tag ]['stroke-*'] = true; + $tags[ $tag ]['opacity'] = true; + } + function _stackable_common_attributes( &$tags, $tag ) { $tags[ $tag ]['aria-hidden'] = true; // Used by Separators & Icons $tags[ $tag ]['aria-expanded'] = true; // Used by Expand block. @@ -152,6 +221,8 @@ function _stackable_common_attributes( &$tags, $tag ) { * We do the replacement upon post saving and not on `render_block` so that * we don't need to do any processing for the frontend. * + * Only affects multisite. + * * @see Issue: https://core.trac.wordpress.org/ticket/48873#ticket * @see https://github.com/gambitph/Stackable/issues/510 * @@ -160,19 +231,26 @@ function _stackable_common_attributes( &$tags, $tag ) { * @return array Post data to save */ function stackable_fix_gt_style_errors( $data ) { + if ( ! is_multisite() ) { + return $data; + } if ( empty( $data['post_content'] ) ) { return $data; } // Check whether there are any ">" symbols inside %s', function( $matches ) { return ''; }, $matches[0] ); diff --git a/src/plugins/get-client-id-tree/index.js b/src/plugins/get-client-id-tree/index.js new file mode 100644 index 000000000..a142c6508 --- /dev/null +++ b/src/plugins/get-client-id-tree/index.js @@ -0,0 +1,28 @@ +/** + * The Client Tree is an internal list of all client IDs and their descendants. + * This is used to populate the block context and to help identify the different + * properties of each block: parent, sibling, index, previous/next block, etc. + * + * This is important for Stackable because we need to know where the block is to + * be able to show/hide some controls and to be able to enable/disable block + * functionality. For example, the link panel of an Image Block cannot be shown + * if it's used inside an Image Box block. + */ + +/** + * WordPress dependencies + */ +import { useEffect } from '@wordpress/element' +import { dispatch, useSelect } from '@wordpress/data' + +export const ClientTree = () => { + const allClientIds = useSelect( select => { + return select( 'core/block-editor' ).getClientIdsWithDescendants() + } ) + useEffect( () => { + dispatch( 'stackable/block-context' )?.updateClientTree() + }, [ allClientIds ] ) + + // Don't render anything. + return null +} diff --git a/src/plugins/index.js b/src/plugins/index.js index 061395118..d528d2bd4 100644 --- a/src/plugins/index.js +++ b/src/plugins/index.js @@ -6,13 +6,13 @@ import './theme-block-size' import './design-library-button' import './layout-picker-reset' // import './v2-migration-popup' // Probably 1.5yrs of checking for backward compatibility is enough. -import './navigation-view' import './save-block' import './editor-device-preview-class' import { BlockLinking } from './block-linking' import { BlockHoverState } from './block-hover-state' import { ContentAlign } from './content-align' import { EditorDom } from './get-editor-dom' +import { ClientTree } from './get-client-id-tree' /** * WordPress dependencies @@ -30,6 +30,7 @@ registerPlugin( 'stackable-convert-to-container-button', { render: ConvertToCont registerPlugin( 'stackable-block-hover-state', { render: BlockHoverState } ) registerPlugin( 'stackable-content-align', { render: ContentAlign } ) registerPlugin( 'stackable-editor-dom', { render: EditorDom } ) +registerPlugin( 'stackable-client-tree', { render: ClientTree } ) if ( devMode ) { registerPlugin( 'stackable-block-attributes-get-button', { render: GetBlockAttributesButton } ) diff --git a/src/plugins/navigation-view/index.js b/src/plugins/navigation-view/index.js deleted file mode 100644 index aad1a23d2..000000000 --- a/src/plugins/navigation-view/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Internal dependencies - */ -import { NavigationView } from '~stackable/block-components' - -/** - * External dependencies - */ -import { settings, isContentOnlyMode } from 'stackable' - -/** - * WordPress dependencies - */ -import { addFilter } from '@wordpress/hooks' -import { createHigherOrderComponent } from '@wordpress/compose' - -if ( ! isContentOnlyMode && settings.stackable_enable_navigation_panel ) { - const withNavigationView = createHigherOrderComponent( BlockEdit => { - return props => { - const isStackableBlock = props.name.startsWith( 'stackable/' ) - - if ( ! isStackableBlock || ! props.isSelected ) { - return - } - - return ( - <> - - - - ) - } - }, 'withNavigationView' ) - - addFilter( - 'editor.BlockEdit', - 'stackable/navigation-view', - withNavigationView - ) -} diff --git a/src/util/colors.js b/src/util/colors.js index 1a02ef60c..21507ca7b 100644 --- a/src/util/colors.js +++ b/src/util/colors.js @@ -99,3 +99,32 @@ export const colorOpacityToHexAplha = ( color, opacity ) => { } return color } + +export const extractRgba = value => { + let options = value + let color = '' + options = options.replace( /rgba\(.*\)$/g, val => { + color = val + return '' + } ).trim() + + return { + options, + color, + } +} + +export const rgbaToHexAlpha = color => { + const rgba = color.substring( 5, color.length - 1 ).split( ',' ) + + const hexAlpha = rgba.map( ( val, i ) => { + if ( i === 3 ) { + const opacity = parseFloat( val ) + return Math.ceil( ( opacity * 255 ) ).toString( 16 ).padStart( 2, '0' ) + } + const hex = parseInt( val ).toString( 16 ) + return hex.length === 1 ? '0' + hex : hex + } ) + + return '#' + hexAlpha.join( '' ) +} diff --git a/src/welcome/admin.js b/src/welcome/admin.js index ee6774557..5cab7928c 100644 --- a/src/welcome/admin.js +++ b/src/welcome/admin.js @@ -232,7 +232,6 @@ const EditorSettings = () => { 'stackable_google_maps_api_key', 'stackable_enable_design_library', 'stackable_optimize_inline_css', - 'stackable_enable_navigation_panel', 'stackable_block_default_width', 'stackable_block_wide_width', 'stackable_auto_collapse_panels', @@ -274,20 +273,6 @@ const EditorSettings = () => { } } help={ __( 'Optimize inlined CSS styles. If this is enabled, similar selectors will be combined together, helpful if you changed Block Defaults.', i18n ) } /> - { - setIsBusy( true ) - const model = new models.Settings( { stackable_enable_navigation_panel: value } ) // eslint-disable-line camelcase - model.save().then( () => setIsBusy( false ) ) - setSettings( { - ...settings, - stackable_enable_navigation_panel: value, // eslint-disable-line camelcase - } ) - } } - help={ __( 'A block Navigation panel that floats at the bottom of the inspector that helps with adjusting the different blocks in your column layout.', i18n ) } - />