*/ private array $assets = array(); private bool $localized = false; public static function instance(): self { return self::$instance ??= new self(); } private function __construct() { if ( ! is_admin() ) { return; } add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); add_filter( 'script_loader_tag', array( $this, 'force_module_attribute' ), 10, 3 ); } public function enqueue_assets(): void { if ( ! function_exists( 'get_current_screen' ) ) { return; } $screen = get_current_screen(); $screen_id = $screen->id ?? ''; if ( 'ipscmi-corekit-plugins_page_ipscmi_corekit_system_status' !== $screen_id ) { return; } if ( ! $this->owns_screen() ) { return; } $assets = $this->get_assets(); if ( empty( $assets ) ) { return; } wp_enqueue_script( 'wp-api-fetch' ); wp_enqueue_script( 'wp-api' ); wp_add_inline_script( 'wp-api-fetch', sprintf( 'window.wpApiSettings = window.wpApiSettings || { root: %s, nonce: %s, versionString: "wp/v2/" };', wp_json_encode( untrailingslashit( rest_url() ) . '/' ), wp_json_encode( wp_create_nonce( 'wp_rest' ) ) ), 'before' ); $css_handles = $this->register_assets( $assets ); wp_enqueue_script( self::HANDLE ); foreach ( $css_handles as $css_handle ) { wp_enqueue_style( $css_handle ); } if ( ! $this->localized ) { $data = array( 'restUrl' => untrailingslashit( rest_url() ) . '/', 'restNonce' => wp_create_nonce( 'wp_rest' ), 'endpoint' => 'ipscmi-corekit-system/v1/status', ); wp_localize_script( self::HANDLE, 'ipscmiCoreKitSystemStatusAdminData', $data ); $this->localized = true; } } private function owns_screen(): bool { if ( ! defined( 'IPSCMI_COREKIT_SYSTEM_STATUS_OWNER' ) || ! defined( 'IPSCMI_ORDER_CART_COREKIT_PLUGIN_PATH' ) ) { return false; } return wp_normalize_path( (string) IPSCMI_COREKIT_SYSTEM_STATUS_OWNER ) === wp_normalize_path( (string) IPSCMI_ORDER_CART_COREKIT_PLUGIN_PATH ); } /** * Ensure type="module" for our handle. */ public function force_module_attribute( string $tag, string $handle, string $src ): string { if ( self::HANDLE !== $handle ) { return $tag; } if ( strpos( $tag, ' type=' ) !== false ) { $tag = preg_replace( '/type=("|\')text\/javascript("|\')/i', 'type="module"', $tag ); } else { $tag = str_replace( '