'; } return $tag; }, 10, 3 ); add_filter( 'script_loader_src', function( $src, $handle ) { if ( strpos( $handle, self::SCRIPT_HANDLE ) !== false && strpos( $src, '?ver=' ) ) { return remove_query_arg( 'ver', $src ); } return $src; }, 10, 2 ); return $script_handle; } public static function enqueue_preload( $script ) { add_action( 'admin_head', function() use ( $script ) { if ( NJFB_DEVELOPMENT ) { echo ''; } else { foreach ( self::imports_urls( $script ) as $url ) { echo ( '' ); } } } ); } public static function register( $entry ) { $url = NJFB_DEVELOPMENT ? self::HOST . $entry : self::asset_url( $entry ); if ( ! $url ) { return ''; } // wp_enqueue_script( self::CLIENT_SCRIPT_HANDLE, self::HOST . '@vite/client', array(), NJFB_VERSION, false ); wp_enqueue_script( "module/filebird/$entry", $url, false, true, NJFB_DEVELOPMENT ? true : false ); return "module/filebird/$entry"; } private static function css_tag( string $entry ): string { // not needed on dev, it's inject by Vite if ( NJFB_DEVELOPMENT ) { return ''; } $tags = ''; foreach ( self::css_urls( $entry ) as $key => $url ) { wp_enqueue_style( "filebird/$key", $url, array(), NJFB_VERSION ); } return $tags; } // Helpers to locate files private static function get_manifest(): array { // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents $content = file_get_contents( NJFB_PLUGIN_PATH . 'assets/dist/manifest.json' ); return json_decode( $content, true ); } private static function asset_url( string $entry ): string { $manifest = self::get_manifest(); return isset( $manifest[ $entry ] ) ? self::base_path() . $manifest[ $entry ]['file'] : self::base_path() . $entry; } private static function get_public_url_base() { return NJFB_DEVELOPMENT ? '/dist/' : self::base_path(); } private static function imports_urls( string $entry ): array { $urls = array(); $manifest = self::get_manifest(); if ( ! empty( $manifest[ $entry ]['imports'] ) ) { foreach ( $manifest[ $entry ]['imports'] as $imports ) { $urls[] = self::get_public_url_base() . $manifest[ $imports ]['file']; } } return $urls; } private static function css_urls( string $entry ): array { $urls = array(); $manifest = self::get_manifest(); if ( ! empty( $manifest[ $entry ]['css'] ) ) { foreach ( $manifest[ $entry ]['css'] as $file ) { $urls[ "filebird_entry_$file" ] = self::get_public_url_base() . $file; } } if ( ! empty( $manifest[ $entry ]['imports'] ) ) { foreach ( $manifest[ $entry ]['imports'] as $imports ) { if ( ! empty( $manifest[ $imports ]['css'] ) ) { foreach ( $manifest[ $imports ]['css'] as $css ) { $urls[ "filebird_imports_$css" ] = self::get_public_url_base() . $css; } } } } return $urls; } }