diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 3c8398e..43de19d 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,13 +1,2 @@ -# These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username ko_fi: milanpetrovic -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry -custom: ['https://buymeacoffee.com/millan'] +buy_me_a_coffee: millan diff --git a/.gitignore b/.gitignore index ff87634..fa832e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor/ -node_modules/ \ No newline at end of file +node_modules/ +dist/ diff --git a/changelog.md b/changelog.md index f631749..aee68b1 100644 --- a/changelog.md +++ b/changelog.md @@ -2,7 +2,14 @@ ## Changelog -### Version: 4.2 (2025.06.30) +### Version: 4.3 (2026.07.17) + +* **new** replaced SmartAnimatedPopup with Flyin +* **new** rewritten all JS into TypeScript with no jQuery dependencies +* **new** modern Vite and TypeScript build system +* **removed** all external JavaScript libraries + +### Version: 4.2 (2026.06.30) * **new** tested with WordPress 7.0 * **new** tested and compatible with `PHP` 8.5 @@ -30,26 +37,3 @@ * **new** tested and compatible with `PHP` 8.4 RC 3 * **new** using composer to load `Kint` library * **new** various constants for KINT library control - -### Version: 3.9.2 (2024.08.23) - -* **fix** one more issue with the access to OPCache status information - -### Version: 3.9.1 (2024.08.19) - -* **fix** problem with the Tracker when closure makes a call - -### Version: 3.9 (2024.05.14) - -* **edit** few more updates and improvements -* **edit** replacement of some native with WordPress functions -* **edit** various small updates and tweaks -* **edit** Kint Pretty Print Library 5.1.1 -* **fix** various PHP notices related to PHP 8.1 and newer - -### Version: 3.8 (2024.04.24) - -* **edit** few minor tweaks and changes -* **edit** updates to the plugin readme file -* **edit** small changes related to the PHP 8.3 compatibility -* **fix** various PHP notices related to PHP 8.1 and newer diff --git a/core/admin/Plugin.php b/core/admin/Plugin.php index c4249e6..bfa1f9e 100644 --- a/core/admin/Plugin.php +++ b/core/admin/Plugin.php @@ -7,9 +7,9 @@ } class Plugin { - private $_pages = array(); + private array $_pages = array(); - public function __construct() { + private function __construct() { add_action( 'admin_menu', array( $this, 'admin_menu' ) ); add_action( 'admin_init', array( $this, 'admin_init' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); @@ -40,14 +40,15 @@ public function plugin_links( $links, $file ) { if ( $file == 'debugpress/debugpress.php' ) { $links[] = '' . esc_html__( 'Home Page', 'debugpress' ) . ''; $links[] = '' . esc_html__( 'Buy Me A Coffee', 'debugpress' ) . ''; + $links[] = '' . esc_html__( 'Ko-Fi', 'debugpress' ) . ''; } return $links; } public function enqueue_scripts() { - wp_enqueue_style( 'debugpress-admin', DEBUGPRESS_PLUGIN_URL . 'css/adminpanel' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.css', array(), DEBUGPRESS_VERSION ); - wp_enqueue_script( 'debugpress-admin', DEBUGPRESS_PLUGIN_URL . 'js/adminpanel' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.js', array( 'jquery' ), DEBUGPRESS_VERSION, true ); + wp_enqueue_style( 'debugpress-admin', DEBUGPRESS_PLUGIN_DIST_URL . 'admin.css', array(), DEBUGPRESS_VERSION ); + wp_enqueue_script( 'debugpress-admin', DEBUGPRESS_PLUGIN_DIST_URL . 'admin.js', array( 'jquery' ), DEBUGPRESS_VERSION, true ); } public function admin_menu() { diff --git a/core/display/Loader.php b/core/display/Loader.php index 518d480..43d90d7 100644 --- a/core/display/Loader.php +++ b/core/display/Loader.php @@ -149,7 +149,7 @@ public function button() : string { $button .= '' . $_error_counts . ''; $button .= ''; - $button .= '' . __( 'Open Debugger Panel', 'debugpress' ) . ''; + $button .= '' . __( 'Open Debugger Panel', 'debugpress' ) . ''; return $button; } diff --git a/core/main/Plugin.php b/core/main/Plugin.php index 9fd7374..27dff93 100644 --- a/core/main/Plugin.php +++ b/core/main/Plugin.php @@ -167,21 +167,12 @@ public function activation() { } public function init() { - $dependencies = array( - 'jquery', - 'animated-popup', - ); - - if ( $this->get( 'mousetrap' ) ) { - $dependencies[] = 'mousetrap'; - } + wp_register_style( 'debugpress-print', DEBUGPRESS_PLUGIN_DIST_URL . 'print.css', array(), DEBUGPRESS_VERSION ); + wp_register_style( 'dev4press-flyin', DEBUGPRESS_PLUGIN_DIST_URL . 'flyin.css', array(), DEBUGPRESS_FLYIN_VERSION ); + wp_register_script( 'dev4press-flyin', DEBUGPRESS_PLUGIN_DIST_URL . 'flyin.js', array(), DEBUGPRESS_FLYIN_VERSION, true ); - wp_register_style( 'animated-popup', DEBUGPRESS_PLUGIN_URL . 'libraries/popup/popup.min.css', array(), $this->_animated_popup_version ); - wp_register_style( 'debugpress-print', DEBUGPRESS_PLUGIN_URL . 'css/prettyprint' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.css', array(), DEBUGPRESS_VERSION ); - wp_register_style( 'debugpress', DEBUGPRESS_PLUGIN_URL . 'css/debugpress' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.css', array( 'animated-popup' ), DEBUGPRESS_VERSION ); - wp_register_script( 'animated-popup', DEBUGPRESS_PLUGIN_URL . 'libraries/popup/popup.min.js', array( 'jquery' ), $this->_animated_popup_version, true ); - wp_register_script( 'mousetrap', DEBUGPRESS_PLUGIN_URL . 'libraries/mousetrap/mousetrap.min.js', array(), $this->_mousetrap_version, true ); - wp_register_script( 'debugpress', DEBUGPRESS_PLUGIN_URL . 'js/debugpress' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.js', $dependencies, DEBUGPRESS_VERSION, true ); + wp_register_style( 'debugpress', DEBUGPRESS_PLUGIN_DIST_URL . 'panel.css', array( 'dev4press-flyin', 'debugpress-print' ), DEBUGPRESS_VERSION ); + wp_register_script( 'debugpress', DEBUGPRESS_PLUGIN_DIST_URL . 'panel.js', array( 'dev4press-flyin' ), DEBUGPRESS_VERSION, true ); if ( ! $this->is_rest_request() && ! DEBUGPRESS_IS_CLI && ! DEBUGPRESS_IS_AJAX && ! DEBUGPRESS_IS_CRON && $this->is_enabled() ) { Loader::instance(); diff --git a/css/adminpanel.css b/css/adminpanel.css deleted file mode 100644 index be8fc45..0000000 --- a/css/adminpanel.css +++ /dev/null @@ -1,276 +0,0 @@ -.debugpress-panel .nav-tab { - margin-left: 10px; - padding: 5px 15px; -} -.debugpress-panel .nav-tab .dashicons { - font-size: 16px; - margin-right: 5px; - vertical-align: middle; -} -.debugpress-panel .nav-tab-right { - float: right; - margin-right: 10px; - margin-left: 0; -} - -.debugpress-panel-settings .tab-content { - display: none; -} -.debugpress-panel-settings .tab-content.tab-content-active { - display: block; -} - -.debugpress_settings { - width: calc(100% - 330px); - float: left; - color: #000; -} -.debugpress_settings .debugpress-settings-section { - max-width: 720px; - background-color: #FFF; - padding: 15px; - margin: 15px 0 0 15px; - border: 1px solid #1E72BD; -} -.debugpress_settings .debugpress-settings-section h2 { - margin: -15px -15px 15px; - padding: 15px; - background-color: #1E72BD; - color: #FFF; -} -.debugpress_settings .debugpress-settings-section .debugpress-section-info { - margin: -15px -15px 0; - padding: 15px; - background-color: #DAEEFF; -} -.debugpress_settings .debugpress-settings-section p.description { - border-top: 1px solid #1E72BD; - margin: 10px 0 0; - padding: 5px 0 0; -} - -.debugpress_sidebar { - float: right; - padding-left: 20px; - margin-right: 15px; - width: 280px; -} -.debugpress_sidebar img { - height: auto; - width: 100%; -} -.debugpress_sidebar > div { - text-align: center; - padding: 15px; - margin: 15px 0; - max-width: 360px; -} -.debugpress_sidebar .debugpress_plugin { - color: #FFF; - background: #1E72BD; -} -.debugpress_sidebar .debugpress_plugin > span { - display: block; - text-transform: uppercase; - letter-spacing: 2px; -} -.debugpress_sidebar .debugpress_plugin > div { - border-top: 1px solid #FFF; - border-bottom: 1px solid #FFF; - padding: 15px 0; - margin: 15px 0; - font-weight: 700; - font-size: 1.1em; -} -.debugpress_sidebar .debugpress_plugin .button-secondary { - font-weight: 700; -} -.debugpress_sidebar .debugpress_help { - color: #111; - background: #FFF; - border: 1px solid #1E72BD; -} -.debugpress_sidebar .debugpress_help > p { - margin: 0; - padding: 0 0 15px; -} -.debugpress_sidebar .debugpress_dev4press { - color: #111; - background: #E0E0E0; - border: 1px solid #1E72BD; -} -.debugpress_sidebar .debugpress_dev4press > p { - margin: 0; - padding: 0 0 10px; - font-weight: 700; -} -.debugpress_sidebar .debugpress_dev4press > div { - border-top: 1px solid #1E72BD; - padding: 15px 0 0; - margin: 15px 0 0; - font-weight: 700; - font-size: 1.2em; -} - -@media screen and (width <= 900px) { - .debugpress_settings { - width: 100%; - float: none; - } - .debugpress_settings .debugpress-settings-section { - margin: 15px; - } - .debugpress_sidebar { - border-top: 1px solid #1E72BD; - padding-top: 20px; - padding-left: 0; - width: 100%; - float: none; - margin: 0; - } - .debugpress_sidebar > div { - margin: 0 auto 15px; - } -} -.debugpress-panel-tools .tab-content { - margin: 15px; -} - -.debugpress_phpinfo { - overflow: auto; -} -.debugpress_phpinfo h1.p { - background-color: #222; - color: #FFF; - font-size: 28px; - margin: 0; - padding: 22px 16px; -} -.debugpress_phpinfo td img { - float: right; - margin: 7px 16px 0 0; -} -.debugpress_phpinfo table { - width: 100%; - background: #FFF; - border-collapse: collapse; - border: 1px solid #BBB; - margin: 0 0 5px; -} -.debugpress_phpinfo table td, -.debugpress_phpinfo table th { - padding: 5px; - text-align: left; - vertical-align: top; -} -.debugpress_phpinfo table tr th, -.debugpress_phpinfo table tr td.first { - width: 20%; -} -.debugpress_phpinfo table tr td.b, -.debugpress_phpinfo table tr th.first { - color: #333; - font-weight: 700; -} -.debugpress_phpinfo table tr td { - border-bottom: 1px solid #ECECEC; - word-break: break-all; -} -.debugpress_phpinfo table tr td .options { - text-align: right; - white-space: normal; - padding-right: 0; -} -.debugpress_phpinfo table tr.first th { - color: #222; - font-weight: 700; -} -.debugpress_phpinfo table tr:last-child td { - border-bottom: none; -} -.debugpress_phpinfo table tr.h th, .debugpress_phpinfo table tr.with-header th { - background: #666; - color: #FFF; - padding: 10px; -} -.debugpress_phpinfo table th { - text-align: left; - background-color: #ECECEC; - padding: 3px 5px; -} -.debugpress_phpinfo div.inside { - margin: -1px 0 10px; -} -.debugpress_phpinfo p.sub { - color: #777; - font-size: 13px; - font-style: italic; - padding: 5px 10px 15px; - margin: -12px; -} -.debugpress_phpinfo h3 { - background: #333 !important; - color: #FFF; - text-shadow: none !important; - font-size: 14px; - font-weight: 700; -} -.debugpress_phpinfo div.inside .link { - text-align: right; - font-weight: 700; -} -.debugpress_phpinfo a { - text-decoration: none; -} -.debugpress_phpinfo a:hover { - text-decoration: underline; -} -.debugpress_phpinfo h2.phpsection { - background-color: #333; - color: #FFF; - font-style: normal; - padding: 5px 10px; - font-size: 18px; - line-height: 24px; - margin-bottom: 5px; - text-shadow: none; -} -.debugpress_phpinfo h2.phpsection a { - color: #FFF; -} - -.debugpress_info table { - min-width: 50%; - max-width: 100%; - line-height: 1.5; - border-collapse: collapse; - border: 1px solid #BBB; - border-top: 0; -} -.debugpress_info table thead th { - text-align: left; - padding: 5px; - background: #666; - color: #FFF; -} -.debugpress_info table tbody tr { - border-bottom: 1px solid #BBB; - background: #FFF; -} -.debugpress_info table tbody tr th, .debugpress_info table tbody tr td { - vertical-align: top; - padding: 5px; - text-align: left; -} -.debugpress_info table tbody tr td { - border-left: 1px solid #BBB; -} -.debugpress_info table tbody tr td div { - word-break: break-all; -} - -@media screen and (width <= 1200px) { - .debugpress_info table { - width: 100%; - } -} diff --git a/css/adminpanel.min.css b/css/adminpanel.min.css deleted file mode 100644 index d4c3772..0000000 --- a/css/adminpanel.min.css +++ /dev/null @@ -1 +0,0 @@ -.debugpress-panel .nav-tab{margin-left:10px;padding:5px 15px}.debugpress-panel .nav-tab .dashicons{font-size:16px;margin-right:5px;vertical-align:middle}.debugpress-panel .nav-tab-right{float:right;margin-right:10px;margin-left:0}.debugpress-panel-settings .tab-content{display:none}.debugpress-panel-settings .tab-content.tab-content-active{display:block}.debugpress_settings{width:calc(100% - 330px);float:left;color:#000}.debugpress_settings .debugpress-settings-section{max-width:720px;background-color:#fff;padding:15px;margin:15px 0 0 15px;border:1px solid #1e72bd}.debugpress_settings .debugpress-settings-section h2{margin:-15px -15px 15px;padding:15px;background-color:#1e72bd;color:#fff}.debugpress_settings .debugpress-settings-section .debugpress-section-info{margin:-15px -15px 0;padding:15px;background-color:#daeeff}.debugpress_settings .debugpress-settings-section p.description{border-top:1px solid #1e72bd;margin:10px 0 0;padding:5px 0 0}.debugpress_sidebar{float:right;padding-left:20px;margin-right:15px;width:280px}.debugpress_sidebar img{height:auto;width:100%}.debugpress_sidebar>div{text-align:center;padding:15px;margin:15px 0;max-width:360px}.debugpress_sidebar .debugpress_plugin{color:#fff;background:#1e72bd}.debugpress_sidebar .debugpress_plugin>span{display:block;text-transform:uppercase;letter-spacing:2px}.debugpress_sidebar .debugpress_plugin>div{border-top:1px solid #fff;border-bottom:1px solid #fff;padding:15px 0;margin:15px 0;font-weight:700;font-size:1.1em}.debugpress_sidebar .debugpress_plugin .button-secondary{font-weight:700}.debugpress_sidebar .debugpress_help{color:#111;background:#fff;border:1px solid #1e72bd}.debugpress_sidebar .debugpress_help>p{margin:0;padding:0 0 15px}.debugpress_sidebar .debugpress_dev4press{color:#111;background:#e0e0e0;border:1px solid #1e72bd}.debugpress_sidebar .debugpress_dev4press>p{margin:0;padding:0 0 10px;font-weight:700}.debugpress_sidebar .debugpress_dev4press>div{border-top:1px solid #1e72bd;padding:15px 0 0;margin:15px 0 0;font-weight:700;font-size:1.2em}.debugpress-panel-tools .tab-content{margin:15px}.debugpress_phpinfo{overflow:auto}.debugpress_phpinfo h1.p{background-color:#222;color:#fff;font-size:28px;margin:0;padding:22px 16px}.debugpress_phpinfo td img{float:right;margin:7px 16px 0 0}.debugpress_phpinfo table{width:100%;background:#fff;border-collapse:collapse;border:1px solid #bbb;margin:0 0 5px}.debugpress_phpinfo table td{padding:5px;text-align:left;vertical-align:top}.debugpress_phpinfo table th{vertical-align:top}.debugpress_phpinfo table tr td.first,.debugpress_phpinfo table tr th{width:20%}.debugpress_phpinfo table tr td.b,.debugpress_phpinfo table tr th.first{color:#333;font-weight:700}.debugpress_phpinfo table tr td{border-bottom:1px solid #ececec;word-break:break-all}.debugpress_phpinfo table tr td .options{text-align:right;white-space:normal;padding-right:0}.debugpress_phpinfo table tr.first th{color:#222;font-weight:700}.debugpress_phpinfo table tr:last-child td{border-bottom:none}.debugpress_phpinfo table tr.h th,.debugpress_phpinfo table tr.with-header th{background:#666;color:#fff;padding:10px}.debugpress_phpinfo table th{text-align:left;background-color:#ececec;padding:3px 5px}.debugpress_phpinfo div.inside{margin:-1px 0 10px}.debugpress_phpinfo p.sub{color:#777;font-size:13px;font-style:italic;padding:5px 10px 15px;margin:-12px}.debugpress_phpinfo h3{background:#333!important;color:#fff;text-shadow:none!important;font-size:14px;font-weight:700}.debugpress_phpinfo div.inside .link{text-align:right;font-weight:700}.debugpress_phpinfo a{text-decoration:none}.debugpress_phpinfo a:hover{text-decoration:underline}.debugpress_phpinfo h2.phpsection{background-color:#333;color:#fff;font-style:normal;padding:5px 10px;font-size:18px;line-height:24px;margin-bottom:5px;text-shadow:none}.debugpress_phpinfo h2.phpsection a{color:#fff}.debugpress_info table{min-width:50%;max-width:100%;line-height:1.5;border-collapse:collapse;border:1px solid #bbb;border-top:0}.debugpress_info table thead th{text-align:left;padding:5px;background:#666;color:#fff}.debugpress_info table tbody tr{border-bottom:1px solid #bbb;background:#fff}.debugpress_info table tbody tr td,.debugpress_info table tbody tr th{vertical-align:top;padding:5px;text-align:left}.debugpress_info table tbody tr td{border-left:1px solid #bbb}.debugpress_info table tbody tr td div{word-break:break-all} \ No newline at end of file diff --git a/css/debugpress.css b/css/debugpress.css deleted file mode 100644 index 58fc5c3..0000000 --- a/css/debugpress.css +++ /dev/null @@ -1,1065 +0,0 @@ -:root { - --debugpress-base-font-size: 13px; - --debugpress-sql-font-size: 13px; - --debugpress-pretty-font-size: 12px; -} - -@font-face { - font-family: "debugpress"; - src: url("data:application/font-woff2;charset=utf-8;base64,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") format("woff2"), url("data:application/font-woff;charset=utf-8;base64,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") format("woff"); - font-weight: 400; - font-style: normal; - font-display: swap; -} -i.debugpress-icon { - font: 400 normal normal 14px "debugpress"; - font-size: inherit; - text-transform: none; - display: inline-block; - vertical-align: text-bottom; - speak: never; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -h1 > .debugpress-icon, h2 > .debugpress-icon, h3 > .debugpress-icon, h4 > .debugpress-icon, h5 > .debugpress-icon, h6 > .debugpress-icon { - line-height: inherit; - vertical-align: bottom; -} - -a > .debugpress-icon { - line-height: normal; -} - -/* Icons */ -.debugpress-icon.debugpress-icon-caret-up { - transform: rotate(180deg); -} - -.debugpress-icon.debugpress-icon-caret-left { - transform: rotate(90deg); -} - -.debugpress-icon.debugpress-icon-caret-right { - transform: rotate(270deg); -} - -.debugpress-icon.debugpress-icon-bbpress::before { - content: "\f101"; -} - -.debugpress-icon.debugpress-icon-brackets-curly::before { - content: "\f102"; -} - -.debugpress-icon.debugpress-icon-brackets-square::before { - content: "\f103"; -} - -.debugpress-icon.debugpress-icon-bug::before { - content: "\f104"; -} - -.debugpress-icon.debugpress-icon-caret-down::before { - content: "\f105"; -} - -.debugpress-icon.debugpress-icon-clipboard::before { - content: "\f106"; -} - -.debugpress-icon.debugpress-icon-code::before { - content: "\f107"; -} - -.debugpress-icon.debugpress-icon-database::before { - content: "\f108"; -} - -.debugpress-icon.debugpress-icon-diagram-project::before { - content: "\f109"; -} - -.debugpress-icon.debugpress-icon-file-lines::before { - content: "\f10a"; -} - -.debugpress-icon.debugpress-icon-files::before { - content: "\f10b"; -} - -.debugpress-icon.debugpress-icon-folder-user::before { - content: "\f10c"; -} - -.debugpress-icon.debugpress-icon-folder::before { - content: "\f10d"; -} - -.debugpress-icon.debugpress-icon-freemius::before { - content: "\f10e"; -} - -.debugpress-icon.debugpress-icon-gear::before { - content: "\f10f"; -} - -.debugpress-icon.debugpress-icon-globe::before { - content: "\f110"; -} - -.debugpress-icon.debugpress-icon-id-card-clip::before { - content: "\f111"; -} - -.debugpress-icon.debugpress-icon-layout-bottom::before { - content: "\f112"; -} - -.debugpress-icon.debugpress-icon-layout-full::before { - content: "\f113"; -} - -.debugpress-icon.debugpress-icon-layout-left::before { - content: "\f114"; -} - -.debugpress-icon.debugpress-icon-layout-right::before { - content: "\f115"; -} - -.debugpress-icon.debugpress-icon-layout-top::before { - content: "\f116"; -} - -.debugpress-icon.debugpress-icon-layout::before { - content: "\f117"; -} - -.debugpress-icon.debugpress-icon-link-simple::before { - content: "\f118"; -} - -.debugpress-icon.debugpress-icon-octagon-exclamation::before { - content: "\f119"; -} - -.debugpress-icon.debugpress-icon-php::before { - content: "\f11a"; -} - -.debugpress-icon.debugpress-icon-plug::before { - content: "\f11b"; -} - -.debugpress-icon.debugpress-icon-power-off::before { - content: "\f11c"; -} - -.debugpress-icon.debugpress-icon-screwdriver-wrench::before { - content: "\f11d"; -} - -.debugpress-icon.debugpress-icon-server::before { - content: "\f11e"; -} - -.debugpress-icon.debugpress-icon-square-exclamation::before { - content: "\f11f"; -} - -.debugpress-icon.debugpress-icon-square-minus::before { - content: "\f120"; -} - -.debugpress-icon.debugpress-icon-square-plus::before { - content: "\f121"; -} - -.debugpress-icon.debugpress-icon-triangle-exclamation::before { - content: "\f122"; -} - -.debugpress-icon.debugpress-icon-caret-up::before { - content: "\f105"; -} - -.debugpress-icon.debugpress-icon-caret-left::before { - content: "\f105"; -} - -.debugpress-icon.debugpress-icon-caret-right::before { - content: "\f105"; -} - -/* Full Width */ -i.debugpress-icon.debugpress-icon-fw { - width: 1.2857em; - text-align: center; -} -i.debugpress-icon { - /* Sizes */ -} -i.debugpress-icon.debugpress-icon-lg { - font-size: 1.3333em; - line-height: 0.75; - vertical-align: -15%; -} -i.debugpress-icon.debugpress-icon-2x { - font-size: 2em; -} -i.debugpress-icon.debugpress-icon-3x { - font-size: 3em; -} -i.debugpress-icon.debugpress-icon-4x { - font-size: 4em; -} -i.debugpress-icon.debugpress-icon-5x { - font-size: 5em; -} -i.debugpress-icon.debugpress-icon-6x { - font-size: 6em; -} -i.debugpress-icon.debugpress-icon-7x { - font-size: 7em; -} - -/* Flip */ -.debugpress-icon-flip-horizontal { - transform: scaleX(-1); -} - -.debugpress-icon-flip-vertical { - transform: scaleY(-1); -} - -.debugpress-icon-flip-both, -.debugpress-icon-flip-horizontal.debugpress-icon-flip-vertical { - transform: scale(-1); -} - -/* Spin */ -.debugpress-icon-spin { - animation: debugpress-icon-icon-spin 2s infinite linear; -} - -@keyframes debugpress-icon-icon-spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} -.debugpress-grid, -.debugpress-unit { - box-sizing: border-box; -} - -.debugpress-grid { - display: block; - clear: both; -} -.debugpress-grid .debugpress-unit { - float: left; - width: 100%; - padding: 10px; - margin: 0; -} -.debugpress-grid .wrap { - max-width: 978px; - margin: 0 auto; -} -.debugpress-grid { - *zoom: 1; -} -.debugpress-grid::before, .debugpress-grid::after { - display: table; - content: ""; - line-height: 0; -} -.debugpress-grid::after { - clear: both; -} -.debugpress-grid .whole, .debugpress-grid .w-1-1 { - width: 100%; -} -.debugpress-grid .half, .debugpress-grid .w-1-2 { - width: 50%; -} -.debugpress-grid .one-third, .debugpress-grid .w-1-3 { - width: 33.3332%; -} -.debugpress-grid .two-thirds, .debugpress-grid .w-2-3 { - width: 66.6665%; -} -.debugpress-grid .one-quarter, .debugpress-grid .w-1-4 { - width: 25%; -} -.debugpress-grid .three-quarters, .debugpress-grid .w-3-4 { - width: 75%; -} -.debugpress-grid .one-fifth, .debugpress-grid .w-1-5 { - width: 20%; -} -.debugpress-grid .two-fifths, .debugpress-grid .w-2-5 { - width: 40%; -} -.debugpress-grid .three-fifths, .debugpress-grid .w-3-5 { - width: 60%; -} -.debugpress-grid .four-fifths, .debugpress-grid .w-4-5 { - width: 80%; -} -.debugpress-grid .golden-small, .debugpress-grid .w-g-s { - width: 38.2716%; -} -.debugpress-grid .golden-large, .debugpress-grid .w-g-l { - width: 61.7283%; -} - -.debugpress-unit .debugpress-unit:first-child { - padding-left: 0; -} -.debugpress-unit .debugpress-unit:last-child { - padding-right: 0; -} -.debugpress-unit .debugpress-unit:first-child > .debugpress-unit { - padding-top: 0; -} -.debugpress-unit .debugpress-unit:last-child > .debugpress-unit { - padding-bottom: 0; -} -.debugpress-unit.no-gutters { - padding: 0 !important; -} - -.align-center { - text-align: center; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -.pull-left { - float: left; -} - -.pull-right { - float: right; -} - -.debugpress-clearfix:before, -.debugpress-clearfix:after { - content: " "; - display: table; -} - -.debugpress-clearfix:after { - clear: both; -} - -#wpadminbar .debugpress-icon { - vertical-align: text-top !important; - font-size: 19px !important; - font-family: debugpress, cursive !important; - line-height: 1; -} - -#wp-admin-bar-debugpress-debugger-button { - float: right !important; -} - -.debugpress-float-button { - position: fixed; - background-color: #23282D; - border: 1px solid #23282D; - box-shadow: 0 0 3px rgba(35, 40, 45, 0.7); - z-index: 142000; - padding: 5px; -} -.debugpress-float-button a { - display: block; - height: 22px; - line-height: 22px; - outline: none !important; - text-decoration: none; -} -.debugpress-float-button a:focus { - box-shadow: none; -} -.debugpress-float-button.debugpress-position-topright { - right: 5px; - top: 5px; -} -.debugpress-float-button.debugpress-position-topleft { - left: 5px; - top: 5px; -} -.debugpress-float-button.debugpress-position-bottomright { - right: 5px; - bottom: 5px; -} -.debugpress-float-button.debugpress-position-bottomleft { - left: 5px; - bottom: 5px; -} -.debugpress-float-button .debugpress-icon { - font-size: 24px !important; - vertical-align: top; -} - -.debugpress-debug-dialog-button.debugpress-float-button a .debugpress-debug-button-indicators { - vertical-align: 8px; -} -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-errors, -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-stored, -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-httpcalls, -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-ajax { - padding: 2px 3px !important; - border-radius: 3px !important; - color: #FFF; - font-size: 11px !important; - max-height: 12px !important; - margin: 4px !important; -} -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-httpcalls { - background-color: #2AAAE5; -} -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-ajax { - background-color: #D82AE5; -} -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-stored { - background-color: #19A514; -} -.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-errors { - background-color: #ED1E24; -} -.debugpress-debug-dialog-button > a, .debugpress-debug-dialog-button > a:hover { - color: #69FB3B !important; -} -.debugpress-debug-dialog-button.debugpress-debug-has-warnings > a, .debugpress-debug-dialog-button.debugpress-debug-has-warnings > :hover { - color: #FF0 !important; -} -.debugpress-debug-dialog-button.debugpress-debug-has-errors > a, .debugpress-debug-dialog-button.debugpress-debug-has-errors > :hover { - color: #FF3232 !important; -} -.debugpress-debug-dialog-button .ab-sub-wrapper { - left: auto; - right: 0; -} -.debugpress-debug-dialog-button .ab-sub-wrapper .ab-item { - display: flex !important; - justify-content: space-between; - align-items: center; - column-gap: 1em; -} -.debugpress-debug-dialog-button .ab-sub-wrapper .ab-item span { - font-weight: 700; -} - -.debugpress-layout-position { - display: flex; - gap: 2em; - flex-wrap: wrap; - padding: 1em; -} -.debugpress-layout-position > div { - text-align: center; -} -.debugpress-layout-position > div.selected { - color: #0073AA; - font-weight: 700; -} -.debugpress-layout-position > div > span { - display: block; -} - -.debugpress-layout-settings { - padding: 1em; -} -.debugpress-layout-settings .debugpress-layout-option { - display: flex; - column-gap: 2em; - margin: 0 0 1em; - align-items: center; -} -.debugpress-layout-settings .debugpress-layout-option label { - min-width: 120px; -} -.debugpress-layout-settings .debugpress-layout-option select { - min-width: 120px; - width: 200px; -} - -.debugpress-style-popup { - color: #444; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 1.4; - font-size: var(--debugpress-base-font-size); - font-style: normal; - font-weight: 400; - box-sizing: border-box; -} -.debugpress-style-popup * { - font-family: inherit; - box-sizing: border-box; -} -.debugpress-style-popup pre { - margin: 0; - padding: 5px 7px; - line-height: 1.4; - white-space: pre; -} -.debugpress-style-popup a { - color: #0073AA; - text-decoration: none; - box-shadow: none; - outline: none; -} -.debugpress-style-popup a.sqlq-option-on { - font-weight: 700; - color: #FFF; - background: #0073AA; - padding: 0 3px 1px; -} -.debugpress-style-popup .sanp-wrapper { - background: #FFF; - border-radius: 0; - border: 4px solid #23282D; - box-shadow: 1px 1px 5px rgba(32, 32, 32, 0.6); -} -.debugpress-style-popup .sanp-wrapper > button { - appearance: none; - background: none; - border: medium none; - color: #E00; - cursor: pointer; - float: right; - font-size: 20px; - font-weight: 900; - line-height: 1; - right: 5px; - top: 3px; -} -.debugpress-style-popup .sanp-wrapper .sanp-header { - background: #23282D; - border-radius: 0; - padding: 5px 5px 0; - color: #FFF; - height: 38px; -} -.debugpress-style-popup .sanp-wrapper .sanp-header h5 { - border-bottom: 4px solid #23282D; - color: #FFF; - font-size: 18px; - font-weight: 900; - line-height: 24px; - margin: 0; - padding: 0; - text-transform: uppercase; -} -.debugpress-style-popup .sanp-wrapper .sanp-content { - padding: 0; -} -.debugpress-style-popup .sanp-wrapper .sanp-footer { - border-radius: 0; - padding: 5px; - background: #E0E0E0; - text-align: left; -} -.debugpress-style-popup .sanp-wrapper .sanp-footer button { - appearance: none; - margin: 0; - padding: 0; - cursor: pointer; - color: #23282D; - font-weight: 700; - outline: 1px solid transparent; - background: none; - border: none; - font-size: 16px; - text-transform: uppercase; - letter-spacing: 2px; -} -.debugpress-style-popup.sanp-button-alt .sanp-wrapper > button { - background: #500; - box-shadow: 1px 1px 4px rgba(32, 32, 32, 0.3); - color: #FFF; -} - -.debugpress-style-popup #debugpress-debugger-tabs { - margin: 0; - padding: 0; - list-style: none; - font-size: var(--debugpress-base-font-size); - line-height: 26px; - width: calc(100% - 30px); -} -.debugpress-style-popup #debugpress-debugger-tabs li { - float: left; - height: 28px; - line-height: 26px; - margin: 0; - padding: 0 10px; - list-style: none; -} -.debugpress-style-popup #debugpress-debugger-tabs li .debugpress-tab-ctrl-icon { - padding-right: 5px; - font-size: calc(var(--debugpress-base-font-size) + 2px); -} -.debugpress-style-popup #debugpress-debugger-tabs li a { - color: #EEE; - box-shadow: none; - outline: none; - text-decoration: none; -} -.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active { - background: #FFF; - height: 33px; -} -.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active a { - color: #23282D; - font-weight: 700; -} -.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-layout-li, .debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-tools-li, .debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-li { - float: right; -} -.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-layout-li i, .debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-tools-li i, .debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-li i { - font-size: 120%; - vertical-align: text-bottom; -} -.debugpress-style-popup .debugpress-pre-wrap { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-weight: 700; - font-size: var(--debugpress-sql-font-size); - margin: 0 0 5px; - padding: 5px; -} -.debugpress-style-popup .debugpress-pre-wrap pre { - color: #000; - background-color: #FFF; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content { - display: none; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content.debugpress-tab-active { - display: block; -} -.debugpress-style-popup #debugpress-debugger-select { - display: none; - font-size: calc(var(--debugpress-base-font-size) + 1px); - height: 28px; - line-height: 28px; - margin: 0; - padding: 0 10px; - width: calc(100% - 30px); - min-height: 28px; - max-width: 100%; - border-radius: 0; - border: 0; -} -.debugpress-style-popup .debugpress-debugger-footer-right { - float: right; -} -.debugpress-style-popup .debugpress-debugger-footer-left { - float: left; -} -.debugpress-style-popup .debugpress-debugger-footer-left div { - display: inline; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggle { - font-weight: 700; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggler { - border-left: 1px solid #888; - padding-left: 10px; - display: none; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggler.debugpress-events-log-toggler-opened { - display: block; -} -.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-error-message { - font-weight: 700; - font-style: italic; - color: #F00; -} -.debugpress-style-popup .debugpress-debugger-panel-block { - margin: 5px 0 10px; - display: block; - overflow: auto; -} -.debugpress-style-popup .debugpress-debugger-panel-block p { - padding: 0; - margin: 0 0 0.5em; -} -.debugpress-style-popup .debugpress-debugger-panel-block .sql-calls-button-expander { - font-weight: 700; - font-size: calc(var(--debugpress-base-font-size) - 1px); - color: #FFF !important; - background: #0073AA; - padding: 0 6px 3px; - margin: 0 0 0 10px; - border-radius: 3px; -} -.debugpress-style-popup .debugpress-debugger-panel-block-title { - background: #23282D; - color: #FFF; - padding: 5px 8px !important; - font-size: 12px; - margin: 0; -} -.debugpress-style-popup .debugpress-debugger-panel-block-title > i.debugpress-icon { - font-size: 1.5em; - margin: 0 5px 0 0; -} -.debugpress-style-popup .debugpress-debugger-panel-block-title span { - float: right; - font-size: 18px; - cursor: pointer; -} -.debugpress-style-popup .debugpress-debugger-panel-block-title span i.debugpress-icon { - vertical-align: top; -} -.debugpress-style-popup .debugpress-query-sidebar-control { - background: #23282D; - color: #FFF; - padding: 5px !important; - font-size: calc(var(--debugpress-base-font-size) - 1px); - margin: 0 0 10px; - text-align: right; -} -.debugpress-style-popup .debugpress-query-sidebar-control span { - font-size: calc(var(--debugpress-base-font-size) + 4px); - cursor: pointer; - padding-right: 4px; - vertical-align: top; -} -.debugpress-style-popup .debugpress-query-sidebar-control span i.debugpress-icon { - vertical-align: bottom; -} -.debugpress-style-popup .debugpress-debugger-panel-block-subtitle { - background: #777; - color: #FFF; - margin: 5px 0; - padding: 2px 5px !important; - font-size: calc(var(--debugpress-base-font-size) - 2px); - line-height: 20px; -} -.debugpress-style-popup .debugpress-debugger-table { - width: 100%; - table-layout: auto; - margin: 0; - border: 1px solid #DDD; - background: #FFF; - border-collapse: collapse; - font-size: calc(var(--debugpress-base-font-size) - 1px); - line-height: 20px; -} -.debugpress-style-popup .debugpress-debugger-table thead { - background: #DDD; -} -.debugpress-style-popup .debugpress-debugger-table th, -.debugpress-style-popup .debugpress-debugger-table td { - border: 1px solid #E8E8E8; - text-align: left; - padding: 1px 4px !important; - font-size: calc(var(--debugpress-base-font-size) - 1px); -} -.debugpress-style-popup .debugpress-debugger-table th .kint-rich, -.debugpress-style-popup .debugpress-debugger-table td .kint-rich { - margin: 0; -} -.debugpress-style-popup .debugpress-debugger-table th .kint-rich > dl > .kint-parent, -.debugpress-style-popup .debugpress-debugger-table td .kint-rich > dl > .kint-parent { - margin-top: 0; -} -.debugpress-style-popup .debugpress-debugger-table td { - border-width: 0 1px 1px 0; - vertical-align: top; -} -.debugpress-style-popup .debugpress-debugger-table tr:nth-of-type(2n) { - background: #FAFAFA; -} -.debugpress-style-popup .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child { - width: 30%; -} -.debugpress-style-popup .debugpress-debugger-table .debugpress_r.debugpress_r_root { - margin: 0; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child, -.debugpress-style-popup #debugpress-debugger-tab-queries .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child { - width: 70%; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list > thead th, -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list > thead td { - padding: 3px 8px !important; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list > tbody > tr > th { - padding: 3px 8px !important; - vertical-align: top; - width: 20%; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list > tbody > tr > td { - padding: 0 !important; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list > tbody > tr > td.dbg-hook-no-callbacks { - padding: 4px 6px 4px 82px !important; - font-weight: 700; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions { - width: 100%; - table-layout: auto; - margin: 0; - border: 0; - background: #FFF; - border-collapse: collapse; - font-size: calc(var(--debugpress-base-font-size) - 1px); -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td { - padding: 3px 5px !important; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td:first-child { - width: 80px; - text-align: right; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td:last-child { - width: 30%; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action em { - font-family: monospace; - font-weight: 700; - font-style: normal; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action div { - display: none; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action .dbg-hook-action-callback-call { - display: block; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action .dbg-hook-action-callback-call strong { - font-weight: 400; - font-family: monospace; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action.dbg-calls-show div { - display: block; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action button { - float: right; - font-weight: 700; - font-size: calc(var(--debugpress-base-font-size) - 1px); - color: #FFF !important; - background: #0073AA; - padding: 0 6px 3px; - margin: 0 0 0 10px; - border: 0; - border-radius: 3px; - cursor: pointer; -} -.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr:last-child td { - border-bottom: 0; -} -.debugpress-style-popup .query-sql-run-full, -.debugpress-style-popup #debugpress-debuglog-content { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-size: var(--debugpress-sql-font-size); - margin: 5px 0 0; - padding: 5px; -} -.debugpress-style-popup .query-sql-run-full { - font-weight: 700; -} -.debugpress-style-popup .query-sql-run-full pre { - color: #000; - background-color: #FFF; -} -.debugpress-style-popup #debugpress-debuglog-content { - font-weight: 400; -} -.debugpress-style-popup #debugpress-debuglog-content > div { - overflow: auto; - color: #000; - background-color: #FFF; -} -.debugpress-style-popup #debugpress-debuglog-content > div pre { - background: none; - overflow: visible; -} -.debugpress-style-popup .sql-query-list .sql-query { - border: 1px solid #777; - margin: 5px 0; - padding: 5px; -} -.debugpress-style-popup .sql-query-list .sql-query .sql-query-full { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-weight: 700; - font-size: var(--debugpress-sql-font-size); - margin: 5px 0 0; - padding: 5px; -} -.debugpress-style-popup .sql-query-list .sql-query .sql-query-full pre { - color: #000; - background-color: #FFF; -} -.debugpress-style-popup .debugpress-wrapper-warning { - border: 1px solid #23282D; - padding: 10px; - margin: 0 0 10px; -} -.debugpress-style-popup .debugpress-wrapper-warning h4 { - color: #900; - font-size: calc(var(--debugpress-base-font-size) + 3px); - margin: 0 0 5px; -} -.debugpress-style-popup .debugpress-debug-environment { - margin: 0 0 10px; - padding: 10px; - background-color: #F3FFE7; -} -.debugpress-style-popup .debugpress-debug-environment .debugpress-debugger-panel-block-title { - background-color: #12AE00; - text-align: center; - font-size: 110%; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-development { - background-color: #FFE7F2; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-development .debugpress-debugger-panel-block-title { - background-color: #AE0060; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-local { - background-color: #F7E7FF; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-local .debugpress-debugger-panel-block-title { - background-color: #8800AE; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-staging { - background-color: #E7EEFF; -} -.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-staging .debugpress-debugger-panel-block-title { - background-color: #0026AE; -} -.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment { - color: #12AE00; -} -.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-development { - color: #AE0060; -} -.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-local { - color: #8800AE; -} -.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-staging { - color: #0026AE; -} -.debugpress-style-popup .debugpress-debug-notice-block { - margin: 10px 0; - padding: 10px 10px 1px; - border-left: 4px solid #F00; - background-color: #FFE7E7; -} -.debugpress-style-popup .debugpress-debug-notice-block .debugpress-debugger-panel-block-title { - background-color: #F00; -} -.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter { - width: 44px; -} -.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter h5, .debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter div { - display: none !important; -} -.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .three-quarters { - width: calc(100% - 44px); -} -.debugpress-style-popup .debugpress-button-action { - background: #27B; - color: #FFF; - display: inline-block; - cursor: pointer; - border: 0; - text-align: center; - width: max-content; - border-radius: 0; - margin: 5px 5px 0 0; - padding: 8px 14px; - font-size: calc(var(--debugpress-base-font-size) + 3px); -} - -@media screen and (width <= 568px) { - .debugpress-grid .debugpress-unit { - width: 100% !important; - padding-left: 20px; - padding-right: 20px; - } - .debugpress-unit .debugpress-grid .debugpress-unit { - padding-left: 0; - padding-right: 0; - } - .center-on-mobiles { - text-align: center !important; - } - .hide-on-mobiles { - display: none !important; - } -} -@media screen and (width <= 1080px) { - #debugpress-debugger-tab-queries .debugpress-grid .one-quarter { - width: 45%; - } - #debugpress-debugger-tab-queries .debugpress-grid .three-quarters { - width: 55%; - } - .debugpress-debugger-footer-left div { - display: block; - } - .debugpress-debugger-footer-left div span { - display: none; - } -} -@media screen and (width <= 800px) { - .debugpress-style-popup .debugpress-query-sidebar-control { - margin-bottom: 5px; - } - .debugpress-style-popup .debugpress-debugger-footer-left, - .debugpress-style-popup .debugpress-debugger-footer-right { - float: none; - text-align: center; - } - .debugpress-style-popup #debugpress-debugger-tabs { - display: none; - } - .debugpress-style-popup #debugpress-debugger-select { - display: block; - } - .debugpress-style-popup .sanp-wrapper .sanp-header { - height: 40px; - } - .debugpress-style-popup .sanp-wrapper > button { - top: 5px; - } - .debugpress-style-popup .debugpress-tab-content .debugpress-grid .debugpress-unit { - padding-left: 10px; - padding-right: 10px; - } -} -@media screen and (width <= 782px) { - #wpadminbar .debugpress-debug-dialog-button { - display: block !important; - } - #wpadminbar .debugpress-debug-dialog-button > .ab-item { - padding: 0 10px !important; - } - #wpadminbar .debugpress-debug-dialog-button > .ab-item i.debugpress-icon { - font-size: 24px !important; - } -} diff --git a/css/debugpress.min.css b/css/debugpress.min.css deleted file mode 100644 index 98aea80..0000000 --- a/css/debugpress.min.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes debugpress-icon-icon-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}:root{--debugpress-base-font-size:13px;--debugpress-sql-font-size:13px;--debugpress-pretty-font-size:12px}@font-face{font-family:"debugpress";src:url(data:application/font-woff2;charset=utf-8;base64,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)format("woff2"),url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABSUAAsAAAAAJfAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAQQAAAGA97kuaY21hcAAAAYgAAADaAAADPv749/pnbHlmAAACZAAADs4AABvcOk3vMmhlYWQAABE0AAAAMQAAADZY4aBXaGhlYQAAEWgAAAAeAAAAJAKlAZdobXR4AAARiAAAADoAAACMJjf//WxvY2EAABHEAAAASAAAAEh6OoECbWF4cAAAEgwAAAAdAAAAIAE3AO1uYW1lAAASLAAAAS8AAAIuTNG6jXBvc3QAABNcAAABNQAAAeHrZEUleJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGEUZ5zAwMrAwPCO4RKQ1ILSExj4GHwZGJgYWJkZsIKANNcUhgMfGT8qMeoAudKM7gyMQJoRRRETAD3DCgoAAAB4nO3RWW7DIABF0UtMnMmZ5znhu8vqgvKVNXR7rCDl8bqMWjpcGWFkAdAHmuKriBDeBPS8ymyo8w3jOh/5rmui5nP6fMoYNJb3WMdeWRvLji0DhozKdxM6psyYs2DJijUbtuzYc+DIiTMXrty48+BJKpu0/D+dhvDz95Z0zlZPvmeojekGczTdRe6bbje3hjow1KGhjgx1bLr1PDHUzvR3eWqoM0OdG+rCUJeGujLUtaFuDHVrqDtD3RvqwVCPhnoy1LOhXgz1aqg3Q70b6sNQn4aajPQLdIhS2gAAeJyNWU2MHMd1rp/uquqfmZ7Z/tuZ/Znd6Z3uXe4fd2ZnZimRS5GyKIpLiQxFRrF+GDhxzBgQDBGBnJiHXMiDgFiXIFokAWQGRg6WczDAqxf2JdElAgMEQQzklEWAIDAQ5KKLAkTMe1Xzs7Ncyprpqa6/1/3eq/e+96qGCAIfKmmdKBKTJtkiu+QuIX0RR2l/l+ZpL8+aIqAi6bR7/WaZRvO0vUu3N6hs5ps0396l7XkalWl/PHGXFk0h+71+O42jgPY6bf2o5vZ5Cj1yl3baSZlmzbwoUwnP1Y9bidwqp/ZZyym5U8zmrlsKZ7NzWXbu5bNLS2eX6uuVStTcuXhmcfHMPFclr8ok82DS89NrgRtYjCoVeqGvOLN9O2e0IqoqDp2lNIi4mi7NLsx35uY6/zKTTSfXy6713Wpc9mb8UvLL7NwlfA0UX4bVaPFFfAO85rqeUCqz9JNoijFKGStyPyjKJcuhNmXXbDl7aq7suD6dmm+fbc8TpnV5A3S5Rr5JSNgUcxTkF1GDJlBLnqft3na+Spv5Obq9CRqDW890Zh1Qnp6BMxtUIqmAqaYTZ56nPSBC0vxmOOPUOa87M2Fu2baVe9VSFJarnm7db1lCWC2/Uo6icsU3rWhGzXAOBa3NRA1f1bnideU3ohlbiYrfCHFy2PCrtrLhqo57KkLZx0hATDaymxnSH8o6KeGJok3KlM/6lYq/gxzuIOu6tj+umppfrdJaxX/sV4BX23psCcOkgKoN3Okhw9OTJ3SNrpEyuQk8jV6ouZG9doMiT2m/105gXZIU7BDHI5nACkWiuUmF7G7nKEteSNHMt8+zvAuGirL0+kW+vZ8uOvK6dBbviEDkpeBiUMpF4NmFoC3learlMJrbXiBa6Txw2EhaOJpzx4xSUdh0bTFl0nUlSxd3hcjx8ip24flexYtDyjRJK+I/RA38kEdLOJyzMHErMKewUVTCnjyB8gC+JQIdfdQxCNFGK8ll0fnJR8qz9+yKvSfcm1f2D/xA7NnQCPzbe0hvYUEOQVcJ2SZXyS29hrJMcX3maKdrlrEAPwcP16rC31GFPk/Bk9Nhe2wAuK5ZgapFxd11A3Br7lrirrBcblMebNvpXGpbTsBZkCTBfiVJKtDt3PPUXeWioval58k9LoQUgtZ8h1u2FYZQcMd30GQ8lQSPkO5RkChvE2kcTz7C+yPpzQm0Dw1tXNvEn9B14pN5chqkzIXkYh6WM+zlcoMO/HPXeOR2X2jvA5Qb+Jv4by7pbcqlZO8wWA7FbnF+iymbv/oq/zuGpa34TQ6XAtuz+Jf/ySW3OK1z+SKnfA+8Zo+DYfFvfAMGuLmL0QDwqAa+tEZCkoE3PU/Ok4vkEvltWNcYVNAs8qK7DXjaa6cJfEd90Gj3e3Jw13PNSN4/fYZm8Oue3urALe0CwgJ4zw3g+/PyzMK1xXqZqyD7zlIgOR10BHHzZhb/s7kFIHWw9J0sUPzw8DBcOvvyAI7/76wrlBLuWQpL5PtC8Ne7pqcrbUeJ97cktuTWaJw+fvy4FJfgMjdjfxorA/Iy+R3yh0/5ayftduKxRRm7zLrDmh7ppxNWByOy6PUH2DN6mjz24OvI3CYW198Ly5ulKCptlsP3dAltKU/ZcBvV7w8mQ7E4oqTSERtY2RDOuXIZJ29gMaryM9LdOFIvLwjHkLw+piREDPxwnVQBSdfJc6CN12Hdi6NionAFYlQKWNRNj7qg1pA8grwiHcItYm98pPGvu17lDfSZ/SC5bbPznL5giT1P7qPX7FX8C/vCegcxB4o7w8qR4j92vSQ4xAf8uPIC5ecZALD2uEPpXfArm5Z214b2PbuFdWUP1hltu0oikoNtk/4E73EksiLNiglhwe8yaYAYDHYcVbq38X03PbXpqdmFhTvIzP1K4uwo/yG8MMqiexgx7qWLe576RHqb0runvF8uXEyCT3DuD3x1Rl1EgR7CXKBYTIE9W/O4BrYYk1VAw3OIhn1tQ6Dzo5bU7TePGxyymg7BLkVGm4AuErASxGv3BvY6qPdCT11WduxV3kaEO1ReiGwdIgy+rfuXQcAKyAjdCwmNOYR2QLLZMA9nQZ3Vz5UnYgRI5brqMAkOBgAKpO8gXcU7kzQSuFpVD8UMZ2dDvHvVUcweynk0Zh+RRZ4odz5YZ0++DUHKVt9LKpd15W1kAIyCSk8dIFNoTbEIgwRGtaklwQiHyc/Azktg5wXqFwA2MQlS3o0nWmk+bIqixP+KWdZfMot/2/wEY13oYf9osTcZZ2ct9hakZrMWOwu3c5ydo5zNQoK2AM3nGAKsscEMbPB3yWPyK/LvIPu2BtNY42mCeal2L8xfdf5lqhJMM0dMDSBHQGDtIrYWeUChDsoqesCmMVdd7QNoJYjT52kTyPUTpIDRQSMWmAkyFDKN8YVwARmyYBoYvvVz+j0zhI1uD57Q7Reok6KL7zVPRE5MA9bMWGAfrQ9N7T51phyquCuF481SZlugPApSyIhSDg1IYGc9R0gXotZXTuV8PHXG87gDBEwpxuYch0kbpgP8MBZJatlMCOY4c4xJSIMUTPUSn00QwARDAOn0MRLFkYT5a+FsCNetxqkGXDSh+jPr2twWTFEhbCEZjaVf9mVMmYS2oIoJm1vA/teZDPEfxt02o5Y7y5AJKpnNHGUrh7sqptxxOI2VC3fLUTAkUS2gBheKY1TKeZpK2U9R7ZdRqLAco1ANQlxtk+vgDwryt2myANi4TrqAjxfIa+AdEKT72TwrOr3tIhNRv7PBIH6nSSQ7mJZs0AKCQa8PG6gO4F7aybf7KZIImRfZPE2bG3S0NdtXUdX+tl2NNt5l7F0msFqJqt8HR7Jt6S/XQufPVFhb9rd2bLvL2B9h1bkTOlv+8osrLy0vv3QDi7CSTU9nldtTeRjme1CrZKfCfAqaU9NLqra6WlNL01Om58dQXa3VVqeXmgNqKFBkMYj7a4AIIZklLUDbb4E/ZnGnOJZfpkNjLox5QyqKNt41wT02dY2uRQfjHIJZZ3EIZt3B07JF87SDHD4IYAhlGxNYCbatEXYGNz5e7ldu7u0h3lGhI+MeQvSX/wslrbV2IIvXqbzy9ieh+g2MPBpv4Q456meA9T/HqVCESeXn+BQoJuJNQGqw7h3yAiHHk5bWKNNJTcUgdXG00T/aGIQRxOKaDi2fwbZP7/0s8cAeVu2LsF3Ue0bL3tHRA4sXP0BGP1i3MGbb1sRtiJ+G31myQnpPczvBSfzMxpjHt8YcnVQbs/b3FqbyYtpsBmomyfiaOoQdy8Aa5DNZ6p7M33d/hLbyo+lncqhrYzYBAQ6UVzfMdg2XC4bnCV6N/oDXVjbaJJtA9/U4LLJh1KbycJg78K9W5vWPcXU/DgfpAhT/dhKfz+kIfsw+kd8Tddt/piHKUdZenKzbj8cmeHFso5/pBOMXX2EDlrmtfIB5BhirbpFJ+6wBkkJ2QY/vJbTaFkGVstPNRgxmVA54Au7AZajw/mtnz3sd9p8/obWxvqY8lQNuHO4/wFc/MPkM4hj5HDR0hrxESBfgFvWjX1oepK2mtUFbkd5Y63MEc9w1aplc0bC63aut1jdhNfhm3IyiZmzq9dUavQHFJiptExJXuEwdpn/xUKez0NyvrdV0ErysU1toHe+omHMTMuIfz0rwxO9lzAZN7pPK3Bw2mSzQpGQ6N+ynqLVRxpMNtlWD05VhCvKeKy5JWfb9S6Xq1Wrp0qhSviTcq3oQKrj+wIurfAUXrUkzWD5GA5WyIdCUO4LvobR7XNwXSKiI1HL8MfkC9vc1sgTSXCK/RW5jBNWxz8TByYNL0EWR9TuQ88kO3CDb2qVgqP0OrEQ6T2PI1TLsygqZ9Z8x+eD0jc3NG9/CYqvzRrv9xh9g8T3uCszX4XclseWU8hzPrk6dejO2ZUW4LrWtBFICC9L1+KPJuaHEuZXw1P/UVjZWarpwZ9Z76zO6eCuApGyFWa/WIZnyGlG9TqnjyFqcRJBenGkdGz5yviPBK9bJDua8ekPV6Q/u0nhmDIpJ9f7kHN2F7LmjN44SFAf1GFS4ByoIb2PxN2iOblKk0EiLxMXmHbDU/bhJM2ycOaPLKYgb+fRKnZkmq69M5yDpA5ia52DWo73IPPDnAXekP7QjCOxysFJ4+LRL09EyQlI8T/GIKn5o7PhPG70Xeo3mnMW44osrrd0ru63lJtSZNZt9qI8S0Us+XOg1Gr0LOwGTkrPqhau7rdbu1QtVhmc6wc4iEU/gQ0/TTTKnT8LeJXfJD4AnPBwqU+BCH6qhf0TADWb3u7TQhgBmIRu0nyBXEQ5BH8zHHQKeJkGCrncA87QnUcGo+FaRZ01ZdAuZdlIxTPohySv6DSDcxlPKB8zlPREql6lrXEjrtVJJhl7gdxllsSXcekmIZbW1zF3fUrbktl31BRWWI1t1qyVtJ12rQmpObecuakoKSi+Xo7LXuZLvrLYd7r9iV0Qh/mlmpdz7i8tONVWvvGZT3oN8Vk4717gU/FqpVZKQwPpdLthPJdru8pZariz6lu3AjsCyq2upJSiXLaueiykm/Kp0YLnpP1j4Rjt+pSTbqzutK51S078s7WURfNgrr/zqFZVWncuDMy+D2Q2ySc6Ty+C3b5Lff2pfmtmTgaeb/obx/mg3NNqWP9Uz3s9++cU4MJ3c+8iAVNkgTjHRwm1vjjEBSEOcn2PxzkmdoaH4qaH/24kWGZ2T1AHHZska7AQAwbR8Rtp+Nin1xCEQOo1Jlbfz+yZr+71hvpnwcRp617z0nm3dRseA4uE4xh0ixwc4888BthxPDWIE8uTBnn0VORoFqk5xXOvHzuoO0PXv4mv2xsnvkZR44MO3hjE+ODgYMjCOT+b/hVV9ajQ8h+/iYs7RQdDU24DfxMs9Ey0BgkxABQXdO5Gp2zDHxoMsa1j562fwZ+H5O+zfzP9mBf4H0h8uQXF04VLAA/2/mMkIANekZhKcvnN6C/1/XyjQthImJH70vhVMBdb3LSdwfg2/mDu/Vsp639LFN429TNvWTeTypmVvfKrg86msVpQTVANZkp9KKj4Fk/p/9sMJhAAAeJxjYGRgYADiw9/cb8Xz23xl4GbUAYow1KhuaIDR/4GAsYJRH8jlYGACiQIAatUNBQAAAHicY2BkYGDUYQACxvL/////YaxgYGRABcoAdAsFPQAAeJxjYGBgYGQD4kAorQMU2P3/P8NDILscIQfmQ+UhahBssF4dHBgmVw41Ayz+/z+YZkPCQDEA5LsPTQAAAAAAAACmARwBZgHcAfwCcALCAzwDwAQwBIIE9gU0BXIGvAc4B7oIEghcCLIJCgliCZwJ/ApgCuwLPAuCDDwMxA0ODUwNnA3ueJxjYGRgYFBmeMjAxQACTEDMBWb/B/MZACLaAiUAAAB4nG2RPU7DQBCFn/OHSCQEAtHQbAMNkp2kTEmR9CnS2/HaSeR4V+t1RO7ACTgEh6DgDByCQ/BiRoqEvCPtfPvt80i2AVzjCwFOK8Cw2U+rgwue/rhLuhHukR+E+xjhUXhAPxYe4hkz4RFuoTkh6F3S3OFVuIMrvAl36d+Fe+QP4T7u8Sk8oP8WHmKFH+ERnoKXVCd1bp2uqqXO6yJ2Z3GmlXbV1pRqEo7PcqFL7WKvU5UcVXXIp95nKnNmr+am9LoojLLO7PTahxvv7SyKMvHh2uyR8t0S1Mhh4cgVa8me0xWI6doSbW7F7ti3MCihMEHI79mWXLCXTTqGZ0+ZTnDkXuHA5JTWI+M5Y8ZgT5o3U0/pgmVobHO3o1nTh9g0T1n+t4iV/cuHTHHSL5J7ZgwAeJxtkNlOwzAQRXObrkkXaMu+U179UY4zSU2d2Hih9O8xakAgMQ+jc6yx58pJLzlWmvxfG/SQoo8BhhhhjAky5JhihjkWOMEpllhhjTOc4wKXuMI1bnCLO9zjAY94wjM2eElGRWEsOTcvLBc78o6JYNVh8aPuLXBLaRHqTETwrNT7diKUNIXmtuwLXdK45J4X3NGilLy2vGHG6lcSPqukIqZkS27whS6vtCrJsuDIDo88rixRI4Pr18TtoFa6oKksWdwWW9wzU/ygg2eF9l43eWdVUOqbFVV+2rGV9dZnnXhthkfMY4gdc7IxilZaeF7rltGHULzhXuo2NVvTNyrUE6P3MaCuqqUTlvalle/R95ZasR3G2NGWx0/5fX/aHTWyDS7vJL7n1t5K3tbqz3SSfAKLTI5PAAAA)format("woff");font-weight:400;font-style:normal;font-display:swap}i.debugpress-icon{font:400 14px"debugpress";font-size:inherit;text-transform:none;display:inline-block;vertical-align:text-bottom;speak:never;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1>.debugpress-icon,h2>.debugpress-icon,h3>.debugpress-icon,h4>.debugpress-icon,h5>.debugpress-icon,h6>.debugpress-icon{line-height:inherit;vertical-align:bottom}a>.debugpress-icon{line-height:normal}.debugpress-icon.debugpress-icon-caret-up{transform:rotate(180deg)}.debugpress-icon.debugpress-icon-caret-left{transform:rotate(90deg)}.debugpress-icon.debugpress-icon-caret-right{transform:rotate(270deg)}.debugpress-icon.debugpress-icon-bbpress::before{content:""}.debugpress-icon.debugpress-icon-brackets-curly::before{content:""}.debugpress-icon.debugpress-icon-brackets-square::before{content:""}.debugpress-icon.debugpress-icon-bug::before{content:""}.debugpress-icon.debugpress-icon-caret-down::before{content:""}.debugpress-icon.debugpress-icon-clipboard::before{content:""}.debugpress-icon.debugpress-icon-code::before{content:""}.debugpress-icon.debugpress-icon-database::before{content:""}.debugpress-icon.debugpress-icon-diagram-project::before{content:""}.debugpress-icon.debugpress-icon-file-lines::before{content:""}.debugpress-icon.debugpress-icon-files::before{content:""}.debugpress-icon.debugpress-icon-folder-user::before{content:""}.debugpress-icon.debugpress-icon-folder::before{content:""}.debugpress-icon.debugpress-icon-freemius::before{content:""}.debugpress-icon.debugpress-icon-gear::before{content:""}.debugpress-icon.debugpress-icon-globe::before{content:""}.debugpress-icon.debugpress-icon-id-card-clip::before{content:""}.debugpress-icon.debugpress-icon-layout-bottom::before{content:""}.debugpress-icon.debugpress-icon-layout-full::before{content:""}.debugpress-icon.debugpress-icon-layout-left::before{content:""}.debugpress-icon.debugpress-icon-layout-right::before{content:""}.debugpress-icon.debugpress-icon-layout-top::before{content:""}.debugpress-icon.debugpress-icon-layout::before{content:""}.debugpress-icon.debugpress-icon-link-simple::before{content:""}.debugpress-icon.debugpress-icon-octagon-exclamation::before{content:""}.debugpress-icon.debugpress-icon-php::before{content:""}.debugpress-icon.debugpress-icon-plug::before{content:""}.debugpress-icon.debugpress-icon-power-off::before{content:""}.debugpress-icon.debugpress-icon-screwdriver-wrench::before{content:""}.debugpress-icon.debugpress-icon-server::before{content:""}.debugpress-icon.debugpress-icon-square-exclamation::before{content:""}.debugpress-icon.debugpress-icon-square-minus::before{content:""}.debugpress-icon.debugpress-icon-square-plus::before{content:""}.debugpress-icon.debugpress-icon-triangle-exclamation::before{content:""}.debugpress-icon.debugpress-icon-caret-left::before,.debugpress-icon.debugpress-icon-caret-right::before,.debugpress-icon.debugpress-icon-caret-up::before{content:""}i.debugpress-icon.debugpress-icon-fw{width:1.2857em;text-align:center}i.debugpress-icon.debugpress-icon-lg{font-size:1.3333em;line-height:.75;vertical-align:-15%}i.debugpress-icon.debugpress-icon-2x{font-size:2em}i.debugpress-icon.debugpress-icon-3x{font-size:3em}i.debugpress-icon.debugpress-icon-4x{font-size:4em}i.debugpress-icon.debugpress-icon-5x{font-size:5em}i.debugpress-icon.debugpress-icon-6x{font-size:6em}i.debugpress-icon.debugpress-icon-7x{font-size:7em}.debugpress-icon-flip-horizontal{transform:scaleX(-1)}.debugpress-icon-flip-vertical{transform:scaleY(-1)}.debugpress-icon-flip-both,.debugpress-icon-flip-horizontal.debugpress-icon-flip-vertical{transform:scale(-1)}.debugpress-icon-spin{animation:debugpress-icon-icon-spin 2s infinite linear}.debugpress-grid,.debugpress-unit{box-sizing:border-box}.debugpress-grid{display:block;clear:both;*zoom:1}.debugpress-grid .debugpress-unit{float:left;width:100%;padding:10px;margin:0}.debugpress-grid .wrap{max-width:978px;margin:0 auto}.debugpress-grid::after,.debugpress-grid::before{display:table;content:"";line-height:0}.debugpress-grid::after{clear:both}.debugpress-grid .w-1-1,.debugpress-grid .whole{width:100%}.debugpress-grid .half,.debugpress-grid .w-1-2{width:50%}.debugpress-grid .one-third,.debugpress-grid .w-1-3{width:33.3332%}.debugpress-grid .two-thirds,.debugpress-grid .w-2-3{width:66.6665%}.debugpress-grid .one-quarter,.debugpress-grid .w-1-4{width:25%}.debugpress-grid .three-quarters,.debugpress-grid .w-3-4{width:75%}.debugpress-grid .one-fifth,.debugpress-grid .w-1-5{width:20%}.debugpress-grid .two-fifths,.debugpress-grid .w-2-5{width:40%}.debugpress-grid .three-fifths,.debugpress-grid .w-3-5{width:60%}.debugpress-grid .four-fifths,.debugpress-grid .w-4-5{width:80%}.debugpress-grid .golden-small,.debugpress-grid .w-g-s{width:38.2716%}.debugpress-grid .golden-large,.debugpress-grid .w-g-l{width:61.7283%}.debugpress-unit .debugpress-unit:first-child{padding-left:0}.debugpress-unit .debugpress-unit:last-child{padding-right:0}.debugpress-unit .debugpress-unit:first-child>.debugpress-unit{padding-top:0}.debugpress-unit .debugpress-unit:last-child>.debugpress-unit{padding-bottom:0}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list>tbody>tr>td,.debugpress-unit.no-gutters{padding:0!important}.align-center,.debugpress-layout-position>div{text-align:center}.align-left{text-align:left}.align-right{text-align:right}.pull-left{float:left}.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-li,.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-layout-li,.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-tools-li,.pull-right{float:right}.debugpress-clearfix:after,.debugpress-clearfix:before{content:" ";display:table}.debugpress-clearfix:after{clear:both}#wpadminbar .debugpress-icon{vertical-align:text-top!important;font-size:19px!important;font-family:debugpress,cursive!important;line-height:1}#wp-admin-bar-debugpress-debugger-button{float:right!important}.debugpress-float-button{position:fixed;background-color:#23282d;border:1px solid #23282d;box-shadow:0 0 3px rgba(35,40,45,.7);z-index:142000;padding:5px}.debugpress-float-button a{display:block;height:22px;line-height:22px;outline:0!important;text-decoration:none}.debugpress-float-button a:focus{box-shadow:none}.debugpress-float-button.debugpress-position-topright{right:5px;top:5px}.debugpress-float-button.debugpress-position-topleft{left:5px;top:5px}.debugpress-float-button.debugpress-position-bottomright{right:5px;bottom:5px}.debugpress-float-button.debugpress-position-bottomleft{left:5px;bottom:5px}.debugpress-float-button .debugpress-icon{font-size:24px!important;vertical-align:top}.debugpress-debug-dialog-button.debugpress-float-button a .debugpress-debug-button-indicators{vertical-align:8px}.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-ajax,.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-errors,.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-httpcalls,.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-stored{padding:2px 3px!important;border-radius:3px!important;color:#fff;font-size:11px!important;max-height:12px!important;margin:4px!important}.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-httpcalls{background-color:#2aaae5}.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-ajax{background-color:#d82ae5}.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-stored{background-color:#19a514}.debugpress-debug-dialog-button a .debugpress-debug-button-indicators .debugpress-debug-has-errors{background-color:#ed1e24}.debugpress-debug-dialog-button>a,.debugpress-debug-dialog-button>a:hover{color:#69fb3b!important}.debugpress-debug-dialog-button.debugpress-debug-has-warnings>:hover,.debugpress-debug-dialog-button.debugpress-debug-has-warnings>a{color:#ff0!important}.debugpress-debug-dialog-button.debugpress-debug-has-errors>:hover,.debugpress-debug-dialog-button.debugpress-debug-has-errors>a{color:#ff3232!important}.debugpress-debug-dialog-button .ab-sub-wrapper{left:auto;right:0}.debugpress-debug-dialog-button .ab-sub-wrapper .ab-item{display:flex!important;justify-content:space-between;align-items:center;column-gap:1em}.debugpress-debug-dialog-button .ab-sub-wrapper .ab-item span{font-weight:700}.debugpress-layout-position{display:flex;gap:2em;flex-wrap:wrap;padding:1em}.debugpress-layout-position>div.selected{color:#0073aa;font-weight:700}.debugpress-layout-position>div>span,.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggler.debugpress-events-log-toggler-opened,.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content.debugpress-tab-active,.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action .dbg-hook-action-callback-call,.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action.dbg-calls-show div{display:block}.debugpress-layout-settings{padding:1em}.debugpress-layout-settings .debugpress-layout-option{display:flex;column-gap:2em;margin:0 0 1em;align-items:center}.debugpress-layout-settings .debugpress-layout-option label{min-width:120px}.debugpress-layout-settings .debugpress-layout-option select{min-width:120px;width:200px}.debugpress-style-popup{color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.4;font-size:var(--debugpress-base-font-size);font-style:normal;font-weight:400;box-sizing:border-box}.debugpress-style-popup *{font-family:inherit;box-sizing:border-box}.debugpress-style-popup pre{margin:0;padding:5px 7px;line-height:1.4;white-space:pre}.debugpress-style-popup a{color:#0073aa;text-decoration:none;box-shadow:none;outline:0}.debugpress-style-popup a.sqlq-option-on{font-weight:700;color:#fff;background:#0073aa;padding:0 3px 1px}.debugpress-style-popup .sanp-wrapper{background:#fff;border-radius:0;border:4px solid #23282d;box-shadow:1px 1px 5px rgba(32,32,32,.6)}.debugpress-style-popup .sanp-wrapper>button{appearance:none;background:0 0;border:medium;color:#e00;cursor:pointer;float:right;font-size:20px;font-weight:900;line-height:1;right:5px;top:3px}.debugpress-style-popup .sanp-wrapper .sanp-header{background:#23282d;border-radius:0;padding:5px 5px 0;color:#fff;height:38px}.debugpress-style-popup .sanp-wrapper .sanp-header h5{border-bottom:4px solid #23282d;color:#fff;font-size:18px;font-weight:900;line-height:24px;margin:0;padding:0;text-transform:uppercase}.debugpress-style-popup .sanp-wrapper .sanp-content{padding:0}.debugpress-style-popup .sanp-wrapper .sanp-footer{border-radius:0;padding:5px;background:#e0e0e0;text-align:left}.debugpress-style-popup .sanp-wrapper .sanp-footer button{appearance:none;margin:0;padding:0;cursor:pointer;color:#23282d;font-weight:700;outline:1px solid transparent;background:0 0;border:0;font-size:16px;text-transform:uppercase;letter-spacing:2px}.debugpress-style-popup.sanp-button-alt .sanp-wrapper>button{background:#500;box-shadow:1px 1px 4px rgba(32,32,32,.3);color:#fff}.debugpress-style-popup #debugpress-debugger-tabs{margin:0;padding:0;list-style:none;font-size:var(--debugpress-base-font-size);line-height:26px;width:calc(100% - 30px)}.debugpress-style-popup #debugpress-debugger-tabs li{float:left;height:28px;line-height:26px;margin:0;padding:0 10px;list-style:none}.debugpress-style-popup #debugpress-debugger-tabs li .debugpress-tab-ctrl-icon{padding-right:5px;font-size:calc(var(--debugpress-base-font-size) + 2px)}.debugpress-style-popup #debugpress-debugger-tabs li a{color:#eee;box-shadow:none;outline:0;text-decoration:none}.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active{background:#fff;height:33px}.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active a{color:#23282d;font-weight:700}.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-li i,.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-layout-li i,.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-tools-li i{font-size:120%;vertical-align:text-bottom}.debugpress-style-popup .debugpress-pre-wrap{background-color:#f4f4f4;color:#000;font-family:monospace;font-weight:700;font-size:var(--debugpress-sql-font-size);margin:0 0 5px;padding:5px}.debugpress-style-popup .debugpress-pre-wrap pre,.debugpress-style-popup .query-sql-run-full pre,.debugpress-style-popup .sql-query-list .sql-query .sql-query-full pre{color:#000;background-color:#fff}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content,.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action div{display:none}.debugpress-style-popup #debugpress-debugger-select{display:none;font-size:calc(var(--debugpress-base-font-size) + 1px);height:28px;line-height:28px;margin:0;padding:0 10px;width:calc(100% - 30px);min-height:28px;max-width:100%;border-radius:0;border:0}.debugpress-style-popup .debugpress-debugger-footer-right{float:right}.debugpress-style-popup .debugpress-debugger-footer-left{float:left}.debugpress-style-popup .debugpress-debugger-footer-left div{display:inline}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggle{font-weight:700}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-events-log-toggler{border-left:1px solid #888;padding-left:10px;display:none}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-error-message{font-weight:700;font-style:italic;color:red}.debugpress-style-popup .debugpress-debugger-panel-block{margin:5px 0 10px;display:block;overflow:auto}.debugpress-style-popup .debugpress-debugger-panel-block p{padding:0;margin:0 0 .5em}.debugpress-style-popup .debugpress-debugger-panel-block .sql-calls-button-expander{font-weight:700;font-size:calc(var(--debugpress-base-font-size) - 1px);color:#fff!important;background:#0073aa;padding:0 6px 3px;margin:0 0 0 10px;border-radius:3px}.debugpress-style-popup .debugpress-debugger-panel-block-title{background:#23282d;color:#fff;padding:5px 8px!important;font-size:12px;margin:0}.debugpress-style-popup .debugpress-debugger-panel-block-title>i.debugpress-icon{font-size:1.5em;margin:0 5px 0 0}.debugpress-style-popup .debugpress-debugger-panel-block-title span{float:right;font-size:18px;cursor:pointer}.debugpress-style-popup .debugpress-debugger-panel-block-title span i.debugpress-icon{vertical-align:top}.debugpress-style-popup .debugpress-query-sidebar-control{background:#23282d;color:#fff;padding:5px!important;font-size:calc(var(--debugpress-base-font-size) - 1px);margin:0 0 10px;text-align:right}.debugpress-style-popup .debugpress-query-sidebar-control span{font-size:calc(var(--debugpress-base-font-size) + 4px);cursor:pointer;padding-right:4px;vertical-align:top}.debugpress-style-popup .debugpress-query-sidebar-control span i.debugpress-icon{vertical-align:bottom}.debugpress-style-popup .debugpress-debugger-panel-block-subtitle{background:#777;color:#fff;margin:5px 0;padding:2px 5px!important;font-size:calc(var(--debugpress-base-font-size) - 2px);line-height:20px}.debugpress-style-popup .debugpress-debugger-table{width:100%;table-layout:auto;margin:0;border:1px solid #ddd;background:#fff;border-collapse:collapse;font-size:calc(var(--debugpress-base-font-size) - 1px);line-height:20px}.debugpress-style-popup .debugpress-debugger-table thead{background:#ddd}.debugpress-style-popup .debugpress-debugger-table td,.debugpress-style-popup .debugpress-debugger-table th{border:1px solid #e8e8e8;text-align:left;padding:1px 4px!important;font-size:calc(var(--debugpress-base-font-size) - 1px)}.debugpress-style-popup .debugpress-debugger-table .debugpress_r.debugpress_r_root,.debugpress-style-popup .debugpress-debugger-table td .kint-rich,.debugpress-style-popup .debugpress-debugger-table th .kint-rich{margin:0}.debugpress-style-popup .debugpress-debugger-table td .kint-rich>dl>.kint-parent,.debugpress-style-popup .debugpress-debugger-table th .kint-rich>dl>.kint-parent{margin-top:0}.debugpress-style-popup .debugpress-debugger-table td{border-width:0 1px 1px 0;vertical-align:top}.debugpress-style-popup .debugpress-debugger-table tr:nth-of-type(2n){background:#fafafa}.debugpress-style-popup .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child{width:30%}.debugpress-style-popup #debugpress-debugger-tab-hooks .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child,.debugpress-style-popup #debugpress-debugger-tab-queries .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child{width:70%}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list>thead td,.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list>thead th{padding:3px 8px!important}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list>tbody>tr>th{padding:3px 8px!important;vertical-align:top;width:20%}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list>tbody>tr>td.dbg-hook-no-callbacks{padding:4px 6px 4px 82px!important;font-weight:700}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions{width:100%;table-layout:auto;margin:0;border:0;background:#fff;border-collapse:collapse;font-size:calc(var(--debugpress-base-font-size) - 1px)}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td{padding:3px 5px!important}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td:first-child{width:80px;text-align:right}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td:last-child{width:30%}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action em{font-family:monospace;font-weight:700;font-style:normal}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action .dbg-hook-action-callback-call strong{font-weight:400;font-family:monospace}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr td.dbg-hook-column-action button{float:right;font-weight:700;font-size:calc(var(--debugpress-base-font-size) - 1px);color:#fff!important;background:#0073aa;padding:0 6px 3px;margin:0 0 0 10px;border:0;border-radius:3px;cursor:pointer}.debugpress-style-popup #debugpress-debugger-tab-hooks #dbg-hooks-list .dbg-hooks-actions tr:last-child td{border-bottom:0}.debugpress-style-popup #debugpress-debuglog-content,.debugpress-style-popup .query-sql-run-full,.debugpress-style-popup .sql-query-list .sql-query .sql-query-full{background-color:#f4f4f4;color:#000;font-family:monospace;font-size:var(--debugpress-sql-font-size);margin:5px 0 0;padding:5px}.debugpress-style-popup .query-sql-run-full{font-weight:700}.debugpress-style-popup #debugpress-debuglog-content{font-weight:400}.debugpress-style-popup #debugpress-debuglog-content>div{overflow:auto;color:#000;background-color:#fff}.debugpress-style-popup #debugpress-debuglog-content>div pre{background:0 0;overflow:visible}.debugpress-style-popup .sql-query-list .sql-query{border:1px solid #777;margin:5px 0;padding:5px}.debugpress-style-popup .sql-query-list .sql-query .sql-query-full{font-weight:700}.debugpress-style-popup .debugpress-wrapper-warning{border:1px solid #23282d;padding:10px;margin:0 0 10px}.debugpress-style-popup .debugpress-wrapper-warning h4{color:#900;font-size:calc(var(--debugpress-base-font-size) + 3px);margin:0 0 5px}.debugpress-style-popup .debugpress-debug-environment{margin:0 0 10px;padding:10px;background-color:#f3ffe7}.debugpress-style-popup .debugpress-debug-environment .debugpress-debugger-panel-block-title{background-color:#12ae00;text-align:center;font-size:110%}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-development{background-color:#ffe7f2}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-development .debugpress-debugger-panel-block-title{background-color:#ae0060}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-local{background-color:#f7e7ff}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-local .debugpress-debugger-panel-block-title{background-color:#8800ae}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-staging{background-color:#e7eeff}.debugpress-style-popup .debugpress-debug-environment.debugpress-debug-env-staging .debugpress-debugger-panel-block-title{background-color:#0026ae}.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment{color:#12ae00}.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-development{color:#ae0060}.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-local{color:#8800ae}.debugpress-style-popup .debugpress-debugger-footer-left .debugpress-debugger-environment.debugpress-env-staging{color:#0026ae}.debugpress-style-popup .debugpress-debug-notice-block{margin:10px 0;padding:10px 10px 1px;border-left:4px solid red;background-color:#ffe7e7}.debugpress-style-popup .debugpress-debug-notice-block .debugpress-debugger-panel-block-title{background-color:red}.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter{width:44px}.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter div,.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .one-quarter h5{display:none!important}.debugpress-style-popup .debugpress-tab-content.debugpress-queries-sidebar-closed .three-quarters{width:calc(100% - 44px)}.debugpress-style-popup .debugpress-button-action{background:#27b;color:#fff;display:inline-block;cursor:pointer;border:0;text-align:center;width:max-content;border-radius:0;margin:5px 5px 0 0;padding:8px 14px;font-size:calc(var(--debugpress-base-font-size) + 3px)} \ No newline at end of file diff --git a/css/fonts/debugpress.woff b/css/fonts/debugpress.woff deleted file mode 100644 index b2761cc..0000000 Binary files a/css/fonts/debugpress.woff and /dev/null differ diff --git a/css/fonts/debugpress.woff2 b/css/fonts/debugpress.woff2 deleted file mode 100644 index adc0a9a..0000000 Binary files a/css/fonts/debugpress.woff2 and /dev/null differ diff --git a/css/prettyprint.css b/css/prettyprint.css deleted file mode 100644 index 67d9fc4..0000000 --- a/css/prettyprint.css +++ /dev/null @@ -1,164 +0,0 @@ -.debugpress_r { - font-size: var(--debugpress-pretty-font-size); - font-family: Consolas, "Lucida Console", monospace; - line-height: 1.4; - cursor: default; -} -.debugpress_r .debugpress-icon { - vertical-align: text-bottom; - font-size: calc(var(--debugpress-pretty-font-size) + 2px); -} -.debugpress_r.debugpress_r_root { - background: #FFF; - border: 1px solid #000; - margin: 1em 0; -} -.debugpress_r a { - outline: none; - box-shadow: none; - display: block !important; - text-decoration: none !important; -} -.debugpress_r a:focus, .debugpress_r a:hover { - outline: none; - box-shadow: none; -} -.debugpress_r p { - line-height: inherit !important; - margin: 0 !important; -} -.debugpress_r .debugpress_r_f { - padding: 3px; - border-top: 1px dashed #444; - font: 11px Verdana, sans-serif; -} -.debugpress_r .debugpress_r_f code { - color: #F00; - background: none; - padding: 0; - margin: 0; - border: 0; - font: 11px Consolas, "Liberation Mono", Courier, monospace; - font-weight: 700; -} -.debugpress_r .debugpress_r_c { - display: block; - text-decoration: none; - color: #222; - padding: 2px; - overflow: hidden; - text-overflow: ellipsis; -} -.debugpress_r .debugpress_r_a { - color: #F00; - display: inline-block; - width: 15px; - text-align: center; -} -.debugpress_r .debugpress_r_ad .debugpress_r_a { - color: #000; - opacity: 0.2; -} -.debugpress_r .debugpress_r_k { - color: #060; - font-weight: 700; -} -.debugpress_r .debugpress_r_d { - font-size: calc(var(--debugpress-pretty-font-size) - 1px); - color: #777; - margin: 0 2px; -} -.debugpress_r .debugpress_r_d span { - color: #333; -} -.debugpress_r .debugpress_r_p { - color: #000; - font-weight: 700; -} -.debugpress_r .debugpress_r_p.debugpress_r_t_integer, .debugpress_r .debugpress_r_p.debugpress_r_t_double { - color: #F0E; -} -.debugpress_r .debugpress_r_p.debugpress_r_t_string { - color: #E00; -} -.debugpress_r .debugpress_r_p.debugpress_r_t_boolean { - color: #00E; -} -.debugpress_r .debugpress_r_v { - margin-left: 9px; - padding-left: 7px; - border-left: 1px dotted #CCC; - display: none; -} -.debugpress_r .debugpress_r_v.debugpress_r_open { - display: block; -} -.debugpress_r .debugpress_r_ir { - font-style: italic; -} -.debugpress_r .debugpress_r_t_comment { - color: #080; -} -.debugpress_r .debugpress_r_m .debugpress_r_k { - color: #909; -} -.debugpress_r .debugpress_r_m .debugpress_r_ma { - font-weight: 400; - color: #777; -} -.debugpress_r .debugpress_r_m .debugpress_r_mv { - color: #00E; -} -.debugpress_r .debugpress_r_m_public .debugpress_r_mo, -.debugpress_r .debugpress_r_m_protected .debugpress_r_mo, -.debugpress_r .debugpress_r_m_private .debugpress_r_mo, -.debugpress_r .debugpress_r_m_abstract .debugpress_r_mo, -.debugpress_r .debugpress_r_m_final .debugpress_r_mo { - font-weight: 400; - color: #008; -} -.debugpress_r.debugpress_r_root .debugpress_r_rn { - font-weight: 700; - color: #008000; -} -.debugpress_r .debugpress_r_m_magic { - font-style: italic; -} -.debugpress_r .debugpress_r_m_deprecated { - text-decoration: line-through; -} -.debugpress_r a.debugpress_r_c.debugpress_r_m_constructor .debugpress_r_k, .debugpress_r a.debugpress_r_c.debugpress_r_m_destructor .debugpress_r_k { - color: #C02; -} -.debugpress_r a.debugpress_r_c:hover { - background-color: Highlight; - color: HighlightText; -} -.debugpress_r a.debugpress_r_c:hover .debugpress_r_k, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_d, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_d span, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_ma, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_mo, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_mv, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_p, -.debugpress_r a.debugpress_r_c:hover .debugpress_r_a { - background-color: Highlight; - color: HighlightText; -} - -.debugpress_rs.debugpress_rs_null { - color: #C00; -} -.debugpress_rs.debugpress_rs_empty { - color: #090; -} -.debugpress_rs.debugpress_rs_number { - color: #009; -} -.debugpress_rs.debugpress_rs_bool.debugpress_rs_bool_true { - font-weight: 700; - color: #050; -} -.debugpress_rs.debugpress_rs_bool.debugpress_rs_bool_false { - color: #700; -} diff --git a/css/prettyprint.min.css b/css/prettyprint.min.css deleted file mode 100644 index fbfc604..0000000 --- a/css/prettyprint.min.css +++ /dev/null @@ -1 +0,0 @@ -.debugpress_r{font-size:var(--debugpress-pretty-font-size);font-family:Consolas,"Lucida Console",monospace;line-height:1.4;cursor:default}.debugpress_r .debugpress-icon{vertical-align:text-bottom;font-size:calc(var(--debugpress-pretty-font-size) + 2px)}.debugpress_r.debugpress_r_root{background:#fff;border:1px solid #000;margin:1em 0}.debugpress_r a{outline:0;box-shadow:none;display:block!important;text-decoration:none!important}.debugpress_r a:focus,.debugpress_r a:hover{outline:0;box-shadow:none}.debugpress_r p{line-height:inherit!important;margin:0!important}.debugpress_r .debugpress_r_f{padding:3px;border-top:1px dashed #444;font:11px Verdana,sans-serif}.debugpress_r .debugpress_r_f code{color:red;background:0 0;padding:0;margin:0;border:0;font:11px Consolas,"Liberation Mono",Courier,monospace;font-weight:700}.debugpress_r .debugpress_r_c{display:block;text-decoration:none;color:#222;padding:2px;overflow:hidden;text-overflow:ellipsis}.debugpress_r .debugpress_r_a{color:red;display:inline-block;width:15px;text-align:center}.debugpress_r .debugpress_r_ad .debugpress_r_a{color:#000;opacity:.2}.debugpress_r .debugpress_r_k{color:#060;font-weight:700}.debugpress_r .debugpress_r_d{font-size:calc(var(--debugpress-pretty-font-size) - 1px);color:#777;margin:0 2px}.debugpress_r .debugpress_r_d span{color:#333}.debugpress_r .debugpress_r_p{color:#000;font-weight:700}.debugpress_r .debugpress_r_p.debugpress_r_t_double,.debugpress_r .debugpress_r_p.debugpress_r_t_integer{color:#f0e}.debugpress_r .debugpress_r_p.debugpress_r_t_string{color:#e00}.debugpress_r .debugpress_r_p.debugpress_r_t_boolean{color:#00e}.debugpress_r .debugpress_r_v{margin-left:9px;padding-left:7px;border-left:1px dotted #ccc;display:none}.debugpress_r .debugpress_r_v.debugpress_r_open{display:block}.debugpress_r .debugpress_r_ir{font-style:italic}.debugpress_r .debugpress_r_t_comment{color:#080}.debugpress_r .debugpress_r_m .debugpress_r_k{color:#909}.debugpress_r .debugpress_r_m .debugpress_r_ma{font-weight:400;color:#777}.debugpress_r .debugpress_r_m .debugpress_r_mv{color:#00e}.debugpress_r .debugpress_r_m_abstract .debugpress_r_mo,.debugpress_r .debugpress_r_m_final .debugpress_r_mo,.debugpress_r .debugpress_r_m_private .debugpress_r_mo,.debugpress_r .debugpress_r_m_protected .debugpress_r_mo,.debugpress_r .debugpress_r_m_public .debugpress_r_mo{font-weight:400;color:#008}.debugpress_r.debugpress_r_root .debugpress_r_rn{font-weight:700;color:green}.debugpress_r .debugpress_r_m_magic{font-style:italic}.debugpress_r .debugpress_r_m_deprecated{text-decoration:line-through}.debugpress_r a.debugpress_r_c.debugpress_r_m_constructor .debugpress_r_k,.debugpress_r a.debugpress_r_c.debugpress_r_m_destructor .debugpress_r_k{color:#c02}.debugpress_r a.debugpress_r_c:hover,.debugpress_r a.debugpress_r_c:hover .debugpress_r_a,.debugpress_r a.debugpress_r_c:hover .debugpress_r_d,.debugpress_r a.debugpress_r_c:hover .debugpress_r_d span,.debugpress_r a.debugpress_r_c:hover .debugpress_r_k,.debugpress_r a.debugpress_r_c:hover .debugpress_r_ma,.debugpress_r a.debugpress_r_c:hover .debugpress_r_mo,.debugpress_r a.debugpress_r_c:hover .debugpress_r_mv,.debugpress_r a.debugpress_r_c:hover .debugpress_r_p{background-color:Highlight;color:HighlightText}.debugpress_rs.debugpress_rs_null{color:#c00}.debugpress_rs.debugpress_rs_empty{color:#090}.debugpress_rs.debugpress_rs_number{color:#009}.debugpress_rs.debugpress_rs_bool.debugpress_rs_bool_true{font-weight:700;color:#050}.debugpress_rs.debugpress_rs_bool.debugpress_rs_bool_false{color:#700} \ No newline at end of file diff --git a/debugpress.php b/debugpress.php index 1379c31..a42c543 100644 --- a/debugpress.php +++ b/debugpress.php @@ -37,11 +37,13 @@ exit; } -const DEBUGPRESS_VERSION = '4.2'; -const DEBUGPRESS_FILE = __FILE__; -const DEBUGPRESS_PLUGIN_PATH = __DIR__ . '/'; +const DEBUGPRESS_VERSION = '4.2'; +const DEBUGPRESS_FLYIN_VERSION = '1.1.0'; +const DEBUGPRESS_FILE = __FILE__; +const DEBUGPRESS_PLUGIN_PATH = __DIR__ . '/'; define( 'DEBUGPRESS_PLUGIN_URL', plugins_url( '/', DEBUGPRESS_FILE ) ); +define( 'DEBUGPRESS_PLUGIN_DIST_URL', DEBUGPRESS_PLUGIN_URL . 'dist/' ); define( 'DEBUGPRESS_IS_AJAX', defined( 'DOING_AJAX' ) && DOING_AJAX ); define( 'DEBUGPRESS_IS_CRON', defined( 'DOING_CRON' ) && DOING_CRON ); diff --git a/forms/display.php b/forms/display.php index 6a26146..f9fe471 100644 --- a/forms/display.php +++ b/forms/display.php @@ -3,77 +3,77 @@ use Dev4Press\Plugin\DebugPress\Display\Loader; if ( ! defined( 'ABSPATH' ) ) { - exit; + exit; } ?> ")},createOverlay:function(){var t=this.props("overlay");t.push("transition: all "+this.overlaySpeed+"s;"),this.container().append("
")},createDialog:function(){var t="",e=this.props("dialog"),s=[],o=[this.$classes.dialog,this.css("skin"),this.css("dialog"),this.css("effect"),this.style,this.extraClass],i=this.props("content");!0===this.title?t=this.o().data("title"):!1!==this.title&&(t=this.title),0!==this.angle&&e.push("transform: rotate("+this.angle+"deg);"),e.push("z-index: "+(this.zIndex+1)+";"),"transition"===this.$mode&&(s.push("-webkit-transition: all "+this.effectSpeed+"s;"),s.push("transition: all "+this.effectSpeed+"s;")),e="
",this.buttonX&&(e+=""),this.header&&(e+="
",!1===this.headerContent&&""!==t&&(e+="<"+this.titleTag+" id='"+this.css("title")+"'>"+t+""),e+="
"),e+="
",this.footer&&(e+="
",!1===this.footerContent&&this.buttonFooter&&(e+=""),e+=this._appendToFooter(),e+="
"),e+="
",e+="
",this.container().append(e),!1!==this.headerContent&&c("."+this.css("dialog")+" ."+this.$classes.header).append(this.headerContent),!1!==this.footerContent&&c("."+this.css("dialog")+" ."+this.$classes.footer).append(this.footerContent),c("."+this.css("dialog")+" ."+this.$classes.content).append(this.o()),this.o().show(),this._calculatePosition(!0)},open:function(t,e){if(!t.$enabled||0===t.$cookie)return!1;var s=t._open(t);return s&&(e&&(t.$enabled=!1),t.autoShowLimit&&(t.$cookie--,t._cookieSave())),s},close:function(t){return t._close(t)},css:function(t){switch(t){case"title":return this.$classes.titleIDPrefix+this.$core.$id;case"overlay":return this.$classes.overlayIDPrefix+this.$core.$id;case"dialog":return this.$classes.dialogIDPrefix+this.$core.$id;case"wrapper":return this.$classes.dialogIDPrefix+this.$core.$id+" ."+this.$classes.wrapper;case"content":return this.$classes.dialogIDPrefix+this.$core.$id+" ."+this.$classes.content;case"effect":return this.$classes.dialogEffectPrefix+this.effect;case"skin":return this.$classes.skinPrefix+this.$skinCode}},props:function(t){var s=this,o=[];return c.each(this.$props[t],function(t,e){s[t]&&o.push(e+":"+s[t]+";")}),o},o:function(){return this.$core.$obj},w:function(){return c("."+this.css("wrapper"))},_mod:function(t){var s=this;c.each(t,function(t,e){s[t]=e,"modal"===t&&(e?s._showModalOverlay(s):s._hideModalOverlay(s,!0))})},_move:function(t){t=c.extend({positionX:this.positionX,positionY:this.positionY,offsetX:this.offsetX,offsetY:this.offsetY},t);this.positionX=t.positionX,this.positionY=t.positionY,this.offsetX=t.offsetX,this.offsetY=t.offsetY,this._calculatePosition()},_resize:function(t){var e=c.extend({width:0,height:0},t),t=c("."+this.css("dialog"));this.width=e.width,this.height=e.height,t.width(e.width),t.height(e.height),this._calculatePosition()},_setMode:function(){-1=22.0.0" @@ -1903,6 +1911,18 @@ "postcss-selector-parser": "^7.1.1" } }, + "node_modules/@dev4press/flyin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@dev4press/flyin/-/flyin-1.1.0.tgz", + "integrity": "sha512-Bneq7vyVLh0BYBb9oAr95Qjh3SRURKqoX9CUAda3vKK30h6AE1y12+HbjvrLbllVGEtn8x3Jh75qDzuQ++0DJg==", + "license": "MIT", + "dependencies": { + "tinykeys": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -2196,6 +2216,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -2291,33 +2322,701 @@ "node": ">= 8" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.139.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", + "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@pkgr/core": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", + "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", + "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", + "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", + "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", + "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", + "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", + "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", + "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", + "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", + "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", + "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", + "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", + "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", + "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 8" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@pkgr/core": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", - "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", + "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" + "node": "^20.19.0 || >=22.12.0" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2449,6 +3148,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", + "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -2847,6 +3556,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2861,6 +3573,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2875,6 +3590,9 @@ "loong64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2889,6 +3607,9 @@ "loong64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2903,6 +3624,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2917,6 +3641,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2931,6 +3658,9 @@ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2945,6 +3675,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2959,6 +3692,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2973,6 +3709,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3055,9 +3794,9 @@ ] }, "node_modules/@wordpress/babel-preset-default": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.49.0.tgz", - "integrity": "sha512-maJY07MuypSy2sHIdzVODKw9WCO0296PvTsMtZ7b19p6HfHHN3/aPzdk+MWC1w+FcAZStCjVCjHVuVvg4r6coA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.50.0.tgz", + "integrity": "sha512-nXF+cu0NA9lk4GPO+/iv3mMt1TV9zzjMalfaNPfafWz5VDGW68h82Le8wqclTewex/99kYWl12kHwDIx66hw6Q==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -3067,8 +3806,8 @@ "@babel/plugin-transform-runtime": "^7.25.7", "@babel/preset-env": "^7.25.7", "@babel/preset-typescript": "^7.25.7", - "@wordpress/browserslist-config": "^6.49.0", - "@wordpress/warning": "^3.49.0", + "@wordpress/browserslist-config": "^6.50.0", + "@wordpress/warning": "^3.50.0", "browserslist": "^4.21.10", "core-js": "^3.31.0", "react": "^18.3.1" @@ -3079,9 +3818,9 @@ } }, "node_modules/@wordpress/browserslist-config": { - "version": "6.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.49.0.tgz", - "integrity": "sha512-q1gAcPttohpcmmLFG8nghrsHxCq/LD6ImHfNx0aV/vHc1/bBu3B7MF/E6fqG4WocqHNZbEGfs/a5ktQ4PWu4qw==", + "version": "6.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.50.0.tgz", + "integrity": "sha512-/5Zn/uIvVw37iLJRa/HhqHQ/DJq4KWjEXTkFQ/NpCNFQm6ll54uDgYZ9f0tWQM7ORCzCU32z/IJ8ujZaMLA9nQ==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3090,21 +3829,21 @@ } }, "node_modules/@wordpress/compose": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-8.2.0.tgz", - "integrity": "sha512-JqqnNs9mHxZ9zC+4A+YAyIoqnYNqOfLXF5EshXImssFCF1JBYx6wfmyhGAdpV4nZQSHPweV4KNzEApn2cz+fXA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-8.3.0.tgz", + "integrity": "sha512-nHrV8mLanqnLO67l+6RkotG9eRgiW1D6uVb919z8wVWwoZVfimFyN1nznH92tdE/xW6SnX37XDoLoLcS9IkwhQ==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^4.49.0", - "@wordpress/dom": "^4.49.0", - "@wordpress/element": "^8.1.0", - "@wordpress/is-shallow-equal": "^5.49.0", - "@wordpress/keycodes": "^4.49.0", - "@wordpress/priority-queue": "^3.49.0", - "@wordpress/private-apis": "^1.49.0", - "@wordpress/undo-manager": "^1.49.0", + "@wordpress/deprecated": "^4.50.0", + "@wordpress/dom": "^4.50.0", + "@wordpress/element": "^8.2.0", + "@wordpress/is-shallow-equal": "^5.50.0", + "@wordpress/keycodes": "^4.50.0", + "@wordpress/priority-queue": "^3.50.0", + "@wordpress/private-apis": "^1.50.0", + "@wordpress/undo-manager": "^1.50.0", "change-case": "^4.1.2", "mousetrap": "^1.6.5", "use-memo-one": "^1.1.1" @@ -3124,16 +3863,16 @@ } }, "node_modules/@wordpress/compose/node_modules/@wordpress/element": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-8.1.0.tgz", - "integrity": "sha512-469K4lpolw158pipMwMVVSjGvjIhOCkA19Bct5rJ54IGj8ZaPwLiCE3QGYO1oFg4KlpyP1ro4Ao3ZvznX7DeXQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-8.2.0.tgz", + "integrity": "sha512-cTnKRHUdZbYAd4RaJiUwhDKdQDDWY7VoGiwektCmhiBQF6WTFYlhsxl/dmHE0Sok3q7PJQwAg538XEb8WuTaew==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@types/react": "^18.3.27", "@types/react-dom": "^18.3.1", - "@wordpress/deprecated": "^4.49.0", - "@wordpress/escape-html": "^3.49.0", + "@wordpress/deprecated": "^4.50.0", + "@wordpress/escape-html": "^3.50.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.3.1", @@ -3145,13 +3884,13 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.49.0.tgz", - "integrity": "sha512-xK0l4psQpjpyIeE++Aml8tLLNeRN4vEjmBaCd6VbNqbbluW8LzZJtV60JATH8blcW5MaGCGl7rlpSevaBjp0hQ==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.50.0.tgz", + "integrity": "sha512-TVJavTbunFoCSo2g64EKtGwmDVJhvlSqsc4T1EM4aBwsYGIJPjHcAzh6KS8Z171QXFnBxZ7We8CCDAvOFU9iaA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/hooks": "^4.49.0" + "@wordpress/hooks": "^4.50.0" }, "engines": { "node": ">=18.12.0", @@ -3159,13 +3898,13 @@ } }, "node_modules/@wordpress/dom": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.49.0.tgz", - "integrity": "sha512-ysZvqyw1PvClTWqVwLzsE7cqfYU+QppJwu2Ji/rUGyFL9WSNdMIgIQhJWZMBiw0gBtD/uuiQe7OoVJfEGw0JYw==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.50.0.tgz", + "integrity": "sha512-2Mognc1rwe1+tlIfbSeZPqbuAh6vJagELzw9cLasObiVayWhaG+LCIp0sJz2pPG9ppz8L31gGUgna7zrSRu85Q==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/deprecated": "^4.49.0" + "@wordpress/deprecated": "^4.50.0" }, "engines": { "node": ">=18.12.0", @@ -3193,9 +3932,9 @@ } }, "node_modules/@wordpress/escape-html": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.49.0.tgz", - "integrity": "sha512-eOSPRJhmocfi/hztIlbCXbksg54VWIvrbfRbS7AsHY8BelbMyP4YUGEXCZf2jqf5beMB/jqulcsNLsYJ/wC+yw==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.50.0.tgz", + "integrity": "sha512-EECt++WB1RNPQBwBS7/6rKO4eUNq2xe6nb6Guv6uT+F74DgtM3+aZtNs7JhKFxRMORPtu7T0LhlAOBa4H5CsPQ==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3250,9 +3989,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.49.0.tgz", - "integrity": "sha512-65FZ3UXWkSIwFbELFABmcWn1KTA1AUdGAUH8pQlO7HKNO8F+zIrDkkO8gZA/zUHbI3I2vI1PyTA+rherPXg+Kg==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.50.0.tgz", + "integrity": "sha512-dV/AeP9iH1UydVWoUoCPuM8FUx2XvL1i65dhiwRHmZxK/zz8nR5Rq75WISpwFzRYfsyRThjl4LwUxhFAQnHrDw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3261,14 +4000,14 @@ } }, "node_modules/@wordpress/i18n": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.22.0.tgz", - "integrity": "sha512-o6JEr26/W3Lr/Tyu6M2Xexk+wPdt/Q+GS1o4c1T3zp1t0g+L279HFLblkSciOEIteoJYx7Eodma6/VV0kCKxow==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.23.0.tgz", + "integrity": "sha512-avuywVdBpOeHm9cghFcNXCKi/VlJhbJ6KN6LydQOy/NqdRbqyRc59/XlKk1Ks+Vb+dWTGKr5gjiSzm9QJETGmA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@tannin/sprintf": "^1.3.2", - "@wordpress/hooks": "^4.49.0", + "@wordpress/hooks": "^4.50.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", "tannin": "^1.2.0" @@ -3282,9 +4021,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.49.0.tgz", - "integrity": "sha512-pKvFYoExyT/A5h0Y5wLYs+8gQRaisJps2YF0jICo/LOfXR+TF8mYLH2txrA8ZCDGS0FPLSPjMxAl9hjUGrELRg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.50.0.tgz", + "integrity": "sha512-Cq1brW/OhGVNnCqSztHgmKQ1DsNUtEq4F1xIo1awBKVmXDWFggJRxzaWZHWC+sDZmBp7pu03jWqq2u/s+hazSQ==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3293,13 +4032,13 @@ } }, "node_modules/@wordpress/keycodes": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.49.0.tgz", - "integrity": "sha512-nz9i9W9uD2ZZ9lD0e75CwsLK5KF+/sw8o8TxR/OPojwHBSDKet84vtdijErQg68UxKHYnAoDjfF1otIJZ9J+pw==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.50.0.tgz", + "integrity": "sha512-BtyCkA7pk5pMMx+dVjT10OuhQwr9ZjYY1LLcXJcYJjhhFsP16be2BiytrBnKDZj/479/icvEYwlooawZCPrxYQ==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/i18n": "^6.22.0" + "@wordpress/i18n": "^6.23.0" }, "engines": { "node": ">=18.12.0", @@ -3315,9 +4054,9 @@ } }, "node_modules/@wordpress/prettier-config": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.49.0.tgz", - "integrity": "sha512-yP4hm2m2Hxv3I7HI5lxbrCmh95Db4QWcGJGLq/fysepbLjTnqnMIHRs5p0/QoRMV/MhwFi8vMkNmmQYJt386ug==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.50.0.tgz", + "integrity": "sha512-Q48oFBORY0TiVWIebPOG0ynjUAq1Hi9gXKJ69xw2i/UwOwghLOXXFLdAQhS4bJXOw0cdV5xiBaXEQYU+82r5hA==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3329,9 +4068,9 @@ } }, "node_modules/@wordpress/priority-queue": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.49.0.tgz", - "integrity": "sha512-UcVHYan6qYvDNTFEwEnPBU9I1SnImLjEh54ISgqvvndc7jfxtdi+Akwj2kgxeLRY+bsXzMQr6byD/x4dw56yqA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.50.0.tgz", + "integrity": "sha512-OyuAplepKQpNYr8z+nGGGNXWK2v2u9Bqnawkg7V5YkvOKYj/iBJNCiUxiWXOBMeLF1ze36RDR5LEcNDmXRev2Q==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -3343,9 +4082,9 @@ } }, "node_modules/@wordpress/private-apis": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.49.0.tgz", - "integrity": "sha512-tGmX0XknlknSFB3UpoRQHnXW+4FufotTXYln+aXeHTFGcOuW3jSi8d8VZx7LCjUY1jqA8hCDf1vOHXW3FDcErQ==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.50.0.tgz", + "integrity": "sha512-bCVLL9YuWfnPNNqlhl4eTKPipjWbJ8MzAlasJ/SR+h979MyeMFjNPapxKqsPqnJOhDEVSdCTkRN/Wa+Xk8qFdw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3365,9 +4104,9 @@ } }, "node_modules/@wordpress/stylelint-config": { - "version": "23.41.1", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.41.1.tgz", - "integrity": "sha512-+QA9RKPFCCE3DiVRdy6GDzbOmXtxwty+yEIx8tbOMZQHEW4uPQtH6k5Y2Q+qT9jb2os2skb0O9X7jOwH9PGm9Q==", + "version": "23.42.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.42.0.tgz", + "integrity": "sha512-k9lNU4sK3fdipdhHI2d/Rzd/NnfznPmOZ60ok8O8QhfCMZw2Jd1M8ckYqaIrHTKU62ZrcsugdfJlHodsdrxEzA==", "dev": true, "license": "MIT", "dependencies": { @@ -3386,16 +4125,16 @@ } }, "node_modules/@wordpress/stylelint-config/node_modules/@wordpress/element": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-8.1.0.tgz", - "integrity": "sha512-469K4lpolw158pipMwMVVSjGvjIhOCkA19Bct5rJ54IGj8ZaPwLiCE3QGYO1oFg4KlpyP1ro4Ao3ZvznX7DeXQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-8.2.0.tgz", + "integrity": "sha512-cTnKRHUdZbYAd4RaJiUwhDKdQDDWY7VoGiwektCmhiBQF6WTFYlhsxl/dmHE0Sok3q7PJQwAg538XEb8WuTaew==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@types/react": "^18.3.27", "@types/react-dom": "^18.3.1", - "@wordpress/deprecated": "^4.49.0", - "@wordpress/escape-html": "^3.49.0", + "@wordpress/deprecated": "^4.50.0", + "@wordpress/escape-html": "^3.50.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.3.1", @@ -3480,13 +4219,13 @@ } }, "node_modules/@wordpress/undo-manager": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.49.0.tgz", - "integrity": "sha512-af3pfl8d6rnEJ6ZijDAcCRbgaTX/m5tM2Pyl8hmlsUROf5ZCto9syiugM1+TDQ6zRtKYDoYB3SUtbHdLk8FZZg==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.50.0.tgz", + "integrity": "sha512-599I3GPXSMpmAE2jqzHteqypI7rdt5HPDAw8GrHMkDWR1T9gK2L3gObv8I1Hs4eSDM88wgAB0Ifnqpy7zPn5rw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/is-shallow-equal": "^5.49.0" + "@wordpress/is-shallow-equal": "^5.50.0" }, "engines": { "node": ">=18.12.0", @@ -3494,9 +4233,9 @@ } }, "node_modules/@wordpress/warning": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.49.0.tgz", - "integrity": "sha512-00KmZy5kT8vm48HKNQxsgiq3GXdgaPGClneMFTe9EWjop9Ghyq8MaYIqjYY75eOgPTFVcKKQyXK9/DAAQxsQuA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.50.0.tgz", + "integrity": "sha512-6X3ioKOGfmRuZFngmG2QZZW9CBVMTBr5FXqs6Q3li5ryhnAqn3u/ocqsx556YnB5dYdVxK14TiH9o7DDElt8gw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -3883,9 +4622,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.40", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", - "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "version": "2.10.42", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", + "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3896,9 +4635,9 @@ } }, "node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz", + "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==", "dev": true, "license": "MIT", "dependencies": { @@ -3919,9 +4658,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", - "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz", + "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==", "dev": true, "funding": [ { @@ -3939,10 +4678,10 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.38", - "caniuse-lite": "^1.0.30001799", - "electron-to-chromium": "^1.5.376", - "node-releases": "^2.0.48", + "baseline-browser-mapping": "^2.10.42", + "caniuse-lite": "^1.0.30001800", + "electron-to-chromium": "^1.5.387", + "node-releases": "^2.0.50", "update-browserslist-db": "^1.2.3" }, "bin": { @@ -3952,6 +4691,13 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -4061,9 +4807,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001800", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz", - "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==", + "version": "1.0.30001803", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", + "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", "dev": true, "funding": [ { @@ -4114,6 +4860,22 @@ "tslib": "^2.0.3" } }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4152,6 +4914,13 @@ "url": "https://opencollective.com/color" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", @@ -4412,6 +5181,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4465,9 +5244,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.382", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.382.tgz", - "integrity": "sha512-8ETaWbV6SZOrno+G93Ffd9ENsMtetqdnqj4nlfxFW90Sm5GgnuV28Kf62hqQVD6VUgzm7qFQKsTsAPmeUiU3Ug==", + "version": "1.5.389", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.389.tgz", + "integrity": "sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==", "dev": true, "license": "ISC" }, @@ -4909,9 +5688,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.13.0.tgz", - "integrity": "sha512-bLohSkT6469rRs8czj0tLTD8vaeIS/whvPRJVjDr7IuoTT1k5DYDERlNycjDj/HkOlvQdYurmfZ/g3fG5bgeLQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", + "integrity": "sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==", "dev": true, "license": "MIT", "dependencies": { @@ -4971,9 +5750,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", "dev": true, "license": "MIT", "dependencies": { @@ -5229,9 +6008,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", "dev": true, "license": "MIT", "dependencies": { @@ -5346,9 +6125,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", "dev": true, "license": "MIT", "dependencies": { @@ -5768,6 +6547,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -6225,6 +7019,13 @@ "node": ">= 4" } }, + "node_modules/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "dev": true, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -6911,68 +7712,341 @@ "object.values": "^1.1.6" }, "engines": { - "node": ">=4.0" + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/known-css-properties": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", - "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "CC0-1.0" + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lines-and-columns": { @@ -7210,6 +8284,14 @@ "tslib": "^2.0.3" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/node-exports-info": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", @@ -7230,9 +8312,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", - "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", + "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", "dev": true, "license": "MIT", "engines": { @@ -7810,6 +8892,20 @@ "dev": true, "license": "MIT" }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -7992,6 +9088,40 @@ "node": ">=0.10.0" } }, + "node_modules/rolldown": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", + "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.139.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.5", + "@rolldown/binding-darwin-arm64": "1.1.5", + "@rolldown/binding-darwin-x64": "1.1.5", + "@rolldown/binding-freebsd-x64": "1.1.5", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", + "@rolldown/binding-linux-arm64-gnu": "1.1.5", + "@rolldown/binding-linux-arm64-musl": "1.1.5", + "@rolldown/binding-linux-ppc64-gnu": "1.1.5", + "@rolldown/binding-linux-s390x-gnu": "1.1.5", + "@rolldown/binding-linux-x64-gnu": "1.1.5", + "@rolldown/binding-linux-x64-musl": "1.1.5", + "@rolldown/binding-openharmony-arm64": "1.1.5", + "@rolldown/binding-wasm32-wasi": "1.1.5", + "@rolldown/binding-win32-arm64-msvc": "1.1.5", + "@rolldown/binding-win32-x64-msvc": "1.1.5" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -8099,6 +9229,27 @@ "dev": true, "license": "MIT" }, + "node_modules/sass": { + "version": "1.101.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.101.0.tgz", + "integrity": "sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -8331,6 +9482,16 @@ "tslib": "^2.0.3" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -8341,6 +9502,17 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -8391,9 +9563,9 @@ } }, "node_modules/string-width": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", - "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", "dev": true, "license": "MIT", "dependencies": { @@ -9017,9 +10189,9 @@ } }, "node_modules/stylelint/node_modules/globby": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", - "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.1.tgz", + "integrity": "sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==", "dev": true, "license": "MIT", "dependencies": { @@ -9235,6 +10407,25 @@ "@tannin/plural-forms": "^1.1.0" } }, + "node_modules/terser": { + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.0.tgz", + "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", @@ -9253,9 +10444,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -9265,6 +10456,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinykeys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tinykeys/-/tinykeys-4.0.0.tgz", + "integrity": "sha512-z5bQRQHL1PSx3lGOZEAMM2oKp0EBtn5T5f7HJnaKPOzk6vEH0wUPvdHLeQ7F4tmkek8AgoTQISUFmn/5SNF2xA==", + "license": "MIT", + "engines": { + "node": ">=22" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9451,6 +10651,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -9470,6 +10684,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", @@ -9643,6 +10864,97 @@ "dev": true, "license": "MIT" }, + "node_modules/vite": { + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz", + "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.16", + "rolldown": "~1.1.4", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.3.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 4713532..20ea435 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,38 @@ { "name": "debugpress", - "version": "4.2.0", + "version": "4.3.0", "private": true, "type": "module", "engines": { "node": ">=22.0.0" }, "scripts": { + "dev": "vite", + "build": "vite build --mode admin && vite build --mode panel && vite build --mode print", "lint": "npm run lint:js && npm run lint:css", - "lint:js": "eslint \"js/**/*.js\"", - "lint:css": "stylelint \"scss/**/*.scss\"", - "lint:css:fix": "stylelint \"scss/**/*.scss\" --fix" + "lint:js": "eslint \"src/scripts/**/*.ts\"", + "lint:css": "stylelint \"src/styles/**/*.scss\"", + "lint:css:fix": "stylelint \"src/styles/**/*.scss\" --fix" }, "devDependencies": { + "@types/node": "^26.1.1", "@wordpress/eslint-plugin": "^24.5.0", "@wordpress/stylelint-config": "^23.35.0", "eslint": "^10.1.0", + "sass": "^1.77.8", "stylelint": "^17.6.0", "stylelint-config-standard-scss": "^17.0.0", - "stylelint-scss": "^7.0.0" + "stylelint-scss": "^7.0.0", + "terser": "^5.31.3", + "typescript": "^6.0.3", + "vite": "^8.1.3" }, "overrides": { "@wordpress/stylelint-config": { "stylelint": "$stylelint" } + }, + "dependencies": { + "@dev4press/flyin": "^1.1.0" } } diff --git a/readme.txt b/readme.txt index 528e8a1..0249274 100644 --- a/readme.txt +++ b/readme.txt @@ -116,6 +116,12 @@ Yes. Once the popup is open, you will find the Layout icon next to the button to Open the WordPress 'Settings' menu, there you will find 'DebugPress' panel. == Changelog == += 4.3 (2026.07.17) = +* New: replaced SmartAnimatedPopup with Flyin +* New: rewritten all JS into TypeScript with no jQuery dependencies +* New: modern Vite and TypeScript build system +* Removed: all external JavaScript libraries + = 4.2 (2026.06.30) = * New: tested with WordPress 7.0 * New: tested and compatible with `PHP` 8.5 diff --git a/scss/adminpanel.scss b/scss/adminpanel.scss deleted file mode 100644 index 7559438..0000000 --- a/scss/adminpanel.scss +++ /dev/null @@ -1,2 +0,0 @@ -@use "components/admin"; -@use "components/tools"; \ No newline at end of file diff --git a/scss/components/_admin.scss b/scss/components/_admin.scss deleted file mode 100644 index ce5d86d..0000000 --- a/scss/components/_admin.scss +++ /dev/null @@ -1,159 +0,0 @@ -.debugpress-panel { - .nav-tab { - margin-left: 10px; - padding: 5px 15px; - - .dashicons { - font-size: 16px; - margin-right: 5px; - vertical-align: middle; - } - } - - .nav-tab-right { - float: right; - margin-right: 10px; - margin-left: 0; - } -} - -.debugpress-panel-settings { - .tab-content { - display: none; - - &.tab-content-active { - display: block; - } - } -} - -.debugpress_settings { - width: calc(100% - 330px); - float: left; - color: #000; - - .debugpress-settings-section { - max-width: 720px; - background-color: #FFF; - padding: 15px; - margin: 15px 0 0 15px; - border: 1px solid #1E72BD; - - h2 { - margin: -15px -15px 15px; - padding: 15px; - background-color: #1E72BD; - color: #FFF; - } - - .debugpress-section-info { - margin: -15px -15px 0; - padding: 15px; - background-color: #DAEEFF; - } - - p.description { - border-top: 1px solid #1E72BD; - margin: 10px 0 0; - padding: 5px 0 0; - } - } -} - -.debugpress_sidebar { - float: right; - padding-left: 20px; - margin-right: 15px; - width: 280px; - - img { - height: auto; - width: 100%; - } - - > div { - text-align: center; - padding: 15px; - margin: 15px 0; - max-width: 360px; - } - - .debugpress_plugin { - color: #FFF; - background: #1E72BD; - - > span { - display: block; - text-transform: uppercase; - letter-spacing: 2px; - } - - > div { - border-top: 1px solid #FFF; - border-bottom: 1px solid #FFF; - padding: 15px 0; - margin: 15px 0; - font-weight: 700; - font-size: 1.1em; - } - - .button-secondary { - font-weight: 700; - } - } - - .debugpress_help { - color: #111; - background: #FFF; - border: 1px solid #1E72BD; - - > p { - margin: 0; - padding: 0 0 15px; - } - } - - .debugpress_dev4press { - color: #111; - background: #E0E0E0; - border: 1px solid #1E72BD; - - > p { - margin: 0; - padding: 0 0 10px; - font-weight: 700; - } - - > div { - border-top: 1px solid #1E72BD; - padding: 15px 0 0; - margin: 15px 0 0; - font-weight: 700; - font-size: 1.2em; - } - } -} - -@media screen and (width <= 900px) { - .debugpress_settings { - width: 100%; - float: none; - - .debugpress-settings-section { - margin: 15px; - } - } - - .debugpress_sidebar { - border-top: 1px solid #1E72BD; - padding-top: 20px; - padding-left: 0; - width: 100%; - float: none; - margin: 0; - - > div { - margin: 0 auto 15px; - } - } -} diff --git a/scss/components/_popup.scss b/scss/components/_popup.scss deleted file mode 100644 index c9c0148..0000000 --- a/scss/components/_popup.scss +++ /dev/null @@ -1,111 +0,0 @@ -.debugpress-style-popup { - color: #444; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 1.4; - font-size: var(--debugpress-base-font-size); - font-style: normal; - font-weight: 400; - box-sizing: border-box; - - * { - font-family: inherit; - box-sizing: border-box; - } - - pre { - margin: 0; - padding: 5px 7px; - line-height: 1.4; - white-space: pre; - } - - a { - color: #0073AA; - text-decoration: none; - box-shadow: none; - outline: none; - - &.sqlq-option-on { - font-weight: 700; - color: #FFF; - background: #0073AA; - padding: 0 3px 1px; - } - } - - .sanp-wrapper { - background: #FFF; - border-radius: 0; - border: 4px solid #23282D; - box-shadow: 1px 1px 5px rgb(32 32 32 / 60%); - - > button { - appearance: none; - background: none; - border: medium none; - color: #E00; - cursor: pointer; - float: right; - font-size: 20px; - font-weight: 900; - line-height: 1; - right: 5px; - top: 3px; - } - - .sanp-header { - background: #23282D; - border-radius: 0; - padding: 5px 5px 0; - color: #FFF; - height: 38px; - - h5 { - border-bottom: 4px solid #23282D; - color: #FFF; - font-size: 18px; - font-weight: 900; - line-height: 24px; - margin: 0; - padding: 0; - text-transform: uppercase; - } - } - - .sanp-content { - padding: 0; - } - - .sanp-footer { - border-radius: 0; - padding: 5px; - background: #E0E0E0; - text-align: left; - - button { - appearance: none; - margin: 0; - padding: 0; - cursor: pointer; - color: #23282D; - font-weight: 700; - outline: 1px solid transparent; - background: none; - border: none; - font-size: 16px; - text-transform: uppercase; - letter-spacing: 2px; - } - } - } - - &.sanp-button-alt { - .sanp-wrapper { - > button { - background: #500; - box-shadow: 1px 1px 4px rgb(32 32 32 / 30%); - color: #FFF; - } - } - } -} diff --git a/scss/debugpress.scss b/scss/debugpress.scss deleted file mode 100644 index 51f2c24..0000000 --- a/scss/debugpress.scss +++ /dev/null @@ -1,13 +0,0 @@ -@use "includes/functions" as *; -@use "includes/icons" as *; -@use "includes/embeds"; -@use "includes/variables" as *; -@use "components/vars"; -@use "components/icons"; -@use "components/grid" as *; -@use "components/basic" as *; -@use "components/button"; -@use "components/layout"; -@use "components/popup"; -@use "components/debugger"; -@use "components/responsive" as *; \ No newline at end of file diff --git a/scss/prettyprint.scss b/scss/prettyprint.scss deleted file mode 100644 index 3fd5fc9..0000000 --- a/scss/prettyprint.scss +++ /dev/null @@ -1,2 +0,0 @@ -@use "includes/variables" as *; -@use "components/pretty"; diff --git a/scss/components/_tools.scss b/src/scripts/admin/index.scss similarity index 53% rename from scss/components/_tools.scss rename to src/scripts/admin/index.scss index 80e0570..af7aad3 100644 --- a/scss/components/_tools.scss +++ b/src/scripts/admin/index.scss @@ -1,186 +1,347 @@ -.debugpress-panel-tools { - .tab-content { - margin: 15px; - } -} - -.debugpress_phpinfo { - overflow: auto; - - h1.p { - background-color: #222; - color: #FFF; - font-size: 28px; - margin: 0; - padding: 22px 16px; - } - - td img { - float: right; - margin: 7px 16px 0 0; - } - - table { - width: 100%; - background: #FFF; - border-collapse: collapse; - border: 1px solid #BBB; - margin: 0 0 5px; - - td, - th { - padding: 5px; - text-align: left; - vertical-align: top; - } - - tr { - th, - td.first { - width: 20%; - } - - td.b, - th.first { - color: #333; - font-weight: 700; - } - - td { - border-bottom: 1px solid #ECECEC; - word-break: break-all; - - .options { - text-align: right; - white-space: normal; - padding-right: 0; - } - } - - &.first { - th { - color: #222; - font-weight: 700; - } - } - - &:last-child { - td { - border-bottom: none; - } - } - - &.h, - &.with-header { - th { - background: #666; - color: #FFF; - padding: 10px; - } - } - } - - th { - text-align: left; - background-color: #ECECEC; - padding: 3px 5px; - } - } - - div.inside { - margin: -1px 0 10px; - } - - p.sub { - color: #777; - font-size: 13px; - font-style: italic; - padding: 5px 10px 15px; - margin: -12px; - } - - h3 { - background: #333 !important; - color: #FFF; - text-shadow: none !important; - font-size: 14px; - font-weight: 700; - } - - div.inside .link { - text-align: right; - font-weight: 700; - } - - a { - text-decoration: none; - } - - a:hover { - text-decoration: underline; - } - - h2.phpsection { - background-color: #333; - color: #FFF; - font-style: normal; - padding: 5px 10px; - font-size: 18px; - line-height: 24px; - margin-bottom: 5px; - text-shadow: none; - } - - h2.phpsection a { - color: #FFF; - } -} - -.debugpress_info { - table { - min-width: 50%; - max-width: 100%; - line-height: 1.5; - border-collapse: collapse; - border: 1px solid #BBB; - border-top: 0; - - thead { - th { - text-align: left; - padding: 5px; - background: #666; - color: #FFF; - } - } - - tbody { - tr { - border-bottom: 1px solid #BBB; - background: #FFF; - - th, td { - vertical-align: top; - padding: 5px; - text-align: left; - } - - td { - border-left: 1px solid #BBB; - - div { - word-break: break-all; - } - } - } - } - } -} - -@media screen and (width <= 1200px) { - .debugpress_info { - table { - width: 100%; - } - } -} \ No newline at end of file +.debugpress-panel { + .nav-tab { + margin-left: 10px; + padding: 5px 15px; + + .dashicons { + font-size: 16px; + margin-right: 5px; + vertical-align: middle; + } + } + + .nav-tab-right { + float: right; + margin-right: 10px; + margin-left: 0; + } +} + +.debugpress-panel-settings { + .tab-content { + display: none; + + &.tab-content-active { + display: block; + } + } +} + +.debugpress_settings { + width: calc(100% - 330px); + float: left; + color: #000; + + .debugpress-settings-section { + max-width: 720px; + background-color: #FFF; + padding: 15px; + margin: 15px 0 0 15px; + border: 1px solid #1E72BD; + + h2 { + margin: -15px -15px 15px; + padding: 15px; + background-color: #1E72BD; + color: #FFF; + } + + .debugpress-section-info { + margin: -15px -15px 0; + padding: 15px; + background-color: #DAEEFF; + } + + p.description { + border-top: 1px solid #1E72BD; + margin: 10px 0 0; + padding: 5px 0 0; + } + } +} + +.debugpress_sidebar { + float: right; + padding-left: 20px; + margin-right: 15px; + width: 280px; + + img { + height: auto; + width: 100%; + } + + > div { + text-align: center; + padding: 15px; + margin: 15px 0; + max-width: 360px; + } + + .debugpress_plugin { + color: #FFF; + background: #1E72BD; + + > span { + display: block; + text-transform: uppercase; + letter-spacing: 2px; + } + + > div { + border-top: 1px solid #FFF; + border-bottom: 1px solid #FFF; + padding: 15px 0; + margin: 15px 0; + font-weight: 700; + font-size: 1.1em; + } + + .button-secondary { + font-weight: 700; + background-color: #FFF; + } + } + + .debugpress_help { + color: #111; + background: #FFF; + border: 1px solid #1E72BD; + + > p { + margin: 0; + padding: 0 0 15px; + } + } + + .debugpress_dev4press { + color: #111; + background: #E0E0E0; + border: 1px solid #1E72BD; + + > p { + margin: 0; + padding: 0 0 10px; + font-weight: 700; + } + + > div { + border-top: 1px solid #1E72BD; + padding: 15px 0 0; + margin: 15px 0 0; + font-weight: 700; + font-size: 1.2em; + } + } +} + +.debugpress-panel-tools { + .tab-content { + margin: 15px; + } +} + +.debugpress_phpinfo { + overflow: auto; + + h1.p { + background-color: #222; + color: #FFF; + font-size: 28px; + margin: 0; + padding: 22px 16px; + } + + td img { + float: right; + margin: 7px 16px 0 0; + } + + table { + width: 100%; + background: #FFF; + border-collapse: collapse; + border: 1px solid #BBB; + margin: 0 0 5px; + + td, + th { + padding: 5px; + text-align: left; + vertical-align: top; + } + + tr { + th, + td.first { + width: 20%; + } + + td.b, + th.first { + color: #333; + font-weight: 700; + } + + td { + border-bottom: 1px solid #ECECEC; + word-break: break-all; + + .options { + text-align: right; + white-space: normal; + padding-right: 0; + } + } + + &.first { + th { + color: #222; + font-weight: 700; + } + } + + &:last-child { + td { + border-bottom: none; + } + } + + &.h, + &.with-header { + th { + background: #666; + color: #FFF; + padding: 10px; + } + } + } + + th { + text-align: left; + background-color: #ECECEC; + padding: 3px 5px; + } + } + + div.inside { + margin: -1px 0 10px; + } + + p.sub { + color: #777; + font-size: 13px; + font-style: italic; + padding: 5px 10px 15px; + margin: -12px; + } + + h3 { + background: #333 !important; + color: #FFF; + text-shadow: none !important; + font-size: 14px; + font-weight: 700; + } + + div.inside .link { + text-align: right; + font-weight: 700; + } + + a { + text-decoration: none; + } + + a:hover { + text-decoration: underline; + } + + h2.phpsection { + background-color: #333; + color: #FFF; + font-style: normal; + padding: 5px 10px; + font-size: 18px; + line-height: 24px; + margin-bottom: 5px; + text-shadow: none; + } + + h2.phpsection a { + color: #FFF; + } +} + +.debugpress_info { + table { + min-width: 50%; + max-width: 100%; + line-height: 1.5; + border-collapse: collapse; + border: 1px solid #BBB; + border-top: 0; + + thead { + th { + text-align: left; + padding: 5px; + background: #666; + color: #FFF; + } + } + + tbody { + tr { + border-bottom: 1px solid #BBB; + background: #FFF; + + th, td { + vertical-align: top; + padding: 5px; + text-align: left; + } + + td { + border-left: 1px solid #BBB; + + div { + word-break: break-all; + } + } + } + } + } +} + +@media screen and (width <= 900px) { + .debugpress_settings { + width: 100%; + float: none; + + .debugpress-settings-section { + margin: 15px; + } + } + + .debugpress_sidebar { + border-top: 1px solid #1E72BD; + padding-top: 20px; + padding-left: 0; + width: 100%; + float: none; + margin: 0; + + > div { + margin: 0 auto 15px; + } + } +} + +@media screen and (width <= 1200px) { + .debugpress_info { + table { + width: 100%; + } + } +} diff --git a/src/scripts/admin/index.ts b/src/scripts/admin/index.ts new file mode 100644 index 0000000..186a490 --- /dev/null +++ b/src/scripts/admin/index.ts @@ -0,0 +1,37 @@ +import './index.scss'; + +class DebugPressAdmin { + constructor() { + document.addEventListener('click', (event: MouseEvent) => { + const target = event.target as HTMLElement; + const link = target.closest('.debugpress-panel-settings nav a.nav-tab-change'); + + if (link) { + event.preventDefault(); + + const href = link.getAttribute('href'); + if (!href || !href.startsWith('#')) { + return; + } + + const tab = href.substring(1); + + const allLinks = document.querySelectorAll('.debugpress-panel-settings nav a.nav-tab-change'); + allLinks.forEach((el) => el.classList.remove('nav-tab-active')); + link.classList.add('nav-tab-active'); + + const allTabs = document.querySelectorAll('.debugpress-panel-settings .tab-content'); + allTabs.forEach((el) => el.classList.remove('tab-content-active')); + + const activeTab = document.querySelector(`.debugpress-panel-settings .tab-content.nav-tab-content-${tab}`); + if (activeTab) { + activeTab.classList.add('tab-content-active'); + } + } + }); + } +} + +document.addEventListener('DOMContentLoaded', () => { + new DebugPressAdmin(); +}); diff --git a/src/scripts/panel/features/AJAXTrace.ts b/src/scripts/panel/features/AJAXTrace.ts new file mode 100644 index 0000000..e4bb517 --- /dev/null +++ b/src/scripts/panel/features/AJAXTrace.ts @@ -0,0 +1,212 @@ +import { DebugPressPanel } from "../index"; +import { AJAXTraceData } from "../types/panel"; + +export class AJAXTrace { + private panel: DebugPressPanel; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + this.interceptAJAX(); + + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + + // Item header toggle + const header = target.closest("#debugpress-ajax-content .debugpress-ajax-item-header"); + if (header) { + const parent = header.parentElement; + if (parent) { + const details = parent.querySelector(".debugpress-ajax-item-details") as HTMLElement; + if (parent.classList.contains("debugpress-ajax-item-open")) { + parent.classList.remove("debugpress-ajax-item-open"); + if (details) details.style.display = "none"; + } else { + parent.classList.add("debugpress-ajax-item-open"); + if (details) details.style.display = "block"; + } + } + } + + // Clear button + const clearButton = target.closest("button.debugpress-action-ajax-clear"); + if (clearButton) { + e.preventDefault(); + const ajaxContent = document.getElementById("debugpress-ajax-content"); + if (ajaxContent) ajaxContent.innerHTML = ""; + } + }); + } + + private interceptAJAX(): void { + const self = this; + + // XMLHttpRequest Interception + const oldOpen = XMLHttpRequest.prototype.open; + XMLHttpRequest.prototype.open = function(method: string, url: string | URL) { + (this as any)._method = method; + (this as any)._url = url.toString(); + return oldOpen.apply(this, arguments as any); + }; + + const oldSend = XMLHttpRequest.prototype.send; + XMLHttpRequest.prototype.send = function() { + this.addEventListener('load', () => { + const headers = self.parseHeaders(this.getAllResponseHeaders()); + if (Object.keys(headers).length > 0) { + self.render({ + status: 'success', + url: (this as any)._url, + type: (this as any)._method, + response: this.getResponseHeader('content-type') || 'unknown', + headers: headers + }); + } + }); + this.addEventListener('error', () => { + const headers = self.parseHeaders(this.getAllResponseHeaders()); + self.render({ + status: 'error', + url: (this as any)._url, + type: (this as any)._method, + error: this.statusText, + headers: headers + }); + }); + return oldSend.apply(this, arguments as any); + }; + + // Fetch Interception + const oldFetch = window.fetch; + window.fetch = async (...args) => { + const response = await oldFetch(...args); + const clone = response.clone(); + const headers: Record = {}; + clone.headers.forEach((val, key) => { + if (key.toLowerCase().startsWith('x-debugpress-')) { + headers[key.substring(13)] = val; + } + }); + + if (Object.keys(headers).length > 0) { + self.render({ + status: response.ok ? 'success' : 'error', + url: response.url, + type: (args[1] as RequestInit)?.method || 'GET', + response: response.headers.get('content-type') || 'unknown', + headers: headers + }); + } + return response; + }; + } + + private parseHeaders(rawHeaders: string): Record { + const list = rawHeaders.trim().split(/[\r\n]+/); + const headers: Record = {}; + + list.forEach((line) => { + const parts = line.split(": "); + const header = parts.shift(); + const value = parts.join(": "); + + if (header && header.substring(0, 13).toLowerCase() === "x-debugpress-") { + headers[header.substring(13)] = value; + } + }); + + return headers; + } + + render(ajax: AJAXTraceData): void { + if (!this.panel.ajax) { + return; + } + + const el = document.getElementById("debugpress-debugger-ajax-wrapper"); + const tab = document.getElementById("debugpress-debugger-tab-ajax-li"); + const button = document.querySelector(".debugpress-debug-dialog-button") as HTMLElement; + + if (!el) return; + + let count = parseInt(el.getAttribute("data-calls") || "0"); + if (count === 0) { + el.innerHTML = ""; + } + + count++; + el.setAttribute("data-calls", count.toString()); + + if (tab) { + const counter = tab.querySelector("a span.debugpress-counter"); + if (counter) counter.innerHTML = count.toString(); + } + + let response = "UNKNOWN"; + let render = ""; + + if (ajax.status === "success") { + if (ajax.response) { + response = ajax.response.toString().toUpperCase(); + } + render = `
[SUCCESS] [${ajax.type} => ${response}] ${ajax.url}
`; + } else { + render = `
[ERROR] [${ajax.type} => ${ajax.error}] ${ajax.url}
`; + } + + render += '
'; + + Object.entries(ajax.headers).forEach(([key, val]) => { + render += ``; + }); + + render += '
NameValue
${key}${val}
'; + + const temp = document.createElement("div"); + temp.innerHTML = render; + while (temp.firstChild) { + el.appendChild(temp.firstChild); + } + + const ajaxIndicator = button?.querySelector(".debugpress-debug-has-ajax") as HTMLElement; + if (ajaxIndicator) { + ajaxIndicator.style.display = ""; + ajaxIndicator.innerHTML = count.toString(); + } + + if (button) { + this.animateButton(button); + } + + // Also update main counts if it was meant to (original code did this differently in render) + // Original render didn't update this.panel.counts directly, it only updated UI. + // Wait, I should check if I should update main counts. + // In original code, update_counts was separate but not called from render! + // Oh, wait! I see... in original code, there were TWO renders! + // One in wp.dev4press.debugpress.ajax.render (line 83) and one in wp.dev4press.debugpress.tabs.ajax.render (line 91). + // I am confused. + } + + private animateButton(el: HTMLElement): void { + const steps = [ + { opacity: '0', duration: 50 }, + { opacity: '1', duration: 50 }, + { opacity: '0', duration: 100 }, + { opacity: '1', duration: 100 }, + { opacity: '0', duration: 50 }, + { opacity: '1', duration: 50 } + ]; + + let current = 0; + const nextStep = () => { + if (current < steps.length) { + el.style.opacity = steps[current].opacity; + setTimeout(nextStep, steps[current].duration); + current++; + } + }; + nextStep(); + } +} diff --git a/src/scripts/panel/features/Button.ts b/src/scripts/panel/features/Button.ts new file mode 100644 index 0000000..f8e0c7b --- /dev/null +++ b/src/scripts/panel/features/Button.ts @@ -0,0 +1,49 @@ +import { DebugPressPanel } from "../index"; + +export class Button { + private panel: DebugPressPanel; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + const clearButton = target.closest("button.debugpress-action-button-clear"); + if (clearButton) { + e.preventDefault(); + this.clear(); + } + }); + + this.update(); + } + + clear(): void { + this.panel.counts.total = 0; + this.panel.counts.errors = 0; + this.panel.counts.doingitwrong = 0; + this.panel.counts.deprecated = 0; + + this.update(); + + const ajaxContent = document.getElementById("debugpress-ajax-content"); + if (ajaxContent) ajaxContent.innerHTML = ""; + } + + update(): void { + const totalSpan = document.getElementById("debugpress-debugger-button-count-total"); + const errorsSpan = document.getElementById("debugpress-debugger-button-count-errors"); + + if (totalSpan) totalSpan.innerText = this.panel.counts.total.toString(); + if (errorsSpan) { + errorsSpan.innerText = this.panel.counts.errors.toString(); + if (this.panel.counts.errors > 0) { + errorsSpan.style.display = ""; + } else { + errorsSpan.style.display = "none"; + } + } + } +} diff --git a/src/scripts/panel/features/DebugLog.ts b/src/scripts/panel/features/DebugLog.ts new file mode 100644 index 0000000..a13e8af --- /dev/null +++ b/src/scripts/panel/features/DebugLog.ts @@ -0,0 +1,50 @@ +import { DebugPressPanel } from "../index"; + +export class DebugLog { + private panel: DebugPressPanel; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + const button = target.closest("button.debugpress-action-debuglog-load"); + if (button) { + e.preventDefault(); + this.loadDebugLog(); + } + }); + + window.addEventListener("resize", () => this.resize()); + window.addEventListener("orientationchange", () => this.resize()); + } + + private async loadDebugLog(): Promise { + const url = `${window.debugpress_data.ajax_endpoint}?action=debugpress_load_debuglog&_ajax_nonce=${window.debugpress_data.call_nonce}`; + + try { + const response = await fetch(url, { cache: "no-cache" }); + if (response.ok) { + const html = await response.text(); + const contentDiv = document.querySelector("#debugpress-debuglog-content div") as HTMLElement; + if (contentDiv) { + contentDiv.innerHTML = html; + this.resize(); + contentDiv.scrollTop = contentDiv.scrollHeight; + } + } + } catch (error) { + console.error("DebugPress: Failed to load debug log", error); + } + } + + resize(): void { + const contentDiv = document.querySelector("#debugpress-debuglog-content div") as HTMLElement; + const flyinContent = document.querySelector(".flyin-style-debugpress-light .flyin-content") as HTMLElement; + if (contentDiv && flyinContent) { + contentDiv.style.height = `${flyinContent.offsetHeight - 65}px`; + } + } +} diff --git a/src/scripts/panel/features/Dialog.ts b/src/scripts/panel/features/Dialog.ts new file mode 100644 index 0000000..8d25eed --- /dev/null +++ b/src/scripts/panel/features/Dialog.ts @@ -0,0 +1,242 @@ +import { DebugPressPanel } from "../index"; +import Flyin from "@dev4press/flyin"; + +export class Dialog { + private panel: DebugPressPanel; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + this.create(); + this.events(); + } + + create(): void { + const self = this; + this.panel.popup = new Flyin("#debugpress-debugger-content-wrapper", { + skin: "debugpress-light", + settings: { + name: "debugpress-popup", + modal: true, + effect: "fade", + closeEscape: true, + onLoad: false, + onLoadDelay: 200, + positionX: "center", + positionY: "center", + width: "95%", + height: "90%", + maxWidth: "100%", + maxHeight: "100%", + minWidth: "20%", + minHeight: "20%", + offsetX: "0px", + offsetY: "0px", + buttonFooter: false, + titleTag: "div", + keysOpen: window.debugpress_data.mousetrap ? window.debugpress_data.mousetrap_sequence : null, + keysClose: window.debugpress_data.mousetrap ? window.debugpress_data.mousetrap_sequence : null, + headerContent: document.getElementById("debugpress-debugger-content-header") || undefined, + footerContent: document.getElementById("debugpress-debugger-content-footer") || undefined, + buttonXContent: "", + storeCode: "debugpress-settings-" + (this.panel.admin ? "admin" : "frontend"), + save: this.panel.default_layout_object() + }, + callbacks: { + prepared: function(skin: any) { + self.panel.layout = { ...self.panel.default_layout_object(), ...skin.settings.save }; + self.load_state(skin); + }, + ready: function(core: any) { + self.panel.layout.last = core.skinInstance.settings.onLoad ? "open" : "closed"; + }, + afterOpen: function(skin: any) { + const activeTab = document.querySelector("#debugpress-debugger-tabs .debugpress-tab-active a") as HTMLElement; + if (activeTab) activeTab.focus(); + + self.panel.layout.last = "open"; + self.save_state(skin); + self.panel.head.resize(); + }, + afterClose: function(skin: any) { + self.panel.layout.last = "closed"; + self.save_state(skin); + } + } + }); + } + + reposition(skin?: any): void { + const move: any = { + positionX: "center", + positionY: "center", + offsetX: 0, + offsetY: 0 + }; + const size: any = { + width: "95%", + height: "90%" + }; + const ratio = parseInt(this.panel.layout.ratio) + "%"; + + switch (this.panel.layout.layout) { + case "right": + move.positionX = "right"; + size.width = ratio; + size.height = "100%"; + break; + case "left": + move.positionX = "left"; + size.width = ratio; + size.height = "100%"; + break; + case "top": + move.positionY = "top"; + size.width = "100%"; + size.height = ratio; + break; + case "bottom": + move.positionY = "bottom"; + size.width = "100%"; + size.height = ratio; + break; + } + + const targetSkin = skin || this.panel.popup; + if (targetSkin) { + targetSkin.mod({ settings: { modal: this.panel.layout.modal === "show" } }); + targetSkin.move(move); + targetSkin.resize(size); + } + + this.panel.head.resize(); + } + + save_state(skin?: any): void { + const targetSkin = skin || this.panel.popup; + if (targetSkin) { + targetSkin.mod({ settings: { save: this.panel.layout } }); + targetSkin.save(); + } + } + + load_state(skin: any): void { + this.tab(this.panel.layout.tab); + this.reposition(skin); + } + + events(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + + const openButton = target.closest("button.debugpress-action-dialog-open, #debugpress-debugger-button a"); + if (openButton) { + e.preventDefault(); + const tab = openButton.getAttribute("data-tab"); + this.open(tab || undefined); + } + + const sidebarItem = target.closest("#debugpress-sidebar .debugpress-sidebar-item, #debugpress-debugger-tabs li a"); + if (sidebarItem) { + e.preventDefault(); + const tab = sidebarItem.getAttribute("data-tab") || (sidebarItem.getAttribute("href") || "").substring(1); + + if (tab && tab !== "debugpress-debugger-tab-close") { + this.tab(tab); + } else if (tab === "debugpress-debugger-tab-close") { + this.close(); + } + } + + // Layout/Modal settings + const layoutAction = target.closest(".debugpress-action-layout"); + if (layoutAction) { + e.preventDefault(); + const layout = layoutAction.getAttribute("data-layout"); + if (layout) { + this.panel.layout.layout = layout; + document.querySelectorAll(".debugpress-action-layout").forEach(el => el.classList.remove("debugpress-option-active")); + layoutAction.classList.add("debugpress-option-active"); + this.reposition(); + this.save_state(); + } + } + + const modalAction = target.closest(".debugpress-action-modal"); + if (modalAction) { + e.preventDefault(); + const modal = modalAction.getAttribute("data-modal"); + if (modal) { + this.panel.layout.modal = modal; + document.querySelectorAll(".debugpress-action-modal").forEach(el => el.classList.remove("debugpress-option-active")); + modalAction.classList.add("debugpress-option-active"); + this.reposition(); + this.save_state(); + } + } + }); + + // Ratio slider + const ratioSlider = document.getElementById("debugpress-debugger-layout-ratio") as HTMLInputElement; + if (ratioSlider) { + ratioSlider.addEventListener("input", () => { + this.panel.layout.ratio = ratioSlider.value; + const valueDisplay = document.getElementById("debugpress-debugger-layout-ratio-value"); + if (valueDisplay) valueDisplay.innerHTML = ratioSlider.value + "%"; + this.reposition(); + }); + ratioSlider.addEventListener("change", () => { + this.save_state(); + }); + } + } + + tab(tab: string): void { + this.panel.layout.tab = tab; + + const sidebarItems = document.querySelectorAll("#debugpress-sidebar .debugpress-sidebar-item, #debugpress-debugger-tabs li"); + sidebarItems.forEach((item) => { + item.classList.remove("debugpress-sidebar-item-active"); + item.classList.remove("debugpress-tab-active"); + }); + + const activeSidebarItem = document.querySelector(`#debugpress-sidebar .debugpress-sidebar-item[data-tab='${tab}']`); + if (activeSidebarItem) activeSidebarItem.classList.add("debugpress-sidebar-item-active"); + + const activeTabItem = document.getElementById(`${tab}-li`); + if (activeTabItem) activeTabItem.classList.add("debugpress-tab-active"); + + const allTabs = document.querySelectorAll(".debugpress-tab-content"); + allTabs.forEach((t) => { + (t as HTMLElement).style.display = "none"; + t.classList.remove("debugpress-tab-active"); + }); + + const currentTab = document.getElementById(tab); + if (currentTab) { + currentTab.style.display = "block"; + currentTab.classList.add("debugpress-tab-active"); + } + + if (tab === "debugpress-debugger-tab-debuglog") { + this.panel.tabs.debuglog.resize(); + } + } + + open(tab?: string): void { + if (tab) { + this.tab(tab); + } + if (this.panel.popup) { + this.panel.popup.open(); + } + } + + close(): void { + if (this.panel.popup) { + this.panel.popup.close(); + } + } +} diff --git a/src/scripts/panel/features/Header.ts b/src/scripts/panel/features/Header.ts new file mode 100644 index 0000000..3cbba68 --- /dev/null +++ b/src/scripts/panel/features/Header.ts @@ -0,0 +1,124 @@ +import { DebugPressPanel } from "../index"; +import { HeaderSize } from "../types/panel"; + +export class Header { + private panel: DebugPressPanel; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + const stateButton = target.closest("button.debugpress-action-header-state"); + if (stateButton) { + e.preventDefault(); + const state = stateButton.getAttribute("data-state"); + if (state) this.state(state); + } + }); + } + + size(): HeaderSize { + const firstTabIcon = document.querySelector("#debugpress-debugger-content-header li:first-child .debugpress-tab-ctrl-icon") as HTMLElement; + const firstTabSpan = document.querySelector("#debugpress-debugger-content-header li:first-child .debugpress-tab-ctrl-span") as HTMLElement; + + const iVisible = firstTabIcon ? getComputedStyle(firstTabIcon).display !== "none" : false; + const sVisible = firstTabSpan ? getComputedStyle(firstTabSpan).display !== "none" : false; + + const allIcons = document.querySelectorAll("#debugpress-debugger-content-header .debugpress-tab-ctrl-icon"); + const allSpans = document.querySelectorAll("#debugpress-debugger-content-header .debugpress-tab-ctrl-span"); + + allIcons.forEach(el => (el as HTMLElement).style.display = ""); + allSpans.forEach(el => (el as HTMLElement).style.display = ""); + + const header = document.getElementById("debugpress-debugger-content-header"); + const lis = document.querySelectorAll("#debugpress-debugger-content-header ul li"); + + let elements = 0; + let tabs = 0; + + lis.forEach(li => { + tabs++; + elements += (li as HTMLElement).offsetWidth; // Simplified outerWidth + }); + + if (!iVisible) allIcons.forEach(el => (el as HTMLElement).style.display = "none"); + if (!sVisible) allSpans.forEach(el => (el as HTMLElement).style.display = "none"); + + return { + tabs: tabs, + icons: 24 * tabs, + elements: elements, + labels: elements - 24 * tabs, + full: (header?.offsetWidth || 0) - 128 + }; + } + + resize(): void { + let s = 'full'; + + if (window.innerWidth > 800) { + const size = this.size(); + + if (size.full < size.elements) { + s = 'labels'; + + if (size.full < size.labels) { + s = 'icons'; + } + } + } + + if (this.panel.header.state !== s) { + this.panel.header.state = s; + this.update(); + } + } + + update(): void { + const icons = document.querySelectorAll("#debugpress-debugger-content-header .debugpress-tab-ctrl-icon"); + const spans = document.querySelectorAll("#debugpress-debugger-content-header .debugpress-tab-ctrl-span"); + + icons.forEach(el => { + (el as HTMLElement).style.display = ""; + (el as HTMLElement).style.paddingRight = "5px"; + }); + spans.forEach(el => (el as HTMLElement).style.display = ""); + + switch (this.panel.header.state) { + case 'labels': + icons.forEach(el => (el as HTMLElement).style.display = "none"); + spans.forEach(el => (el as HTMLElement).style.display = ""); + break; + case 'icons': + icons.forEach(el => { + (el as HTMLElement).style.display = ""; + (el as HTMLElement).style.paddingRight = "0"; + }); + spans.forEach(el => (el as HTMLElement).style.display = "none"); + break; + } + } + + state(state: string): void { + this.panel.header.state = state; + + const panelElement = document.getElementById("debugpress-debugger"); + if (panelElement) { + panelElement.classList.remove("debugpress-debugger-state-full"); + panelElement.classList.remove("debugpress-debugger-state-compact"); + panelElement.classList.remove("debugpress-debugger-state-minimal"); + panelElement.classList.add(`debugpress-debugger-state-${state}`); + } + + const stateButtons = document.querySelectorAll("button.debugpress-action-header-state"); + stateButtons.forEach((btn) => btn.classList.remove("debugpress-action-header-state-active")); + + const activeButton = document.querySelector(`button.debugpress-action-header-state[data-state='${state}']`); + if (activeButton) activeButton.classList.add("debugpress-action-header-state-active"); + + this.panel.tabs.debuglog.resize(); + } +} diff --git a/src/scripts/panel/features/Hooks.ts b/src/scripts/panel/features/Hooks.ts new file mode 100644 index 0000000..c258e31 --- /dev/null +++ b/src/scripts/panel/features/Hooks.ts @@ -0,0 +1,179 @@ +import { HookFilters } from "../types/panel"; + +export class Hooks { + public filters: HookFilters = { + all: { + types: [] + }, + active: { + show: "all", + types: [] + } + }; + + constructor() { + } + + init(): void { + this.prepare(); + this.events(); + } + + private prepare(): void { + const types = document.querySelectorAll("#debugpress-debugger-tab-hooks .sqlq-option-type"); + types.forEach((el) => { + const type = el.getAttribute("data-type"); + if (type) { + this.filters.active.types.push(type); + this.filters.all.types.push(type); + } + }); + } + + private filter(): void { + this.filters.all.types.forEach((type) => { + const selector = "dbg-hook-" + type.replace(/::/g, "--"); + const elements = document.querySelectorAll(`table.dbg-hooks-actions .${selector}, table#dbg-hooks-list > tbody > tr.${selector}`); + elements.forEach((el) => (el as HTMLElement).style.display = "none"); + }); + + this.filters.active.types.forEach((type) => { + const selector = "dbg-hook-" + type.replace(/::/g, "--"); + const elements = document.querySelectorAll(`table.dbg-hooks-actions .${selector}, table#dbg-hooks-list > tbody > tr.${selector}`); + elements.forEach((el) => (el as HTMLElement).style.display = ""); + }); + } + + private events(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + + // Search button + const searchButton = target.closest("button.debugpress-action-hooks-search"); + if (searchButton) { + e.preventDefault(); + this.performSearch(); + } + + // Item header toggle + const header = target.closest("#debugpress-hooks-items .debugpress-hooks-item-header"); + if (header) { + const parent = header.parentElement; + if (parent) { + const details = parent.querySelector(".debugpress-hooks-item-details") as HTMLElement; + if (parent.classList.contains("debugpress-hooks-item-open")) { + parent.classList.remove("debugpress-hooks-item-open"); + if (details) details.style.display = "none"; + } else { + parent.classList.add("debugpress-hooks-item-open"); + if (details) details.style.display = "block"; + } + } + } + + // Callbacks visibility + const callbackOption = target.closest("#debugpress-debugger-tab-hooks .sqlq-option-callbacks"); + if (callbackOption) { + e.preventDefault(); + if (callbackOption.classList.contains("sqlq-option-off")) { + const on = callbackOption.id.substring(9); + const tds = document.querySelectorAll(".dbg-hooks-actions .dbg-hook-column-action"); + + tds.forEach((td) => { + if (on === "full") { + td.classList.add("dbg-calls-show"); + } else { + td.classList.remove("dbg-calls-show"); + } + }); + + document.querySelectorAll("#debugpress-debugger-tab-hooks .sqlq-option-callbacks").forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + callbackOption.classList.remove("sqlq-option-off"); + callbackOption.classList.add("sqlq-option-on"); + } + } + + // Type filter + const typeOption = target.closest("#debugpress-debugger-tab-hooks .sqlq-option-type"); + if (typeOption) { + e.preventDefault(); + const id = typeOption.getAttribute("data-type"); + if (id) { + if (typeOption.classList.contains("sqlq-option-off")) { + this.filters.active.types.push(id); + typeOption.classList.add("sqlq-option-on"); + typeOption.classList.remove("sqlq-option-off"); + } else { + this.filters.active.types = this.filters.active.types.filter(t => t !== id); + typeOption.classList.add("sqlq-option-off"); + typeOption.classList.remove("sqlq-option-on"); + } + this.filter(); + } + } + + // Reset filters + const resetOption = target.closest("#debugpress-debugger-tab-hooks .sqlq-types-reset"); + if (resetOption) { + e.preventDefault(); + const on = resetOption.id.substring(10); + const allTypesOptions = document.querySelectorAll("#debugpress-debugger-tab-hooks .sqlq-option-type"); + + if (on === "hide") { + this.filters.active.types = []; + allTypesOptions.forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + } else { + this.filters.active.types = [...this.filters.all.types]; + allTypesOptions.forEach(el => { + el.classList.add("sqlq-option-on"); + el.classList.remove("sqlq-option-off"); + }); + } + + document.querySelectorAll("#debugpress-debugger-tab-hooks .sqlq-types-reset").forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + resetOption.classList.remove("sqlq-option-off"); + resetOption.classList.add("sqlq-option-on"); + + this.filter(); + } + + // Callback expander + const expander = target.closest("#debugpress-debugger-tab-hooks .dbg-callback-button-expander"); + if (expander) { + const parent = expander.parentElement; + if (parent) { + parent.classList.toggle("dbg-calls-show"); + } + } + }); + } + + private performSearch(): void { + const searchInput = document.getElementById("debugpress-hooks-search-value") as HTMLInputElement; + const search = searchInput?.value || ""; + const items = document.querySelectorAll("#debugpress-hooks-items .debugpress-hooks-item"); + + items.forEach((item) => { + const htmlItem = item as HTMLElement; + if (search === "") { + htmlItem.style.display = ""; + } else { + const searchAttr = htmlItem.getAttribute("data-search") || ""; + if (searchAttr.includes(search)) { + htmlItem.style.display = ""; + } else { + htmlItem.style.display = "none"; + } + } + }); + } +} diff --git a/src/scripts/panel/features/Queries.ts b/src/scripts/panel/features/Queries.ts new file mode 100644 index 0000000..c79e947 --- /dev/null +++ b/src/scripts/panel/features/Queries.ts @@ -0,0 +1,430 @@ +import { DebugPressPanel } from "../index"; +import { QueryFilters } from "../types/panel"; + +export class Queries { + private panel: DebugPressPanel; + public filters: QueryFilters = { + total: { + queries: 0, + total: 0 + }, + all: { + caller: [], + types: [], + tables: [], + sources: [] + }, + active: { + show: "all", + caller: [], + types: [], + tables: [], + sources: [], + search: "" + } + }; + + constructor(panel: DebugPressPanel) { + this.panel = panel; + } + + init(): void { + this.prepare(); + this.events(); + } + + private prepare(): void { + const caller = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-caller"); + const types = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-type"); + const tables = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-table"); + const sources = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-source"); + + const queriesStat = document.getElementById("sqlq-stats-filter-queries"); + const totalStat = document.getElementById("sqlq-stats-filter-total"); + + this.filters.total.queries = parseInt(queriesStat?.innerHTML || "0"); + this.filters.total.total = parseFloat(totalStat?.innerHTML || "0"); + + caller.forEach((el) => { + const val = parseInt(el.getAttribute("data-caller") || "0"); + this.filters.active.caller.push(val); + this.filters.all.caller.push(val); + }); + + types.forEach((el) => { + const val = el.getAttribute("data-type") || ""; + this.filters.active.types.push(val); + this.filters.all.types.push(val); + }); + + tables.forEach((el) => { + const val = parseInt(el.getAttribute("data-table") || "0"); + this.filters.active.tables.push(val); + this.filters.all.tables.push(val); + }); + + if (sources.length > 0) { + sources.forEach((el) => { + const val = el.getAttribute("data-source") || ""; + this.filters.active.sources.push(val); + this.filters.all.sources.push(val); + }); + } else { + this.filters.active.sources.push("n/a"); + this.filters.all.sources.push("n/a"); + } + } + + public filter(): void { + const sqls = document.querySelectorAll(".sql-query-list > .sql-query"); + const stats = { + queries: 0, + total: 0, + min: -1, + max: -1, + avg: 0 + }; + const ratio = { + queries: 0, + total: 0 + }; + + sqls.forEach((el) => { + const sql = el as HTMLElement; + const tables = (sql.getAttribute("data-tables") || "").split(","); + const caller = parseInt(sql.getAttribute("data-caller") || "0"); + const source = sql.getAttribute("data-source") || ""; + const type = sql.getAttribute("data-type") || ""; + const speed = sql.getAttribute("data-speed") || ""; + const timer = parseFloat(sql.getAttribute("data-time") || "0"); + const search = sql.getAttribute("data-search") || ""; + + const filters = this.filters.active; + let on = true; + + if (filters.show !== "all" && filters.show !== speed) { + on = false; + } + + if (on && filters.caller.indexOf(caller) === -1) { + on = false; + } + + if (on && filters.types.indexOf(type) === -1) { + on = false; + } + + if (on && filters.sources.indexOf(source) === -1) { + on = false; + } + + if (on && filters.search !== "" && !search.includes(filters.search)) { + on = false; + } + + if (on) { + let c = 0; + for (let i = 0; i < tables.length; i++) { + if (filters.tables.indexOf(parseInt(tables[i])) > -1) { + c++; + } + } + if (c === 0) on = false; + } + + if (on) { + if (stats.min === -1 || stats.min > timer) stats.min = timer; + if (stats.max === -1 || stats.max < timer) stats.max = timer; + + stats.queries++; + stats.total += timer; + sql.style.display = ""; + } else { + sql.style.display = "none"; + } + }); + + if (stats.queries > 0) { + stats.avg = stats.total / stats.queries; + ratio.queries = Math.round((stats.queries / this.filters.total.queries) * 100); + ratio.total = Math.round((stats.total / this.filters.total.total) * 100); + } else { + stats.min = 0; + stats.max = 0; + } + + Object.entries(stats).forEach(([idx, value]) => { + const el = document.getElementById("sqlq-stats-filter-" + idx); + if (el) { + el.innerHTML = idx !== "queries" ? value.toFixed(6) : value.toString(); + } + }); + + Object.entries(ratio).forEach(([idx, value]) => { + const el = document.getElementById("sqlq-stats-ratio-" + idx); + if (el) el.innerHTML = value + "%"; + }); + } + + private events(): void { + document.addEventListener("click", (e: MouseEvent) => { + const target = e.target as HTMLElement; + + // Calls visibility (full/compact) + const callsOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-calls"); + if (callsOption) { + e.preventDefault(); + if (callsOption.classList.contains("sqlq-option-off")) { + const on = callsOption.id.substring(9); + const off = on === "full" ? "compact" : "full"; + + document.querySelectorAll(".sql-calls-" + on).forEach(el => (el as HTMLElement).style.display = ""); + document.querySelectorAll(".sql-calls-" + off).forEach(el => (el as HTMLElement).style.display = "none"); + + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-calls").forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + callsOption.classList.remove("sqlq-option-off"); + callsOption.classList.add("sqlq-option-on"); + } + } + + // Sort option + const sortOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-sort"); + if (sortOption) { + e.preventDefault(); + const field = sortOption.id.substring(9); + if (sortOption.classList.contains("sqlq-option-off")) { + this.panel.status.sql_sort = field; + this.sort(); + + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-sort").forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + sortOption.classList.remove("sqlq-option-off"); + sortOption.classList.add("sqlq-option-on"); + } else { + this.panel.status.sql_order = this.panel.status.sql_order === "asc" ? "desc" : "asc"; + this.sort(); + } + } + + // Show option (speed) + const showOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-show"); + if (showOption) { + e.preventDefault(); + if (showOption.classList.contains("sqlq-option-off")) { + this.filters.active.show = showOption.getAttribute("data-show") || "all"; + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-show").forEach(el => { + el.classList.add("sqlq-option-off"); + el.classList.remove("sqlq-option-on"); + }); + showOption.classList.remove("sqlq-option-off"); + showOption.classList.add("sqlq-option-on"); + this.filter(); + } + } + + // Table reset + const resetOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-reset"); + if (resetOption) { + e.preventDefault(); + const on = resetOption.id.substring(10); + const tableOptions = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-table"); + if (on === "hide") { + this.filters.active.tables = []; + tableOptions.forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + } else { + this.filters.active.tables = [...this.filters.all.tables]; + tableOptions.forEach(el => { el.classList.add("sqlq-option-on"); el.classList.remove("sqlq-option-off"); }); + } + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-reset").forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + resetOption.classList.remove("sqlq-option-off"); resetOption.classList.add("sqlq-option-on"); + this.filter(); + } + + // Table option + const tableOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-table"); + if (tableOption) { + e.preventDefault(); + const id = parseInt(tableOption.getAttribute("data-table") || "0"); + if (tableOption.classList.contains("sqlq-option-off")) { + this.filters.active.tables.push(id); + tableOption.classList.add("sqlq-option-on"); tableOption.classList.remove("sqlq-option-off"); + } else { + this.filters.active.tables = this.filters.active.tables.filter(t => t !== id); + tableOption.classList.add("sqlq-option-off"); tableOption.classList.remove("sqlq-option-on"); + } + this.filter(); + } + + // Caller option + const callerOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-caller"); + if (callerOption) { + e.preventDefault(); + const id = parseInt(callerOption.getAttribute("data-caller") || "0"); + if (callerOption.classList.contains("sqlq-option-off")) { + this.filters.active.caller.push(id); + callerOption.classList.add("sqlq-option-on"); callerOption.classList.remove("sqlq-option-off"); + } else { + this.filters.active.caller = this.filters.active.caller.filter(t => t !== id); + callerOption.classList.add("sqlq-option-off"); callerOption.classList.remove("sqlq-option-on"); + } + this.filter(); + } + + // Caller reset + const callerReset = target.closest("#debugpress-debugger-tab-queries .sqlq-caller-reset"); + if (callerReset) { + e.preventDefault(); + const on = callerReset.id.substring(11); + const callerOptions = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-caller"); + if (on === "hide") { + this.filters.active.caller = []; + callerOptions.forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + } else { + this.filters.active.caller = [...this.filters.all.caller]; + callerOptions.forEach(el => { el.classList.add("sqlq-option-on"); el.classList.remove("sqlq-option-off"); }); + } + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-caller-reset").forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + callerReset.classList.remove("sqlq-option-off"); callerReset.classList.add("sqlq-option-on"); + this.filter(); + } + + // Type option + const typeOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-type"); + if (typeOption) { + e.preventDefault(); + const id = typeOption.getAttribute("data-type") || ""; + if (typeOption.classList.contains("sqlq-option-off")) { + this.filters.active.types.push(id); + typeOption.classList.add("sqlq-option-on"); typeOption.classList.remove("sqlq-option-off"); + } else { + this.filters.active.types = this.filters.active.types.filter(t => t !== id); + typeOption.classList.add("sqlq-option-off"); typeOption.classList.remove("sqlq-option-on"); + } + this.filter(); + } + + // Type reset + const typeReset = target.closest("#debugpress-debugger-tab-queries .sqlq-types-reset"); + if (typeReset) { + e.preventDefault(); + const on = typeReset.id.substring(10); + const typeOptions = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-type"); + if (on === "hide") { + this.filters.active.types = []; + typeOptions.forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + } else { + this.filters.active.types = [...this.filters.all.types]; + typeOptions.forEach(el => { el.classList.add("sqlq-on"); el.classList.remove("sqlq-off"); }); // Fixed: class names were wrong in original but I'll use consistent ones + } + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-types-reset").forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + typeReset.classList.remove("sqlq-option-off"); typeReset.classList.add("sqlq-option-on"); + this.filter(); + } + + // Source option + const sourceOption = target.closest("#debugpress-debugger-tab-queries .sqlq-option-source"); + if (sourceOption) { + e.preventDefault(); + const id = sourceOption.getAttribute("data-source") || ""; + if (sourceOption.classList.contains("sqlq-option-off")) { + this.filters.active.sources.push(id); + sourceOption.classList.add("sqlq-option-on"); sourceOption.classList.remove("sqlq-option-off"); + } else { + this.filters.active.sources = this.filters.active.sources.filter(t => t !== id); + sourceOption.classList.add("sqlq-option-off"); sourceOption.classList.remove("sqlq-option-on"); + } + this.filter(); + } + + // Source reset + const sourceReset = target.closest("#debugpress-debugger-tab-queries .sqlq-source-reset"); + if (sourceReset) { + e.preventDefault(); + const on = sourceReset.id.substring(11); + const sourceOptions = document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-option-source"); + if (on === "hide") { + this.filters.active.sources = []; + sourceOptions.forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + } else { + this.filters.active.sources = [...this.filters.all.sources]; + sourceOptions.forEach(el => { el.classList.add("sqlq-option-on"); el.classList.remove("sqlq-option-off"); }); + } + document.querySelectorAll("#debugpress-debugger-tab-queries .sqlq-source-reset").forEach(el => { el.classList.add("sqlq-option-off"); el.classList.remove("sqlq-option-on"); }); + sourceReset.classList.remove("sqlq-option-off"); sourceReset.classList.add("sqlq-option-on"); + this.filter(); + } + + // Calls expander + const expander = target.closest("#debugpress-debugger-tab-queries .sql-calls-button-expander"); + if (expander) { + const parent = expander.parentElement; + const query = parent?.parentElement; + if (parent && query) { + const full = parent.classList.contains("sql-calls-full"); + parent.style.display = "none"; + if (full) { + const compact = query.querySelector(".sql-calls-compact") as HTMLElement; + if (compact) compact.style.display = ""; + } else { + const fullEl = query.querySelector(".sql-calls-full") as HTMLElement; + if (fullEl) fullEl.style.display = ""; + } + } + } + + // Item header toggle + const header = target.closest("#debugpress-queries-items .debugpress-queries-item-header"); + if (header) { + const parent = header.parentElement; + if (parent) { + const details = parent.querySelector(".debugpress-queries-item-details") as HTMLElement; + if (parent.classList.contains("debugpress-queries-item-open")) { + parent.classList.remove("debugpress-queries-item-open"); + if (details) details.style.display = "none"; + } else { + parent.classList.add("debugpress-queries-item-open"); + if (details) details.style.display = "block"; + } + } + } + }); + + // Search input + const searchInput = document.getElementById("debugpress-queries-search-value") as HTMLInputElement; + if (searchInput) { + searchInput.addEventListener("input", () => { + this.filters.active.search = searchInput.value; + this.filter(); + }); + } + } + + public sort(): void { + const container = document.querySelector(".sql-query-list"); + if (!container) return; + + const items = Array.from(container.querySelectorAll(".sql-query")); + const sortField = this.panel.status.sql_sort; + const order = this.panel.status.sql_order; + + items.sort((a, b) => { + const an = parseFloat(a.getAttribute(`data-${sortField}`) || "0"); + const bn = parseFloat(b.getAttribute(`data-${sortField}`) || "0"); + + if (order === "asc") { + return an - bn; + } else { + return bn - an; + } + }); + + items.forEach((item) => { + container.appendChild(item); + }); + } +} diff --git a/src/scripts/panel/index.scss b/src/scripts/panel/index.scss new file mode 100644 index 0000000..22fd58f --- /dev/null +++ b/src/scripts/panel/index.scss @@ -0,0 +1,13 @@ +@use "scss/functions" as *; +@use "scss/icons" as *; +@use "scss/embeds"; +@use "scss/variables" as *; +@use "scss/vars"; +@use "scss/font"; +@use "scss/grid" as *; +@use "scss/basic" as *; +@use "scss/button"; +@use "scss/layout"; +@use "scss/flyin"; +@use "scss/debugger"; +@use "scss/responsive" as *; diff --git a/src/scripts/panel/index.ts b/src/scripts/panel/index.ts new file mode 100644 index 0000000..067d0b7 --- /dev/null +++ b/src/scripts/panel/index.ts @@ -0,0 +1,115 @@ +import Flyin from '@dev4press/flyin'; +import { DebugLog } from './features/DebugLog'; +import { AJAXTrace } from './features/AJAXTrace'; +import { Hooks } from './features/Hooks'; +import { Queries } from './features/Queries'; +import { Dialog } from './features/Dialog'; +import { Button } from './features/Button'; +import { Header } from './features/Header'; +import { DebugPressLayout, DebugPressHeader, DebugPressStatus, DebugPressCounts } from './types/panel'; +import './index.scss'; + +export class DebugPressPanel { + public layout: DebugPressLayout; + public header: DebugPressHeader = { + state: "full" + }; + public status: DebugPressStatus = { + sql_sort: "order", + sql_order: "asc" + }; + public counts: DebugPressCounts = { + total: 0, + errors: 0, + doingitwrong: 0, + deprecated: 0 + }; + public stats: Record = {}; + public ajax: boolean = false; + public admin: boolean = false; + public tab: string = ""; + + public tabs: { + debuglog: DebugLog; + ajax: AJAXTrace; + hooks: Hooks; + queries: Queries; + }; + public dialog: Dialog; + public button: Button; + public head: Header; + public popup: Flyin | null = null; + + constructor() { + this.layout = this.default_layout_object(); + this.tabs = { + debuglog: new DebugLog(this), + ajax: new AJAXTrace(this), + hooks: new Hooks(), + queries: new Queries(this) + }; + this.dialog = new Dialog(this); + this.button = new Button(this); + this.head = new Header(this); + } + + public default_layout_object(): DebugPressLayout { + return { + layout: "full", + modal: "show", + open: "manual", + ratio: "40", + tab: "debugpress-debugger-tab-basics", + last: "closed", + close: [] + }; + } + + public init(counts: DebugPressCounts, stats: Record, ajax: boolean, admin: boolean): void { + this.counts = counts; + this.stats = stats; + this.ajax = ajax; + this.admin = admin; + + this.button.init(); + this.dialog.init(); + + if (this.ajax) { + this.tabs.ajax.init(); + } + + const bar = document.getElementById("wp-admin-bar-debugpress-debugger-button"); + if (bar) { + const subWrapper = document.createElement("div"); + subWrapper.className = "ab-sub-wrapper"; + subWrapper.innerHTML = "
      "; + bar.appendChild(subWrapper); + + const statsKeys = Object.keys(this.stats); + statsKeys.forEach((label, i) => { + const sel = (i + 1) === statsKeys.length ? ".ab-sub-secondary" : ".ab-sub-primary"; + const ul = subWrapper.querySelector(sel); + if (ul) { + const li = document.createElement("li"); + li.innerHTML = `${label}: ${this.stats[label]}`; + ul.appendChild(li); + } + }); + } + + this.tabs.debuglog.init(); + this.tabs.queries.init(); + this.tabs.hooks.init(); + + this.head.resize(); + } +} + +// Global exposure +const DebugPressPanelInstance = new DebugPressPanel(); +window.DebugPressPanelInstance = DebugPressPanelInstance; + +// Compatibility layer for old code/scripts +window.wp = window.wp || {}; +window.wp.dev4press = window.wp.dev4press || {}; +window.wp.dev4press.debugpress = DebugPressPanelInstance; diff --git a/scss/components/_basic.scss b/src/scripts/panel/scss/_basic.scss similarity index 87% rename from scss/components/_basic.scss rename to src/scripts/panel/scss/_basic.scss index 4a43f02..57b06d7 100644 --- a/scss/components/_basic.scss +++ b/src/scripts/panel/scss/_basic.scss @@ -1,22 +1,22 @@ -@use "../includes/variables" as *; - -.#{$prefix}-clearfix:before, -.#{$prefix}-clearfix:after { - content: " "; - display: table; -} - -.#{$prefix}-clearfix:after { - clear: both; -} - -#wpadminbar .#{$font-prefix-ctrl} { - vertical-align: text-top !important; - font-size: 19px !important; - font-family: debugpress, cursive !important; - line-height: 1; -} - -#wp-admin-bar-debugpress-debugger-button { - float: right !important; -} +@use "./variables" as *; + +.#{$prefix}-clearfix:before, +.#{$prefix}-clearfix:after { + content: " "; + display: table; +} + +.#{$prefix}-clearfix:after { + clear: both; +} + +#wpadminbar .#{$font-prefix-ctrl} { + vertical-align: text-top !important; + font-size: 19px !important; + font-family: debugpress, cursive !important; + line-height: 1; +} + +#wp-admin-bar-debugpress-debugger-button { + float: right !important; +} diff --git a/scss/components/_button.scss b/src/scripts/panel/scss/_button.scss similarity index 95% rename from scss/components/_button.scss rename to src/scripts/panel/scss/_button.scss index 92ebab2..6ef3000 100644 --- a/scss/components/_button.scss +++ b/src/scripts/panel/scss/_button.scss @@ -1,119 +1,119 @@ -.debugpress-float-button { - position: fixed; - background-color: #23282D; - border: 1px solid #23282D; - box-shadow: 0 0 3px rgb(35 40 45 / 70%); - z-index: 142000; - padding: 5px; - - a { - display: block; - height: 22px; - line-height: 22px; - outline: none !important; - text-decoration: none; - - &:focus { - box-shadow: none; - } - } - - &.debugpress-position-topright { - right: 5px; - top: 5px; - } - - &.debugpress-position-topleft { - left: 5px; - top: 5px; - } - - &.debugpress-position-bottomright { - right: 5px; - bottom: 5px; - } - - &.debugpress-position-bottomleft { - left: 5px; - bottom: 5px; - } - - .debugpress-icon { - font-size: 24px !important; - vertical-align: top; - } -} - -.debugpress-debug-dialog-button { - &.debugpress-float-button { - a { - .debugpress-debug-button-indicators { - vertical-align: 8px; - } - } - } - - a { - .debugpress-debug-button-indicators { - .debugpress-debug-has-errors, - .debugpress-debug-has-stored, - .debugpress-debug-has-httpcalls, - .debugpress-debug-has-ajax { - padding: 2px 3px !important; - border-radius: 3px !important; - color: #FFF; - font-size: 11px !important; - max-height: 12px !important; - margin: 4px !important; - } - - .debugpress-debug-has-httpcalls { - background-color: #2AAAE5; - } - - .debugpress-debug-has-ajax { - background-color: #D82AE5; - } - - .debugpress-debug-has-stored { - background-color: #19A514; - } - - .debugpress-debug-has-errors { - background-color: #ED1E24; - } - } - } - - > a, > a:hover { - color: #69FB3B !important; - } - - &.debugpress-debug-has-warnings { - > a, > :hover { - color: #FF0 !important; - } - } - - &.debugpress-debug-has-errors { - > a, > :hover { - color: #FF3232 !important; - } - } - - .ab-sub-wrapper { - left: auto; - right: 0; - - .ab-item { - display: flex !important; - justify-content: space-between; - align-items: center; - column-gap: 1em; - - span { - font-weight: 700; - } - } - } -} +.debugpress-float-button { + position: fixed; + background-color: #23282D; + border: 1px solid #23282D; + box-shadow: 0 0 3px rgb(35 40 45 / 70%); + z-index: 142000; + padding: 5px; + + a { + display: block; + height: 22px; + line-height: 22px; + outline: none !important; + text-decoration: none; + + &:focus { + box-shadow: none; + } + } + + &.debugpress-position-topright { + right: 5px; + top: 5px; + } + + &.debugpress-position-topleft { + left: 5px; + top: 5px; + } + + &.debugpress-position-bottomright { + right: 5px; + bottom: 5px; + } + + &.debugpress-position-bottomleft { + left: 5px; + bottom: 5px; + } + + .debugpress-icon { + font-size: 24px !important; + vertical-align: top; + } +} + +.debugpress-debug-dialog-button { + &.debugpress-float-button { + a { + .debugpress-debug-button-indicators { + vertical-align: 8px; + } + } + } + + a { + .debugpress-debug-button-indicators { + .debugpress-debug-has-errors, + .debugpress-debug-has-stored, + .debugpress-debug-has-httpcalls, + .debugpress-debug-has-ajax { + padding: 2px 3px !important; + border-radius: 3px !important; + color: #FFF; + font-size: 11px !important; + max-height: 12px !important; + margin: 4px !important; + } + + .debugpress-debug-has-httpcalls { + background-color: #2AAAE5; + } + + .debugpress-debug-has-ajax { + background-color: #D82AE5; + } + + .debugpress-debug-has-stored { + background-color: #19A514; + } + + .debugpress-debug-has-errors { + background-color: #ED1E24; + } + } + } + + > a, > a:hover { + color: #69FB3B !important; + } + + &.debugpress-debug-has-warnings { + > a, > :hover { + color: #FF0 !important; + } + } + + &.debugpress-debug-has-errors { + > a, > :hover { + color: #FF3232 !important; + } + } + + .ab-sub-wrapper { + left: auto; + right: 0; + + .ab-item { + display: flex !important; + justify-content: space-between; + align-items: center; + column-gap: 1em; + + span { + font-weight: 700; + } + } + } +} diff --git a/scss/components/_debugger.scss b/src/scripts/panel/scss/_debugger.scss similarity index 95% rename from scss/components/_debugger.scss rename to src/scripts/panel/scss/_debugger.scss index 1c3e35f..27acd7a 100644 --- a/scss/components/_debugger.scss +++ b/src/scripts/panel/scss/_debugger.scss @@ -1,532 +1,532 @@ -.debugpress-style-popup { - #debugpress-debugger-tabs { - margin: 0; - padding: 0; - list-style: none; - font-size: var(--debugpress-base-font-size); - line-height: 26px; - width: calc(100% - 30px); - - li { - float: left; - height: 28px; - line-height: 26px; - margin: 0; - padding: 0 10px; - list-style: none; - - .debugpress-tab-ctrl-icon { - padding-right: 5px; - font-size: calc(var(--debugpress-base-font-size) + 2px); - } - - a { - color: #EEE; - box-shadow: none; - outline: none; - text-decoration: none; - } - - &.debugpress-tab-active { - background: #FFF; - height: 33px; - - a { - color: #23282D; - font-weight: 700; - } - } - - &#debugpress-debugger-tab-layout-li, - &#debugpress-debugger-tab-tools-li, - &#debugpress-debugger-tab-debuglog-li { - float: right; - - i { - font-size: 120%; - vertical-align: text-bottom; - } - } - } - } - - .debugpress-pre-wrap { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-weight: 700; - font-size: var(--debugpress-sql-font-size); - margin: 0 0 5px; - padding: 5px; - - pre { - color: #000; - background-color: #FFF; - } - } - - #debugpress-debugger-content-wrapper { - .debugpress-tab-content { - display: none; - - &.debugpress-tab-active { - display: block; - } - } - } - - #debugpress-debugger-select { - display: none; - font-size: calc(var(--debugpress-base-font-size) + 1px); - height: 28px; - line-height: 28px; - margin: 0; - padding: 0 10px; - width: calc(100% - 30px); - min-height: 28px; - max-width: 100%; - border-radius: 0; - border: 0; - } - - .debugpress-debugger-footer-right { - float: right; - } - - .debugpress-debugger-footer-left { - float: left; - - div { - display: inline; - } - } - - #debugpress-debugger-content-wrapper { - .debugpress-events-log-toggle { - font-weight: 700; - } - - .debugpress-events-log-toggler { - border-left: 1px solid #888; - padding-left: 10px; - display: none; - - &.debugpress-events-log-toggler-opened { - display: block; - } - } - - .debugpress-error-message { - font-weight: 700; - font-style: italic; - color: #F00; - } - } - - .debugpress-debugger-panel-block { - margin: 5px 0 10px; - display: block; - overflow: auto; - - p { - padding: 0; - margin: 0 0 .5em; - } - - .sql-calls-button-expander { - font-weight: 700; - font-size: calc(var(--debugpress-base-font-size) - 1px); - color: #FFF !important; - background: #0073AA; - padding: 0 6px 3px; - margin: 0 0 0 10px; - border-radius: 3px; - } - } - - .debugpress-debugger-panel-block-title { - background: #23282D; - color: #FFF; - padding: 5px 8px !important; - font-size: 12px; - margin: 0; - - > i.debugpress-icon { - font-size: 1.5em; - margin: 0 5px 0 0; - } - - span { - float: right; - font-size: 18px; - cursor: pointer; - - i.debugpress-icon { - vertical-align: top; - } - } - } - - .debugpress-query-sidebar-control { - background: #23282D; - color: #FFF; - padding: 5px !important; - font-size: calc(var(--debugpress-base-font-size) - 1px); - margin: 0 0 10px; - text-align: right; - - span { - font-size: calc(var(--debugpress-base-font-size) + 4px); - cursor: pointer; - padding-right: 4px; - vertical-align: top; - - i.debugpress-icon { - vertical-align: bottom; - } - } - } - - .debugpress-debugger-panel-block-subtitle { - background: #777; - color: #FFF; - margin: 5px 0; - padding: 2px 5px !important; - font-size: calc(var(--debugpress-base-font-size) - 2px); - line-height: 20px; - } - - .debugpress-debugger-table { - width: 100%; - table-layout: auto; - margin: 0; - border: 1px solid #DDD; - background: #FFF; - border-collapse: collapse; - font-size: calc(var(--debugpress-base-font-size) - 1px); - line-height: 20px; - - thead { - background: #DDD; - } - - th, - td { - border: 1px solid #E8E8E8; - text-align: left; - padding: 1px 4px !important; - font-size: calc(var(--debugpress-base-font-size) - 1px); - - .kint-rich { - margin: 0; - - > dl > .kint-parent { - margin-top: 0; - } - } - } - - td { - border-width: 0 1px 1px 0; - vertical-align: top; - } - - tr:nth-of-type(2n) { - background: #FAFAFA; - } - - &.debugpress-table-keyvalue { - tr { - td { - &:first-child { - width: 30%; - } - } - } - } - - .debugpress_r.debugpress_r_root { - margin: 0; - } - } - - #debugpress-debugger-tab-hooks, - #debugpress-debugger-tab-queries { - .debugpress-debugger-table { - &.debugpress-table-keyvalue { - tr { - td { - &:first-child { - width: 70%; - } - } - } - } - } - } - - #debugpress-debugger-tab-hooks { - #dbg-hooks-list { - > thead { - th, - td { - padding: 3px 8px !important; - } - } - - > tbody { - > tr { - > th { - padding: 3px 8px !important; - vertical-align: top; - width: 20%; - } - - > td { - padding: 0 !important; - - &.dbg-hook-no-callbacks { - padding: 4px 6px 4px 82px !important; - font-weight: 700; - } - } - } - } - - .dbg-hooks-actions { - width: 100%; - table-layout: auto; - margin: 0; - border: 0; - background: #FFF; - border-collapse: collapse; - font-size: calc(var(--debugpress-base-font-size) - 1px); - - tr { - td { - padding: 3px 5px !important; - - &:first-child { - width: 80px; - text-align: right; - } - - &:last-child { - width: 30%; - } - - &.dbg-hook-column-action { - em { - font-family: monospace; - font-weight: 700; - font-style: normal; - } - - div { - display: none; - } - - .dbg-hook-action-callback-call { - display: block; - - strong { - font-weight: 400; - font-family: monospace; - } - } - - &.dbg-calls-show { - div { - display: block; - } - } - - button { - float: right; - font-weight: 700; - font-size: calc(var(--debugpress-base-font-size) - 1px); - color: #FFF !important; - background: #0073AA; - padding: 0 6px 3px; - margin: 0 0 0 10px; - border: 0; - border-radius: 3px; - cursor: pointer; - } - } - } - - &:last-child { - td { - border-bottom: 0; - } - } - } - } - } - } - - .query-sql-run-full, - #debugpress-debuglog-content { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-size: var(--debugpress-sql-font-size); - margin: 5px 0 0; - padding: 5px; - } - - .query-sql-run-full { - font-weight: 700; - - pre { - color: #000; - background-color: #FFF; - } - } - - #debugpress-debuglog-content { - font-weight: 400; - - > div { - overflow: auto; - color: #000; - background-color: #FFF; - - pre { - background: none; - overflow: visible; - } - } - } - - .sql-query-list { - .sql-query { - border: 1px solid #777; - margin: 5px 0; - padding: 5px; - - .sql-query-full { - background-color: #F4F4F4; - color: #000; - font-family: monospace; - font-weight: 700; - font-size: var(--debugpress-sql-font-size); - margin: 5px 0 0; - padding: 5px; - - pre { - color: #000; - background-color: #FFF; - } - } - } - } - - .debugpress-wrapper-warning { - border: 1px solid #23282D; - padding: 10px; - margin: 0 0 10px; - - h4 { - color: #900; - font-size: calc(var(--debugpress-base-font-size) + 3px); - margin: 0 0 5px; - } - } - - .debugpress-debug-environment { - margin: 0 0 10px; - padding: 10px; - background-color: #F3FFE7; - - .debugpress-debugger-panel-block-title { - background-color: #12AE00; - text-align: center; - font-size: 110%; - } - - &.debugpress-debug-env-development { - background-color: #FFE7F2; - - .debugpress-debugger-panel-block-title { - background-color: #AE0060; - } - } - - &.debugpress-debug-env-local { - background-color: #F7E7FF; - - .debugpress-debugger-panel-block-title { - background-color: #8800AE; - } - } - - &.debugpress-debug-env-staging { - background-color: #E7EEFF; - - .debugpress-debugger-panel-block-title { - background-color: #0026AE; - } - } - } - - .debugpress-debugger-footer-left { - .debugpress-debugger-environment { - color: #12AE00; - - &.debugpress-env-development { - color: #AE0060; - } - - &.debugpress-env-local { - color: #8800AE; - } - - &.debugpress-env-staging { - color: #0026AE; - } - } - } - - .debugpress-debug-notice-block { - margin: 10px 0; - padding: 10px 10px 1px; - border-left: 4px solid #F00; - background-color: #FFE7E7; - - .debugpress-debugger-panel-block-title { - background-color: #F00; - } - } - - .debugpress-tab-content { - &.debugpress-queries-sidebar-closed { - .one-quarter { - width: 44px; - - h5, div { - display: none !important; - } - } - - .three-quarters { - width: calc(100% - 44px); - } - } - } - - .debugpress-button-action { - background: #27B; - color: #FFF; - display: inline-block; - cursor: pointer; - border: 0; - text-align: center; - width: max-content; - border-radius: 0; - margin: 5px 5px 0 0; - padding: 8px 14px; - font-size: calc(var(--debugpress-base-font-size) + 3px); - } -} +.flyin-style-debugpress-light { + #debugpress-debugger-tabs { + margin: 0; + padding: 0; + list-style: none; + font-size: var(--debugpress-base-font-size); + line-height: 26px; + width: calc(100% - 30px); + + li { + float: left; + height: 28px; + line-height: 26px; + margin: 0; + padding: 0 10px; + list-style: none; + + .debugpress-tab-ctrl-icon { + padding-right: 5px; + font-size: calc(var(--debugpress-base-font-size) + 2px); + } + + a { + color: #EEE; + box-shadow: none; + outline: none; + text-decoration: none; + } + + &.debugpress-tab-active { + background: #FFF; + height: 33px; + + a { + color: #23282D; + font-weight: 700; + } + } + + &#debugpress-debugger-tab-layout-li, + &#debugpress-debugger-tab-tools-li, + &#debugpress-debugger-tab-debuglog-li { + float: right; + + i { + font-size: 120%; + vertical-align: text-bottom; + } + } + } + } + + .debugpress-pre-wrap { + background-color: #F4F4F4; + color: #000; + font-family: monospace; + font-weight: 700; + font-size: var(--debugpress-sql-font-size); + margin: 0 0 5px; + padding: 5px; + + pre { + color: #000; + background-color: #FFF; + } + } + + #debugpress-debugger-content-wrapper { + .debugpress-tab-content { + display: none; + + &.debugpress-tab-active { + display: block; + } + } + } + + #debugpress-debugger-select { + display: none; + font-size: calc(var(--debugpress-base-font-size) + 1px); + height: 28px; + line-height: 28px; + margin: 0; + padding: 0 10px; + width: calc(100% - 30px); + min-height: 28px; + max-width: 100%; + border-radius: 0; + border: 0; + } + + .debugpress-debugger-footer-right { + float: right; + } + + .debugpress-debugger-footer-left { + float: left; + + div { + display: inline; + } + } + + #debugpress-debugger-content-wrapper { + .debugpress-events-log-toggle { + font-weight: 700; + } + + .debugpress-events-log-toggler { + border-left: 1px solid #888; + padding-left: 10px; + display: none; + + &.debugpress-events-log-toggler-opened { + display: block; + } + } + + .debugpress-error-message { + font-weight: 700; + font-style: italic; + color: #F00; + } + } + + .debugpress-debugger-panel-block { + margin: 5px 0 10px; + display: block; + overflow: auto; + + p { + padding: 0; + margin: 0 0 .5em; + } + + .sql-calls-button-expander { + font-weight: 700; + font-size: calc(var(--debugpress-base-font-size) - 1px); + color: #FFF !important; + background: #0073AA; + padding: 0 6px 3px; + margin: 0 0 0 10px; + border-radius: 3px; + } + } + + .debugpress-debugger-panel-block-title { + background: #23282D; + color: #FFF; + padding: 5px 8px !important; + font-size: 12px; + margin: 0; + + > i.debugpress-icon { + font-size: 1.5em; + margin: 0 5px 0 0; + } + + span { + float: right; + font-size: 18px; + cursor: pointer; + + i.debugpress-icon { + vertical-align: top; + } + } + } + + .debugpress-query-sidebar-control { + background: #23282D; + color: #FFF; + padding: 5px !important; + font-size: calc(var(--debugpress-base-font-size) - 1px); + margin: 0 0 10px; + text-align: right; + + span { + font-size: calc(var(--debugpress-base-font-size) + 4px); + cursor: pointer; + padding-right: 4px; + vertical-align: top; + + i.debugpress-icon { + vertical-align: bottom; + } + } + } + + .debugpress-debugger-panel-block-subtitle { + background: #777; + color: #FFF; + margin: 5px 0; + padding: 2px 5px !important; + font-size: calc(var(--debugpress-base-font-size) - 2px); + line-height: 20px; + } + + .debugpress-debugger-table { + width: 100%; + table-layout: auto; + margin: 0; + border: 1px solid #DDD; + background: #FFF; + border-collapse: collapse; + font-size: calc(var(--debugpress-base-font-size) - 1px); + line-height: 20px; + + thead { + background: #DDD; + } + + th, + td { + border: 1px solid #E8E8E8; + text-align: left; + padding: 1px 4px !important; + font-size: calc(var(--debugpress-base-font-size) - 1px); + + .kint-rich { + margin: 0; + + > dl > .kint-parent { + margin-top: 0; + } + } + } + + td { + border-width: 0 1px 1px 0; + vertical-align: top; + } + + tr:nth-of-type(2n) { + background: #FAFAFA; + } + + &.debugpress-table-keyvalue { + tr { + td { + &:first-child { + width: 30%; + } + } + } + } + + .debugpress_r.debugpress_r_root { + margin: 0; + } + } + + #debugpress-debugger-tab-hooks, + #debugpress-debugger-tab-queries { + .debugpress-debugger-table { + &.debugpress-table-keyvalue { + tr { + td { + &:first-child { + width: 70%; + } + } + } + } + } + } + + #debugpress-debugger-tab-hooks { + #dbg-hooks-list { + > thead { + th, + td { + padding: 3px 8px !important; + } + } + + > tbody { + > tr { + > th { + padding: 3px 8px !important; + vertical-align: top; + width: 20%; + } + + > td { + padding: 0 !important; + + &.dbg-hook-no-callbacks { + padding: 4px 6px 4px 82px !important; + font-weight: 700; + } + } + } + } + + .dbg-hooks-actions { + width: 100%; + table-layout: auto; + margin: 0; + border: 0; + background: #FFF; + border-collapse: collapse; + font-size: calc(var(--debugpress-base-font-size) - 1px); + + tr { + td { + padding: 3px 5px !important; + + &:first-child { + width: 80px; + text-align: right; + } + + &:last-child { + width: 30%; + } + + &.dbg-hook-column-action { + em { + font-family: monospace; + font-weight: 700; + font-style: normal; + } + + div { + display: none; + } + + .dbg-hook-action-callback-call { + display: block; + + strong { + font-weight: 400; + font-family: monospace; + } + } + + &.dbg-calls-show { + div { + display: block; + } + } + + button { + float: right; + font-weight: 700; + font-size: calc(var(--debugpress-base-font-size) - 1px); + color: #FFF !important; + background: #0073AA; + padding: 0 6px 3px; + margin: 0 0 0 10px; + border: 0; + border-radius: 3px; + cursor: pointer; + } + } + } + + &:last-child { + td { + border-bottom: 0; + } + } + } + } + } + } + + .query-sql-run-full, + #debugpress-debuglog-content { + background-color: #F4F4F4; + color: #000; + font-family: monospace; + font-size: var(--debugpress-sql-font-size); + margin: 5px 0 0; + padding: 5px; + } + + .query-sql-run-full { + font-weight: 700; + + pre { + color: #000; + background-color: #FFF; + } + } + + #debugpress-debuglog-content { + font-weight: 400; + + > div { + overflow: auto; + color: #000; + background-color: #FFF; + + pre { + background: none; + overflow: visible; + } + } + } + + .sql-query-list { + .sql-query { + border: 1px solid #777; + margin: 5px 0; + padding: 5px; + + .sql-query-full { + background-color: #F4F4F4; + color: #000; + font-family: monospace; + font-weight: 700; + font-size: var(--debugpress-sql-font-size); + margin: 5px 0 0; + padding: 5px; + + pre { + color: #000; + background-color: #FFF; + } + } + } + } + + .debugpress-wrapper-warning { + border: 1px solid #23282D; + padding: 10px; + margin: 0 0 10px; + + h4 { + color: #900; + font-size: calc(var(--debugpress-base-font-size) + 3px); + margin: 0 0 5px; + } + } + + .debugpress-debug-environment { + margin: 0 0 10px; + padding: 10px; + background-color: #F3FFE7; + + .debugpress-debugger-panel-block-title { + background-color: #12AE00; + text-align: center; + font-size: 110%; + } + + &.debugpress-debug-env-development { + background-color: #FFE7F2; + + .debugpress-debugger-panel-block-title { + background-color: #AE0060; + } + } + + &.debugpress-debug-env-local { + background-color: #F7E7FF; + + .debugpress-debugger-panel-block-title { + background-color: #8800AE; + } + } + + &.debugpress-debug-env-staging { + background-color: #E7EEFF; + + .debugpress-debugger-panel-block-title { + background-color: #0026AE; + } + } + } + + .debugpress-debugger-footer-left { + .debugpress-debugger-environment { + color: #12AE00; + + &.debugpress-env-development { + color: #AE0060; + } + + &.debugpress-env-local { + color: #8800AE; + } + + &.debugpress-env-staging { + color: #0026AE; + } + } + } + + .debugpress-debug-notice-block { + margin: 10px 0; + padding: 10px 10px 1px; + border-left: 4px solid #F00; + background-color: #FFE7E7; + + .debugpress-debugger-panel-block-title { + background-color: #F00; + } + } + + .debugpress-tab-content { + &.debugpress-queries-sidebar-closed { + .one-quarter { + width: 44px; + + h5, div { + display: none !important; + } + } + + .three-quarters { + width: calc(100% - 44px); + } + } + } + + .debugpress-button-action { + background: #27B; + color: #FFF; + display: inline-block; + cursor: pointer; + border: 0; + text-align: center; + width: max-content; + border-radius: 0; + margin: 5px 5px 0 0; + padding: 8px 14px; + font-size: calc(var(--debugpress-base-font-size) + 3px); + } +} diff --git a/scss/includes/_embeds.scss b/src/scripts/panel/scss/_embeds.scss similarity index 100% rename from scss/includes/_embeds.scss rename to src/scripts/panel/scss/_embeds.scss diff --git a/src/scripts/panel/scss/_flyin.scss b/src/scripts/panel/scss/_flyin.scss new file mode 100644 index 0000000..767a20e --- /dev/null +++ b/src/scripts/panel/scss/_flyin.scss @@ -0,0 +1,52 @@ +.flyin-style-debugpress-light { + --flyin-close-btn-color: #F00; + + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: var(--debugpress-base-font-size); + font-style: normal; + font-weight: 400; + line-height: 1.4; + + * { + font-family: inherit; + box-sizing: border-box; + } + + pre { + margin: 0; + padding: 5px 7px; + line-height: 1.4; + white-space: pre; + } + + a { + color: #0073AA; + text-decoration: none; + box-shadow: none; + outline: none; + + &.sqlq-option-on { + font-weight: 700; + color: #FFF; + background: #0073AA; + padding: 0 3px 1px; + } + } + + .flyin-wrapper { + .flyin-header { + height: 38px; + + .flyin-button-close { + i.debugpress-icon { + font-size: 18px; + margin: 4px 2px 0 0; + } + } + } + + .flyin-footer { + text-align: left; + } + } +} \ No newline at end of file diff --git a/scss/components/_icons.scss b/src/scripts/panel/scss/_font.scss similarity index 87% rename from scss/components/_icons.scss rename to src/scripts/panel/scss/_font.scss index 86694f3..c15ed4e 100644 --- a/scss/components/_icons.scss +++ b/src/scripts/panel/scss/_font.scss @@ -1,102 +1,102 @@ -@use "../includes/variables" as *; -@use "../includes/functions" as *; -@use "../includes/embeds" as *; -@use "../includes/icons" as *; - -@font-face { - font-family: $font-name; - src: url('data:application/font-woff2;charset=utf-8;base64,#{$font-woff2}') format('woff2'), - url('data:application/font-woff;charset=utf-8;base64,#{$font-woff}') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -i.#{$font-prefix-ctrl} { - font: 400 normal normal $font-size / 1 $font-name; - font-size: inherit; - text-transform: none; - display: inline-block; - vertical-align: text-bottom; - speak: never; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -h1, h2, h3, h4, h5, h6 { - > .#{$font-prefix-ctrl} { - line-height: inherit; - vertical-align: bottom; - } -} - -a { - > .#{$font-prefix-ctrl} { - line-height: normal; - } -} - -/* Icons */ -@each $icon, $deg in $rotate { - .#{$font-prefix-ctrl}.#{$font-prefix}-#{$icon} { - transform: rotate(#{$deg}deg); - } -} - -@each $icon, $char in $icons { - .#{$font-prefix-ctrl}.#{$font-prefix}-#{$icon} { - &::before { - content: icon($char); - } - } -} - -/* Full Width */ -i.#{$font-prefix-ctrl} { - &.#{$font-prefix-ctrl}-fw { - width: 1.2857em; - text-align: center; - } - - /* Sizes */ - &.#{$font-prefix-ctrl}-lg { - font-size: 1.3333em; - line-height: 0.75; - vertical-align: -15%; - } - - @for $i from 2 to 8 { - &.#{$font-prefix-ctrl}-#{$i}x { - font-size: #{$i}em; - } - } -} - -/* Flip */ -.#{$font-prefix-ctrl}-flip-horizontal { - transform: scaleX(-1); -} - -.#{$font-prefix-ctrl}-flip-vertical { - transform: scaleY(-1); -} - -.#{$font-prefix-ctrl}-flip-both, -.#{$font-prefix-ctrl}-flip-horizontal.#{$font-prefix-ctrl}-flip-vertical { - transform: scale(-1); -} - -/* Spin */ -.#{$font-prefix-ctrl}-spin { - animation: #{$font-prefix}-icon-spin 2s infinite linear; -} - -@keyframes #{$font-prefix}-icon-spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} +@use "./variables" as *; +@use "./functions" as *; +@use "./embeds" as *; +@use "./icons" as *; + +@font-face { + font-family: $font-name; + src: url('data:application/font-woff2;charset=utf-8;base64,#{$font-woff2}') format('woff2'), + url('data:application/font-woff;charset=utf-8;base64,#{$font-woff}') format('woff'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +i.#{$font-prefix-ctrl} { + font: 400 normal normal $font-size $font-name; + font-size: inherit; + text-transform: none; + display: inline-block; + vertical-align: text-bottom; + speak: never; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +h1, h2, h3, h4, h5, h6 { + > .#{$font-prefix-ctrl} { + line-height: inherit; + vertical-align: bottom; + } +} + +a { + > .#{$font-prefix-ctrl} { + line-height: normal; + } +} + +/* Icons */ +@each $icon, $deg in $rotate { + .#{$font-prefix-ctrl}.#{$font-prefix}-#{$icon} { + transform: rotate(#{$deg}deg); + } +} + +@each $icon, $char in $icons { + .#{$font-prefix-ctrl}.#{$font-prefix}-#{$icon} { + &::before { + content: icon($char); + } + } +} + +/* Full Width */ +i.#{$font-prefix-ctrl} { + &.#{$font-prefix-ctrl}-fw { + width: 1.2857em; + text-align: center; + } + + /* Sizes */ + &.#{$font-prefix-ctrl}-lg { + font-size: 1.3333em; + line-height: 0.75; + vertical-align: -15%; + } + + @for $i from 2 to 8 { + &.#{$font-prefix-ctrl}-#{$i}x { + font-size: #{$i}em; + } + } +} + +/* Flip */ +.#{$font-prefix-ctrl}-flip-horizontal { + transform: scaleX(-1); +} + +.#{$font-prefix-ctrl}-flip-vertical { + transform: scaleY(-1); +} + +.#{$font-prefix-ctrl}-flip-both, +.#{$font-prefix-ctrl}-flip-horizontal.#{$font-prefix-ctrl}-flip-vertical { + transform: scale(-1); +} + +/* Spin */ +.#{$font-prefix-ctrl}-spin { + animation: #{$font-prefix}-icon-spin 2s infinite linear; +} + +@keyframes #{$font-prefix}-icon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} diff --git a/scss/includes/_functions.scss b/src/scripts/panel/scss/_functions.scss similarity index 96% rename from scss/includes/_functions.scss rename to src/scripts/panel/scss/_functions.scss index f23354e..dc57443 100644 --- a/scss/includes/_functions.scss +++ b/src/scripts/panel/scss/_functions.scss @@ -1,6 +1,6 @@ -@use "sass:string"; - -@function icon($character) { - - @return string.unquote("\"") + string.unquote(string.insert($character, "\\", 1)) + string.unquote("\""); -} +@use "sass:string"; + +@function icon($character) { + + @return string.unquote("\"") + string.unquote(string.insert($character, "\\", 1)) + string.unquote("\""); +} diff --git a/scss/components/_grid.scss b/src/scripts/panel/scss/_grid.scss similarity index 90% rename from scss/components/_grid.scss rename to src/scripts/panel/scss/_grid.scss index ae7a003..6525f3e 100644 --- a/scss/components/_grid.scss +++ b/src/scripts/panel/scss/_grid.scss @@ -1,132 +1,130 @@ -@use "../includes/variables" as *; - -.#{$grid-prefix}-grid, -.#{$grid-prefix}-unit { - box-sizing: border-box; -} - -.#{$grid-prefix}-grid { - display: block; - clear: both; - - .#{$grid-prefix}-unit { - float: left; - width: 100%; - padding: 10px; - margin: 0; - } - - .wrap { - max-width: 978px; - margin: 0 auto; - } - - *zoom: 1; - - &::before, - &::after { - display: table; - content: ""; - line-height: 0; - } - - &::after { - clear: both; - } - - .whole, .w-1-1 { - width: 100%; - } - - .half, .w-1-2 { - width: 50%; - } - - .one-third, .w-1-3 { - width: 33.3332%; - } - - .two-thirds, .w-2-3 { - width: 66.6665%; - } - - .one-quarter, .w-1-4 { - width: 25%; - } - - .three-quarters, .w-3-4 { - width: 75%; - } - - .one-fifth, .w-1-5 { - width: 20%; - } - - .two-fifths, .w-2-5 { - width: 40%; - } - - .three-fifths, .w-3-5 { - width: 60%; - } - - .four-fifths, .w-4-5 { - width: 80%; - } - - .golden-small, .w-g-s { - width: 38.2716%; - } - - .golden-large, .w-g-l { - width: 61.7283%; - } -} - -.#{$grid-prefix}-unit { - .#{$grid-prefix}-unit { - &:first-child { - padding-left: 0; - } - - &:last-child { - padding-right: 0; - } - - &:first-child { - > .#{$grid-prefix}-unit { - padding-top: 0; - } - } - - &:last-child { - > .#{$grid-prefix}-unit { - padding-bottom: 0; - } - } - } - - &.no-gutters { - padding: 0 !important; - } -} - -.align-center { - text-align: center; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -.pull-left { - float: left; -} - -.pull-right { - float: right; -} +@use "./variables" as *; + +.#{$grid-prefix}-grid, +.#{$grid-prefix}-unit { + box-sizing: border-box; +} + +.#{$grid-prefix}-grid { + display: block; + clear: both; + + .#{$grid-prefix}-unit { + float: left; + width: 100%; + padding: 10px; + margin: 0; + } + + .wrap { + max-width: 978px; + margin: 0 auto; + } + + &::before, + &::after { + display: table; + content: ""; + line-height: 0; + } + + &::after { + clear: both; + } + + .whole, .w-1-1 { + width: 100%; + } + + .half, .w-1-2 { + width: 50%; + } + + .one-third, .w-1-3 { + width: 33.3332%; + } + + .two-thirds, .w-2-3 { + width: 66.6665%; + } + + .one-quarter, .w-1-4 { + width: 25%; + } + + .three-quarters, .w-3-4 { + width: 75%; + } + + .one-fifth, .w-1-5 { + width: 20%; + } + + .two-fifths, .w-2-5 { + width: 40%; + } + + .three-fifths, .w-3-5 { + width: 60%; + } + + .four-fifths, .w-4-5 { + width: 80%; + } + + .golden-small, .w-g-s { + width: 38.2716%; + } + + .golden-large, .w-g-l { + width: 61.7283%; + } +} + +.#{$grid-prefix}-unit { + .#{$grid-prefix}-unit { + &:first-child { + padding-left: 0; + } + + &:last-child { + padding-right: 0; + } + + &:first-child { + > .#{$grid-prefix}-unit { + padding-top: 0; + } + } + + &:last-child { + > .#{$grid-prefix}-unit { + padding-bottom: 0; + } + } + } + + &.no-gutters { + padding: 0 !important; + } +} + +.align-center { + text-align: center; +} + +.align-left { + text-align: left; +} + +.align-right { + text-align: right; +} + +.pull-left { + float: left; +} + +.pull-right { + float: right; +} diff --git a/scss/includes/_icons.scss b/src/scripts/panel/scss/_icons.scss similarity index 100% rename from scss/includes/_icons.scss rename to src/scripts/panel/scss/_icons.scss diff --git a/scss/components/_layout.scss b/src/scripts/panel/scss/_layout.scss similarity index 94% rename from scss/components/_layout.scss rename to src/scripts/panel/scss/_layout.scss index 549242b..0f59850 100644 --- a/scss/components/_layout.scss +++ b/src/scripts/panel/scss/_layout.scss @@ -1,39 +1,39 @@ -.debugpress-layout-position { - display: flex; - gap: 2em; - flex-wrap: wrap; - padding: 1em; - - > div { - text-align: center; - - &.selected { - color: #0073AA; - font-weight: 700; - } - - > span { - display: block; - } - } -} - -.debugpress-layout-settings { - padding: 1em; - - .debugpress-layout-option { - display: flex; - column-gap: 2em; - margin: 0 0 1em; - align-items: center; - - label { - min-width: 120px; - } - - select { - min-width: 120px; - width: 200px; - } - } -} +.debugpress-layout-position { + display: flex; + gap: 2em; + flex-wrap: wrap; + padding: 1em; + + > div { + text-align: center; + + &.selected { + color: #0073AA; + font-weight: 700; + } + + > span { + display: block; + } + } +} + +.debugpress-layout-settings { + padding: 1em; + + .debugpress-layout-option { + display: flex; + column-gap: 2em; + margin: 0 0 1em; + align-items: center; + + label { + min-width: 120px; + } + + select { + min-width: 120px; + width: 200px; + } + } +} diff --git a/scss/components/_responsive.scss b/src/scripts/panel/scss/_responsive.scss similarity index 91% rename from scss/components/_responsive.scss rename to src/scripts/panel/scss/_responsive.scss index 76427fd..50d0897 100644 --- a/scss/components/_responsive.scss +++ b/src/scripts/panel/scss/_responsive.scss @@ -1,107 +1,108 @@ -@use "../includes/variables" as *; - -@media screen and (width <= 568px) { - .#{$grid-prefix}-grid { - .#{$grid-prefix}-unit { - width: 100% !important; - padding-left: 20px; - padding-right: 20px; - } - } - - .#{$grid-prefix}-unit { - .#{$grid-prefix}-grid { - .#{$grid-prefix}-unit { - padding-left: 0; - padding-right: 0; - } - } - } - - .center-on-mobiles { - text-align: center !important; - } - - .hide-on-mobiles { - display: none !important; - } -} - -@media screen and (width <= 1080px) { - #debugpress-debugger-tab-queries { - .#{$grid-prefix}-grid { - .one-quarter { - width: 45%; - } - - .three-quarters { - width: 55%; - } - } - } - - .debugpress-debugger-footer-left { - div { - display: block; - - span { - display: none; - } - } - } -} - -@media screen and (width <= 800px) { - .debugpress-style-popup { - .debugpress-query-sidebar-control { - margin-bottom: 5px; - } - - .debugpress-debugger-footer-left, - .debugpress-debugger-footer-right { - float: none; - text-align: center; - } - - #debugpress-debugger-tabs { - display: none; - } - - #debugpress-debugger-select { - display: block; - } - - .sanp-wrapper { - .sanp-header { - height: 40px; - } - - > button { - top: 5px; - } - } - - .debugpress-tab-content { - .#{$grid-prefix}-grid .#{$grid-prefix}-unit { - padding-left: 10px; - padding-right: 10px; - } - } - } -} - -@media screen and (width <= 782px) { - #wpadminbar { - .debugpress-debug-dialog-button { - display: block !important; - - > .ab-item { - padding: 0 10px !important; - - i.debugpress-icon { - font-size: 24px !important; - } - } - } - } -} +@use "./variables" as *; + +@media screen and (width <= 568px) { + .#{$grid-prefix}-grid { + .#{$grid-prefix}-unit { + width: 100% !important; + padding-left: 20px; + padding-right: 20px; + } + } + + .#{$grid-prefix}-unit { + .#{$grid-prefix}-grid { + .#{$grid-prefix}-unit { + padding-left: 0; + padding-right: 0; + } + } + } + + .center-on-mobiles { + text-align: center !important; + } + + .hide-on-mobiles { + display: none !important; + } +} + +@media screen and (width <= 1080px) { + #debugpress-debugger-tab-queries { + .#{$grid-prefix}-grid { + .one-quarter { + width: 45%; + } + + .three-quarters { + width: 55%; + } + } + } + + .debugpress-debugger-footer-left { + div { + display: block; + + span { + display: none; + } + } + } +} + +@media screen and (width <= 800px) { + .flyin-style-debugpress-light { + .debugpress-query-sidebar-control { + margin-bottom: 5px; + } + + .debugpress-debugger-footer-left, + .debugpress-debugger-footer-right { + float: none; + text-align: center; + } + + #debugpress-debugger-tabs { + display: none; + } + + #debugpress-debugger-select { + display: block; + } + + .flyin-wrapper + .flyin-wrapper { + .sanp-header { + height: 40px; + } + + > button { + top: 5px; + } + } + + .debugpress-tab-content { + .#{$grid-prefix}-grid .#{$grid-prefix}-unit { + padding-left: 10px; + padding-right: 10px; + } + } + } +} + +@media screen and (width <= 782px) { + #wpadminbar { + .debugpress-debug-dialog-button { + display: block !important; + + > .ab-item { + padding: 0 10px !important; + + i.debugpress-icon { + font-size: 24px !important; + } + } + } + } +} diff --git a/scss/includes/_variables.scss b/src/scripts/panel/scss/_variables.scss similarity index 88% rename from scss/includes/_variables.scss rename to src/scripts/panel/scss/_variables.scss index d20173f..151174e 100644 --- a/scss/includes/_variables.scss +++ b/src/scripts/panel/scss/_variables.scss @@ -1,15 +1,15 @@ -// Global // -$prefix: "debugpress"; -$grid-prefix: "debugpress"; - -// Font // -$font-name: "debugpress"; -$font-version: "3.5"; -$font-prefix: "debugpress-icon"; -$font-prefix-ctrl: "debugpress-icon"; -$font-size: 14px; - -// Base // -$base-font-size: 13px; -$sql-font-size: 13px; -$pretty-font-size: 12px; +// Global // +$prefix: "debugpress"; +$grid-prefix: "debugpress"; + +// Font // +$font-name: "debugpress"; +$font-version: "4.3"; +$font-prefix: "debugpress-icon"; +$font-prefix-ctrl: "debugpress-icon"; +$font-size: 14px; + +// Base // +$base-font-size: 13px; +$sql-font-size: 13px; +$pretty-font-size: 12px; diff --git a/scss/components/_vars.scss b/src/scripts/panel/scss/_vars.scss similarity index 80% rename from scss/components/_vars.scss rename to src/scripts/panel/scss/_vars.scss index 5afb035..278c1e6 100644 --- a/scss/components/_vars.scss +++ b/src/scripts/panel/scss/_vars.scss @@ -1,7 +1,7 @@ -@use "../includes/variables" as *; - -:root { - --debugpress-base-font-size: #{$base-font-size}; - --debugpress-sql-font-size: #{$sql-font-size}; - --debugpress-pretty-font-size: #{$pretty-font-size}; -} +@use "./variables" as *; + +:root { + --debugpress-base-font-size: #{$base-font-size}; + --debugpress-sql-font-size: #{$sql-font-size}; + --debugpress-pretty-font-size: #{$pretty-font-size}; +} diff --git a/src/scripts/panel/types/panel.ts b/src/scripts/panel/types/panel.ts new file mode 100644 index 0000000..3460871 --- /dev/null +++ b/src/scripts/panel/types/panel.ts @@ -0,0 +1,96 @@ +import Flyin from "@dev4press/flyin"; + +export interface DebugPressLayout { + layout: string; + modal: string; + open: string; + ratio: string; + tab: string; + last: string; + close: Flyin | any[]; +} + +export interface DebugPressHeader { + state: string; +} + +export interface DebugPressStatus { + sql_sort: string; + sql_order: string; +} + +export interface DebugPressCounts { + total: number; + errors: number; + doingitwrong: number; + deprecated: number; + storage?: number; + http?: number; +} + +export interface DebugPressData { + ajax_endpoint: string; + call_nonce: string; + mousetrap: boolean; + mousetrap_sequence: string | null; + events_show_details: string; + events_hide_details: string; + icon_right: string; + icon_down: string; +} + +export interface HookFilters { + all: { + types: string[]; + }; + active: { + show: string; + types: string[]; + }; +} + +export interface QueryFilters { + total: { + queries: number; + total: number; + }; + all: { + caller: number[]; + types: string[]; + tables: number[]; + sources: string[]; + }; + active: { + show: string; + caller: number[]; + types: string[]; + tables: number[]; + sources: string[]; + search: string; + }; +} + +export interface AJAXTraceData { + status: 'success' | 'error'; + url: string; + type: string; + response?: string; + error?: string; + headers: Record; +} + +export interface HeaderSize { + tabs: number; + icons: number; + elements: number; + labels: number; + full: number; +} + +declare global { + interface Window { + debugpress_data: DebugPressData; + wp: any; + DebugPressPanelInstance: any; + } +} diff --git a/scss/components/_pretty.scss b/src/scripts/print/index.scss similarity index 95% rename from scss/components/_pretty.scss rename to src/scripts/print/index.scss index 570b783..7bfc999 100644 --- a/scss/components/_pretty.scss +++ b/src/scripts/print/index.scss @@ -1,220 +1,220 @@ -.debugpress_r { - font-size: var(--debugpress-pretty-font-size); - font-family: Consolas, "Lucida Console", monospace; - line-height: 1.4; - cursor: default; - - .debugpress-icon { - vertical-align: text-bottom; - font-size: calc(var(--debugpress-pretty-font-size) + 2px); - } - - &.debugpress_r_root { - background: #FFF; - border: 1px solid #000; - margin: 1em 0; - } - - a { - outline: none; - box-shadow: none; - display: block !important; - text-decoration: none !important; - - &:focus, - &:hover { - outline: none; - box-shadow: none; - } - } - - p { - line-height: inherit !important; - margin: 0 !important; - } - - .debugpress_r_f { - padding: 3px; - border-top: 1px dashed #444; - font: 11px Verdana, sans-serif; - - code { - color: #F00; - background: none; - padding: 0; - margin: 0; - border: 0; - font: 11px Consolas, "Liberation Mono", Courier, monospace; - font-weight: 700; - } - } - - .debugpress_r_c { - display: block; - text-decoration: none; - color: #222; - padding: 2px; - overflow: hidden; - text-overflow: ellipsis; - } - - .debugpress_r_a { - color: #F00; - display: inline-block; - width: 15px; - text-align: center; - } - - .debugpress_r_ad { - .debugpress_r_a { - color: #000; - opacity: 0.2; - } - } - - .debugpress_r_k { - color: #060; - font-weight: 700; - } - - .debugpress_r_d { - font-size: calc(var(--debugpress-pretty-font-size) - 1px); - color: #777; - margin: 0 2px; - - span { - color: #333; - } - } - - .debugpress_r_p { - color: #000; - font-weight: 700; - - &.debugpress_r_t_integer, - &.debugpress_r_t_double { - color: #F0E; - } - - &.debugpress_r_t_string { - color: #E00; - } - - &.debugpress_r_t_boolean { - color: #00E; - } - } - - .debugpress_r_v { - margin-left: 9px; - padding-left: 7px; - border-left: 1px dotted #CCC; - display: none; - - &.debugpress_r_open { - display: block; - } - } - - .debugpress_r_ir { - font-style: italic; - } - - .debugpress_r_t_comment { - color: #080; - } - - .debugpress_r_m { - .debugpress_r_k { - color: #909; - } - - .debugpress_r_ma { - font-weight: 400; - color: #777; - } - - .debugpress_r_mv { - color: #00E; - } - } - - .debugpress_r_m_public, - .debugpress_r_m_protected, - .debugpress_r_m_private, - .debugpress_r_m_abstract, - .debugpress_r_m_final { - .debugpress_r_mo { - font-weight: 400; - color: #008; - } - } - - &.debugpress_r_root { - .debugpress_r_rn { - font-weight: 700; - color: #008000; - } - } - - .debugpress_r_m_magic { - font-style: italic; - } - - .debugpress_r_m_deprecated { - text-decoration: line-through; - } - - a { - &.debugpress_r_c { - &.debugpress_r_m_constructor, - &.debugpress_r_m_destructor { - .debugpress_r_k { - color: #C02; - } - } - - &:hover { - background-color: Highlight; - color: HighlightText; - - .debugpress_r_k, - .debugpress_r_d, - .debugpress_r_d span, - .debugpress_r_ma, - .debugpress_r_mo, - .debugpress_r_mv, - .debugpress_r_p, - .debugpress_r_a { - background-color: Highlight; - color: HighlightText; - } - } - } - } -} - -.debugpress_rs { - &.debugpress_rs_null { - color: #C00; - } - - &.debugpress_rs_empty { - color: #090; - } - - &.debugpress_rs_number { - color: #009; - } - - &.debugpress_rs_bool { - &.debugpress_rs_bool_true { - font-weight: 700; - color: #050; - } - - &.debugpress_rs_bool_false { - color: #700; - } - } -} +.debugpress_r { + font-size: var(--debugpress-pretty-font-size); + font-family: Consolas, "Lucida Console", monospace; + line-height: 1.4; + cursor: default; + + .debugpress-icon { + vertical-align: text-bottom; + font-size: calc(var(--debugpress-pretty-font-size) + 2px); + } + + &.debugpress_r_root { + background: #FFF; + border: 1px solid #000; + margin: 1em 0; + } + + a { + outline: none; + box-shadow: none; + display: block !important; + text-decoration: none !important; + + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + + p { + line-height: inherit !important; + margin: 0 !important; + } + + .debugpress_r_f { + padding: 3px; + border-top: 1px dashed #444; + font: 11px Verdana, sans-serif; + + code { + color: #F00; + background: none; + padding: 0; + margin: 0; + border: 0; + font: 11px Consolas, "Liberation Mono", Courier, monospace; + font-weight: 700; + } + } + + .debugpress_r_c { + display: block; + text-decoration: none; + color: #222; + padding: 2px; + overflow: hidden; + text-overflow: ellipsis; + } + + .debugpress_r_a { + color: #F00; + display: inline-block; + width: 15px; + text-align: center; + } + + .debugpress_r_ad { + .debugpress_r_a { + color: #000; + opacity: 0.2; + } + } + + .debugpress_r_k { + color: #060; + font-weight: 700; + } + + .debugpress_r_d { + font-size: calc(var(--debugpress-pretty-font-size) - 1px); + color: #777; + margin: 0 2px; + + span { + color: #333; + } + } + + .debugpress_r_p { + color: #000; + font-weight: 700; + + &.debugpress_r_t_integer, + &.debugpress_r_t_double { + color: #F0E; + } + + &.debugpress_r_t_string { + color: #E00; + } + + &.debugpress_r_t_boolean { + color: #00E; + } + } + + .debugpress_r_v { + margin-left: 9px; + padding-left: 7px; + border-left: 1px dotted #CCC; + display: none; + + &.debugpress_r_open { + display: block; + } + } + + .debugpress_r_ir { + font-style: italic; + } + + .debugpress_r_t_comment { + color: #080; + } + + .debugpress_r_m { + .debugpress_r_k { + color: #909; + } + + .debugpress_r_ma { + font-weight: 400; + color: #777; + } + + .debugpress_r_mv { + color: #00E; + } + } + + .debugpress_r_m_public, + .debugpress_r_m_protected, + .debugpress_r_m_private, + .debugpress_r_m_abstract, + .debugpress_r_m_final { + .debugpress_r_mo { + font-weight: 400; + color: #008; + } + } + + &.debugpress_r_root { + .debugpress_r_rn { + font-weight: 700; + color: #008000; + } + } + + .debugpress_r_m_magic { + font-style: italic; + } + + .debugpress_r_m_deprecated { + text-decoration: line-through; + } + + a { + &.debugpress_r_c { + &.debugpress_r_m_constructor, + &.debugpress_r_m_destructor { + .debugpress_r_k { + color: #C02; + } + } + + &:hover { + background-color: Highlight; + color: HighlightText; + + .debugpress_r_k, + .debugpress_r_d, + .debugpress_r_d span, + .debugpress_r_ma, + .debugpress_r_mo, + .debugpress_r_mv, + .debugpress_r_p, + .debugpress_r_a { + background-color: Highlight; + color: HighlightText; + } + } + } + } +} + +.debugpress_rs { + &.debugpress_rs_null { + color: #C00; + } + + &.debugpress_rs_empty { + color: #090; + } + + &.debugpress_rs_number { + color: #009; + } + + &.debugpress_rs_bool { + &.debugpress_rs_bool_true { + font-weight: 700; + color: #050; + } + + &.debugpress_rs_bool_false { + color: #700; + } + } +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..bd1067e --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,4 @@ +declare module '*.scss' { + const content: Record; + export default content; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..b8ef8af --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "types": ["node"], + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..bce2fc7 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,73 @@ +import { defineConfig } from 'vite'; +import { resolve } from 'path'; +import { unlinkSync, copyFileSync, existsSync, mkdirSync } from 'node:fs'; + +export default defineConfig(({ mode }) => { + const isPanel = mode === 'panel'; + const isPrint = mode === 'print'; + const entry = isPrint ? 'print' : (isPanel ? 'panel' : 'admin'); + const ext = isPrint ? 'scss' : 'ts'; + + return { + css: { + lightningcss: { + errorRecovery: true, + }, + }, + build: { + outDir: 'dist', + emptyOutDir: mode === 'admin', + minify: 'terser', + lib: { + entry: resolve(__dirname, `src/scripts/${entry}/index.${ext}`), + formats: ['iife'], + name: `DebugPress${entry.charAt(0).toUpperCase() + entry.slice(1)}`, + fileName: () => `${entry}.js`, + }, + rollupOptions: { + output: { + assetFileNames: `${entry}.[ext]`, + }, + }, + }, + plugins: [ + { + name: 'copy-flyin-assets', + apply: 'build', + closeBundle() { + if (mode === 'admin') { + const distDir = resolve(__dirname, 'dist'); + const flyinDist = resolve(__dirname, 'node_modules/@dev4press/flyin/dist'); + + if (!existsSync(distDir)) { + mkdirSync(distDir, { recursive: true }); + } + + try { + copyFileSync(resolve(flyinDist, 'flyin.css'), resolve(distDir, 'flyin.css')); + copyFileSync(resolve(flyinDist, 'flyin.umd.js'), resolve(distDir, 'flyin.js')); + } catch (e) { + } + } + }, + }, + { + name: 'remove-js-output', + apply: 'build', + writeBundle(options, bundle) { + if (isPrint) { + for (const fileName in bundle) { + if (fileName.endsWith('.js')) { + try { + unlinkSync(resolve(options.dir!, fileName)); + } catch (e) { + // Ignore errors + } + } + } + } + }, + }, + ], + }; +});