This commit is contained in:
2026-07-02 15:54:39 -06:00
commit 9883323161
17470 changed files with 4470592 additions and 0 deletions
@@ -0,0 +1,234 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.3.30] - 2026-06-26
### Changed
- Internal updates.
## [0.3.29] - 2026-06-24
### Changed
- Update dependencies. [#49641]
- Update package dependencies. [#49831]
## [0.3.28] - 2026-06-10
### Changed
- Update dependencies. [#49488]
## [0.3.27] - 2026-06-08
### Changed
- Internal: No longer require automattic/jetpack-changelogger as a per-project dev dependency. [#48225]
- Update dependencies. [#48210]
## [0.3.26] - 2026-04-11
### Changed
- Update dependencies. [#47600]
## [0.3.25] - 2026-03-09
### Changed
- Switch to Native TypeScript compiler based on Go. [#47375]
- Update package dependencies. [#47002] [#47173] [#47496]
## [0.3.24] - 2026-02-03
### Changed
- Update dependencies. [#46893]
## [0.3.23] - 2026-01-26
### Changed
- Update package dependencies. [#46552]
## [0.3.22] - 2026-01-07
### Changed
- Update dependencies. [#46381]
## [0.3.21] - 2025-12-11
### Changed
- Update dependencies. [#46157]
## [0.3.20] - 2025-11-20
### Changed
- Update dependencies. [#45964]
## [0.3.19] - 2025-10-28
### Changed
- Update package dependencies. [#45652]
## [0.3.18] - 2025-10-09
### Changed
- Update package dependencies. [#45173] [#45241]
## [0.3.17] - 2025-09-17
### Changed
- Update package dependencies. [#45097]
## [0.3.16] - 2025-08-21
### Added
- Add `typecheck` script to ensure that TypeScript files are type-checked. [#44795]
### Changed
- Update dependencies. [#44736]
## [0.3.15] - 2025-08-05
### Changed
- Internal updates.
## [0.3.14] - 2025-07-23
### Changed
- Internal updates.
## [0.3.13] - 2025-07-08
### Changed
- Update dependencies. [#44142]
## [0.3.12] - 2025-06-23
### Changed
- Update dependencies. [#44002]
## [0.3.11] - 2025-06-04
### Changed
- Update dependencies. [#43569]
- Update package dependencies. [#43766]
## [0.3.10] - 2025-05-15
### Changed
- Update package dependencies. [#43398] [#43400]
## [0.3.9] - 2025-04-16
### Changed
- Code: First pass of style coding standards. [#42734]
## [0.3.8] - 2025-04-03
### Changed
- Update dependencies. [#42830]
## [0.3.7] - 2025-04-01
### Changed
- Update package dependencies. [#42762]
## [0.3.6] - 2025-03-26
### Changed
- Internal updates.
## [0.3.5] - 2025-03-18
### Changed
- Internal updates.
## [0.3.4] - 2025-03-05
### Changed
- Update dependencies. [#41847]
## [0.3.3] - 2025-02-12
### Changed
- Updated package dependencies. [#41286]
## [0.3.2] - 2025-01-23
### Changed
- Code: Use function-style exit() and die() with a default status code of 0. [#41167]
## [0.3.1] - 2025-01-06
### Changed
- Internal updates.
## [0.3.0] - 2024-11-28
### Removed
- General: Update minimum PHP version to 7.2. [#40147]
## [0.2.4] - 2024-11-04
### Added
- Enable test coverage. [#39961]
## [0.2.3] - 2024-10-29
### Changed
- Only include `wp-polyfill` as a script dependency when needed. [#39629]
## [0.2.2] - 2024-08-29
### Changed
- Updated package dependencies. [#39004] [#39111]
## [0.2.1] - 2024-03-15
### Changed
- Internal updates.
## [0.2.0] - 2024-01-22
### Changed
- The package now requires PHP >= 7.0. [#34192]
## [0.1.6] - 2023-10-26
- Updated package dependencies.
## [0.1.5] - 2023-09-01
### Changed
- Updated package dependencies. [#32040] [#32605]
## [0.1.4] - 2023-05-11
### Added
- Add Jetpack Autoloader package suggestion. [#29988]
### Changed
- Updated package dependencies.
## [0.1.3] - 2023-04-06
### Changed
- Updated package dependencies. [#29471]
## [0.1.2] - 2023-01-17
### Changed
- Updated package dependencies.
### Fixed
- Updating package to fix boost beta release [#27550]
## [0.1.1] - 2022-11-22
### Fixed
- Fixing plugin-deactivation package
## 0.1.0 - 2022-11-21
### Added
- Added package to intercept plugin deactivation [#27081]
[0.3.30]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.29...v0.3.30
[0.3.29]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.28...v0.3.29
[0.3.28]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.27...v0.3.28
[0.3.27]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.26...v0.3.27
[0.3.26]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.25...v0.3.26
[0.3.25]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.24...v0.3.25
[0.3.24]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.23...v0.3.24
[0.3.23]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.22...v0.3.23
[0.3.22]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.21...v0.3.22
[0.3.21]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.20...v0.3.21
[0.3.20]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.19...v0.3.20
[0.3.19]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.18...v0.3.19
[0.3.18]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.17...v0.3.18
[0.3.17]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.16...v0.3.17
[0.3.16]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.15...v0.3.16
[0.3.15]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.14...v0.3.15
[0.3.14]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.13...v0.3.14
[0.3.13]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.12...v0.3.13
[0.3.12]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.11...v0.3.12
[0.3.11]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.10...v0.3.11
[0.3.10]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.9...v0.3.10
[0.3.9]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.8...v0.3.9
[0.3.8]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.7...v0.3.8
[0.3.7]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.6...v0.3.7
[0.3.6]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.5...v0.3.6
[0.3.5]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.4...v0.3.5
[0.3.4]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.3...v0.3.4
[0.3.3]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.2...v0.3.3
[0.3.2]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.4...v0.3.0
[0.2.4]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.6...v0.2.0
[0.1.6]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.5...v0.1.6
[0.1.5]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.4...v0.1.5
[0.1.4]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.3...v0.1.4
[0.1.3]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.0...v0.1.1
@@ -0,0 +1 @@
<?php return array('dependencies' => array('wp-polyfill'), 'version' => '6514b172c8771c862fd2');
@@ -0,0 +1 @@
.jp-plugin-deactivation{display:none}.jp-plugin-deactivation *{box-sizing:border-box}@keyframes jp-plugin-deactivation__appear-animation{0%{transform:translateY(32px)}to{transform:translateY(0)}}.jp-plugin-deactivation--active{display:block}.jp-plugin-deactivation__overlay{background-color:rgba(0,0,0,.349);bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.jp-plugin-deactivation__dialog{animation:jp-plugin-deactivation__appear-animation .1s ease-out;animation-fill-mode:forwards;background-color:#fff;border-radius:2px;bottom:0;box-shadow:0 10px 10px rgba(0,0,0,.251);display:flex;flex-direction:column;left:0;margin:auto;position:fixed;right:0;top:0;z-index:10000}.jp-plugin-deactivation__dialog__content{align-items:center;background-color:#f9f9f6;display:flex;flex-direction:column;flex-grow:1;justify-content:center;padding:2rem 1rem;width:100%}.jp-plugin-deactivation__dialog__actions{border-top:1px solid #dcdcde;padding:2rem 1rem;width:100%}@media screen and (min-width:600px){.jp-plugin-deactivation__dialog{height:fit-content;max-height:calc(100% - 120px);max-width:calc(100% - 32px)}}@media screen and (min-width:960px){.jp-plugin-deactivation__dialog{height:900px;width:1200px}.jp-plugin-deactivation__dialog h1{font-size:36px}}.jp-plugin-deactivation li,.jp-plugin-deactivation p{font-size:1rem}.jp-plugin-deactivation ul{list-style:disc;list-style-position:inside;margin-left:2rem}.jp-plugin-deactivation__button{--btn-color:#000;background-color:var(--btn-color);border:1px solid var(--btn-color);border-radius:4px;color:#fff;cursor:pointer;font-size:var(--font-body-small);height:40px;margin-left:5px;margin-right:5px;padding:6px 12px}.jp-plugin-deactivation__button:hover{color:#fff}.jp-plugin-deactivation__button--outline{background-color:transparent;color:var(--btn-color)}.jp-plugin-deactivation__button--outline:hover{color:var(--btn-color)}.jp-plugin-deactivation__button--destructive{--btn-color:#d63639}
@@ -0,0 +1 @@
(()=>{"use strict";var t={770(){}},i={};(function e(a){var n=i[a];if(void 0!==n)return n.exports;var o=i[a]={exports:{}};return t[a](o,o.exports,e),o.exports})(770);class e{deactivateButton;dialog;static ACTIVE_CLASS_NAME="jp-plugin-deactivation--active";constructor(t){this.pluginSlug=t,this.deactivateButton=document.getElementById(`deactivate-${this.pluginSlug}`),this.deactivateButton||(this.deactivateButton=document.getElementById(`deactivate-${this.pluginSlug}-dev`)),this.deactivateButton&&(this.dialog=document.getElementById(`jp-plugin-deactivation-${this.pluginSlug}`),this.observeDialogActions(),this.attachEventListeners())}showDialog(){this.dialog.classList.add(e.ACTIVE_CLASS_NAME)}hideDialog(){this.dialog.classList.remove(e.ACTIVE_CLASS_NAME)}observeDialogActions(){this.dialog.querySelectorAll('[data-jp-plugin-deactivation-action="close"]').forEach(t=>{t.addEventListener("click",()=>{this.hideDialog()})});this.dialog.querySelectorAll('[data-jp-plugin-deactivation-action="deactivate"]').forEach(t=>{t.addEventListener("click",()=>{this.deactivate()})})}attachEventListeners(){this.deactivateButton.addEventListener("click",t=>{t.preventDefault(),this.showDialog()})}deactivate(){this.deactivateButton&&(window.location.href=this.deactivateButton.href,this.hideDialog())}}if("JetpackPluginDeactivationData"in window){const t=window.JetpackPluginDeactivationData;document.addEventListener("DOMContentLoaded",function(){t.instances||(t.instances={});for(const i of t.slugs)t.instances[i]=new e(i)})}})();
@@ -0,0 +1 @@
.jp-plugin-deactivation{display:none}.jp-plugin-deactivation *{box-sizing:border-box}@keyframes jp-plugin-deactivation__appear-animation{0%{transform:translateY(32px)}to{transform:translateY(0)}}.jp-plugin-deactivation--active{display:block}.jp-plugin-deactivation__overlay{background-color:rgba(0,0,0,.349);bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.jp-plugin-deactivation__dialog{animation:jp-plugin-deactivation__appear-animation .1s ease-out;animation-fill-mode:forwards;background-color:#fff;border-radius:2px;bottom:0;box-shadow:0 10px 10px rgba(0,0,0,.251);display:flex;flex-direction:column;left:0;margin:auto;position:fixed;right:0;top:0;z-index:10000}.jp-plugin-deactivation__dialog__content{align-items:center;background-color:#f9f9f6;display:flex;flex-direction:column;flex-grow:1;justify-content:center;padding:2rem 1rem;width:100%}.jp-plugin-deactivation__dialog__actions{border-top:1px solid #dcdcde;padding:2rem 1rem;width:100%}@media screen and (min-width:600px){.jp-plugin-deactivation__dialog{height:fit-content;max-height:calc(100% - 120px);max-width:calc(100% - 32px)}}@media screen and (min-width:960px){.jp-plugin-deactivation__dialog{height:900px;width:1200px}.jp-plugin-deactivation__dialog h1{font-size:36px}}.jp-plugin-deactivation li,.jp-plugin-deactivation p{font-size:1rem}.jp-plugin-deactivation ul{list-style:disc;list-style-position:inside;margin-right:2rem}.jp-plugin-deactivation__button{--btn-color:#000;background-color:var(--btn-color);border:1px solid var(--btn-color);border-radius:4px;color:#fff;cursor:pointer;font-size:var(--font-body-small);height:40px;margin-left:5px;margin-right:5px;padding:6px 12px}.jp-plugin-deactivation__button:hover{color:#fff}.jp-plugin-deactivation__button--outline{background-color:transparent;color:var(--btn-color)}.jp-plugin-deactivation__button--outline:hover{color:var(--btn-color)}.jp-plugin-deactivation__button--destructive{--btn-color:#d63639}
@@ -0,0 +1,128 @@
<?php
/**
* Intercept deactivation of plugins.
*
* @package automattic/jetpack-plugin-deactivation
*/
namespace Automattic\Jetpack\Plugin_Deactivation;
use Automattic\Jetpack\Assets;
/**
* Handles plugin deactivation.
*
* Instantiates the deactivation handler to intercept the deactivation of plugins.
*/
class Deactivation_Handler {
/**
* Plugin Deactivation package version
*
* @var string
*/
const PACKAGE_VERSION = '0.3.30';
/**
* Slug of the plugin to intercept deactivation for.
*
* @var string
*/
private $plugin;
/**
* Path to a PHP file that will be used as a template for the deactivation dialog.
*
* Copy ./dialog-template.php to your plugin and modify it to suit your needs.
*
* @var string
*/
private $dialog_view;
/**
* Constructor.
*
* @param string $plugin Slug of the plugin to intercept deactivation for.
* @param string $dialog_view Path to a PHP file that will be used as a template for the deactivation dialog.
*/
public function __construct( $plugin, $dialog_view ) {
$this->plugin = $plugin;
$this->dialog_view = $dialog_view;
}
/**
* Instantiates the deactivation handler to intercept the deactivation of plugins.
*
* @param string $plugin Slug of the plugin to intercept deactivation for.
* @param string $dialog_view Path to a PHP file that will be used as a template for the deactivation dialog.
*/
public static function init( $plugin, $dialog_view ) {
$instance = new self( $plugin, $dialog_view );
if ( ! file_exists( $instance->dialog_view ) ) {
return new \WP_Error( 'no-template', 'The plugin deactivation dialog view file does not exist.' );
}
add_action( 'load-plugins.php', array( $instance, 'enqueue_script' ) );
add_action( 'admin_footer-plugins.php', array( $instance, 'embed_dialog' ) );
add_filter( 'jp_plugin_deactivation_data', array( $instance, 'add_deactivation_data' ) );
return $instance;
}
/**
* Used by `jp_plugin_deactivation_data` filter to pass data to
* the JetpackPluginDeactivation class.
*
* @param array $data The data to pass to the JetpackPluginDeactivation class.
*/
public function add_deactivation_data( $data ) {
$data['slugs'][] = $this->plugin;
return $data;
}
/**
* Enqueues the deactivation handler script and styles.
*/
public function enqueue_script() {
Assets::register_script(
'jetpack-plugin-deactivation',
'../build/index.js',
__FILE__,
array(
'enqueue' => true,
'in_footer' => true,
'textdomain' => 'jetpack-plugin-deactivation',
)
);
/**
* This is going to pass plugin slugs to the script.
*/
$data = array(
'slugs' => array(),
);
wp_localize_script( 'jetpack-plugin-deactivation', 'JetpackPluginDeactivationData', apply_filters( 'jp_plugin_deactivation_data', $data ) );
}
/**
* Add required html to the plugin page footer.
*/
public function embed_dialog() {
?>
<div
id="jp-plugin-deactivation-<?php echo esc_attr( $this->plugin ); ?>"
data-jp-plugin-deactivation="<?php echo esc_attr( $this->plugin ); ?>"
class="jp-plugin-deactivation"
>
<div class="jp-plugin-deactivation__dialog">
<?php include $this->dialog_view; ?>
</div>
<div
data-jp-plugin-deactivation-action="close"
class="jp-plugin-deactivation__overlay"
></div>
</div>
<?php
}
}
@@ -0,0 +1,35 @@
<?php
/**
* Reference template file for deactivation handler dialog.
*
* This file is not used directly. Copy this file to your plugin and modify it to suit your needs.
*
* @package automattic/jetpack-plugin-deactivation
*/
if ( ! defined( 'ABSPATH' ) ) {
exit( 0 ); // Exit if accessed directly
}
?>
<main class="jp-plugin-deactivation__dialog__content">
<h1><?php esc_html_e( 'Are you sure you want to deactivate?', 'jetpack-plugin-deactivation' ); ?></h1>
<p class="big"><?php esc_html_e( 'Before you go...', 'jetpack-plugin-deactivation' ); ?></p>
<p><?php esc_html_e( "We'd really love your feedback on our plugin.", 'jetpack-plugin-deactivation' ); ?></p>
<p><?php esc_html_e( "Just temporarily deactivating, or don't fancy giving feedback? No problem.", 'jetpack-plugin-deactivation' ); ?></p>
</main>
<footer class="jp-plugin-deactivation__dialog__actions">
<button
type="button"
class="jp-plugin-deactivation__button"
data-jp-plugin-deactivation-action="close"
><?php esc_html_e( 'Cancel', 'jetpack-plugin-deactivation' ); ?></button>
<button
type="button"
data-jp-plugin-deactivation-action="deactivate"
class="jp-plugin-deactivation__button jp-plugin-deactivation__button--outline jp-plugin-deactivation__button--destructive"
><?php esc_html_e( 'Deactivate', 'jetpack-plugin-deactivation' ); ?></button>
</footer>
<style>
/* Add your custom style for the dialog if any */
</style>