Skip to content

Commit 9af5554

Browse files
committed
fix blurry dynamic content images
1 parent 81f1002 commit 9af5554

File tree

5 files changed

+67
-0
lines changed

5 files changed

+67
-0
lines changed

.config/webpack.config.dev.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ module.exports = [
181181
'frontend_block_progress_bar': path.resolve( __dirname, '../src/block/progress-bar/frontend-progress-bar.js' ),
182182
'frontend_block_horizontal_scroller': path.resolve( __dirname, '../src/block/horizontal-scroller/frontend-horizontal-scroller.js' ),
183183
'frontend_block_tabs': path.resolve( __dirname, '../src/block/tabs/frontend-tabs.js' ),
184+
'frontend_image_optimizer_polyfill': path.resolve( __dirname, '../src/block-components/image/image-optimizer-polyfill.js' ),
184185
},
185186

186187
output: {

.config/webpack.config.prod.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ module.exports = [
166166
'frontend_block_progress_bar': path.resolve( __dirname, '../src/block/progress-bar/frontend-progress-bar.js' ),
167167
'frontend_block_horizontal_scroller': path.resolve( __dirname, '../src/block/horizontal-scroller/frontend-horizontal-scroller.js' ),
168168
'frontend_block_tabs': path.resolve( __dirname, '../src/block/tabs/frontend-tabs.js' ),
169+
'frontend_image_optimizer_polyfill': path.resolve( __dirname, '../src/block-components/image/image-optimizer-polyfill.js' ),
169170
},
170171

171172
output: {

plugin.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ function is_frontend() {
252252
require_once( plugin_dir_path( __FILE__ ) . 'src/block/columns/index.php' );
253253
require_once( plugin_dir_path( __FILE__ ) . 'src/block/timeline/index.php' );
254254
require_once( plugin_dir_path( __FILE__ ) . 'src/block/icon-label/deprecated.php' );
255+
require_once( plugin_dir_path( __FILE__ ) . 'src/block-components/image/index.php' );
255256
}
256257

257258
/**
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* WordPress dependencies
3+
*/
4+
import domReady from '@wordpress/dom-ready'
5+
6+
class ImageOptimizerPolyfill {
7+
init = () => {
8+
const imgs = document.querySelectorAll( '.stk-block img' )
9+
imgs.forEach( img => {
10+
if ( img.hasAttribute( 'srcset' ) ) {
11+
let srcset = img.getAttribute( 'srcset' )
12+
const pattern = /https?:\/\/[^\s,]+/g
13+
const urls = srcset.match( pattern )
14+
15+
urls.forEach( url => {
16+
const index = url.indexOf( '&fit' )
17+
if ( index !== -1 ) {
18+
const newUrl = url.slice( 0, index )
19+
srcset = srcset.replace( url, newUrl )
20+
}
21+
} )
22+
23+
img.setAttribute( 'srcset', srcset )
24+
}
25+
26+
if ( img.getAttribute( 'src' ).indexOf( '&fit' ) !== -1 ) {
27+
const src = img.getAttribute( 'src' )
28+
const index = src.indexOf( '&fit' )
29+
const newSrc = src.slice( 0, index )
30+
img.setAttribute( 'src', newSrc )
31+
}
32+
} )
33+
}
34+
}
35+
36+
window.ImageOptimizerPolyfill = new ImageOptimizerPolyfill()
37+
domReady( window.ImageOptimizerPolyfill.init )
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
// Exit if accessed directly.
4+
if ( ! defined( 'ABSPATH' ) ) {
5+
exit;
6+
}
7+
8+
if ( ! function_exists( 'stackable_load_image_optimizer_polyfill_frontend_script' ) ) {
9+
function stackable_load_image_optimizer_polyfill_frontend_script( $block_content, $block ) {
10+
if ( ! is_admin() ) {
11+
wp_enqueue_script(
12+
'stk-frontend-image-optimizer-polyfill',
13+
plugins_url( 'dist/frontend_image_optimizer_polyfill.js', STACKABLE_FILE ),
14+
array(),
15+
STACKABLE_VERSION,
16+
true
17+
);
18+
19+
// Only do this once.
20+
remove_action( 'stackable/enqueue_scripts', 'stackable_load_image_optimizer_polyfill_frontend_script', 10 );
21+
}
22+
}
23+
24+
if ( ! is_admin() ) {
25+
add_action( 'stackable/enqueue_scripts', 'stackable_load_image_optimizer_polyfill_frontend_script', 10, 2 );
26+
}
27+
}

0 commit comments

Comments
 (0)