next-cloudinary 0.0.2 → 0.0.3

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.
@@ -39,28 +39,31 @@ function _objectWithoutPropertiesLoose(source, excluded) {
39
39
  }
40
40
 
41
41
  var primary = {
42
- gravity: {
43
- qualifier: 'g'
44
- },
45
42
  crop: {
46
43
  qualifier: 'c'
47
44
  },
48
- width: {
49
- qualifier: 'w'
45
+ gravity: {
46
+ qualifier: 'g'
50
47
  },
51
48
  height: {
52
49
  qualifier: 'h'
50
+ },
51
+ width: {
52
+ qualifier: 'w'
53
53
  }
54
54
  };
55
55
  var position = {
56
+ angle: {
57
+ qualifier: 'a'
58
+ },
59
+ gravity: {
60
+ qualifier: 'g'
61
+ },
56
62
  x: {
57
63
  qualifier: 'x'
58
64
  },
59
65
  y: {
60
66
  qualifier: 'y'
61
- },
62
- gravity: {
63
- qualifier: 'g'
64
67
  }
65
68
  };
66
69
  var text = {
@@ -68,17 +71,25 @@ var text = {
68
71
  qualifier: 'co',
69
72
  location: 'primary'
70
73
  },
71
- fontFamily: {},
72
- fontSize: {},
73
- fontWeight: {},
74
- textDecoration: {},
74
+ textDecoration: {
75
+ qualifier: false
76
+ },
77
+ fontFamily: {
78
+ qualifier: false
79
+ },
80
+ fontSize: {
81
+ qualifier: false
82
+ },
83
+ fontWeight: {
84
+ qualifier: false
85
+ },
75
86
  letterSpacing: {
76
87
  qualifier: 'letter_spacing'
77
88
  }
78
89
  };
79
90
 
80
91
  var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
81
- var cld = new urlGen.Cloudinary({
92
+ var cld$1 = new urlGen.Cloudinary({
82
93
  cloud: {
83
94
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
84
95
  }
@@ -96,7 +107,7 @@ function cloudinaryLoader(options, cldOptions) {
96
107
  removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
97
108
  _cldOptions$underlays = cldOptions.underlays,
98
109
  underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
99
- var cldImage = cld.image(src);
110
+ var cldImage = cld$1.image(src);
100
111
 
101
112
  if (removeBackground) {
102
113
  cldImage.effect('e_background_removal');
@@ -214,6 +225,15 @@ function cloudinaryLoader(options, cldOptions) {
214
225
  }
215
226
 
216
227
  var _excluded = ["overlays", "removeBackground", "underlays"];
228
+ var cld = new urlGen.Cloudinary({
229
+ cloud: {
230
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
231
+ },
232
+ url: {
233
+ // Used to avoid issues with SSR particularly for the blurred placeholder
234
+ analytics: false
235
+ }
236
+ });
217
237
 
218
238
  var CldImage = function CldImage(_ref) {
219
239
  var overlays = _ref.overlays,
@@ -226,7 +246,32 @@ var CldImage = function CldImage(_ref) {
226
246
  removeBackground: removeBackground,
227
247
  underlays: underlays
228
248
  };
229
- return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, props, {
249
+ var imageProps = {}; // If we see a placeholder option, configure a Cloudinary-based URL.
250
+ // The resulting image will always be blurred per Next.js, so we're
251
+ // limited on options for placeholders.
252
+ // https://nextjs.org/docs/api-reference/next/image#blurdataurl
253
+
254
+ if (props.placeholder) {
255
+ var cldBlurredImage = cld.image(props.src).resize('c_limit,w_100').delivery('q_1').format('auto');
256
+
257
+ if (props.placeholder === 'grayscale') {
258
+ cldBlurredImage.effect('e_grayscale');
259
+ }
260
+
261
+ if (props.placeholder.includes('color:')) {
262
+ var color = props.placeholder.split(':').splice(1).join(':');
263
+ cldBlurredImage.effect('e_grayscale');
264
+ cldBlurredImage.effect("e_colorize:60,co_" + color);
265
+ }
266
+
267
+ imageProps.blurDataURL = cldBlurredImage.toURL();
268
+
269
+ if (props.placeholder !== 'blur') {
270
+ props.placeholder = 'blur';
271
+ }
272
+ }
273
+
274
+ return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, imageProps, props, {
230
275
  loader: function loader(options) {
231
276
  return cloudinaryLoader(options, cldOptions);
232
277
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.js","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","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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","Image"],"mappings":"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"}
1
+ {"version":3,"file":"next-cloudinary.js","sources":["../src/constants/qualifiers.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["export const primary = {\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 { 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}","import Image from 'next/image';\nimport { Cloudinary } from '@cloudinary/url-gen';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\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\nconst CldImage = ({ overlays, removeBackground, underlays, ...props }) => {\n const cldOptions = {\n overlays,\n removeBackground,\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 const cldBlurredImage = cld.image(props.src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( props.placeholder === 'grayscale' ) {\n cldBlurredImage.effect('e_grayscale');\n }\n\n if ( props.placeholder.includes('color:') ) {\n const color = props.placeholder.split(':').splice(1).join(':')\n cldBlurredImage.effect('e_grayscale');\n cldBlurredImage.effect(`e_colorize:60,co_${color}`);\n }\n\n imageProps.blurDataURL = cldBlurredImage.toURL();\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(options, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["primary","crop","qualifier","gravity","height","width","position","angle","x","y","text","color","location","textDecoration","fontFamily","fontSize","fontWeight","letterSpacing","cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","format","quality","overlays","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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","url","analytics","CldImage","props","imageProps","placeholder","cldBlurredImage","includes","split","splice","blurDataURL","_jsx","Image"],"mappings":"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"}
@@ -35,28 +35,31 @@ function _objectWithoutPropertiesLoose(source, excluded) {
35
35
  }
36
36
 
37
37
  const primary = {
38
- gravity: {
39
- qualifier: 'g'
40
- },
41
38
  crop: {
42
39
  qualifier: 'c'
43
40
  },
44
- width: {
45
- qualifier: 'w'
41
+ gravity: {
42
+ qualifier: 'g'
46
43
  },
47
44
  height: {
48
45
  qualifier: 'h'
46
+ },
47
+ width: {
48
+ qualifier: 'w'
49
49
  }
50
50
  };
51
51
  const position = {
52
+ angle: {
53
+ qualifier: 'a'
54
+ },
55
+ gravity: {
56
+ qualifier: 'g'
57
+ },
52
58
  x: {
53
59
  qualifier: 'x'
54
60
  },
55
61
  y: {
56
62
  qualifier: 'y'
57
- },
58
- gravity: {
59
- qualifier: 'g'
60
63
  }
61
64
  };
62
65
  const text = {
@@ -64,17 +67,25 @@ const text = {
64
67
  qualifier: 'co',
65
68
  location: 'primary'
66
69
  },
67
- fontFamily: {},
68
- fontSize: {},
69
- fontWeight: {},
70
- textDecoration: {},
70
+ textDecoration: {
71
+ qualifier: false
72
+ },
73
+ fontFamily: {
74
+ qualifier: false
75
+ },
76
+ fontSize: {
77
+ qualifier: false
78
+ },
79
+ fontWeight: {
80
+ qualifier: false
81
+ },
71
82
  letterSpacing: {
72
83
  qualifier: 'letter_spacing'
73
84
  }
74
85
  };
75
86
 
76
87
  const _excluded$1 = ["publicId", "type", "position", "text", "effects"];
77
- const cld = new Cloudinary({
88
+ const cld$1 = new Cloudinary({
78
89
  cloud: {
79
90
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
80
91
  }
@@ -92,7 +103,7 @@ function cloudinaryLoader(options, cldOptions) {
92
103
  removeBackground = false,
93
104
  underlays = []
94
105
  } = cldOptions;
95
- const cldImage = cld.image(src);
106
+ const cldImage = cld$1.image(src);
96
107
 
97
108
  if (removeBackground) {
98
109
  cldImage.effect('e_background_removal');
@@ -214,6 +225,15 @@ function cloudinaryLoader(options, cldOptions) {
214
225
  }
215
226
 
216
227
  const _excluded = ["overlays", "removeBackground", "underlays"];
228
+ const cld = new Cloudinary({
229
+ cloud: {
230
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
231
+ },
232
+ url: {
233
+ // Used to avoid issues with SSR particularly for the blurred placeholder
234
+ analytics: false
235
+ }
236
+ });
217
237
 
218
238
  const CldImage = _ref => {
219
239
  let {
@@ -228,7 +248,32 @@ const CldImage = _ref => {
228
248
  removeBackground,
229
249
  underlays
230
250
  };
231
- return /*#__PURE__*/jsx(Image, _extends({}, props, {
251
+ const imageProps = {}; // If we see a placeholder option, configure a Cloudinary-based URL.
252
+ // The resulting image will always be blurred per Next.js, so we're
253
+ // limited on options for placeholders.
254
+ // https://nextjs.org/docs/api-reference/next/image#blurdataurl
255
+
256
+ if (props.placeholder) {
257
+ const cldBlurredImage = cld.image(props.src).resize('c_limit,w_100').delivery('q_1').format('auto');
258
+
259
+ if (props.placeholder === 'grayscale') {
260
+ cldBlurredImage.effect('e_grayscale');
261
+ }
262
+
263
+ if (props.placeholder.includes('color:')) {
264
+ const color = props.placeholder.split(':').splice(1).join(':');
265
+ cldBlurredImage.effect('e_grayscale');
266
+ cldBlurredImage.effect(`e_colorize:60,co_${color}`);
267
+ }
268
+
269
+ imageProps.blurDataURL = cldBlurredImage.toURL();
270
+
271
+ if (props.placeholder !== 'blur') {
272
+ props.placeholder = 'blur';
273
+ }
274
+ }
275
+
276
+ return /*#__PURE__*/jsx(Image, _extends({}, imageProps, props, {
232
277
  loader: options => cloudinaryLoader(options, cldOptions)
233
278
  }));
234
279
  };
@@ -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/constants/qualifiers.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["export const primary = {\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 { 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}","import Image from 'next/image';\nimport { Cloudinary } from '@cloudinary/url-gen';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\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\nconst CldImage = ({ overlays, removeBackground, underlays, ...props }) => {\n const cldOptions = {\n overlays,\n removeBackground,\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 const cldBlurredImage = cld.image(props.src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( props.placeholder === 'grayscale' ) {\n cldBlurredImage.effect('e_grayscale');\n }\n\n if ( props.placeholder.includes('color:') ) {\n const color = props.placeholder.split(':').splice(1).join(':')\n cldBlurredImage.effect('e_grayscale');\n cldBlurredImage.effect(`e_colorize:60,co_${color}`);\n }\n\n imageProps.blurDataURL = cldBlurredImage.toURL();\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(options, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["primary","crop","qualifier","gravity","height","width","position","angle","x","y","text","color","location","textDecoration","fontFamily","fontSize","fontWeight","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","url","analytics","CldImage","props","imageProps","placeholder","cldBlurredImage","includes","split","splice","blurDataURL","_jsx"],"mappings":"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"}
@@ -35,28 +35,31 @@ function _objectWithoutPropertiesLoose(source, excluded) {
35
35
  }
36
36
 
37
37
  var primary = {
38
- gravity: {
39
- qualifier: 'g'
40
- },
41
38
  crop: {
42
39
  qualifier: 'c'
43
40
  },
44
- width: {
45
- qualifier: 'w'
41
+ gravity: {
42
+ qualifier: 'g'
46
43
  },
47
44
  height: {
48
45
  qualifier: 'h'
46
+ },
47
+ width: {
48
+ qualifier: 'w'
49
49
  }
50
50
  };
51
51
  var position = {
52
+ angle: {
53
+ qualifier: 'a'
54
+ },
55
+ gravity: {
56
+ qualifier: 'g'
57
+ },
52
58
  x: {
53
59
  qualifier: 'x'
54
60
  },
55
61
  y: {
56
62
  qualifier: 'y'
57
- },
58
- gravity: {
59
- qualifier: 'g'
60
63
  }
61
64
  };
62
65
  var text = {
@@ -64,17 +67,25 @@ var text = {
64
67
  qualifier: 'co',
65
68
  location: 'primary'
66
69
  },
67
- fontFamily: {},
68
- fontSize: {},
69
- fontWeight: {},
70
- textDecoration: {},
70
+ textDecoration: {
71
+ qualifier: false
72
+ },
73
+ fontFamily: {
74
+ qualifier: false
75
+ },
76
+ fontSize: {
77
+ qualifier: false
78
+ },
79
+ fontWeight: {
80
+ qualifier: false
81
+ },
71
82
  letterSpacing: {
72
83
  qualifier: 'letter_spacing'
73
84
  }
74
85
  };
75
86
 
76
87
  var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
77
- var cld = new Cloudinary({
88
+ var cld$1 = new Cloudinary({
78
89
  cloud: {
79
90
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
80
91
  }
@@ -92,7 +103,7 @@ function cloudinaryLoader(options, cldOptions) {
92
103
  removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
93
104
  _cldOptions$underlays = cldOptions.underlays,
94
105
  underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
95
- var cldImage = cld.image(src);
106
+ var cldImage = cld$1.image(src);
96
107
 
97
108
  if (removeBackground) {
98
109
  cldImage.effect('e_background_removal');
@@ -210,6 +221,15 @@ function cloudinaryLoader(options, cldOptions) {
210
221
  }
211
222
 
212
223
  var _excluded = ["overlays", "removeBackground", "underlays"];
224
+ var cld = new Cloudinary({
225
+ cloud: {
226
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
227
+ },
228
+ url: {
229
+ // Used to avoid issues with SSR particularly for the blurred placeholder
230
+ analytics: false
231
+ }
232
+ });
213
233
 
214
234
  var CldImage = function CldImage(_ref) {
215
235
  var overlays = _ref.overlays,
@@ -222,7 +242,32 @@ var CldImage = function CldImage(_ref) {
222
242
  removeBackground: removeBackground,
223
243
  underlays: underlays
224
244
  };
225
- return /*#__PURE__*/jsx(Image, _extends({}, props, {
245
+ var imageProps = {}; // If we see a placeholder option, configure a Cloudinary-based URL.
246
+ // The resulting image will always be blurred per Next.js, so we're
247
+ // limited on options for placeholders.
248
+ // https://nextjs.org/docs/api-reference/next/image#blurdataurl
249
+
250
+ if (props.placeholder) {
251
+ var cldBlurredImage = cld.image(props.src).resize('c_limit,w_100').delivery('q_1').format('auto');
252
+
253
+ if (props.placeholder === 'grayscale') {
254
+ cldBlurredImage.effect('e_grayscale');
255
+ }
256
+
257
+ if (props.placeholder.includes('color:')) {
258
+ var color = props.placeholder.split(':').splice(1).join(':');
259
+ cldBlurredImage.effect('e_grayscale');
260
+ cldBlurredImage.effect("e_colorize:60,co_" + color);
261
+ }
262
+
263
+ imageProps.blurDataURL = cldBlurredImage.toURL();
264
+
265
+ if (props.placeholder !== 'blur') {
266
+ props.placeholder = 'blur';
267
+ }
268
+ }
269
+
270
+ return /*#__PURE__*/jsx(Image, _extends({}, imageProps, props, {
226
271
  loader: function loader(options) {
227
272
  return cloudinaryLoader(options, cldOptions);
228
273
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.module.js","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","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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.module.js","sources":["../src/constants/qualifiers.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["export const primary = {\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 { 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}","import Image from 'next/image';\nimport { Cloudinary } from '@cloudinary/url-gen';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\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\nconst CldImage = ({ overlays, removeBackground, underlays, ...props }) => {\n const cldOptions = {\n overlays,\n removeBackground,\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 const cldBlurredImage = cld.image(props.src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( props.placeholder === 'grayscale' ) {\n cldBlurredImage.effect('e_grayscale');\n }\n\n if ( props.placeholder.includes('color:') ) {\n const color = props.placeholder.split(':').splice(1).join(':')\n cldBlurredImage.effect('e_grayscale');\n cldBlurredImage.effect(`e_colorize:60,co_${color}`);\n }\n\n imageProps.blurDataURL = cldBlurredImage.toURL();\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(options, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["primary","crop","qualifier","gravity","height","width","position","angle","x","y","text","color","location","textDecoration","fontFamily","fontSize","fontWeight","letterSpacing","cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","format","quality","overlays","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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","url","analytics","CldImage","props","imageProps","placeholder","cldBlurredImage","includes","split","splice","blurDataURL","_jsx"],"mappings":"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"}
@@ -40,28 +40,31 @@
40
40
  }
41
41
 
42
42
  var primary = {
43
- gravity: {
44
- qualifier: 'g'
45
- },
46
43
  crop: {
47
44
  qualifier: 'c'
48
45
  },
49
- width: {
50
- qualifier: 'w'
46
+ gravity: {
47
+ qualifier: 'g'
51
48
  },
52
49
  height: {
53
50
  qualifier: 'h'
51
+ },
52
+ width: {
53
+ qualifier: 'w'
54
54
  }
55
55
  };
56
56
  var position = {
57
+ angle: {
58
+ qualifier: 'a'
59
+ },
60
+ gravity: {
61
+ qualifier: 'g'
62
+ },
57
63
  x: {
58
64
  qualifier: 'x'
59
65
  },
60
66
  y: {
61
67
  qualifier: 'y'
62
- },
63
- gravity: {
64
- qualifier: 'g'
65
68
  }
66
69
  };
67
70
  var text = {
@@ -69,17 +72,25 @@
69
72
  qualifier: 'co',
70
73
  location: 'primary'
71
74
  },
72
- fontFamily: {},
73
- fontSize: {},
74
- fontWeight: {},
75
- textDecoration: {},
75
+ textDecoration: {
76
+ qualifier: false
77
+ },
78
+ fontFamily: {
79
+ qualifier: false
80
+ },
81
+ fontSize: {
82
+ qualifier: false
83
+ },
84
+ fontWeight: {
85
+ qualifier: false
86
+ },
76
87
  letterSpacing: {
77
88
  qualifier: 'letter_spacing'
78
89
  }
79
90
  };
80
91
 
81
92
  var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
82
- var cld = new urlGen.Cloudinary({
93
+ var cld$1 = new urlGen.Cloudinary({
83
94
  cloud: {
84
95
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
85
96
  }
@@ -97,7 +108,7 @@
97
108
  removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
98
109
  _cldOptions$underlays = cldOptions.underlays,
99
110
  underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
100
- var cldImage = cld.image(src);
111
+ var cldImage = cld$1.image(src);
101
112
 
102
113
  if (removeBackground) {
103
114
  cldImage.effect('e_background_removal');
@@ -215,6 +226,15 @@
215
226
  }
216
227
 
217
228
  var _excluded = ["overlays", "removeBackground", "underlays"];
229
+ var cld = new urlGen.Cloudinary({
230
+ cloud: {
231
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
232
+ },
233
+ url: {
234
+ // Used to avoid issues with SSR particularly for the blurred placeholder
235
+ analytics: false
236
+ }
237
+ });
218
238
 
219
239
  var CldImage = function CldImage(_ref) {
220
240
  var overlays = _ref.overlays,
@@ -227,7 +247,32 @@
227
247
  removeBackground: removeBackground,
228
248
  underlays: underlays
229
249
  };
230
- return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, props, {
250
+ var imageProps = {}; // If we see a placeholder option, configure a Cloudinary-based URL.
251
+ // The resulting image will always be blurred per Next.js, so we're
252
+ // limited on options for placeholders.
253
+ // https://nextjs.org/docs/api-reference/next/image#blurdataurl
254
+
255
+ if (props.placeholder) {
256
+ var cldBlurredImage = cld.image(props.src).resize('c_limit,w_100').delivery('q_1').format('auto');
257
+
258
+ if (props.placeholder === 'grayscale') {
259
+ cldBlurredImage.effect('e_grayscale');
260
+ }
261
+
262
+ if (props.placeholder.includes('color:')) {
263
+ var color = props.placeholder.split(':').splice(1).join(':');
264
+ cldBlurredImage.effect('e_grayscale');
265
+ cldBlurredImage.effect("e_colorize:60,co_" + color);
266
+ }
267
+
268
+ imageProps.blurDataURL = cldBlurredImage.toURL();
269
+
270
+ if (props.placeholder !== 'blur') {
271
+ props.placeholder = 'blur';
272
+ }
273
+ }
274
+
275
+ return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, imageProps, props, {
231
276
  loader: function loader(options) {
232
277
  return cloudinaryLoader(options, cldOptions);
233
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.umd.js","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","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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","Image"],"mappings":"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"}
1
+ {"version":3,"file":"next-cloudinary.umd.js","sources":["../src/constants/qualifiers.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["export const primary = {\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 { 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}","import Image from 'next/image';\nimport { Cloudinary } from '@cloudinary/url-gen';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\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\nconst CldImage = ({ overlays, removeBackground, underlays, ...props }) => {\n const cldOptions = {\n overlays,\n removeBackground,\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 const cldBlurredImage = cld.image(props.src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( props.placeholder === 'grayscale' ) {\n cldBlurredImage.effect('e_grayscale');\n }\n\n if ( props.placeholder.includes('color:') ) {\n const color = props.placeholder.split(':').splice(1).join(':')\n cldBlurredImage.effect('e_grayscale');\n cldBlurredImage.effect(`e_colorize:60,co_${color}`);\n }\n\n imageProps.blurDataURL = cldBlurredImage.toURL();\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(options, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["primary","crop","qualifier","gravity","height","width","position","angle","x","y","text","color","location","textDecoration","fontFamily","fontSize","fontWeight","letterSpacing","cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","format","quality","overlays","removeBackground","underlays","cldImage","image","effect","layers","map","overlay","type","underlay","forEach","publicId","effects","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","url","analytics","CldImage","props","imageProps","placeholder","cldBlurredImage","includes","split","splice","blurDataURL","_jsx","Image"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-cloudinary",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "dist/next-cloudinary.umd.js",
5
5
  "module": "dist/next-cloudinary.module.js",
6
6
  "umd:main": "dist/next-cloudinary.umd.js",