Skip to content

Commit 146bbd2

Browse files
feat: add possibility to change cloudimage responsive selector
1 parent 54c69fb commit 146bbd2

File tree

8 files changed

+40
-22
lines changed

8 files changed

+40
-22
lines changed

examples/plain/src/init.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ window.ciResponsive = new window.CIResponsive({
77
exactSize: false,
88
limitFactor: 10,
99

10+
// imgSelector: 'data-src',
11+
// bgSelector: 'data-bg-src'
12+
1013
//ignoreNodeImgSize: false,
1114
//saveNodeImgRatio: false,
1215
//ignoreStyleImgSize: false,

src/blur-hash/ci.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { DEVICE_PIXEL_RATIO_LIST } from 'cloudimage-responsive-utils/dist/consta
44

55
export const getInitialConfigBlurHash = (config) => {
66
const {
7+
imgSelector = 'ci-src',
8+
bgSelector = 'ci-bg-url',
79
token = '',
810
domain = 'cloudimg.io',
911
lazyLoading = false,
@@ -29,6 +31,8 @@ export const getInitialConfigBlurHash = (config) => {
2931
} = config;
3032

3133
return {
34+
imgSelector,
35+
bgSelector,
3236
token,
3337
domain,
3438
lazyLoading,

src/blur-hash/ci.service.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ export default class CIResponsive {
5757
const windowScreenBecomesBigger = this.innerWidth < window.innerWidth;
5858

5959
if (isUpdate) {
60-
images = document.querySelectorAll('img[ci-src]');
61-
backgroundImages = document.querySelectorAll('[ci-bg-url]');
60+
images = document.querySelectorAll(`img[${this.config.imgSelector}]`);
61+
backgroundImages = document.querySelectorAll(`[${this.config.imgSelector}]`);
6262
} else {
63-
images = filterImages(document.querySelectorAll('img[ci-src]'), 'ci-image');
64-
backgroundImages = filterImages(document.querySelectorAll('[ci-bg-url]'), 'ci-bg');
63+
images = filterImages(document.querySelectorAll(`img[${this.config.imgSelector}]`), 'ci-image');
64+
backgroundImages = filterImages(document.querySelectorAll(`[${this.config.imgSelector}]`), 'ci-bg');
6565
}
6666

6767
if (images.length > -1) {
@@ -80,8 +80,9 @@ export default class CIResponsive {
8080
getBasicInfo = (imgNode, isUpdate, windowScreenBecomesBigger, type) => {
8181
const isImage = type === 'image';
8282
const { config } = this;
83-
const { baseURL, lazyLoading, presets, devicePixelRatioList } = config;
84-
const imgProps = isImage ? getImageProps(imgNode) : getBackgroundImageProps(imgNode);
83+
const { baseURL, lazyLoading, presets, devicePixelRatioList, imgSelector, bgSelector } = config;
84+
const imgProps = isImage ?
85+
getImageProps(imgNode, imgSelector) : getBackgroundImageProps(imgNode, bgSelector);
8586
const { params, imgNodeSRC, blurHash, isLazyCanceled, sizes, isAdaptive, preserveSize, minWindowWidth } = imgProps;
8687

8788
if (!imgNodeSRC) return;

src/common/ci.utils.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ const getSize = (sizes) => {
7373
return resultSizes;
7474
}
7575

76-
export const getImageProps = (image) => {
76+
export const getImageProps = (image, imgSelector) => {
7777
const props = {
7878
...getCommonImageProps(image),
79-
imgNodeSRC: attr(image, 'ci-src') || attr(image, 'data-ci-src') || undefined
79+
imgNodeSRC: attr(image, imgSelector) || undefined
8080
};
8181
const params = {
8282
...getParamsFromURL(props.imgNodeSRC || ''),
@@ -91,10 +91,10 @@ export const getImageProps = (image) => {
9191
};
9292
};
9393

94-
export const getBackgroundImageProps = (image) => {
94+
export const getBackgroundImageProps = (image, bgSelector) => {
9595
const props = {
9696
...getCommonImageProps(image),
97-
imgNodeSRC: attr(image, 'ci-bg-url') || attr(image, 'data-ci-bg-url') || undefined,
97+
imgNodeSRC: attr(image, bgSelector)|| undefined,
9898
minWindowWidth: attr(image, 'ci-min-window-width') || attr(image, 'data-min-window-width') || undefined
9999
};
100100
const params = {

src/low-preview/ci.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { DEVICE_PIXEL_RATIO_LIST } from 'cloudimage-responsive-utils/dist/consta
44

55
export const getInitialConfigLowPreview = (config) => {
66
const {
7+
imgSelector = 'ci-src',
8+
bgSelector = 'ci-bg-url',
79
token = '',
810
domain = 'cloudimg.io',
911
lazyLoading = false,
@@ -34,6 +36,8 @@ export const getInitialConfigLowPreview = (config) => {
3436
} = config;
3537

3638
return {
39+
imgSelector,
40+
bgSelector,
3741
token,
3842
domain,
3943
lazyLoading,

src/low-preview/ci.service.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ export default class CIResponsive {
6060
const windowScreenBecomesBigger = this.innerWidth < window.innerWidth;
6161

6262
if (isUpdate) {
63-
images = document.querySelectorAll('img[ci-src]');
64-
backgroundImages = document.querySelectorAll('[ci-bg-url]');
63+
images = document.querySelectorAll(`img[${this.config.imgSelector}]`);
64+
backgroundImages = document.querySelectorAll(`[${this.config.imgSelector}]`);
6565
} else {
66-
images = filterImages(document.querySelectorAll('img[ci-src]'), 'ci-image');
67-
backgroundImages = filterImages(document.querySelectorAll('[ci-bg-url]'), 'ci-bg');
66+
images = filterImages(document.querySelectorAll(`img[${this.config.imgSelector}]`), 'ci-image');
67+
backgroundImages = filterImages(document.querySelectorAll(`[${this.config.imgSelector}]`), 'ci-bg');
6868
}
6969

7070
if (images.length > -1) {
@@ -83,8 +83,9 @@ export default class CIResponsive {
8383
getBasicInfo = (imgNode, isUpdate, windowScreenBecomesBigger, type) => {
8484
const isImage = type === 'image';
8585
const { config } = this;
86-
const { baseURL, lazyLoading, presets, devicePixelRatioList, minLowQualityWidth } = config;
87-
const imgProps = isImage ? getImageProps(imgNode) : getBackgroundImageProps(imgNode);
86+
const { baseURL, lazyLoading, presets, devicePixelRatioList, minLowQualityWidth, imgSelector, bgSelector } = config;
87+
const imgProps = isImage ?
88+
getImageProps(imgNode, imgSelector) : getBackgroundImageProps(imgNode, bgSelector);
8889
const { params, imgNodeSRC, isLazyCanceled, sizes, isAdaptive, preserveSize, minWindowWidth } = imgProps;
8990

9091
if (!imgNodeSRC) return;

src/plain/ci.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { DEVICE_PIXEL_RATIO_LIST } from 'cloudimage-responsive-utils/dist/consta
44

55
export const getInitialConfigPlain = (config) => {
66
const {
7+
imgSelector = 'ci-src',
8+
bgSelector = 'ci-bg-url',
79
token = '',
810
domain = 'cloudimg.io',
911
lazyLoading = false,
@@ -27,6 +29,8 @@ export const getInitialConfigPlain = (config) => {
2729
} = config;
2830

2931
return {
32+
imgSelector,
33+
bgSelector,
3034
token,
3135
domain,
3236
lazyLoading,

src/plain/ci.service.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ export default class CIResponsive {
4848
const windowScreenBecomesBigger = this.innerWidth < window.innerWidth;
4949

5050
if (isUpdate) {
51-
images = document.querySelectorAll('img[ci-src]');
52-
backgroundImages = document.querySelectorAll('[ci-bg-url]');
51+
images = document.querySelectorAll(`img[${this.config.imgSelector}]`);
52+
backgroundImages = document.querySelectorAll(`[${this.config.imgSelector}]`);
5353
} else {
54-
images = filterImages(document.querySelectorAll('img[ci-src]'), 'ci-image');
55-
backgroundImages = filterImages(document.querySelectorAll('[ci-bg-url]'), 'ci-bg');
54+
images = filterImages(document.querySelectorAll(`img[${this.config.imgSelector}]`), 'ci-image');
55+
backgroundImages = filterImages(document.querySelectorAll(`[${this.config.bgSelector}]`), 'ci-bg');
5656
}
5757

5858
if (images.length > -1) {
@@ -71,8 +71,9 @@ export default class CIResponsive {
7171
getBasicInfo = (imgNode, isUpdate, windowScreenBecomesBigger, type) => {
7272
const isImage = type === 'image';
7373
const { config } = this;
74-
const { baseURL, lazyLoading, presets, devicePixelRatioList } = config;
75-
const imgProps = isImage ? getImageProps(imgNode) : getBackgroundImageProps(imgNode);
74+
const { baseURL, lazyLoading, presets, devicePixelRatioList, imgSelector, bgSelector } = config;
75+
const imgProps = isImage ?
76+
getImageProps(imgNode, imgSelector) : getBackgroundImageProps(imgNode, bgSelector);
7677
const { params, imgNodeSRC, isLazyCanceled, sizes, isAdaptive, preserveSize, minWindowWidth } = imgProps;
7778

7879
if (!imgNodeSRC) return;

0 commit comments

Comments
 (0)