diff --git a/core/admin.php b/core/admin.php index 810dde6..fd2f26e 100644 --- a/core/admin.php +++ b/core/admin.php @@ -8,7 +8,7 @@ * Replacement function for rendering plugin settings sections. Based on the WordPress core do_settings_sections(), but * expanded to add additional layout elements. * - * @param string $page the slug name of the page whose settings sections you want to output + * @param string $page the slug name of the page whose settings section you want to output * * @see \do_settings_sections() * diff --git a/core/admin/Plugin.php b/core/admin/Plugin.php index 77c3afd..e50403e 100644 --- a/core/admin/Plugin.php +++ b/core/admin/Plugin.php @@ -26,7 +26,6 @@ public function __construct() { add_filter( 'plugin_row_meta', array( $this, 'plugin_links' ), 10, 2 ); } - /** @return \Dev4Press\Plugin\DebugPress\Admin\Plugin */ public static function instance() : Plugin { static $instance = null; diff --git a/core/admin/Settings.php b/core/admin/Settings.php index f2883d2..cc0f432 100644 --- a/core/admin/Settings.php +++ b/core/admin/Settings.php @@ -11,8 +11,7 @@ public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Admin\Settings */ - public static function instance() { + public static function instance() : Settings { static $instance = null; if ( ! isset( $instance ) ) { diff --git a/core/display/Loader.php b/core/display/Loader.php index fa25e62..27dc627 100644 --- a/core/display/Loader.php +++ b/core/display/Loader.php @@ -15,22 +15,26 @@ class Loader { public function __construct() { $this->position = is_admin() ? debugpress_plugin()->get( 'button_admin' ) : debugpress_plugin()->get( 'button_frontend' ); + if ( $this->position == 'toolbar' ) { + add_action( 'admin_bar_menu', array( $this, 'display_in_toolbar' ), 1000000 ); + } + if ( is_admin() ) { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } else { add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + add_action( 'login_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } SQLFormat::$pre_attributes = ''; + } - if ( $this->position == 'toolbar' ) { - add_action( 'admin_bar_menu', array( $this, 'display_in_toolbar' ), 1000000 ); - } - + public function run() { if ( is_admin() ) { add_action( 'admin_footer', array( $this, 'debugger_content_prepare' ) ); } else { add_action( 'wp_footer', array( $this, 'debugger_content_prepare' ) ); + add_action( 'login_footer', array( $this, 'debugger_content_prepare' ) ); } } @@ -42,7 +46,7 @@ public function debugger_content_prepare() { add_action( 'shutdown', array( $this, 'debugger_content' ), 1000000 ); } - public static function instance() { + public static function instance() : Loader { static $instance = null; if ( ! isset( $instance ) ) { @@ -257,4 +261,4 @@ private function vars_styling_override() : string { return ''; } } -} \ No newline at end of file +} diff --git a/core/main/AJAX.php b/core/main/AJAX.php index aebefa2..dddc472 100644 --- a/core/main/AJAX.php +++ b/core/main/AJAX.php @@ -14,7 +14,6 @@ public function __construct() { add_action( 'wp_ajax_nopriv_debugpress_load_debuglog', array( $this, 'load_debuglog' ) ); } - /** @return \Dev4Press\Plugin\DebugPress\Main\AJAX */ public static function instance() : AJAX { static $instance = null; diff --git a/core/main/DB.php b/core/main/DB.php index 0b50e96..ace3269 100644 --- a/core/main/DB.php +++ b/core/main/DB.php @@ -16,7 +16,6 @@ public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Main\DB */ public static function instance() : DB { static $instance = null; diff --git a/core/main/Files.php b/core/main/Files.php index 0e6a79d..9b8fd9a 100644 --- a/core/main/Files.php +++ b/core/main/Files.php @@ -14,7 +14,6 @@ public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Main\Files */ public static function instance() : Files { static $instance = null; diff --git a/core/main/OPCache.php b/core/main/OPCache.php index 6ef7dba..e209236 100644 --- a/core/main/OPCache.php +++ b/core/main/OPCache.php @@ -18,7 +18,6 @@ public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Main\OPCache */ public static function instance() : OPCache { static $instance = null; diff --git a/core/main/Plugin.php b/core/main/Plugin.php index 1fd39cd..a390050 100644 --- a/core/main/Plugin.php +++ b/core/main/Plugin.php @@ -12,7 +12,7 @@ class Plugin { private $_settings = array(); private $_defaults = array( - 'pr' => 'prettyprint', + 'pr' => 'kint', 'active' => false, 'admin' => false, 'frontend' => false, @@ -55,12 +55,12 @@ class Plugin { private $_wp_version_real; private $_cp_version; private $_cp_version_real; + private $_rest_request = false; public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Main\Plugin */ public static function instance() : Plugin { static $instance = null; @@ -73,9 +73,25 @@ public static function instance() : Plugin { } private function run() { + add_action( 'rest_api_init', array( $this, 'rest_api' ) ); add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ), 0 ); add_action( 'plugins_loaded', array( $this, 'activation' ), DEBUGPRESS_ACTIVATION_PRIORITY ); add_action( 'init', array( $this, 'init' ) ); + + if ( is_admin() ) { + add_action( 'admin_enqueue_scripts', array( $this, 'loader' ) ); + } else { + add_action( 'wp', array( $this, 'loader' ) ); + add_action( 'login_init', array( $this, 'loader' ) ); + } + } + + public function rest_api() { + $this->_rest_request = defined( 'REST_REQUEST' ) && REST_REQUEST; + } + + public function is_rest_request() : bool { + return $this->_rest_request; } public function wp_version() : string { @@ -126,49 +142,21 @@ public function activation() { debugpress_tracker(); } - private function load_printer( $name = '' ) { - if ( ! function_exists( 'debugpress_r' ) ) { - $name = empty( $name ) ? $this->get( 'pr' ) : 'prettyprint'; - $path = DEBUGPRESS_PLUGIN_PATH . 'core/printer/' . $name . '/load.php'; - - if ( file_exists( $path ) ) { - require_once( $path ); - } else { - $this->load_printer( 'prettyprint' ); - } - } - } - - private function define_constants() { - if ( $this->get( 'auto_wpdebug' ) && ! defined( 'WP_DEBUG' ) ) { - define( 'WP_DEBUG', true ); - } - - if ( $this->get( 'auto_savequeries' ) && ! defined( 'SAVEQUERIES' ) ) { - define( 'SAVEQUERIES', true ); - } - - define( 'DEBUGPRESS_IS_DEBUG', defined( 'WP_DEBUG' ) && WP_DEBUG ); - define( 'DEBUGPRESS_IS_DEBUG_LOG', DEBUGPRESS_IS_DEBUG && defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ); - - $version = str_replace( '.', '', phpversion() ); - $version = intval( substr( $version, 0, 2 ) ); - - define( 'DEBUGPRESS_PHP_VERSION', $version ); - } - public function init() { wp_register_style( 'animated-popup', DEBUGPRESS_PLUGIN_URL . '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 . 'popup/popup.min.js', array( 'jquery' ), $this->_animated_popup_version, true ); wp_register_script( 'debugpress', DEBUGPRESS_PLUGIN_URL . 'js/debugpress' . ( DEBUGPRESS_IS_DEBUG ? '' : '.min' ) . '.js', array( 'animated-popup' ), DEBUGPRESS_VERSION, true ); - if ( ! DEBUGPRESS_IS_AJAX && ! DEBUGPRESS_IS_CRON && $this->_allowed ) { - $allowed = is_admin() ? $this->get( 'admin' ) : $this->get( 'frontend' ); + if ( is_admin() ? $this->get( 'admin' ) : $this->get( 'frontend' ) ) { + Loader::instance(); + } + } - if ( $allowed ) { - Loader::instance(); - } + public function loader() { + if ( ! $this->is_rest_request() && ! DEBUGPRESS_IS_AJAX && ! DEBUGPRESS_IS_CRON && $this->_allowed ) { + Loader::instance()->run(); } } @@ -215,32 +203,6 @@ public function process_settings( $input ) : array { return $settings; } - private function is_user_allowed() : bool { - if ( is_super_admin() ) { - return $this->get( 'for_super_admin' ); - } else if ( is_user_logged_in() ) { - $allowed = $this->get( 'for_roles' ); - - if ( $allowed === true || is_null( $allowed ) ) { - return true; - } else if ( is_array( $allowed ) && empty( $allowed ) ) { - return false; - } else if ( is_array( $allowed ) && ! empty( $allowed ) ) { - global $current_user; - - if ( is_array( $current_user->roles ) ) { - $matched = array_intersect( $current_user->roles, $allowed ); - - return ! empty( $matched ); - } - } - } else { - return $this->get( 'for_visitor' ); - } - - return false; - } - public function environment() : array { $env = array(); @@ -292,4 +254,74 @@ public function build_stats( $key = 'wp_footer' ) : string { return $gd; } + + public function enqueue_print_style() { + wp_enqueue_style( 'debugpress-print' ); + } + + private function is_user_allowed() : bool { + if ( is_super_admin() ) { + return $this->get( 'for_super_admin' ); + } else if ( is_user_logged_in() ) { + $allowed = $this->get( 'for_roles' ); + + if ( $allowed === true || is_null( $allowed ) ) { + return true; + } else if ( is_array( $allowed ) && empty( $allowed ) ) { + return false; + } else if ( is_array( $allowed ) && ! empty( $allowed ) ) { + global $current_user; + + if ( is_array( $current_user->roles ) ) { + $matched = array_intersect( $current_user->roles, $allowed ); + + return ! empty( $matched ); + } + } + } else { + return $this->get( 'for_visitor' ); + } + + return false; + } + + private function load_printer( $name = '' ) { + if ( ! function_exists( 'debugpress_r' ) ) { + $name = empty( $name ) ? $this->get( 'pr' ) : 'prettyprint'; + $path = DEBUGPRESS_PLUGIN_PATH . 'core/printer/' . $name . '/load.php'; + + if ( $name == 'prettyprint' ) { + if ( is_admin() ) { + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_print_style' ) ); + } else { + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_print_style' ) ); + add_action( 'login_enqueue_scripts', array( $this, 'enqueue_print_style' ) ); + } + } + + if ( file_exists( $path ) ) { + require_once( $path ); + } else { + $this->load_printer( 'prettyprint' ); + } + } + } + + private function define_constants() { + if ( $this->get( 'auto_wpdebug' ) && ! defined( 'WP_DEBUG' ) ) { + define( 'WP_DEBUG', true ); + } + + if ( $this->get( 'auto_savequeries' ) && ! defined( 'SAVEQUERIES' ) ) { + define( 'SAVEQUERIES', true ); + } + + define( 'DEBUGPRESS_IS_DEBUG', defined( 'WP_DEBUG' ) && WP_DEBUG ); + define( 'DEBUGPRESS_IS_DEBUG_LOG', DEBUGPRESS_IS_DEBUG && defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ); + + $version = str_replace( '.', '', phpversion() ); + $version = intval( substr( $version, 0, 2 ) ); + + define( 'DEBUGPRESS_PHP_VERSION', $version ); + } } diff --git a/core/main/Scope.php b/core/main/Scope.php index a06d610..1f6b83c 100644 --- a/core/main/Scope.php +++ b/core/main/Scope.php @@ -45,7 +45,6 @@ function __construct() { } } - /** @return \Dev4Press\Plugin\DebugPress\Main\Scope */ public static function instance() : Scope { static $instance = null; diff --git a/core/main/WP.php b/core/main/WP.php index b5c9283..4af01db 100644 --- a/core/main/WP.php +++ b/core/main/WP.php @@ -11,7 +11,6 @@ public function __construct() { } - /** @return \Dev4Press\Plugin\DebugPress\Main\WP */ public static function instance() : WP { static $instance = null; diff --git a/core/printer/kint/autoload.php b/core/printer/kint/autoload.php index b542fe5..949f1f5 100644 --- a/core/printer/kint/autoload.php +++ b/core/printer/kint/autoload.php @@ -2,6 +2,11 @@ // autoload.php @generated by Composer +if (PHP_VERSION_ID < 50600) { + echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; + exit(1); +} + require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitca51731135e08eb5dc8e6d831f11e177::getLoader(); +return ComposerAutoloaderInita9b110c47c3d098ebab405be63c84a1e::getLoader(); diff --git a/core/printer/kint/composer/ClassLoader.php b/core/printer/kint/composer/ClassLoader.php index 247294d..afef3fa 100644 --- a/core/printer/kint/composer/ClassLoader.php +++ b/core/printer/kint/composer/ClassLoader.php @@ -42,30 +42,75 @@ */ class ClassLoader { + /** @var ?string */ private $vendorDir; // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ private $fallbackDirsPsr4 = array(); // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ private $fallbackDirsPsr0 = array(); + /** @var bool */ private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ private $classMap = array(); + + /** @var bool */ private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ private $missingClasses = array(); + + /** @var ?string */ private $apcuPrefix; + /** + * @var self[] + */ private static $registeredLoaders = array(); + /** + * @param ?string $vendorDir + */ public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; } + /** + * @return string[] + */ public function getPrefixes() { if (!empty($this->prefixesPsr0)) { @@ -75,28 +120,47 @@ public function getPrefixes() return array(); } + /** + * @return array[] + * @psalm-return array> + */ public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } + /** + * @return array[] + * @psalm-return array + */ public function getFallbackDirs() { return $this->fallbackDirsPsr0; } + /** + * @return array[] + * @psalm-return array + */ public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } + /** + * @return string[] Array of classname => path + * @psalm-return array + */ public function getClassMap() { return $this->classMap; } /** - * @param array $classMap Class to filename map + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void */ public function addClassMap(array $classMap) { @@ -111,9 +175,11 @@ public function addClassMap(array $classMap) * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void */ public function add($prefix, $paths, $prepend = false) { @@ -156,11 +222,13 @@ public function add($prefix, $paths, $prepend = false) * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException + * + * @return void */ public function addPsr4($prefix, $paths, $prepend = false) { @@ -204,8 +272,10 @@ public function addPsr4($prefix, $paths, $prepend = false) * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void */ public function set($prefix, $paths) { @@ -220,10 +290,12 @@ public function set($prefix, $paths) * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException + * + * @return void */ public function setPsr4($prefix, $paths) { @@ -243,6 +315,8 @@ public function setPsr4($prefix, $paths) * Turns on searching the include path for class files. * * @param bool $useIncludePath + * + * @return void */ public function setUseIncludePath($useIncludePath) { @@ -265,6 +339,8 @@ public function getUseIncludePath() * that have not been registered with the class map. * * @param bool $classMapAuthoritative + * + * @return void */ public function setClassMapAuthoritative($classMapAuthoritative) { @@ -285,6 +361,8 @@ public function isClassMapAuthoritative() * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix + * + * @return void */ public function setApcuPrefix($apcuPrefix) { @@ -305,6 +383,8 @@ public function getApcuPrefix() * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void */ public function register($prepend = false) { @@ -324,6 +404,8 @@ public function register($prepend = false) /** * Unregisters this instance as an autoloader. + * + * @return void */ public function unregister() { @@ -338,7 +420,7 @@ public function unregister() * Loads the given class or interface. * * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise + * @return true|null True if loaded, null otherwise */ public function loadClass($class) { @@ -347,6 +429,8 @@ public function loadClass($class) return true; } + + return null; } /** @@ -401,6 +485,11 @@ public static function getRegisteredLoaders() return self::$registeredLoaders; } + /** + * @param string $class + * @param string $ext + * @return string|false + */ private function findFileWithExtension($class, $ext) { // PSR-4 lookup @@ -472,6 +561,10 @@ private function findFileWithExtension($class, $ext) * Scope isolated include. * * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private */ function includeFile($file) { diff --git a/core/printer/kint/composer/InstalledVersions.php b/core/printer/kint/composer/InstalledVersions.php index 51b79a8..c6b54af 100644 --- a/core/printer/kint/composer/InstalledVersions.php +++ b/core/printer/kint/composer/InstalledVersions.php @@ -1,292 +1,352 @@ + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ namespace Composer; use Composer\Autoload\ClassLoader; use Composer\Semver\VersionParser; - - - - - +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ class InstalledVersions { -private static $installed = array ( - 'root' => - array ( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => NULL, - 'name' => '__root__', - ), - 'versions' => - array ( - '__root__' => - array ( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => NULL, - ), - 'kint-php/kint' => - array ( - 'pretty_version' => '4.1.2', - 'version' => '4.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'fa53c4333cda79dc9cb002cfa029abe994d0ae00', - ), - ), -); -private static $canGetVendors; -private static $installedByVendor = array(); - - - - - - - -public static function getInstalledPackages() -{ -$packages = array(); -foreach (self::getInstalled() as $installed) { -$packages[] = array_keys($installed['versions']); -} - - -if (1 === \count($packages)) { -return $packages[0]; -} - -return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); -} - - - - - - - - - -public static function isInstalled($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (isset($installed['versions'][$packageName])) { -return true; -} -} - -return false; -} - - - - - - - - - - - - - - -public static function satisfies(VersionParser $parser, $packageName, $constraint) -{ -$constraint = $parser->parseConstraints($constraint); -$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - -return $provided->matches($constraint); -} - - - - - - - - - - -public static function getVersionRanges($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -$ranges = array(); -if (isset($installed['versions'][$packageName]['pretty_version'])) { -$ranges[] = $installed['versions'][$packageName]['pretty_version']; -} -if (array_key_exists('aliases', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); -} -if (array_key_exists('replaced', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); -} -if (array_key_exists('provided', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); -} - -return implode(' || ', $ranges); -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['version'])) { -return null; -} - -return $installed['versions'][$packageName]['version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getPrettyVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['pretty_version'])) { -return null; -} - -return $installed['versions'][$packageName]['pretty_version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getReference($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['reference'])) { -return null; -} - -return $installed['versions'][$packageName]['reference']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getRootPackage() -{ -$installed = self::getInstalled(); - -return $installed[0]['root']; -} - - - - - - - -public static function getRawData() -{ -return self::$installed; -} - - - - - - - - - - - - - - - - - - - -public static function reload($data) -{ -self::$installed = $data; -self::$installedByVendor = array(); -} - - - - -private static function getInstalled() -{ -if (null === self::$canGetVendors) { -self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); -} - -$installed = array(); - -if (self::$canGetVendors) { -foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { -if (isset(self::$installedByVendor[$vendorDir])) { -$installed[] = self::$installedByVendor[$vendorDir]; -} elseif (is_file($vendorDir.'/composer/installed.php')) { -$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; -} -} -} - -$installed[] = self::$installed; - -return $installed; -} + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } } diff --git a/core/printer/kint/composer/autoload_classmap.php b/core/printer/kint/composer/autoload_classmap.php index b26f1b1..0fb0a2c 100644 --- a/core/printer/kint/composer/autoload_classmap.php +++ b/core/printer/kint/composer/autoload_classmap.php @@ -2,7 +2,7 @@ // autoload_classmap.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( diff --git a/core/printer/kint/composer/autoload_files.php b/core/printer/kint/composer/autoload_files.php index dd77956..f0f7cc4 100644 --- a/core/printer/kint/composer/autoload_files.php +++ b/core/printer/kint/composer/autoload_files.php @@ -2,7 +2,7 @@ // autoload_files.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( diff --git a/core/printer/kint/composer/autoload_namespaces.php b/core/printer/kint/composer/autoload_namespaces.php index b7fc012..15a2ff3 100644 --- a/core/printer/kint/composer/autoload_namespaces.php +++ b/core/printer/kint/composer/autoload_namespaces.php @@ -2,7 +2,7 @@ // autoload_namespaces.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( diff --git a/core/printer/kint/composer/autoload_psr4.php b/core/printer/kint/composer/autoload_psr4.php index 99a7bdd..92d0316 100644 --- a/core/printer/kint/composer/autoload_psr4.php +++ b/core/printer/kint/composer/autoload_psr4.php @@ -2,7 +2,7 @@ // autoload_psr4.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( diff --git a/core/printer/kint/composer/autoload_real.php b/core/printer/kint/composer/autoload_real.php index 4aa98d8..a6f8791 100644 --- a/core/printer/kint/composer/autoload_real.php +++ b/core/printer/kint/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitca51731135e08eb5dc8e6d831f11e177 +class ComposerAutoloaderInita9b110c47c3d098ebab405be63c84a1e { private static $loader; @@ -22,52 +22,34 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitca51731135e08eb5dc8e6d831f11e177', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInitca51731135e08eb5dc8e6d831f11e177', 'loadClassLoader')); + spl_autoload_register(array('ComposerAutoloaderInita9b110c47c3d098ebab405be63c84a1e', 'loadClassLoader'), true, true); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); + spl_autoload_unregister(array('ComposerAutoloaderInita9b110c47c3d098ebab405be63c84a1e', 'loadClassLoader')); - $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitca51731135e08eb5dc8e6d831f11e177::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } + require __DIR__ . '/autoload_static.php'; + call_user_func(\Composer\Autoload\ComposerStaticInita9b110c47c3d098ebab405be63c84a1e::getInitializer($loader)); $loader->register(true); - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitca51731135e08eb5dc8e6d831f11e177::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } + $includeFiles = \Composer\Autoload\ComposerStaticInita9b110c47c3d098ebab405be63c84a1e::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequireca51731135e08eb5dc8e6d831f11e177($fileIdentifier, $file); + composerRequirea9b110c47c3d098ebab405be63c84a1e($fileIdentifier, $file); } return $loader; } } -function composerRequireca51731135e08eb5dc8e6d831f11e177($fileIdentifier, $file) +/** + * @param string $fileIdentifier + * @param string $file + * @return void + */ +function composerRequirea9b110c47c3d098ebab405be63c84a1e($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; } } diff --git a/core/printer/kint/composer/autoload_static.php b/core/printer/kint/composer/autoload_static.php index 7f501e1..8af6bc3 100644 --- a/core/printer/kint/composer/autoload_static.php +++ b/core/printer/kint/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitca51731135e08eb5dc8e6d831f11e177 +class ComposerStaticInita9b110c47c3d098ebab405be63c84a1e { public static $files = array ( '3917c79c5052b270641b5a200963dbc2' => __DIR__ . '/..' . '/kint-php/kint/init.php', @@ -31,9 +31,9 @@ class ComposerStaticInitca51731135e08eb5dc8e6d831f11e177 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitca51731135e08eb5dc8e6d831f11e177::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitca51731135e08eb5dc8e6d831f11e177::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitca51731135e08eb5dc8e6d831f11e177::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInita9b110c47c3d098ebab405be63c84a1e::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInita9b110c47c3d098ebab405be63c84a1e::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInita9b110c47c3d098ebab405be63c84a1e::$classMap; }, null, ClassLoader::class); } diff --git a/core/printer/kint/composer/installed.json b/core/printer/kint/composer/installed.json index 7ee5ec7..b64172d 100644 --- a/core/printer/kint/composer/installed.json +++ b/core/printer/kint/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "kint-php/kint", - "version": "4.1.2", - "version_normalized": "4.1.2.0", + "version": "4.2.0", + "version_normalized": "4.2.0.0", "source": { "type": "git", "url": "https://github.com/kint-php/kint.git", - "reference": "fa53c4333cda79dc9cb002cfa029abe994d0ae00" + "reference": "0518ee9e1b5b3c7bbf3c9ad837a6591e39dbfab0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kint-php/kint/zipball/fa53c4333cda79dc9cb002cfa029abe994d0ae00", - "reference": "fa53c4333cda79dc9cb002cfa029abe994d0ae00", + "url": "https://api.github.com/repos/kint-php/kint/zipball/0518ee9e1b5b3c7bbf3c9ad837a6591e39dbfab0", + "reference": "0518ee9e1b5b3c7bbf3c9ad837a6591e39dbfab0", "shasum": "" }, "require": { @@ -30,7 +30,7 @@ "kint-php/kint-helpers": "Provides extra helper functions", "kint-php/kint-twig": "Provides d() and s() functions in twig templates" }, - "time": "2022-02-22T20:32:24+00:00", + "time": "2022-08-27T12:15:40+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -64,7 +64,7 @@ ], "support": { "issues": "https://github.com/kint-php/kint/issues", - "source": "https://github.com/kint-php/kint/tree/4.1.2" + "source": "https://github.com/kint-php/kint/tree/4.2.0" }, "install-path": "../kint-php/kint" } diff --git a/core/printer/kint/composer/installed.php b/core/printer/kint/composer/installed.php index 903b00a..1b323d6 100644 --- a/core/printer/kint/composer/installed.php +++ b/core/printer/kint/composer/installed.php @@ -1,33 +1,32 @@ - - array ( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'aliases' => - array ( + array( + 'name' => '__root__', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, ), - 'reference' => NULL, - 'name' => '__root__', - ), - 'versions' => - array ( - '__root__' => - array ( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => NULL, + 'versions' => array( + '__root__' => array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'kint-php/kint' => array( + 'pretty_version' => '4.2.0', + 'version' => '4.2.0.0', + 'reference' => '0518ee9e1b5b3c7bbf3c9ad837a6591e39dbfab0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../kint-php/kint', + 'aliases' => array(), + 'dev_requirement' => true, + ), ), - 'kint-php/kint' => - array ( - 'pretty_version' => '4.1.2', - 'version' => '4.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'fa53c4333cda79dc9cb002cfa029abe994d0ae00', - ), - ), ); diff --git a/core/printer/kint/kint-php/kint/resources/compiled/rich.js b/core/printer/kint/kint-php/kint/resources/compiled/rich.js index 7ab616c..2f0ef6a 100644 --- a/core/printer/kint/kint-php/kint/resources/compiled/rich.js +++ b/core/printer/kint/kint-php/kint/resources/compiled/rich.js @@ -1 +1 @@ -void 0===window.kintRich&&(window.kintRich=function(){"use strict";var l={selectText:function(e){var t=window.getSelection(),a=document.createRange();a.selectNodeContents(e),t.removeAllRanges(),t.addRange(a)},each:function(e,t){Array.prototype.slice.call(document.querySelectorAll(e),0).forEach(t)},hasClass:function(e,t){return!!e.classList&&e.classList.contains(t=void 0===t?"kint-show":t)},addClass:function(e,t){e.classList.add(t=void 0===t?"kint-show":t)},removeClass:function(e,t){return e.classList.remove(t=void 0===t?"kint-show":t),e},toggle:function(e,t){var a=l.getChildren(e);a&&((t=void 0===t?l.hasClass(e):t)?l.removeClass(e):l.addClass(e),1===a.childNodes.length&&(a=a.childNodes[0].childNodes[0])&&l.hasClass(a,"kint-parent")&&l.toggle(a,t))},toggleChildren:function(e,t){var a=l.getChildren(e);if(a){var o=a.getElementsByClassName("kint-parent"),r=o.length;for(void 0===t&&(t=!l.hasClass(e));r--;)l.toggle(o[r],t)}},toggleAll:function(e){for(var t=document.getElementsByClassName("kint-parent"),a=t.length,o=!l.hasClass(e.parentNode);a--;)l.toggle(t[a],o)},switchTab:function(e){var t=e.previousSibling,a=0;for(l.removeClass(e.parentNode.getElementsByClassName("kint-active-tab")[0],"kint-active-tab"),l.addClass(e,"kint-active-tab");t;)1===t.nodeType&&a++,t=t.previousSibling;for(var o=e.parentNode.nextSibling.childNodes,r=0;r"},openInNewWindow:function(e){var t=window.open();t&&(t.document.open(),t.document.write(l.mktag("html")+l.mktag("head")+l.mktag("title")+"Kint ("+(new Date).toISOString()+")"+l.mktag("/title")+l.mktag('meta charset="utf-8"')+l.mktag('script class="kint-rich-script" nonce="'+l.script.nonce+'"')+l.script.innerHTML+l.mktag("/script")+l.mktag('style class="kint-rich-style" nonce="'+l.style.nonce+'"')+l.style.innerHTML+l.mktag("/style")+l.mktag("/head")+l.mktag("body")+'
'+e.parentNode.outerHTML+"
"+l.mktag("/body")),t.document.close())},sortTable:function(e,a){var t=e.tBodies[0];[].slice.call(e.tBodies[0].rows).sort(function(e,t){if(e=e.cells[a].textContent.trim().toLocaleLowerCase(),t=t.cells[a].textContent.trim().toLocaleLowerCase(),isNaN(e)||isNaN(t)){if(isNaN(e)&&!isNaN(t))return 1;if(isNaN(t)&&!isNaN(e))return-1}else e=parseFloat(e),t=parseFloat(t);return eli:not(.kint-active-tab)",function(e){l.isFolderOpen()&&!l.folder.contains(e)||0===e.offsetWidth&&0===e.offsetHeight||l.keyboardNav.targets.push(e)}),e&&-1!==l.keyboardNav.targets.indexOf(e)&&(l.keyboardNav.target=l.keyboardNav.targets.indexOf(e))},sync:function(e){var t=document.querySelector(".kint-focused");t&&l.removeClass(t,"kint-focused"),l.keyboardNav.active&&(t=l.keyboardNav.targets[l.keyboardNav.target],l.addClass(t,"kint-focused"),e||l.keyboardNav.scroll(t))},scroll:function(e){var t,a;e!==l.folder.querySelector("dt > nav")&&(a=(t=function(e){return e.offsetTop+(e.offsetParent?t(e.offsetParent):0)})(e),l.isFolderOpen()?(e=l.folder.querySelector("dd.kint-foldout")).scrollTo(0,a-e.clientHeight/2):window.scrollTo(0,a-window.innerHeight/2))},moveCursor:function(e){for(l.keyboardNav.target+=e;l.keyboardNav.target<0;)l.keyboardNav.target+=l.keyboardNav.targets.length;for(;l.keyboardNav.target>=l.keyboardNav.targets.length;)l.keyboardNav.target-=l.keyboardNav.targets.length;l.keyboardNav.sync()},setCursor:function(e){if(l.isFolderOpen()&&!l.folder.contains(e))return!1;l.keyboardNav.fetchTargets();for(var t=0;t"},openInNewWindow:function(e){var t=window.open();t&&(t.document.open(),t.document.write(l.mktag("html")+l.mktag("head")+l.mktag("title")+"Kint ("+(new Date).toISOString()+")"+l.mktag("/title")+l.mktag('meta charset="utf-8"')+l.mktag('script class="kint-rich-script" nonce="'+l.script.nonce+'"')+l.script.innerHTML+l.mktag("/script")+l.mktag('style class="kint-rich-style" nonce="'+l.style.nonce+'"')+l.style.innerHTML+l.mktag("/style")+l.mktag("/head")+l.mktag("body")+'
'+e.parentNode.outerHTML+"
"+l.mktag("/body")),t.document.close())},sortTable:function(e,a){var t=e.tBodies[0];[].slice.call(e.tBodies[0].rows).sort(function(e,t){if(e=e.cells[a].textContent.trim().toLocaleLowerCase(),t=t.cells[a].textContent.trim().toLocaleLowerCase(),isNaN(e)||isNaN(t)){if(isNaN(e)&&!isNaN(t))return 1;if(isNaN(t)&&!isNaN(e))return-1}else e=parseFloat(e),t=parseFloat(t);return eli:not(.kint-active-tab)").forEach(function(e){l.isFolderOpen()&&!l.folder.contains(e)||0===e.offsetWidth&&0===e.offsetHeight||l.keyboardNav.targets.push(e)}),e&&-1!==l.keyboardNav.targets.indexOf(e)&&(l.keyboardNav.target=l.keyboardNav.targets.indexOf(e))},sync:function(e){var t=document.querySelector(".kint-focused");t&&t.classList.remove("kint-focused"),l.keyboardNav.active&&((t=l.keyboardNav.targets[l.keyboardNav.target]).classList.add("kint-focused"),e||l.keyboardNav.scroll(t))},scroll:function(e){var t,a;e!==l.folder.querySelector("dt > nav")&&(a=(t=function(e){return e.offsetTop+(e.offsetParent?t(e.offsetParent):0)})(e),l.isFolderOpen()?(e=l.folder.querySelector("dd.kint-foldout")).scrollTo(0,a-e.clientHeight/2):window.scrollTo(0,a-window.innerHeight/2))},moveCursor:function(e){for(l.keyboardNav.target+=e;l.keyboardNav.target<0;)l.keyboardNav.target+=l.keyboardNav.targets.length;for(;l.keyboardNav.target>=l.keyboardNav.targets.length;)l.keyboardNav.target-=l.keyboardNav.targets.length;l.keyboardNav.sync()},setCursor:function(e){if(l.isFolderOpen()&&!l.folder.contains(e))return!1;l.keyboardNav.fetchTargets();for(var t=0;tgetConstants() as $name => $val) { + // Skip enum constants + if ($var instanceof UnitEnum && $val instanceof UnitEnum && $o->classname == \get_class($val)) { + continue; + } + $const = Value::blank($name, '\\'.$class.'::'.$name); $const->const = true; $const->depth = $o->depth + 1; diff --git a/core/printer/kint/kint-php/kint/src/Parser/EnumPlugin.php b/core/printer/kint/kint-php/kint/src/Parser/EnumPlugin.php new file mode 100644 index 0000000..3fe25f4 --- /dev/null +++ b/core/printer/kint/kint-php/kint/src/Parser/EnumPlugin.php @@ -0,0 +1,86 @@ +contents = []; + + foreach ($var->cases() as $case) { + $base_obj = Value::blank($class.'::'.$case->name, '\\'.$class.'::'.$case->name); + $base_obj->depth = $o->depth + 1; + + if ($var instanceof BackedEnum) { + $c = $case->value; + $cases->contents[] = $this->parser->parse($c, $base_obj); + } else { + $cases->contents[] = $base_obj; + } + } + + self::$cache[$class] = $cases; + } + + $object = new EnumValue($var); + $object->transplant($o); + + $object->addRepresentation(self::$cache[$class], 0); + + $o = $object; + } +} diff --git a/core/printer/kint/kint-php/kint/src/Parser/Parser.php b/core/printer/kint/kint-php/kint/src/Parser/Parser.php index d658b09..7578120 100644 --- a/core/printer/kint/kint-php/kint/src/Parser/Parser.php +++ b/core/printer/kint/kint-php/kint/src/Parser/Parser.php @@ -34,6 +34,7 @@ use Kint\Zval\Value; use ReflectionObject; use stdClass; +use TypeError; class Parser { @@ -524,7 +525,11 @@ private function parseObject(&$var, Value $o) } $stash = $val; - $copy[$i] = $refmarker; + try { + $copy[$i] = $refmarker; + } catch (TypeError $e) { + $child->reference = true; + } if ($val === $refmarker) { $child->reference = true; $val = $stash; diff --git a/core/printer/kint/kint-php/kint/src/Renderer/Text/EnumPlugin.php b/core/printer/kint/kint-php/kint/src/Renderer/Text/EnumPlugin.php new file mode 100644 index 0000000..efb5ba5 --- /dev/null +++ b/core/printer/kint/kint-php/kint/src/Renderer/Text/EnumPlugin.php @@ -0,0 +1,44 @@ +depth) { + $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL; + } + + $out .= $this->renderer->renderHeader($o).PHP_EOL; + + return $out; + } +} diff --git a/core/printer/kint/kint-php/kint/src/Renderer/TextRenderer.php b/core/printer/kint/kint-php/kint/src/Renderer/TextRenderer.php index 0cfba52..3421e13 100644 --- a/core/printer/kint/kint-php/kint/src/Renderer/TextRenderer.php +++ b/core/printer/kint/kint-php/kint/src/Renderer/TextRenderer.php @@ -42,6 +42,7 @@ class TextRenderer extends Renderer 'microtime' => 'Kint\\Renderer\\Text\\MicrotimePlugin', 'recursion' => 'Kint\\Renderer\\Text\\RecursionPlugin', 'trace' => 'Kint\\Renderer\\Text\\TracePlugin', + 'enum' => 'Kint\\Renderer\\Text\\EnumPlugin', ]; /** @@ -55,6 +56,7 @@ class TextRenderer extends Renderer 'Kint\\Parser\\MicrotimePlugin', 'Kint\\Parser\\StreamPlugin', 'Kint\\Parser\\TracePlugin', + 'Kint\\Parser\\EnumPlugin', ]; /** diff --git a/core/printer/kint/kint-php/kint/src/Utils.php b/core/printer/kint/kint-php/kint/src/Utils.php index 5143731..aa62bf6 100644 --- a/core/printer/kint/kint-php/kint/src/Utils.php +++ b/core/printer/kint/kint-php/kint/src/Utils.php @@ -109,6 +109,10 @@ public static function composerGetExtras($key = 'kint') if (\file_exists($installed) && \is_readable($installed)) { $packages = \json_decode(\file_get_contents($installed), true); + if (!\is_array($packages)) { + continue; + } + foreach ($packages as $package) { if (isset($package['extra'][$key]) && \is_array($package['extra'][$key])) { $extras = \array_replace($extras, $package['extra'][$key]); diff --git a/core/printer/kint/kint-php/kint/src/Zval/EnumValue.php b/core/printer/kint/kint-php/kint/src/Zval/EnumValue.php new file mode 100644 index 0000000..018eb68 --- /dev/null +++ b/core/printer/kint/kint-php/kint/src/Zval/EnumValue.php @@ -0,0 +1,62 @@ +enumval = $enumval; + } + + public function getValueShort() + { + if ($this->enumval instanceof BackedEnum) { + if (\is_string($this->enumval->value)) { + return '"'.$this->enumval->value.'"'; + } + if (\is_int($this->enumval->value)) { + return (string) $this->enumval->value; + } + } + } + + public function getType() + { + return $this->classname.'::'.$this->enumval->name; + } + + public function getSize() + { + } +} diff --git a/core/printer/kint/load.php b/core/printer/kint/load.php index 067132b..6b3df26 100644 --- a/core/printer/kint/load.php +++ b/core/printer/kint/load.php @@ -53,5 +53,5 @@ function debugpress_rx( $value, $footer = true ) : string { Kint::$display_called_from = true; } - return (string)$show; + return (string) $show; } diff --git a/core/printer/prettyprint/PrettyPrint.php b/core/printer/prettyprint/PrettyPrint.php index 96a2a60..9e07233 100644 --- a/core/printer/prettyprint/PrettyPrint.php +++ b/core/printer/prettyprint/PrettyPrint.php @@ -55,8 +55,8 @@ public function __construct() { $this->STR_RES_DESC = _x( "%s type", "PrettyPrint message", "debugpress" ); $this->STR_ARR_DESC = _x( "%d elements", "PrettyPrint message", "debugpress" ); $this->STR_OBJ_DESC = _x( "%d properties", "PrettyPrint message", "debugpress" ); - $this->STR_ARR_DESC = _x( "Called From", "PrettyPrint message", "debugpress" ); - $this->STR_OBJ_DESC = _x( "line", "PrettyPrint message", "debugpress" ); + $this->STR_FOOTER_CALL = _x( "Called From", "PrettyPrint message", "debugpress" ); + $this->STR_FOOTER_LINE = _x( "line", "PrettyPrint message", "debugpress" ); } public static function init() : PrettyPrint { diff --git a/core/track/Tracker.php b/core/track/Tracker.php index 777af02..da1c77b 100644 --- a/core/track/Tracker.php +++ b/core/track/Tracker.php @@ -77,7 +77,6 @@ public function __construct() { do_action( 'debugpress-tracker-getting-ready' ); } - /** @return \Dev4Press\Plugin\DebugPress\Track\Tracker */ public static function instance() : Tracker { static $instance = null; diff --git a/css/debugpress.css b/css/debugpress.css index 9bc557c..bfee083 100644 --- a/css/debugpress.css +++ b/css/debugpress.css @@ -1,7 +1,6 @@ :root { --debugpress-base-font-size: 13px; --debugpress-sql-font-size: 13px; - --debugpress-pretty-font-size: 12px; } @font-face { @@ -215,173 +214,6 @@ a > .debugpress-icon { float: right; } -.debugpress_r { - font-size: var(--debugpress-pretty-font-size); - font-family: Consolas, "Lucida Console", monospace; - line-height: 140%; - 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: white; - border: 1px solid black; - 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: red; - background: none; - padding: 0; - margin: 0; - border: 0; - font: 11px Consolas, "Liberation Mono", Courier, monospace; - font-weight: bold; -} -.debugpress_r .debugpress_r_c { - display: block; - text-decoration: none; - color: #222; - padding: 2px; - overflow: hidden; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - 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: bold; -} -.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: bold; -} -.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: normal; - 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: normal; - color: #008; -} -.debugpress_r.debugpress_r_root .debugpress_r_rn { - font-weight: bold; - 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 { - 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: bold; - color: #050; -} -.debugpress_rs.debugpress_rs_bool.debugpress_rs_bool_false { - color: #700; -} - .debugpress-clearfix:before, .debugpress-clearfix:after { content: " "; @@ -893,16 +725,13 @@ a > .debugpress-icon { 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; } @@ -914,7 +743,6 @@ a > .debugpress-icon { #debugpress-debugger-tab-queries .debugpress-grid .three-quarters { width: 55%; } - .debugpress-debugger-footer-left div { display: block; } diff --git a/css/debugpress.min.css b/css/debugpress.min.css index 5ac3a8b..c19921b 100644 --- a/css/debugpress.min.css +++ b/css/debugpress.min.css @@ -1 +1 @@ -:root{--debugpress-base-font-size: 13px;--debugpress-sql-font-size: 13px;--debugpress-pretty-font-size: 12px}@font-face{font-family:"debugpress";src:url(fonts/debugpress.eot?1.0);src:url(fonts/debugpress.eot?1.0#iefix) format("embedded-opentype"),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"),url(fonts/debugpress.ttf?1.0) format("truetype"),url(fonts/debugpress.svg?1.0#debugpress) format("svg");font-weight:400;font-style:normal;font-display:swap}i.debugpress-icon{font:14px "debugpress";font-size:inherit;text-transform:none;display:inline-block;vertical-align:text-bottom;speak:none;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-bug:before{content:"\f101"}.debugpress-icon.debugpress-icon-caret-down:before{content:"\f102"}.debugpress-icon.debugpress-icon-caret-right:before{content:"\f103"}.debugpress-icon.debugpress-icon-exclamation:before{content:"\f104"}.debugpress-icon.debugpress-icon-file:before{content:"\f105"}.debugpress-icon.debugpress-icon-minus:before{content:"\f106"}.debugpress-icon.debugpress-icon-plus:before{content:"\f107"}.debugpress-icon.debugpress-icon-power-off:before{content:"\f108"}.debugpress-icon.debugpress-icon-tools:before{content:"\f109"}.debugpress-icon-fw{width:1.28571429em;text-align:center}.debugpress-icon-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.debugpress-icon-2x{font-size:2em}.debugpress-icon-3x{font-size:3em}.debugpress-icon-4x{font-size:4em}.debugpress-icon-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.debugpress-icon-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.debugpress-icon-flip-both,.debugpress-icon-flip-horizontal.debugpress-icon-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.debugpress-grid,.debugpress-unit{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-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}.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-li,.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-tools-li,.pull-right{float:right}.debugpress_r{font-size:var(--debugpress-pretty-font-size);font-family:Consolas,"Lucida Console",monospace;line-height:140%;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;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;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-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_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}.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"!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 a,.debugpress-debug-dialog-button.debugpress-debug-has-warnings a:hover{color:#ff0!important}.debugpress-debug-dialog-button.debugpress-debug-has-errors a,.debugpress-debug-dialog-button.debugpress-debug-has-errors a:hover{color:#ff3232!important}.debugpress-style-popup{color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.4em;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.4em;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{-webkit-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:33px}.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{-webkit-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 a{color:#eee;box-shadow:none;outline:0;text-decoration:none}.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active{background:#fff}.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-tools-li i{font-size:120%;vertical-align:text-bottom}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content{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!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-querie-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-querie-sidebar-control span{font-size:calc(var(--debugpress-base-font-size) + 4px);cursor:pointer;padding-right:4px}.debugpress-style-popup .debugpress-querie-sidebar-control span i.debugpress-icon{vertical-align:text-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-queries .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child{width:60%}.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 .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-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:5px 15px;font-size:calc(var(--debugpress-base-font-size) + 3px)}@media screen and (max-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 (max-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 (max-width:800px){.debugpress-style-popup .debugpress-querie-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 (max-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}} \ No newline at end of file +:root{--debugpress-base-font-size:13px;--debugpress-sql-font-size:13px}@font-face{font-family:"debugpress";src:url(fonts/debugpress.eot?1.0);src:url(fonts/debugpress.eot?1.0#iefix) format("embedded-opentype"),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"),url(fonts/debugpress.ttf?1.0) format("truetype"),url(fonts/debugpress.svg?1.0#debugpress) format("svg");font-weight:400;font-style:normal;font-display:swap}i.debugpress-icon{font:14px "debugpress";font-size:inherit;text-transform:none;display:inline-block;vertical-align:text-bottom;speak:none;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-bug:before{content:"\f101"}.debugpress-icon.debugpress-icon-caret-down:before{content:"\f102"}.debugpress-icon.debugpress-icon-caret-right:before{content:"\f103"}.debugpress-icon.debugpress-icon-exclamation:before{content:"\f104"}.debugpress-icon.debugpress-icon-file:before{content:"\f105"}.debugpress-icon.debugpress-icon-minus:before{content:"\f106"}.debugpress-icon.debugpress-icon-plus:before{content:"\f107"}.debugpress-icon.debugpress-icon-power-off:before{content:"\f108"}.debugpress-icon.debugpress-icon-tools:before{content:"\f109"}.debugpress-icon-fw{width:1.28571429em;text-align:center}.debugpress-icon-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.debugpress-icon-2x{font-size:2em}.debugpress-icon-3x{font-size:3em}.debugpress-icon-4x{font-size:4em}.debugpress-icon-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.debugpress-icon-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.debugpress-icon-flip-both,.debugpress-icon-flip-horizontal.debugpress-icon-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.debugpress-grid,.debugpress-unit{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-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}.debugpress-style-popup #debugpress-debugger-tabs li#debugpress-debugger-tab-debuglog-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"!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 a,.debugpress-debug-dialog-button.debugpress-debug-has-warnings a:hover{color:#ff0!important}.debugpress-debug-dialog-button.debugpress-debug-has-errors a,.debugpress-debug-dialog-button.debugpress-debug-has-errors a:hover{color:#ff3232!important}.debugpress-style-popup{color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.4em;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.4em;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{-webkit-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:33px}.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{-webkit-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 a{color:#eee;box-shadow:none;outline:0;text-decoration:none}.debugpress-style-popup #debugpress-debugger-tabs li.debugpress-tab-active{background:#fff}.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-tools-li i{font-size:120%;vertical-align:text-bottom}.debugpress-style-popup #debugpress-debugger-content-wrapper .debugpress-tab-content{display:none}.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{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-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!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-querie-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-querie-sidebar-control span{font-size:calc(var(--debugpress-base-font-size) + 4px);cursor:pointer;padding-right:4px}.debugpress-style-popup .debugpress-querie-sidebar-control span i.debugpress-icon{vertical-align:text-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-queries .debugpress-debugger-table.debugpress-table-keyvalue tr td:first-child{width:60%}.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 .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-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:5px 15px;font-size:calc(var(--debugpress-base-font-size) + 3px)}@media screen and (max-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 (max-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 (max-width:800px){.debugpress-style-popup .debugpress-querie-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 (max-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}} \ No newline at end of file diff --git a/css/prettyprint.css b/css/prettyprint.css new file mode 100644 index 0000000..4a94fe6 --- /dev/null +++ b/css/prettyprint.css @@ -0,0 +1,170 @@ +:root { + --debugpress-pretty-font-size: 12px; +} + +.debugpress_r { + font-size: var(--debugpress-pretty-font-size); + font-family: Consolas, "Lucida Console", monospace; + line-height: 140%; + 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: white; + border: 1px solid black; + 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: red; + background: none; + padding: 0; + margin: 0; + border: 0; + font: 11px Consolas, "Liberation Mono", Courier, monospace; + font-weight: bold; +} +.debugpress_r .debugpress_r_c { + display: block; + text-decoration: none; + color: #222; + padding: 2px; + overflow: hidden; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + 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: bold; +} +.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: bold; +} +.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: normal; + 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: normal; + color: #008; +} +.debugpress_r.debugpress_r_root .debugpress_r_rn { + font-weight: bold; + 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 { + 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: bold; + 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 new file mode 100644 index 0000000..f9a691f --- /dev/null +++ b/css/prettyprint.min.css @@ -0,0 +1 @@ +:root{--debugpress-pretty-font-size:12px}.debugpress_r{font-size:var(--debugpress-pretty-font-size);font-family:Consolas,"Lucida Console",monospace;line-height:140%;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;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;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 ca008af..be3fe6f 100644 --- a/debugpress.php +++ b/debugpress.php @@ -3,11 +3,11 @@ /* Plugin Name: DebugPress Plugin URI: https://debug.press/ -Description: DebugPress is an easy to use plugin implementing popup for debugging and profiling currently loaded WordPress powered website page with support for intercepting AJAX requests. +Description: DebugPress is an easy-to-use plugin implementing popup for debugging and profiling currently loaded WordPress powered website page with support for intercepting AJAX requests. Author: Milan Petrovic Author URI: https://www.dev4press.com/ Text Domain: debugpress -Version: 1.9 +Version: 2.0 Requires at least: 5.2 Tested up to: 6.0 Requires PHP: 7.2 @@ -31,7 +31,7 @@ along with this program. If not, see */ -const DEBUGPRESS_VERSION = '1.8'; +const DEBUGPRESS_VERSION = '2.0'; const DEBUGPRESS_FILE = __FILE__; const DEBUGPRESS_PLUGIN_PATH = __DIR__ . '/'; diff --git a/js/debugpress.js b/js/debugpress.js index 89b16b8..3a703c5 100644 --- a/js/debugpress.js +++ b/js/debugpress.js @@ -21,7 +21,7 @@ sort_by: function(source, attr, order, cls) { var i, elms = [], list = [], keys = [], key; - $(source + " div." + cls).each(function(index) { + $(source + " div." + cls).each(function() { key = $(this).attr(attr); elms[key] = this; diff --git a/js/debugpress.min.js b/js/debugpress.min.js index 5cde48f..dd4fa93 100644 --- a/js/debugpress.min.js +++ b/js/debugpress.min.js @@ -1 +1 @@ -!function(n,s,o){s.wp=s.wp||{},s.wp.dev4press=s.wp.dev4press||{},s.wp.dev4press.debugpress={ajax:!1,tab:"",status:{sql_sort:"order",sql_order:"asc"},counts:{total:0,errors:0,doingitwrong:0,deprecated:0},sort_by:function(t,e,s,r){var a,o,l=[],p=[],i=[];for(a in n(t+" div."+r).each(function(s){o=n(this).attr(e),l[o]=this,i.push(o)}),"asc"===s?i.sort(function(s,e){return s-e}):i.sort(function(s,e){return e-s}),i)p.push(l[i[a]]);n(t).empty(),n.each(p,function(s,e){n(t).append(e)})},init:function(s,e){wp.dev4press.debugpress.counts=s,wp.dev4press.debugpress.ajax=e,0