';
}
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;
}
}