next-cloudinary 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/next-cloudinary.js +257 -72
- package/dist/next-cloudinary.js.map +1 -1
- package/dist/next-cloudinary.modern.mjs +262 -61
- package/dist/next-cloudinary.modern.mjs.map +1 -1
- package/dist/next-cloudinary.module.js +257 -72
- package/dist/next-cloudinary.module.js.map +1 -1
- package/dist/next-cloudinary.umd.js +257 -72
- package/dist/next-cloudinary.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,29 +34,103 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
34
34
|
return target;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
const cld$1 = new Cloudinary({
|
|
38
|
+
cloud: {
|
|
39
|
+
cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
|
|
40
|
+
},
|
|
41
|
+
url: {
|
|
42
|
+
// Used to avoid issues with SSR particularly for the blurred placeholder
|
|
43
|
+
analytics: false
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* createPlaceholderUrl
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
function createPlaceholderUrl({
|
|
51
|
+
src,
|
|
52
|
+
placeholder
|
|
53
|
+
}) {
|
|
54
|
+
const cldImage = cld$1.image(src).resize('c_limit,w_100').delivery('q_1').format('auto');
|
|
55
|
+
|
|
56
|
+
if (placeholder === 'grayscale') {
|
|
57
|
+
cldImage.effect('e_grayscale');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (placeholder.includes('color:')) {
|
|
61
|
+
const color = placeholder.split(':').splice(1).join(':');
|
|
62
|
+
cldImage.effect('e_grayscale');
|
|
63
|
+
cldImage.effect(`e_colorize:60,co_${color}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return cldImage.toURL();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const cropsGravityAuto = ['crop', 'fill', 'lfill', 'fill_pad', 'thumb'];
|
|
70
|
+
function croppingPlugin({
|
|
71
|
+
cldImage,
|
|
72
|
+
options,
|
|
73
|
+
cldOptions
|
|
74
|
+
} = {}) {
|
|
75
|
+
const {
|
|
76
|
+
width,
|
|
77
|
+
height
|
|
78
|
+
} = options;
|
|
79
|
+
const {
|
|
80
|
+
crop = 'limit',
|
|
81
|
+
gravity
|
|
82
|
+
} = cldOptions;
|
|
83
|
+
let transformationString = `c_${crop},w_${width}`;
|
|
84
|
+
|
|
85
|
+
if (!gravity && cropsGravityAuto.includes(crop)) {
|
|
86
|
+
gravity = 'auto';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!['limit'].includes(crop)) {
|
|
90
|
+
transformationString = `${transformationString},h_${height}`;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (gravity) {
|
|
94
|
+
if (gravity === 'auto' && !cropsGravityAuto.includes(crop)) {
|
|
95
|
+
console.warn('Auto gravity can only be used with crop, fill, lfill, fill_pad or thumb. Not applying gravity.');
|
|
96
|
+
} else {
|
|
97
|
+
transformationString = `${transformationString},g_${gravity}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
cldImage.resize(transformationString);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// aspectRatio
|
|
37
105
|
const primary = {
|
|
38
|
-
|
|
39
|
-
qualifier: '
|
|
106
|
+
aspectRatio: {
|
|
107
|
+
qualifier: 'ar'
|
|
40
108
|
},
|
|
41
109
|
crop: {
|
|
42
110
|
qualifier: 'c'
|
|
43
111
|
},
|
|
44
|
-
|
|
45
|
-
qualifier: '
|
|
112
|
+
gravity: {
|
|
113
|
+
qualifier: 'g'
|
|
46
114
|
},
|
|
47
115
|
height: {
|
|
48
116
|
qualifier: 'h'
|
|
117
|
+
},
|
|
118
|
+
width: {
|
|
119
|
+
qualifier: 'w'
|
|
49
120
|
}
|
|
50
121
|
};
|
|
51
122
|
const position = {
|
|
123
|
+
angle: {
|
|
124
|
+
qualifier: 'a'
|
|
125
|
+
},
|
|
126
|
+
gravity: {
|
|
127
|
+
qualifier: 'g'
|
|
128
|
+
},
|
|
52
129
|
x: {
|
|
53
130
|
qualifier: 'x'
|
|
54
131
|
},
|
|
55
132
|
y: {
|
|
56
133
|
qualifier: 'y'
|
|
57
|
-
},
|
|
58
|
-
gravity: {
|
|
59
|
-
qualifier: 'g'
|
|
60
134
|
}
|
|
61
135
|
};
|
|
62
136
|
const text = {
|
|
@@ -64,76 +138,50 @@ const text = {
|
|
|
64
138
|
qualifier: 'co',
|
|
65
139
|
location: 'primary'
|
|
66
140
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
141
|
+
textDecoration: {
|
|
142
|
+
qualifier: false
|
|
143
|
+
},
|
|
144
|
+
fontFamily: {
|
|
145
|
+
qualifier: false
|
|
146
|
+
},
|
|
147
|
+
fontSize: {
|
|
148
|
+
qualifier: false
|
|
149
|
+
},
|
|
150
|
+
fontWeight: {
|
|
151
|
+
qualifier: false
|
|
152
|
+
},
|
|
71
153
|
letterSpacing: {
|
|
72
154
|
qualifier: 'letter_spacing'
|
|
73
155
|
}
|
|
74
156
|
};
|
|
75
157
|
|
|
76
|
-
const _excluded$
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
})
|
|
82
|
-
function cloudinaryLoader(options, cldOptions) {
|
|
158
|
+
const _excluded$2 = ["publicId", "position", "text", "effects"];
|
|
159
|
+
function overlaysPlugin({
|
|
160
|
+
cldImage,
|
|
161
|
+
options,
|
|
162
|
+
cldOptions
|
|
163
|
+
} = {}) {
|
|
83
164
|
const {
|
|
84
|
-
|
|
85
|
-
width,
|
|
86
|
-
format = 'auto',
|
|
87
|
-
quality = 'auto'
|
|
88
|
-
} = options;
|
|
89
|
-
const {
|
|
90
|
-
overlays = [],
|
|
91
|
-
effects = [],
|
|
92
|
-
removeBackground = false,
|
|
93
|
-
underlays = []
|
|
165
|
+
overlays = []
|
|
94
166
|
} = cldOptions;
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
cldImage.effect('e_background_removal');
|
|
99
|
-
} // Adding overlays and underlays allows you to compose your image
|
|
100
|
-
// by using layering with overlays appearing on top of and udnerlays
|
|
101
|
-
// appearing below your base image layer
|
|
102
|
-
//
|
|
103
|
-
// Learn more: https://cloudinary.com/documentation/layers
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const layers = [...overlays.map(overlay => _extends({}, overlay, {
|
|
107
|
-
type: 'overlay'
|
|
108
|
-
})), ...underlays.map(underlay => _extends({}, underlay, {
|
|
109
|
-
type: 'underlay'
|
|
110
|
-
}))];
|
|
111
|
-
layers.forEach(_ref => {
|
|
167
|
+
const type = 'overlay';
|
|
168
|
+
const typeQualifier = 'l';
|
|
169
|
+
overlays.forEach(_ref => {
|
|
112
170
|
let {
|
|
113
171
|
publicId,
|
|
114
|
-
type,
|
|
115
172
|
position: position$1,
|
|
116
173
|
text: text$1,
|
|
117
174
|
effects: layerEffects = []
|
|
118
175
|
} = _ref,
|
|
119
|
-
options = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
176
|
+
options = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
120
177
|
|
|
121
178
|
const hasPublicId = typeof publicId === 'string';
|
|
122
179
|
const hasText = typeof text$1 === 'object';
|
|
123
180
|
const hasPosition = typeof position$1 === 'object';
|
|
124
181
|
|
|
125
182
|
if (!hasPublicId && !hasText) {
|
|
126
|
-
console.warn(
|
|
183
|
+
console.warn(`An ${type} is missing Public ID or Text`);
|
|
127
184
|
return;
|
|
128
|
-
} // Determine the qualifier for the type of layer
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
let typeQualifier;
|
|
132
|
-
|
|
133
|
-
if (type === 'overlay') {
|
|
134
|
-
typeQualifier = 'l';
|
|
135
|
-
} else if (type === 'underlay') {
|
|
136
|
-
typeQualifier = 'u';
|
|
137
185
|
} // Start to construct the transformation string using text or the public ID
|
|
138
186
|
// if it's image-based
|
|
139
187
|
|
|
@@ -210,26 +258,179 @@ function cloudinaryLoader(options, cldOptions) {
|
|
|
210
258
|
|
|
211
259
|
cldImage.addTransformation(layerTransformation);
|
|
212
260
|
});
|
|
213
|
-
return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();
|
|
214
261
|
}
|
|
215
262
|
|
|
216
|
-
|
|
263
|
+
function removeBackgroundPlugin({
|
|
264
|
+
cldImage,
|
|
265
|
+
options,
|
|
266
|
+
cldOptions
|
|
267
|
+
} = {}) {
|
|
268
|
+
const {
|
|
269
|
+
removeBackground = false
|
|
270
|
+
} = cldOptions;
|
|
271
|
+
|
|
272
|
+
if (removeBackground) {
|
|
273
|
+
cldImage.effect('e_background_removal');
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function tintPlugin({
|
|
278
|
+
cldImage,
|
|
279
|
+
options,
|
|
280
|
+
cldOptions
|
|
281
|
+
} = {}) {
|
|
282
|
+
const {
|
|
283
|
+
tint
|
|
284
|
+
} = cldOptions;
|
|
285
|
+
|
|
286
|
+
if (tint) {
|
|
287
|
+
cldImage.effect(`e_tint:${tint}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const _excluded$1 = ["publicId", "type", "position", "text", "effects"];
|
|
292
|
+
function underlaysPlugin({
|
|
293
|
+
cldImage,
|
|
294
|
+
options,
|
|
295
|
+
cldOptions
|
|
296
|
+
} = {}) {
|
|
297
|
+
const {
|
|
298
|
+
underlays = []
|
|
299
|
+
} = cldOptions;
|
|
300
|
+
const typeQualifier = 'u';
|
|
301
|
+
underlays.forEach(_ref => {
|
|
302
|
+
let {
|
|
303
|
+
publicId,
|
|
304
|
+
type,
|
|
305
|
+
position: position$1,
|
|
306
|
+
effects: layerEffects = []
|
|
307
|
+
} = _ref,
|
|
308
|
+
options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
309
|
+
|
|
310
|
+
const hasPublicId = typeof publicId === 'string';
|
|
311
|
+
const hasPosition = typeof position$1 === 'object';
|
|
312
|
+
|
|
313
|
+
if (!hasPublicId) {
|
|
314
|
+
console.warn(`An ${type} is missing a Public ID`);
|
|
315
|
+
return;
|
|
316
|
+
} // Start to construct the transformation string using text or the public ID
|
|
317
|
+
// if it's image-based
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
let layerTransformation = `${typeQualifier}_${publicId.replace(/\//g, ':')}`; // Begin organizing transformations based on what it is and the location
|
|
321
|
+
// it needs to be placed in the URL
|
|
322
|
+
|
|
323
|
+
const primary$1 = [];
|
|
324
|
+
const applied = []; // Gemeral options
|
|
325
|
+
|
|
326
|
+
Object.keys(options).forEach(key => {
|
|
327
|
+
if (!primary[key]) return;
|
|
328
|
+
const {
|
|
329
|
+
qualifier
|
|
330
|
+
} = primary[key];
|
|
331
|
+
primary$1.push(`${qualifier}_${options[key]}`);
|
|
332
|
+
}); // Layer effects
|
|
333
|
+
|
|
334
|
+
layerEffects.forEach(effect => {
|
|
335
|
+
Object.keys(effect).forEach(key => {
|
|
336
|
+
if (!primary[key]) return;
|
|
337
|
+
const {
|
|
338
|
+
qualifier
|
|
339
|
+
} = primary[key];
|
|
340
|
+
primary$1.push(`${qualifier}_${effect[key]}`);
|
|
341
|
+
});
|
|
342
|
+
}); // Positioning
|
|
343
|
+
|
|
344
|
+
if (hasPosition) {
|
|
345
|
+
Object.keys(position$1).forEach(key => {
|
|
346
|
+
if (!position[key]) return;
|
|
347
|
+
const {
|
|
348
|
+
qualifier
|
|
349
|
+
} = position[key];
|
|
350
|
+
applied.push(`${qualifier}_${position$1[key]}`);
|
|
351
|
+
});
|
|
352
|
+
} // Add all primary transformations
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
layerTransformation = `${layerTransformation},${primary$1.join(',')}`; // Add all applied transformations
|
|
356
|
+
|
|
357
|
+
layerTransformation = `${layerTransformation}/fl_layer_apply`;
|
|
358
|
+
|
|
359
|
+
if (applied.length > 0) {
|
|
360
|
+
layerTransformation = `${layerTransformation},${applied.join(',')}`;
|
|
361
|
+
} // Finally add it to the image
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
cldImage.addTransformation(layerTransformation);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
const cld = new Cloudinary({
|
|
369
|
+
cloud: {
|
|
370
|
+
cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
const transformationPlugins = [// Background Removal must always come first
|
|
374
|
+
removeBackgroundPlugin, croppingPlugin, tintPlugin, overlaysPlugin, underlaysPlugin];
|
|
375
|
+
function cloudinaryLoader(options, cldOptions) {
|
|
376
|
+
const {
|
|
377
|
+
src,
|
|
378
|
+
width,
|
|
379
|
+
format = 'auto',
|
|
380
|
+
quality = 'auto'
|
|
381
|
+
} = options;
|
|
382
|
+
const cldImage = cld.image(src);
|
|
383
|
+
transformationPlugins.forEach(plugin => {
|
|
384
|
+
plugin({
|
|
385
|
+
cldImage,
|
|
386
|
+
options,
|
|
387
|
+
cldOptions
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
return cldImage.format(format).delivery(`q_${quality}`).toURL();
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
const _excluded = ["crop", "gravity", "overlays", "removeBackground", "tint", "underlays"];
|
|
217
394
|
|
|
218
395
|
const CldImage = _ref => {
|
|
219
396
|
let {
|
|
397
|
+
crop,
|
|
398
|
+
gravity,
|
|
220
399
|
overlays,
|
|
221
400
|
removeBackground,
|
|
401
|
+
tint,
|
|
222
402
|
underlays
|
|
223
403
|
} = _ref,
|
|
224
404
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
225
405
|
|
|
226
406
|
const cldOptions = {
|
|
407
|
+
crop,
|
|
408
|
+
gravity,
|
|
227
409
|
overlays,
|
|
228
410
|
removeBackground,
|
|
411
|
+
tint,
|
|
229
412
|
underlays
|
|
230
413
|
};
|
|
231
|
-
|
|
232
|
-
|
|
414
|
+
const imageProps = {}; // If we see a placeholder option, configure a Cloudinary-based URL.
|
|
415
|
+
// The resulting image will always be blurred per Next.js, so we're
|
|
416
|
+
// limited on options for placeholders.
|
|
417
|
+
// https://nextjs.org/docs/api-reference/next/image#blurdataurl
|
|
418
|
+
|
|
419
|
+
if (props.placeholder) {
|
|
420
|
+
imageProps.blurDataURL = createPlaceholderUrl({
|
|
421
|
+
src: props.src,
|
|
422
|
+
placeholder: props.placeholder
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
if (props.placeholder !== 'blur') {
|
|
426
|
+
props.placeholder = 'blur';
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return /*#__PURE__*/jsx(Image, _extends({}, imageProps, props, {
|
|
431
|
+
loader: options => cloudinaryLoader(_extends({}, props, {
|
|
432
|
+
options
|
|
433
|
+
}), cldOptions)
|
|
233
434
|
}));
|
|
234
435
|
};
|
|
235
436
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-cloudinary.modern.mjs","sources":["../src/constants/qualifiers.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["export const primary = {\n gravity: {\n qualifier: 'g'\n },\n crop: {\n qualifier: 'c'\n },\n width: {\n qualifier: 'w'\n },\n height: {\n qualifier: 'h'\n }\n};\n\nexport const position = {\n x: {\n qualifier: 'x'\n },\n y: {\n qualifier: 'y'\n },\n gravity: {\n qualifier: 'g'\n },\n}\n\nexport const text = {\n color: {\n qualifier: 'co',\n location: 'primary'\n },\n fontFamily: {\n },\n fontSize: {\n },\n fontWeight: {\n },\n textDecoration: {\n },\n letterSpacing: {\n qualifier: 'letter_spacing'\n }\n}","import { Cloudinary } from '@cloudinary/url-gen';\n\nimport {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n});\n\nexport function cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto',\n } = options;\n\n const {\n overlays = [],\n effects = [],\n removeBackground = false,\n underlays = []\n } = cldOptions;\n\n const cldImage = cld.image(src);\n\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n\n // Adding overlays and underlays allows you to compose your image\n // by using layering with overlays appearing on top of and udnerlays\n // appearing below your base image layer\n //\n // Learn more: https://cloudinary.com/documentation/layers\n\n const layers = [\n ...overlays.map(overlay => ({ ...overlay, type: 'overlay' })),\n ...underlays.map(underlay => ({ ...underlay, type: 'underlay' })),\n ];\n\n layers.forEach(({ publicId, type, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasText = typeof text === 'object';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId && !hasText ) {\n console.warn(`${type} is missing Public ID or Text`);\n return;\n }\n\n // Determine the qualifier for the type of layer\n\n let typeQualifier;\n\n if ( type === 'overlay' ) {\n typeQualifier = 'l';\n } else if ( type === 'underlay' ) {\n typeQualifier = 'u';\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation;\n\n if ( hasText ) {\n layerTransformation = `${typeQualifier}_text`;\n } else {\n layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n }\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Text styling\n\n if ( hasText ) {\n const textTransformations = [];\n\n Object.keys(text).forEach(key => {\n if ( !qualifiersText[key] ) return;\n\n const { qualifier, location } = qualifiersText[key];\n\n if ( location === 'primary' ) {\n primary.push(`${qualifier}_${text[key]}`);\n } else {\n textTransformations.push(text[key]);\n }\n });\n\n layerTransformation = `${layerTransformation}:${textTransformations.join('_')}:${text.text}`\n }\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n\n return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();\n}","\nimport Image from 'next/image';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = ({ overlays, removeBackground, underlays, ...props }) => {\n const cldOptions = {\n overlays,\n removeBackground,\n underlays,\n };\n return <Image {...props} loader={(options) => cloudinaryLoader(options, cldOptions)} />\n}\n\nexport default CldImage;"],"names":["primary","gravity","qualifier","crop","width","height","position","x","y","text","color","location","fontFamily","fontSize","fontWeight","textDecoration","letterSpacing","cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","format","quality","overlays","effects","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","layerEffects","_excluded","hasPublicId","hasText","hasPosition","console","warn","typeQualifier","layerTransformation","replace","applied","Object","keys","key","qualifiersPrimary","push","textTransformations","qualifiersText","join","qualifiersPosition","length","addTransformation","resize","delivery","toURL","CldImage","props","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-cloudinary.modern.mjs","sources":["../src/lib/cloudinary.js","../src/plugins/cropping.js","../src/constants/qualifiers.js","../src/plugins/overlays.js","../src/plugins/remove-background.js","../src/plugins/tint.js","../src/plugins/underlays.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder }) {\n const cldImage = cld.image(src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( placeholder === 'grayscale' ) {\n cldImage.effect('e_grayscale');\n }\n\n if ( placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n cldImage.effect('e_grayscale');\n cldImage.effect(`e_colorize:60,co_${color}`);\n }\n\n return cldImage.toURL();\n}","const cropsGravityAuto = [ 'crop', 'fill', 'lfill', 'fill_pad', 'thumb' ];\n\nexport function croppingPlugin({ cldImage, options, cldOptions } = {}) {\n const { width, height } = options;\n const { crop = 'limit', gravity } = cldOptions;\n\n let transformationString = `c_${crop},w_${width}`;\n\n if ( !gravity && cropsGravityAuto.includes(crop) ) {\n gravity = 'auto';\n }\n\n if ( !['limit'].includes(crop) ) {\n transformationString = `${transformationString},h_${height}`;\n }\n\n if ( gravity ) {\n if ( gravity === 'auto' && !cropsGravityAuto.includes(crop) ) {\n console.warn('Auto gravity can only be used with crop, fill, lfill, fill_pad or thumb. Not applying gravity.');\n } else {\n transformationString = `${transformationString},g_${gravity}`;\n }\n }\n\n cldImage.resize(transformationString);\n}","// aspectRatio\n\nexport const primary = {\n aspectRatio: {\n qualifier: 'ar'\n },\n crop: {\n qualifier: 'c'\n },\n gravity: {\n qualifier: 'g'\n },\n height: {\n qualifier: 'h'\n },\n width: {\n qualifier: 'w'\n },\n};\n\nexport const position = {\n angle: {\n qualifier: 'a'\n },\n gravity: {\n qualifier: 'g'\n },\n x: {\n qualifier: 'x'\n },\n y: {\n qualifier: 'y'\n },\n}\n\nexport const text = {\n color: {\n qualifier: 'co',\n location: 'primary'\n },\n textDecoration: {\n qualifier: false\n },\n fontFamily: {\n qualifier: false\n },\n fontSize: {\n qualifier: false\n },\n fontWeight: {\n qualifier: false\n },\n letterSpacing: {\n qualifier: 'letter_spacing'\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport function overlaysPlugin({ cldImage, options, cldOptions } = {}) {\n const { overlays = [] } = cldOptions;\n\n const type = 'overlay';\n const typeQualifier = 'l';\n\n overlays.forEach(({ publicId, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasText = typeof text === 'object';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId && !hasText ) {\n console.warn(`An ${type} is missing Public ID or Text`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation;\n\n if ( hasText ) {\n layerTransformation = `${typeQualifier}_text`;\n } else {\n layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n }\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Text styling\n\n if ( hasText ) {\n const textTransformations = [];\n\n Object.keys(text).forEach(key => {\n if ( !qualifiersText[key] ) return;\n\n const { qualifier, location } = qualifiersText[key];\n\n if ( location === 'primary' ) {\n primary.push(`${qualifier}_${text[key]}`);\n } else {\n textTransformations.push(text[key]);\n }\n });\n\n layerTransformation = `${layerTransformation}:${textTransformations.join('_')}:${text.text}`\n }\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","export function removeBackgroundPlugin({ cldImage, options, cldOptions } = {}) {\n const { removeBackground = false } = cldOptions;\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n}","export function tintPlugin({ cldImage, options, cldOptions } = {}) {\n const { tint } = cldOptions;\n\n if ( tint ) {\n cldImage.effect(`e_tint:${tint}`);\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport function underlaysPlugin({ cldImage, options, cldOptions } = {}) {\n const { underlays = [] } = cldOptions;\n\n const type = 'underlay';\n const typeQualifier = 'u';\n\n underlays.forEach(({ publicId, type, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId ) {\n console.warn(`An ${type} is missing a Public ID`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","import { Cloudinary } from '@cloudinary/url-gen';\n\nimport { croppingPlugin } from '../plugins/cropping';\nimport { overlaysPlugin } from '../plugins/overlays';\nimport { removeBackgroundPlugin } from '../plugins/remove-background';\nimport { tintPlugin } from '../plugins/tint';\nimport { underlaysPlugin } from '../plugins/underlays';\n\nimport {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n});\n\nconst transformationPlugins = [\n // Background Removal must always come first\n removeBackgroundPlugin,\n\n croppingPlugin,\n tintPlugin,\n overlaysPlugin,\n underlaysPlugin\n];\n\nexport function cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto',\n } = options;\n\n const cldImage = cld.image(src);\n\n transformationPlugins.forEach(plugin => {\n plugin({\n cldImage,\n options,\n cldOptions\n });\n });\n\n return cldImage.format(format).delivery(`q_${quality}`).toURL();\n}","import Image from 'next/image';\n\nimport { createPlaceholderUrl } from '../../lib/cloudinary';\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = ({ crop, gravity, overlays, removeBackground, tint, underlays, ...props }) => {\n const cldOptions = {\n crop,\n gravity,\n overlays,\n removeBackground,\n tint,\n underlays,\n };\n\n const imageProps = {};\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( props.placeholder ) {\n imageProps.blurDataURL = createPlaceholderUrl({\n src: props.src,\n placeholder: props.placeholder\n });\n\n if ( props.placeholder !== 'blur' ) {\n props.placeholder = 'blur';\n }\n }\n\n return (\n <Image\n {...imageProps}\n {...props}\n loader={(options) => cloudinaryLoader({ ...props, options }, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","url","analytics","createPlaceholderUrl","src","placeholder","cldImage","image","resize","delivery","format","effect","includes","color","split","splice","join","toURL","cropsGravityAuto","croppingPlugin","options","cldOptions","width","height","crop","gravity","transformationString","console","warn","primary","aspectRatio","qualifier","position","angle","x","y","text","location","textDecoration","fontFamily","fontSize","fontWeight","letterSpacing","overlaysPlugin","overlays","type","typeQualifier","forEach","publicId","effects","layerEffects","_excluded","hasPublicId","hasText","hasPosition","layerTransformation","replace","applied","Object","keys","key","qualifiersPrimary","push","textTransformations","qualifiersText","qualifiersPosition","length","addTransformation","removeBackgroundPlugin","removeBackground","tintPlugin","tint","underlaysPlugin","underlays","transformationPlugins","cloudinaryLoader","quality","plugin","CldImage","props","imageProps","blurDataURL","_jsx"],"mappings":"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"}
|