next-cloudinary 0.0.8 → 0.0.10

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/README.md CHANGED
@@ -65,7 +65,7 @@ As CldImage is a wrapper around the Next.js Image component, all built-in Image
65
65
 
66
66
  ## 🛠 Configuration
67
67
 
68
- ### Props
68
+ ### General Props
69
69
 
70
70
  | Prop Name | Type | Example |
71
71
  |------------------|-------------|------------------------------|
@@ -73,9 +73,54 @@ As CldImage is a wrapper around the Next.js Image component, all built-in Image
73
73
  | gravity | string | `"faces"` |
74
74
  | overlays | array | See Below |
75
75
  | removeBackground | bool/string | `true` |
76
- | tint | string | `"tint:100:red:blue:yellow"` |
77
76
  | underlays | array | See Below |
78
77
 
78
+ ### Effect Props
79
+
80
+ | Prop Name | Type | Example |
81
+ |------------------ |-------------|------------------------------|
82
+ | art | string | `"al_dente"` |
83
+ | autoBrightness | bool/string | `true`, `"80"` |
84
+ | autoColor | bool/string | `true`, `"80"` |
85
+ | autoContrast | bool/string | `true`, `"80"` |
86
+ | assistColorblind | bool/string | `true`, `"20"`, `"xray"` |
87
+ | blackwhite | bool/string | `true`, `"40"` |
88
+ | blur | bool/string | `true`, `"800"` |
89
+ | blurFaces | bool/string | `true`, `"800"` |
90
+ | blurRegion | bool/string | `true`, `"1000,h_425,w_550,x_600,y_400"` |
91
+ | brightness | bool/string | `true`, `"100"` |
92
+ | brightnessHSB | bool/string | `true`, `"100"` |
93
+ | cartoonify | bool/string | `true`, `"70:80"` |
94
+ | colorize | string | `"35,co_darkviolet"` |
95
+ | contrast | bool/string | `true`, `"100"`, `"level_-70"` |
96
+ | distort | string | `"150:340:1500:10:1500:1550:50:1000"`, `"arc:180.0"` |
97
+ | fillLight | bool/string | `true`, `"70:20"` |
98
+ | gamma | bool/string | `true`, `"100"` |
99
+ | gradientFade | bool/string | `true`, `"symmetric:10,x_0.2,y_0.4"` |
100
+ | grayscale | bool | `true` |
101
+ | improve | bool/string | `true`, `"50"`, `"indoor"` |
102
+ | negate | bool | `true` |
103
+ | oilPaint | bool/string | `true`, `"40"` |
104
+ | outline | bool/string | `true`, `"40"`, `"outer:15:200"` |
105
+ | pixelate | bool/string | `true`, `"20"` |
106
+ | pixelateFaces | bool/string | `true`, `"20"` |
107
+ | pixelateRegion | bool/string | `true`, `"35,h_425,w_550,x_600,y_400"` |
108
+ | redeye | bool/string | `true` |
109
+ | replaceColor | string | `"saddlebrown"`, `"2F4F4F:20"`, `"silver:55:89b8ed"` |
110
+ | saturation | bool/string | `true`, `"70"` |
111
+ | sepia | bool/string | `true`, `"50"` |
112
+ | shadow | bool/string | `true`, `"50,x_-15,y_15"` |
113
+ | sharpen | bool/string | `true`, `"100"` |
114
+ | shear | string | `"20.0:0.0"` |
115
+ | simulateColorblind | bool/string | `"deuteranopia"` |
116
+ | tint | bool/string | `true`, `"100:red:blue:yellow"` |
117
+ | unsharpMask | bool/string | `true`, `"500"` |
118
+ | vectorize | bool/string | `true`, `"3:0.5"` |
119
+ | vibrance | bool/string | `true`, `"70"` |
120
+ | vignette | bool/string | `true`, `"30"` |
121
+
122
+ [View the Cloudinary docs](https://cloudinary.com/documentation/transformation_reference#e_effect) to see learn more about using effects.
123
+
79
124
  ### Background Removal
80
125
 
81
126
  Removing backgrounds require enabling the [Cloudinary AI Background Removal Add-On](https://cloudinary.com/documentation/cloudinary_ai_background_removal_addon) which includes a free tier for getting started.
@@ -74,7 +74,8 @@ function createPlaceholderUrl(_ref) {
74
74
  }
75
75
 
76
76
  var cropsGravityAuto = ['crop', 'fill', 'lfill', 'fill_pad', 'thumb'];
77
- function croppingPlugin(_temp) {
77
+ var props$5 = ['crop', 'gravity'];
78
+ function plugin$5(_temp) {
78
79
  var _ref = _temp === void 0 ? {} : _temp,
79
80
  cldImage = _ref.cldImage,
80
81
  options = _ref.options,
@@ -106,6 +107,12 @@ function croppingPlugin(_temp) {
106
107
  cldImage.resize(transformationString);
107
108
  }
108
109
 
110
+ var croppingPlugin = {
111
+ __proto__: null,
112
+ props: props$5,
113
+ plugin: plugin$5
114
+ };
115
+
109
116
  // aspectRatio
110
117
  var primary = {
111
118
  aspectRatio: {
@@ -161,7 +168,8 @@ var text = {
161
168
  };
162
169
 
163
170
  var _excluded$1 = ["publicId", "position", "text", "effects"];
164
- function overlaysPlugin(_temp) {
171
+ var props$4 = ['overlays'];
172
+ function plugin$4(_temp) {
165
173
  var _ref = _temp === void 0 ? {} : _temp,
166
174
  cldImage = _ref.cldImage,
167
175
  cldOptions = _ref.cldOptions;
@@ -256,7 +264,14 @@ function overlaysPlugin(_temp) {
256
264
  });
257
265
  }
258
266
 
259
- function removeBackgroundPlugin(_temp) {
267
+ var overlaysPlugin = {
268
+ __proto__: null,
269
+ props: props$4,
270
+ plugin: plugin$4
271
+ };
272
+
273
+ var props$3 = ['removeBackground'];
274
+ function plugin$3(_temp) {
260
275
  var _ref = _temp === void 0 ? {} : _temp,
261
276
  cldImage = _ref.cldImage,
262
277
  cldOptions = _ref.cldOptions;
@@ -269,20 +284,91 @@ function removeBackgroundPlugin(_temp) {
269
284
  }
270
285
  }
271
286
 
272
- function tintPlugin(_temp) {
287
+ var removeBackgroundPlugin = {
288
+ __proto__: null,
289
+ props: props$3,
290
+ plugin: plugin$3
291
+ };
292
+
293
+ var params = ['art', {
294
+ prop: 'autoBrightness',
295
+ effect: 'auto_brightness'
296
+ }, {
297
+ prop: 'autoColor',
298
+ effect: 'auto_color'
299
+ }, {
300
+ prop: 'autoContrast',
301
+ effect: 'auto_contrast'
302
+ }, {
303
+ prop: 'assistColorblind',
304
+ effect: 'assist_colorblind'
305
+ }, 'blackwhite', 'blur', {
306
+ prop: 'blurFaces',
307
+ effect: 'blur_faces'
308
+ }, {
309
+ prop: 'blurRegion',
310
+ effect: 'blur_region'
311
+ }, 'brightness', {
312
+ prop: 'brightnessHSB',
313
+ effect: 'brightness_hsb'
314
+ }, 'cartoonify', 'colorize', 'contrast', 'distort', {
315
+ prop: 'fillLight',
316
+ effect: 'fill_light'
317
+ }, 'gamma', {
318
+ prop: 'gradientFade',
319
+ effect: 'gradient_fade'
320
+ }, 'grayscale', 'improve', 'negate', {
321
+ prop: 'oilPaint',
322
+ effect: 'oil_paint'
323
+ }, 'outline', 'pixelate', {
324
+ prop: 'pixelateFaces',
325
+ effect: 'pixelate_faces'
326
+ }, {
327
+ prop: 'pixelateRegion',
328
+ effect: 'pixelate_region'
329
+ }, 'redeye', {
330
+ prop: 'replaceColor',
331
+ effect: 'replace_color'
332
+ }, 'saturation', 'sepia', 'shadow', 'sharpen', 'shear', {
333
+ prop: 'simulateColorblind',
334
+ effect: 'simulate_colorblind'
335
+ }, 'tint', {
336
+ prop: 'unsharpMask',
337
+ effect: 'unsharp_mask'
338
+ }, 'vectorize', 'vibrance', 'vignette'];
339
+ var props$2 = params.map(function (param) {
340
+ return param.prop || param;
341
+ });
342
+ function plugin$2(_temp) {
273
343
  var _ref = _temp === void 0 ? {} : _temp,
274
344
  cldImage = _ref.cldImage,
275
345
  cldOptions = _ref.cldOptions;
276
346
 
277
- var tint = cldOptions.tint;
347
+ params.forEach(function (key) {
348
+ var prop = key.prop || key;
349
+ var effect = key.effect || key;
278
350
 
279
- if (tint) {
280
- cldImage.effect("e_tint:" + tint);
281
- }
351
+ if (prop === 'oilPaint' && cldOptions[prop]) {
352
+ console.log('cldOptions[prop]', cldOptions[prop]);
353
+ }
354
+
355
+ if (cldOptions[prop] === true) {
356
+ cldImage.effect("e_" + effect);
357
+ } else if (typeof cldOptions[prop] === 'string') {
358
+ cldImage.effect("e_" + effect + ":" + cldOptions[prop]);
359
+ }
360
+ });
282
361
  }
283
362
 
363
+ var effectsPlugin = {
364
+ __proto__: null,
365
+ props: props$2,
366
+ plugin: plugin$2
367
+ };
368
+
284
369
  var _excluded = ["publicId", "type", "position", "text", "effects"];
285
- function underlaysPlugin(_temp) {
370
+ var props$1 = ['underlays'];
371
+ function plugin$1(_temp) {
286
372
  var _ref = _temp === void 0 ? {} : _temp,
287
373
  cldImage = _ref.cldImage,
288
374
  cldOptions = _ref.cldOptions;
@@ -350,43 +436,119 @@ function underlaysPlugin(_temp) {
350
436
  });
351
437
  }
352
438
 
439
+ var underlaysPlugin = {
440
+ __proto__: null,
441
+ props: props$1,
442
+ plugin: plugin$1
443
+ };
444
+
445
+ var props = ['zoompan'];
446
+ var options = {
447
+ format: 'gif'
448
+ };
449
+ function plugin(_temp) {
450
+ var _ref = _temp === void 0 ? {} : _temp,
451
+ cldImage = _ref.cldImage,
452
+ cldOptions = _ref.cldOptions;
453
+
454
+ var _cldOptions$zoompan = cldOptions.zoompan,
455
+ zoompan = _cldOptions$zoompan === void 0 ? false : _cldOptions$zoompan;
456
+
457
+ if (zoompan === true) {
458
+ cldImage.effect('e_zoompan');
459
+ } else if (typeof zoompan === 'string') {
460
+ if (zoompan === 'loop') {
461
+ cldImage.effect('e_zoompan');
462
+ cldImage.effect('e_loop');
463
+ } else {
464
+ cldImage.effect("e_zoompan:" + zoompan);
465
+ }
466
+ } else if (typeof zoompan === 'object') {
467
+ var zoompanEffect = 'e_zoompan';
468
+
469
+ if (typeof zoompan.options === 'string') {
470
+ zoompanEffect = "" + zoompanEffect + zoompan.options;
471
+ }
472
+
473
+ cldImage.effect(zoompanEffect);
474
+ var loopEffect;
475
+
476
+ if (zoompan.loop === true) {
477
+ loopEffect = 'e_loop';
478
+ } else if (typeof zoompan.loop === 'string') {
479
+ loopEffect = "e_loop" + zoompan.loop;
480
+ }
481
+
482
+ if (loopEffect) {
483
+ cldImage.effect(loopEffect);
484
+ }
485
+ }
486
+ }
487
+
488
+ var zoompanPlugin = {
489
+ __proto__: null,
490
+ props: props,
491
+ options: options,
492
+ plugin: plugin
493
+ };
494
+
353
495
  var cld = new urlGen.Cloudinary({
354
496
  cloud: {
355
497
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
498
+ },
499
+ url: {
500
+ // Used to avoid issues with SSR particularly for the blurred placeholder
501
+ analytics: false
356
502
  }
357
503
  });
358
504
  var transformationPlugins = [removeBackgroundPlugin, // Background Removal must always come first
359
- croppingPlugin, tintPlugin, overlaysPlugin, underlaysPlugin];
360
- function cloudinaryLoader(options, cldOptions) {
361
- var src = options.src,
362
- _options$format = options.format,
363
- format = _options$format === void 0 ? 'auto' : _options$format,
364
- _options$quality = options.quality,
365
- quality = _options$quality === void 0 ? 'auto' : _options$quality;
366
- var cldImage = cld.image(src);
367
- transformationPlugins.forEach(function (plugin) {
505
+ croppingPlugin, effectsPlugin, overlaysPlugin, underlaysPlugin, zoompanPlugin];
506
+ function cloudinaryLoader(defaultOptions, cldOptions) {
507
+ var options = _extends({
508
+ format: 'auto',
509
+ quality: 'auto'
510
+ }, defaultOptions);
511
+
512
+ var cldImage = cld.image(options.src);
513
+ transformationPlugins.forEach(function (_ref) {
514
+ var plugin = _ref.plugin,
515
+ pluginOptions = _ref.options;
368
516
  plugin({
369
517
  cldImage: cldImage,
370
518
  options: options,
371
519
  cldOptions: cldOptions
372
520
  });
521
+
522
+ if (pluginOptions != null && pluginOptions.format) {
523
+ options.format = pluginOptions.format;
524
+ }
373
525
  });
374
- return cldImage.format(format).delivery("q_" + quality).toURL();
526
+ return cldImage.format(options.format).delivery("q_" + options.quality).toURL();
375
527
  }
376
528
 
377
- var options = ['crop', 'gravity', 'overlays', 'removeBackground', 'tint', 'underlays'];
378
-
379
529
  var CldImage = function CldImage(props) {
380
- // Construct the base Image component props by filtering out Cloudinary-specific props
530
+ var CLD_OPTIONS = [];
531
+ transformationPlugins.forEach(function (_ref) {
532
+ var _ref$props = _ref.props,
533
+ props = _ref$props === void 0 ? [] : _ref$props;
534
+ props.forEach(function (prop) {
535
+ if (CLD_OPTIONS.includes(prop)) {
536
+ throw new Error("Option " + prop + " already exists!");
537
+ }
538
+
539
+ CLD_OPTIONS.push(prop);
540
+ });
541
+ }); // Construct the base Image component props by filtering out Cloudinary-specific props
542
+
381
543
  var imageProps = {};
382
544
  Object.keys(props).filter(function (key) {
383
- return !options.includes(key);
545
+ return !CLD_OPTIONS.includes(key);
384
546
  }).forEach(function (key) {
385
547
  return imageProps[key] = props[key];
386
548
  }); // Construct Cloudinary-specific props by looking for values for any of the supported prop keys
387
549
 
388
550
  var cldOptions = {};
389
- options.forEach(function (key) {
551
+ CLD_OPTIONS.forEach(function (key) {
390
552
  if (props[key]) {
391
553
  cldOptions[key] = props[key];
392
554
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.js","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/constants/options.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 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 textDecoration: {\n qualifier: false\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 removeBackgroundPlugin, // Background Removal must always come first\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}","export const options = [\n 'crop',\n 'gravity',\n 'overlays',\n 'removeBackground',\n 'tint',\n 'underlays',\n];\n\n\n","import Image from 'next/image';\n\nimport { createPlaceholderUrl } from '../../lib/cloudinary';\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nimport { options as CLD_OPTIONS } from '../../constants/options';\n\nconst CldImage = props => {\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps = {};\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\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 //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n imageProps.blurDataURL = createPlaceholderUrl({\n src: props.src,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n return (\n <Image\n {...imageProps}\n loader={(options) => cloudinaryLoader({ ...imageProps, 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","fontFamily","fontSize","fontWeight","letterSpacing","textDecoration","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","filter","CLD_OPTIONS","blurDataURL","_jsx","Image"],"mappings":"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"}
1
+ {"version":3,"file":"next-cloudinary.js","sources":["../src/lib/cloudinary.js","../src/plugins/cropping.js","../src/constants/qualifiers.js","../src/plugins/overlays.js","../src/plugins/remove-background.js","../src/plugins/effects.js","../src/plugins/underlays.js","../src/plugins/zoompan.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 const props = ['crop', 'gravity'];\n\nexport function plugin({ 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 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 textDecoration: {\n qualifier: false\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['overlays'];\n\nexport function plugin({ 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 const props = ['removeBackground'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { removeBackground = false } = cldOptions;\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n}","const params = [\n 'art',\n {\n prop: 'autoBrightness',\n effect: 'auto_brightness',\n },\n {\n prop: 'autoColor',\n effect: 'auto_color',\n },\n {\n prop: 'autoContrast',\n effect: 'auto_contrast',\n },\n {\n prop: 'assistColorblind',\n effect: 'assist_colorblind',\n },\n 'blackwhite',\n 'blur',\n {\n prop: 'blurFaces',\n effect: 'blur_faces',\n },\n {\n prop: 'blurRegion',\n effect: 'blur_region',\n },\n 'brightness',\n {\n prop: 'brightnessHSB',\n effect: 'brightness_hsb',\n },\n 'cartoonify',\n 'colorize',\n 'contrast',\n 'distort',\n {\n prop: 'fillLight',\n effect: 'fill_light',\n },\n 'gamma',\n {\n prop: 'gradientFade',\n effect: 'gradient_fade',\n },\n 'grayscale',\n 'improve',\n 'negate',\n {\n prop: 'oilPaint',\n effect: 'oil_paint',\n },\n 'outline',\n 'pixelate',\n {\n prop: 'pixelateFaces',\n effect: 'pixelate_faces',\n },\n {\n prop: 'pixelateRegion',\n effect: 'pixelate_region',\n },\n 'redeye',\n {\n prop: 'replaceColor',\n effect: 'replace_color',\n },\n 'saturation',\n 'sepia',\n 'shadow',\n 'sharpen',\n 'shear',\n {\n prop: 'simulateColorblind',\n effect: 'simulate_colorblind',\n },\n 'tint',\n {\n prop: 'unsharpMask',\n effect: 'unsharp_mask',\n },\n 'vectorize',\n 'vibrance',\n 'vignette',\n];\n\nexport const props = params.map(param => param.prop || param);\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n params.forEach(key => {\n\n const prop = key.prop || key;\n const effect = key.effect || key;\n\n if ( prop === 'oilPaint' && cldOptions[prop]) {\n console.log('cldOptions[prop]', cldOptions[prop])\n }\n if ( cldOptions[prop] === true ) {\n cldImage.effect(`e_${effect}`);\n } else if ( typeof cldOptions[prop] === 'string' ) {\n cldImage.effect(`e_${effect}:${cldOptions[prop]}`);\n }\n });\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['underlays'];\n\nexport function plugin({ 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}","export const props = ['zoompan'];\n\nexport const options = {\n format: 'gif'\n}\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n const { zoompan = false } = cldOptions;\n\n if ( zoompan === true ) {\n cldImage.effect('e_zoompan');\n } else if ( typeof zoompan === 'string' ) {\n if ( zoompan === 'loop' ) {\n cldImage.effect('e_zoompan');\n cldImage.effect('e_loop');\n } else {\n cldImage.effect(`e_zoompan:${zoompan}`);\n }\n } else if ( typeof zoompan === 'object' ) {\n let zoompanEffect = 'e_zoompan';\n\n if ( typeof zoompan.options === 'string' ) {\n zoompanEffect = `${zoompanEffect}${zoompan.options}`;\n }\n\n cldImage.effect(zoompanEffect);\n\n let loopEffect;\n\n if ( zoompan.loop === true ) {\n loopEffect = 'e_loop';\n } else if ( typeof zoompan.loop === 'string' ) {\n loopEffect = `e_loop${zoompan.loop}`;\n }\n\n if ( loopEffect ) {\n cldImage.effect(loopEffect);\n }\n }\n}","import { Cloudinary } from '@cloudinary/url-gen';\n\nimport * as croppingPlugin from '../plugins/cropping';\nimport * as overlaysPlugin from '../plugins/overlays';\nimport * as removeBackgroundPlugin from '../plugins/remove-background';\nimport * as effectsPlugin from '../plugins/effects';\nimport * as underlaysPlugin from '../plugins/underlays';\nimport * as zoompanPlugin from '../plugins/zoompan';\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 url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\nexport const transformationPlugins = [\n removeBackgroundPlugin, // Background Removal must always come first\n croppingPlugin,\n effectsPlugin,\n overlaysPlugin,\n underlaysPlugin,\n zoompanPlugin\n];\n\nexport function cloudinaryLoader(defaultOptions, cldOptions) {\n const options = {\n format: 'auto',\n quality: 'auto',\n ...defaultOptions\n };\n\n const cldImage = cld.image(options.src);\n\n transformationPlugins.forEach(({ plugin, options: pluginOptions }) => {\n plugin({\n cldImage,\n options,\n cldOptions\n });\n\n if ( pluginOptions?.format ) {\n options.format = pluginOptions.format;\n }\n });\n\n return cldImage\n .format(options.format)\n .delivery(`q_${options.quality}`)\n .toURL();\n}","import Image from 'next/image';\n\nimport { createPlaceholderUrl } from '../../lib/cloudinary';\nimport { cloudinaryLoader, transformationPlugins } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n\n const CLD_OPTIONS = [];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps = {};\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\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 //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n imageProps.blurDataURL = createPlaceholderUrl({\n src: props.src,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n return (\n <Image\n {...imageProps}\n loader={(options) => cloudinaryLoader({ ...imageProps, 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","props","plugin","options","cldOptions","width","height","crop","gravity","transformationString","console","warn","primary","aspectRatio","qualifier","position","angle","x","y","text","location","fontFamily","fontSize","fontWeight","letterSpacing","textDecoration","overlays","type","typeQualifier","forEach","publicId","effects","layerEffects","_excluded","hasPublicId","hasText","hasPosition","layerTransformation","replace","applied","Object","keys","key","qualifiersPrimary","push","textTransformations","qualifiersText","qualifiersPosition","length","addTransformation","removeBackground","params","prop","map","param","log","underlays","zoompan","zoompanEffect","loopEffect","loop","transformationPlugins","removeBackgroundPlugin","croppingPlugin","effectsPlugin","overlaysPlugin","underlaysPlugin","zoompanPlugin","cloudinaryLoader","defaultOptions","quality","pluginOptions","CldImage","CLD_OPTIONS","Error","imageProps","filter","blurDataURL","_jsx","Image"],"mappings":"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"}