next-cloudinary 0.0.1 → 0.0.2

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.
@@ -1,5 +1,5 @@
1
- var urlGen = require('@cloudinary/url-gen');
2
1
  var Image = require('next/image');
2
+ var urlGen = require('@cloudinary/url-gen');
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
 
5
5
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -38,13 +38,51 @@ function _objectWithoutPropertiesLoose(source, excluded) {
38
38
  return target;
39
39
  }
40
40
 
41
- var _excluded = ["effects", "removeBackground"];
41
+ var primary = {
42
+ gravity: {
43
+ qualifier: 'g'
44
+ },
45
+ crop: {
46
+ qualifier: 'c'
47
+ },
48
+ width: {
49
+ qualifier: 'w'
50
+ },
51
+ height: {
52
+ qualifier: 'h'
53
+ }
54
+ };
55
+ var position = {
56
+ x: {
57
+ qualifier: 'x'
58
+ },
59
+ y: {
60
+ qualifier: 'y'
61
+ },
62
+ gravity: {
63
+ qualifier: 'g'
64
+ }
65
+ };
66
+ var text = {
67
+ color: {
68
+ qualifier: 'co',
69
+ location: 'primary'
70
+ },
71
+ fontFamily: {},
72
+ fontSize: {},
73
+ fontWeight: {},
74
+ textDecoration: {},
75
+ letterSpacing: {
76
+ qualifier: 'letter_spacing'
77
+ }
78
+ };
79
+
80
+ var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
42
81
  var cld = new urlGen.Cloudinary({
43
82
  cloud: {
44
83
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
45
84
  }
46
85
  });
47
-
48
86
  function cloudinaryLoader(options, cldOptions) {
49
87
  var src = options.src,
50
88
  width = options.width,
@@ -52,30 +90,141 @@ function cloudinaryLoader(options, cldOptions) {
52
90
  format = _options$format === void 0 ? 'auto' : _options$format,
53
91
  _options$quality = options.quality,
54
92
  quality = _options$quality === void 0 ? 'auto' : _options$quality;
55
- var _cldOptions$effects = cldOptions.effects,
56
- effects = _cldOptions$effects === void 0 ? [] : _cldOptions$effects,
93
+ var _cldOptions$overlays = cldOptions.overlays,
94
+ overlays = _cldOptions$overlays === void 0 ? [] : _cldOptions$overlays,
57
95
  _cldOptions$removeBac = cldOptions.removeBackground,
58
- removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac;
96
+ removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
97
+ _cldOptions$underlays = cldOptions.underlays,
98
+ underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
59
99
  var cldImage = cld.image(src);
60
100
 
61
101
  if (removeBackground) {
62
102
  cldImage.effect('e_background_removal');
63
- }
103
+ } // Adding overlays and underlays allows you to compose your image
104
+ // by using layering with overlays appearing on top of and udnerlays
105
+ // appearing below your base image layer
106
+ //
107
+ // Learn more: https://cloudinary.com/documentation/layers
108
+
109
+
110
+ var layers = [].concat(overlays.map(function (overlay) {
111
+ return _extends({}, overlay, {
112
+ type: 'overlay'
113
+ });
114
+ }), underlays.map(function (underlay) {
115
+ return _extends({}, underlay, {
116
+ type: 'underlay'
117
+ });
118
+ }));
119
+ layers.forEach(function (_ref) {
120
+ var publicId = _ref.publicId,
121
+ type = _ref.type,
122
+ position$1 = _ref.position,
123
+ text$1 = _ref.text,
124
+ _ref$effects = _ref.effects,
125
+ layerEffects = _ref$effects === void 0 ? [] : _ref$effects,
126
+ options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
127
+
128
+ var hasPublicId = typeof publicId === 'string';
129
+ var hasText = typeof text$1 === 'object';
130
+ var hasPosition = typeof position$1 === 'object';
131
+
132
+ if (!hasPublicId && !hasText) {
133
+ console.warn(type + " is missing Public ID or Text");
134
+ return;
135
+ } // Determine the qualifier for the type of layer
136
+
137
+
138
+ var typeQualifier;
139
+
140
+ if (type === 'overlay') {
141
+ typeQualifier = 'l';
142
+ } else if (type === 'underlay') {
143
+ typeQualifier = 'u';
144
+ } // Start to construct the transformation string using text or the public ID
145
+ // if it's image-based
64
146
 
65
- effects.forEach(function (effect) {
66
- return cldImage.effect(effect);
147
+
148
+ var layerTransformation;
149
+
150
+ if (hasText) {
151
+ layerTransformation = typeQualifier + "_text";
152
+ } else {
153
+ layerTransformation = typeQualifier + "_" + publicId.replace(/\//g, ':');
154
+ } // Begin organizing transformations based on what it is and the location
155
+ // it needs to be placed in the URL
156
+
157
+
158
+ var primary$1 = [];
159
+ var applied = []; // Gemeral options
160
+
161
+ Object.keys(options).forEach(function (key) {
162
+ if (!primary[key]) return;
163
+ var qualifier = primary[key].qualifier;
164
+ primary$1.push(qualifier + "_" + options[key]);
165
+ }); // Layer effects
166
+
167
+ layerEffects.forEach(function (effect) {
168
+ Object.keys(effect).forEach(function (key) {
169
+ if (!primary[key]) return;
170
+ var qualifier = primary[key].qualifier;
171
+ primary$1.push(qualifier + "_" + effect[key]);
172
+ });
173
+ }); // Text styling
174
+
175
+ if (hasText) {
176
+ var textTransformations = [];
177
+ Object.keys(text$1).forEach(function (key) {
178
+ if (!text[key]) return;
179
+ var _qualifiersText$key = text[key],
180
+ qualifier = _qualifiersText$key.qualifier,
181
+ location = _qualifiersText$key.location;
182
+
183
+ if (location === 'primary') {
184
+ primary$1.push(qualifier + "_" + text$1[key]);
185
+ } else {
186
+ textTransformations.push(text$1[key]);
187
+ }
188
+ });
189
+ layerTransformation = layerTransformation + ":" + textTransformations.join('_') + ":" + text$1.text;
190
+ } // Positioning
191
+
192
+
193
+ if (hasPosition) {
194
+ Object.keys(position$1).forEach(function (key) {
195
+ if (!position[key]) return;
196
+ var qualifier = position[key].qualifier;
197
+ applied.push(qualifier + "_" + position$1[key]);
198
+ });
199
+ } // Add all primary transformations
200
+
201
+
202
+ layerTransformation = layerTransformation + "," + primary$1.join(','); // Add all applied transformations
203
+
204
+ layerTransformation = layerTransformation + "/fl_layer_apply";
205
+
206
+ if (applied.length > 0) {
207
+ layerTransformation = layerTransformation + "," + applied.join(',');
208
+ } // Finally add it to the image
209
+
210
+
211
+ cldImage.addTransformation(layerTransformation);
67
212
  });
68
213
  return cldImage.resize("c_limit,w_" + width).format(format).delivery("q_" + quality).toURL();
69
214
  }
70
215
 
216
+ var _excluded = ["overlays", "removeBackground", "underlays"];
217
+
71
218
  var CldImage = function CldImage(_ref) {
72
- var effects = _ref.effects,
219
+ var overlays = _ref.overlays,
73
220
  removeBackground = _ref.removeBackground,
221
+ underlays = _ref.underlays,
74
222
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
75
223
 
76
224
  var cldOptions = {
77
- effects: effects,
78
- removeBackground: removeBackground
225
+ overlays: overlays,
226
+ removeBackground: removeBackground,
227
+ underlays: underlays
79
228
  };
80
229
  return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, props, {
81
230
  loader: function loader(options) {
@@ -85,4 +234,8 @@ var CldImage = function CldImage(_ref) {
85
234
  };
86
235
 
87
236
  exports.CldImage = CldImage;
237
+ exports.cloudinaryLoader = cloudinaryLoader;
238
+ exports.position = position;
239
+ exports.primary = primary;
240
+ exports.text = text;
88
241
  //# sourceMappingURL=next-cloudinary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.js","sources":["../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\nimport Image from 'next/image';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n});\n\nfunction cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto'\n } = options;\n\n const {\n effects = [],\n removeBackground = false\n } = cldOptions;\n\n const cldImage = cld.image(src);\n\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n\n effects.forEach(effect => cldImage.effect(effect));\n\n return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();\n}\n\nconst CldImage = ({ effects, removeBackground, ...props }) => {\n const cldOptions = {\n effects,\n removeBackground\n };\n return <Image {...props} loader={(options) => cloudinaryLoader(options, cldOptions)} />\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","width","format","quality","effects","removeBackground","cldImage","image","effect","forEach","resize","delivery","toURL","CldImage","props","_jsx","Image"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAMA,GAAG,GAAG,IAAIC,iBAAJ,CAAe;AACzBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;AADlB,GAAA;AADkB,CAAf,CAAZ,CAAA;;AAMA,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;AAC7C,EAAA,IACEC,GADF,GAKIF,OALJ,CACEE,GADF;AAAA,MAEEC,KAFF,GAKIH,OALJ,CAEEG,KAFF;MAKIH,eAAAA,GAAAA,OALJ,CAGEI,MAHF;MAGEA,MAHF,gCAGW,MAHX,GAAA,eAAA;MAKIJ,gBAAAA,GAAAA,OALJ,CAIEK,OAJF;MAIEA,OAJF,iCAIY,MAJZ,GAAA,gBAAA,CAAA;EAOA,IAGIJ,mBAAAA,GAAAA,UAHJ,CACEK,OADF;MACEA,OADF,oCACY,EADZ,GAAA,mBAAA;MAGIL,qBAAAA,GAAAA,UAHJ,CAEEM,gBAFF;MAEEA,gBAFF,sCAEqB,KAFrB,GAAA,qBAAA,CAAA;AAKA,EAAA,IAAMC,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;AAEA,EAAA,IAAKK,gBAAL,EAAwB;IACtBC,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;AACD,GAAA;;AAEDJ,EAAAA,OAAO,CAACK,OAAR,CAAgB,UAAAD,MAAM,EAAA;AAAA,IAAA,OAAIF,QAAQ,CAACE,MAAT,CAAgBA,MAAhB,CAAJ,CAAA;GAAtB,CAAA,CAAA;AAEA,EAAA,OAAOF,QAAQ,CAACI,MAAT,CAAA,YAAA,GAA6BT,KAA7B,CAAsCC,CAAAA,MAAtC,CAA6CA,MAA7C,EAAqDS,QAArD,CAAA,IAAA,GAAmER,OAAnE,CAAA,CAA8ES,KAA9E,EAAP,CAAA;AACD,CAAA;;AAED,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAA6C,IAAA,EAAA;EAAA,IAA1CT,OAA0C,QAA1CA,OAA0C;MAAjCC,gBAAiC,QAAjCA,gBAAiC;AAAA,MAAZS,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AAC5D,EAAA,IAAMf,UAAU,GAAG;AACjBK,IAAAA,OAAO,EAAPA,OADiB;AAEjBC,IAAAA,gBAAgB,EAAhBA,gBAAAA;GAFF,CAAA;EAIA,oBAAOU,cAAA,CAACC,yBAAD,EAAA,QAAA,CAAA,EAAA,EAAWF,KAAX,EAAA;IAAkB,MAAM,EAAE,gBAAChB,OAAD,EAAA;AAAA,MAAA,OAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAA7B,CAAA;AAAA,KAAA;GAAjC,CAAA,CAAA,CAAA;AACD;;;;"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GAAA;GAFQ;AAIrBC,EAAAA,IAAI,EAAE;AACJD,IAAAA,SAAS,EAAE,GAAA;GALQ;AAOrBE,EAAAA,KAAK,EAAE;AACLF,IAAAA,SAAS,EAAE,GAAA;GARQ;AAUrBG,EAAAA,MAAM,EAAE;AACNH,IAAAA,SAAS,EAAE,GAAA;AADL,GAAA;AAVa,EAAhB;AAeA,IAAMI,QAAQ,GAAG;AACtBC,EAAAA,CAAC,EAAE;AACDL,IAAAA,SAAS,EAAE,GAAA;GAFS;AAItBM,EAAAA,CAAC,EAAE;AACDN,IAAAA,SAAS,EAAE,GAAA;GALS;AAOtBD,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GAAA;AADJ,GAAA;AAPa,EAAjB;AAYA,IAAMO,IAAI,GAAG;AAClBC,EAAAA,KAAK,EAAE;AACLR,IAAAA,SAAS,EAAE,IADN;AAELS,IAAAA,QAAQ,EAAE,SAAA;GAHM;AAKlBC,EAAAA,UAAU,EAAE,EALM;AAOlBC,EAAAA,QAAQ,EAAE,EAPQ;AASlBC,EAAAA,UAAU,EAAE,EATM;AAWlBC,EAAAA,cAAc,EAAE,EAXE;AAalBC,EAAAA,aAAa,EAAE;AACbd,IAAAA,SAAS,EAAE,gBAAA;AADE,GAAA;AAbG;;;ACnBpB,IAAMe,GAAG,GAAG,IAAIC,iBAAJ,CAAe;AACzBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;AADlB,GAAA;AADkB,CAAf,CAAZ,CAAA;AAMO,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;AACpD,EAAA,IACEC,GADF,GAKIF,OALJ,CACEE,GADF;AAAA,MAEEvB,KAFF,GAKIqB,OALJ,CAEErB,KAFF;MAKIqB,eAAAA,GAAAA,OALJ,CAGEG,MAHF;MAGEA,MAHF,gCAGW,MAHX,GAAA,eAAA;MAKIH,gBAAAA,GAAAA,OALJ,CAIEI,OAJF;MAIEA,OAJF,iCAIY,MAJZ,GAAA,gBAAA,CAAA;EAYIH,IAAAA,oBAAAA,GAAAA,UALJ,CACEI,QADF,CAAA;MACEA,QADF,qCACa,EADb,GAAA,oBAAA,CAAA;MAKIJ,qBAAAA,GAAAA,UALJ,CAGEK,gBAHF,CAAA;MAGEA,gBAHF,sCAGqB,KAHrB,GAAA,qBAAA,CAAA;MAKIL,qBAAAA,GAAAA,UALJ,CAIEM,SAJF,CAAA;MAIEA,SAJF,sCAIc,EAJd,GAAA,sBAAA;AAOA,EAAA,IAAMC,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;AAEA,EAAA,IAAKI,gBAAL,EAAwB;IACtBE,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;AACD,GAnBmD;AAsBpD;AACA;AACA;AACA;;;AAEA,EAAA,IAAMC,MAAM,GACPN,EAAAA,CAAAA,MAAAA,CAAAA,QAAQ,CAACO,GAAT,CAAa,UAAAC,OAAO,EAAA;AAAA,IAAA,OAAA,QAAA,CAAA,EAAA,EAAUA,OAAV,EAAA;AAAmBC,MAAAA,IAAI,EAAE,SAAA;AAAzB,KAAA,CAAA,CAAA;AAAA,GAApB,CADO,EAEPP,SAAS,CAACK,GAAV,CAAc,UAAAG,QAAQ,EAAA;AAAA,IAAA,OAAA,QAAA,CAAA,EAAA,EAAUA,QAAV,EAAA;AAAoBD,MAAAA,IAAI,EAAE,UAAA;AAA1B,KAAA,CAAA,CAAA;AAAA,GAAtB,CAFO,CAAZ,CAAA;EAKAH,MAAM,CAACK,OAAP,CAAe,UAAgF,IAAA,EAAA;IAAA,IAA7EC,QAA6E,QAA7EA,QAA6E;QAAnEH,IAAmE,QAAnEA,IAAmE;QAA7DjC,UAA6D,QAA7DA,QAA6D;QAAnDG,MAAmD,QAAnDA,IAAmD;AAAA,QAAA,YAAA,GAAA,IAAA,CAA7CkC,OAA6C;QAApCC,YAAoC,6BAArB,EAAqB,GAAA,YAAA;AAAA,QAAdnB,OAAc,GAAA,6BAAA,CAAA,IAAA,EAAAoB,WAAA,CAAA,CAAA;;AAC7F,IAAA,IAAMC,WAAW,GAAG,OAAOJ,QAAP,KAAoB,QAAxC,CAAA;AACA,IAAA,IAAMK,OAAO,GAAG,OAAOtC,MAAP,KAAgB,QAAhC,CAAA;AACA,IAAA,IAAMuC,WAAW,GAAG,OAAO1C,UAAP,KAAoB,QAAxC,CAAA;;AAEA,IAAA,IAAK,CAACwC,WAAD,IAAgB,CAACC,OAAtB,EAAgC;MAC9BE,OAAO,CAACC,IAAR,CAAgBX,IAAhB,GAAA,+BAAA,CAAA,CAAA;AACA,MAAA,OAAA;AACD,KAR4F;;;AAY7F,IAAA,IAAIY,aAAJ,CAAA;;IAEA,IAAKZ,IAAI,KAAK,SAAd,EAA0B;AACxBY,MAAAA,aAAa,GAAG,GAAhB,CAAA;AACD,KAFD,MAEO,IAAKZ,IAAI,KAAK,UAAd,EAA2B;AAChCY,MAAAA,aAAa,GAAG,GAAhB,CAAA;AACD,KAlB4F;AAqB7F;;;AAEA,IAAA,IAAIC,mBAAJ,CAAA;;AAEA,IAAA,IAAKL,OAAL,EAAe;MACbK,mBAAmB,GAAMD,aAAN,GAAnB,OAAA,CAAA;AACD,KAFD,MAEO;MACLC,mBAAmB,GAAMD,aAAN,GAAA,GAAA,GAAuBT,QAAQ,CAACW,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,CAA1C,CAAA;AACD,KA7B4F;AAgC7F;;;IAEA,IAAMrD,SAAO,GAAG,EAAhB,CAAA;AACA,IAAA,IAAMsD,OAAO,GAAG,EAAhB,CAnC6F;;IAuC7FC,MAAM,CAACC,IAAP,CAAY/B,OAAZ,EAAqBgB,OAArB,CAA6B,UAAAgB,GAAG,EAAI;AAClC,MAAA,IAAK,CAACC,OAAiB,CAACD,GAAD,CAAvB,EAA+B,OAAA;AAC/B,MAAA,IAAQvD,SAAR,GAAsBwD,OAAiB,CAACD,GAAD,CAAvC,CAAQvD,SAAR,CAAA;MACAF,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BuB,OAAO,CAACgC,GAAD,CAApC,CAAA,CAAA;AACD,KAJD,EAvC6F;;AA+C7Fb,IAAAA,YAAY,CAACH,OAAb,CAAqB,UAAAN,MAAM,EAAI;MAC7BoB,MAAM,CAACC,IAAP,CAAYrB,MAAZ,EAAoBM,OAApB,CAA4B,UAAAgB,GAAG,EAAI;AACjC,QAAA,IAAK,CAACC,OAAiB,CAACD,GAAD,CAAvB,EAA+B,OAAA;AAC/B,QAAA,IAAQvD,SAAR,GAAsBwD,OAAiB,CAACD,GAAD,CAAvC,CAAQvD,SAAR,CAAA;QACAF,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BiC,MAAM,CAACsB,GAAD,CAAnC,CAAA,CAAA;OAHF,CAAA,CAAA;AAKD,KAND,EA/C6F;;AAyD7F,IAAA,IAAKV,OAAL,EAAe;MACb,IAAMa,mBAAmB,GAAG,EAA5B,CAAA;MAEAL,MAAM,CAACC,IAAP,CAAY/C,MAAZ,EAAkBgC,OAAlB,CAA0B,UAAAgB,GAAG,EAAI;AAC/B,QAAA,IAAK,CAACI,IAAc,CAACJ,GAAD,CAApB,EAA4B,OAAA;QAE5B,IAAgCI,mBAAAA,GAAAA,IAAc,CAACJ,GAAD,CAA9C;YAAQvD,SAAR,uBAAQA,SAAR;YAAmBS,QAAnB,uBAAmBA,QAAnB,CAAA;;QAEA,IAAKA,QAAQ,KAAK,SAAlB,EAA8B;UAC5BX,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BO,MAAI,CAACgD,GAAD,CAAjC,CAAA,CAAA;AACD,SAFD,MAEO;AACLG,UAAAA,mBAAmB,CAACD,IAApB,CAAyBlD,MAAI,CAACgD,GAAD,CAA7B,CAAA,CAAA;AACD,SAAA;OATH,CAAA,CAAA;AAYAL,MAAAA,mBAAmB,GAAMA,mBAAN,GAA6BQ,GAAAA,GAAAA,mBAAmB,CAACE,IAApB,CAAyB,GAAzB,CAA7B,GAAA,GAAA,GAA8DrD,MAAI,CAACA,IAAtF,CAAA;AACD,KAzE4F;;;AA6E7F,IAAA,IAAKuC,WAAL,EAAmB;MACjBO,MAAM,CAACC,IAAP,CAAYlD,UAAZ,EAAsBmC,OAAtB,CAA8B,UAAAgB,GAAG,EAAI;AACnC,QAAA,IAAK,CAACM,QAAkB,CAACN,GAAD,CAAxB,EAAgC,OAAA;AAEhC,QAAA,IAAQvD,SAAR,GAAsB6D,QAAkB,CAACN,GAAD,CAAxC,CAAQvD,SAAR,CAAA;QAEAoD,OAAO,CAACK,IAAR,CAAgBzD,SAAhB,SAA6BI,UAAQ,CAACmD,GAAD,CAArC,CAAA,CAAA;OALF,CAAA,CAAA;AAOD,KArF4F;;;IAyF7FL,mBAAmB,GAAMA,mBAAN,GAAA,GAAA,GAA6BpD,SAAO,CAAC8D,IAAR,CAAa,GAAb,CAAhD,CAzF6F;;IA6F7FV,mBAAmB,GAAMA,mBAAN,GAAnB,iBAAA,CAAA;;AAEA,IAAA,IAAKE,OAAO,CAACU,MAAR,GAAiB,CAAtB,EAA0B;MACxBZ,mBAAmB,GAAMA,mBAAN,GAA6BE,GAAAA,GAAAA,OAAO,CAACQ,IAAR,CAAa,GAAb,CAAhD,CAAA;AACD,KAjG4F;;;IAqG7F7B,QAAQ,CAACgC,iBAAT,CAA2Bb,mBAA3B,CAAA,CAAA;GArGF,CAAA,CAAA;AAwGA,EAAA,OAAOnB,QAAQ,CAACiC,MAAT,CAAA,YAAA,GAA6B9D,KAA7B,CAAsCwB,CAAAA,MAAtC,CAA6CA,MAA7C,EAAqDuC,QAArD,CAAA,IAAA,GAAmEtC,OAAnE,CAAA,CAA8EuC,KAA9E,EAAP,CAAA;AACD;;;;AClJD,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAyD,IAAA,EAAA;EAAA,IAAtDvC,QAAsD,QAAtDA,QAAsD;MAA5CC,gBAA4C,QAA5CA,gBAA4C;MAA1BC,SAA0B,QAA1BA,SAA0B;AAAA,MAAZsC,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AACxE,EAAA,IAAM5C,UAAU,GAAG;AACjBI,IAAAA,QAAQ,EAARA,QADiB;AAEjBC,IAAAA,gBAAgB,EAAhBA,gBAFiB;AAGjBC,IAAAA,SAAS,EAATA,SAAAA;GAHF,CAAA;EAKA,oBAAOuC,cAAA,CAACC,yBAAD,EAAA,QAAA,CAAA,EAAA,EAAWF,KAAX,EAAA;IAAkB,MAAM,EAAE,gBAAC7C,OAAD,EAAA;AAAA,MAAA,OAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAA7B,CAAA;AAAA,KAAA;GAAjC,CAAA,CAAA,CAAA;AACD;;;;;;;;"}
@@ -1,5 +1,5 @@
1
- import { Cloudinary } from '@cloudinary/url-gen';
2
1
  import Image from 'next/image';
2
+ import { Cloudinary } from '@cloudinary/url-gen';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function _extends() {
@@ -34,13 +34,51 @@ function _objectWithoutPropertiesLoose(source, excluded) {
34
34
  return target;
35
35
  }
36
36
 
37
- const _excluded = ["effects", "removeBackground"];
37
+ const primary = {
38
+ gravity: {
39
+ qualifier: 'g'
40
+ },
41
+ crop: {
42
+ qualifier: 'c'
43
+ },
44
+ width: {
45
+ qualifier: 'w'
46
+ },
47
+ height: {
48
+ qualifier: 'h'
49
+ }
50
+ };
51
+ const position = {
52
+ x: {
53
+ qualifier: 'x'
54
+ },
55
+ y: {
56
+ qualifier: 'y'
57
+ },
58
+ gravity: {
59
+ qualifier: 'g'
60
+ }
61
+ };
62
+ const text = {
63
+ color: {
64
+ qualifier: 'co',
65
+ location: 'primary'
66
+ },
67
+ fontFamily: {},
68
+ fontSize: {},
69
+ fontWeight: {},
70
+ textDecoration: {},
71
+ letterSpacing: {
72
+ qualifier: 'letter_spacing'
73
+ }
74
+ };
75
+
76
+ const _excluded$1 = ["publicId", "type", "position", "text", "effects"];
38
77
  const cld = new Cloudinary({
39
78
  cloud: {
40
79
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
41
80
  }
42
81
  });
43
-
44
82
  function cloudinaryLoader(options, cldOptions) {
45
83
  const {
46
84
  src,
@@ -49,34 +87,151 @@ function cloudinaryLoader(options, cldOptions) {
49
87
  quality = 'auto'
50
88
  } = options;
51
89
  const {
90
+ overlays = [],
52
91
  effects = [],
53
- removeBackground = false
92
+ removeBackground = false,
93
+ underlays = []
54
94
  } = cldOptions;
55
95
  const cldImage = cld.image(src);
56
96
 
57
97
  if (removeBackground) {
58
98
  cldImage.effect('e_background_removal');
59
- }
99
+ } // Adding overlays and underlays allows you to compose your image
100
+ // by using layering with overlays appearing on top of and udnerlays
101
+ // appearing below your base image layer
102
+ //
103
+ // Learn more: https://cloudinary.com/documentation/layers
104
+
105
+
106
+ const layers = [...overlays.map(overlay => _extends({}, overlay, {
107
+ type: 'overlay'
108
+ })), ...underlays.map(underlay => _extends({}, underlay, {
109
+ type: 'underlay'
110
+ }))];
111
+ layers.forEach(_ref => {
112
+ let {
113
+ publicId,
114
+ type,
115
+ position: position$1,
116
+ text: text$1,
117
+ effects: layerEffects = []
118
+ } = _ref,
119
+ options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
120
+
121
+ const hasPublicId = typeof publicId === 'string';
122
+ const hasText = typeof text$1 === 'object';
123
+ const hasPosition = typeof position$1 === 'object';
124
+
125
+ if (!hasPublicId && !hasText) {
126
+ console.warn(`${type} is missing Public ID or Text`);
127
+ return;
128
+ } // Determine the qualifier for the type of layer
129
+
130
+
131
+ let typeQualifier;
132
+
133
+ if (type === 'overlay') {
134
+ typeQualifier = 'l';
135
+ } else if (type === 'underlay') {
136
+ typeQualifier = 'u';
137
+ } // Start to construct the transformation string using text or the public ID
138
+ // if it's image-based
60
139
 
61
- effects.forEach(effect => cldImage.effect(effect));
140
+
141
+ let layerTransformation;
142
+
143
+ if (hasText) {
144
+ layerTransformation = `${typeQualifier}_text`;
145
+ } else {
146
+ layerTransformation = `${typeQualifier}_${publicId.replace(/\//g, ':')}`;
147
+ } // Begin organizing transformations based on what it is and the location
148
+ // it needs to be placed in the URL
149
+
150
+
151
+ const primary$1 = [];
152
+ const applied = []; // Gemeral options
153
+
154
+ Object.keys(options).forEach(key => {
155
+ if (!primary[key]) return;
156
+ const {
157
+ qualifier
158
+ } = primary[key];
159
+ primary$1.push(`${qualifier}_${options[key]}`);
160
+ }); // Layer effects
161
+
162
+ layerEffects.forEach(effect => {
163
+ Object.keys(effect).forEach(key => {
164
+ if (!primary[key]) return;
165
+ const {
166
+ qualifier
167
+ } = primary[key];
168
+ primary$1.push(`${qualifier}_${effect[key]}`);
169
+ });
170
+ }); // Text styling
171
+
172
+ if (hasText) {
173
+ const textTransformations = [];
174
+ Object.keys(text$1).forEach(key => {
175
+ if (!text[key]) return;
176
+ const {
177
+ qualifier,
178
+ location
179
+ } = text[key];
180
+
181
+ if (location === 'primary') {
182
+ primary$1.push(`${qualifier}_${text$1[key]}`);
183
+ } else {
184
+ textTransformations.push(text$1[key]);
185
+ }
186
+ });
187
+ layerTransformation = `${layerTransformation}:${textTransformations.join('_')}:${text$1.text}`;
188
+ } // Positioning
189
+
190
+
191
+ if (hasPosition) {
192
+ Object.keys(position$1).forEach(key => {
193
+ if (!position[key]) return;
194
+ const {
195
+ qualifier
196
+ } = position[key];
197
+ applied.push(`${qualifier}_${position$1[key]}`);
198
+ });
199
+ } // Add all primary transformations
200
+
201
+
202
+ layerTransformation = `${layerTransformation},${primary$1.join(',')}`; // Add all applied transformations
203
+
204
+ layerTransformation = `${layerTransformation}/fl_layer_apply`;
205
+
206
+ if (applied.length > 0) {
207
+ layerTransformation = `${layerTransformation},${applied.join(',')}`;
208
+ } // Finally add it to the image
209
+
210
+
211
+ cldImage.addTransformation(layerTransformation);
212
+ });
62
213
  return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();
63
214
  }
64
215
 
216
+ const _excluded = ["overlays", "removeBackground", "underlays"];
217
+
65
218
  const CldImage = _ref => {
66
219
  let {
67
- effects,
68
- removeBackground
220
+ overlays,
221
+ removeBackground,
222
+ underlays
69
223
  } = _ref,
70
224
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
71
225
 
72
226
  const cldOptions = {
73
- effects,
74
- removeBackground
227
+ overlays,
228
+ removeBackground,
229
+ underlays
75
230
  };
76
231
  return /*#__PURE__*/jsx(Image, _extends({}, props, {
77
232
  loader: options => cloudinaryLoader(options, cldOptions)
78
233
  }));
79
234
  };
80
235
 
81
- export { CldImage };
236
+ export { CldImage, cloudinaryLoader, position, primary, text };
82
237
  //# sourceMappingURL=next-cloudinary.modern.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.modern.mjs","sources":["../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\nimport Image from 'next/image';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n});\n\nfunction cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto'\n } = options;\n\n const {\n effects = [],\n removeBackground = false\n } = cldOptions;\n\n const cldImage = cld.image(src);\n\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n\n effects.forEach(effect => cldImage.effect(effect));\n\n return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();\n}\n\nconst CldImage = ({ effects, removeBackground, ...props }) => {\n const cldOptions = {\n effects,\n removeBackground\n };\n return <Image {...props} loader={(options) => cloudinaryLoader(options, cldOptions)} />\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","width","format","quality","effects","removeBackground","cldImage","image","effect","forEach","resize","delivery","toURL","CldImage","props","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAMA,GAAG,GAAG,IAAIC,UAAJ,CAAe;AACzBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;AADlB,GAAA;AADkB,CAAf,CAAZ,CAAA;;AAMA,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;EAC7C,MAAM;IACJC,GADI;IAEJC,KAFI;AAGJC,IAAAA,MAAM,GAAG,MAHL;AAIJC,IAAAA,OAAO,GAAG,MAAA;AAJN,GAAA,GAKFL,OALJ,CAAA;EAOA,MAAM;AACJM,IAAAA,OAAO,GAAG,EADN;AAEJC,IAAAA,gBAAgB,GAAG,KAAA;AAFf,GAAA,GAGFN,UAHJ,CAAA;AAKA,EAAA,MAAMO,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;AAEA,EAAA,IAAKK,gBAAL,EAAwB;IACtBC,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;AACD,GAAA;;EAEDJ,OAAO,CAACK,OAAR,CAAgBD,MAAM,IAAIF,QAAQ,CAACE,MAAT,CAAgBA,MAAhB,CAA1B,CAAA,CAAA;AAEA,EAAA,OAAOF,QAAQ,CAACI,MAAT,CAAiB,CAAYT,UAAAA,EAAAA,KAAM,EAAnC,CAAsCC,CAAAA,MAAtC,CAA6CA,MAA7C,CAAA,CAAqDS,QAArD,CAA+D,CAAA,EAAA,EAAIR,OAAQ,CAA3E,CAAA,CAAA,CAA8ES,KAA9E,EAAP,CAAA;AACD,CAAA;;AAEKC,MAAAA,QAAQ,GAAG,IAA6C,IAAA;EAAA,IAA5C;IAAET,OAAF;AAAWC,IAAAA,gBAAAA;GAAiC,GAAA,IAAA;AAAA,MAAZS,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AAC5D,EAAA,MAAMf,UAAU,GAAG;IACjBK,OADiB;AAEjBC,IAAAA,gBAAAA;GAFF,CAAA;EAIA,oBAAOU,GAAA,CAAC,KAAD,EAAA,QAAA,CAAA,EAAA,EAAWD,KAAX,EAAA;AAAkB,IAAA,MAAM,EAAGhB,OAAD,IAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAAA;GAA9D,CAAA,CAAA,CAAA;AACD;;;;"}
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,5 +1,5 @@
1
- import { Cloudinary } from '@cloudinary/url-gen';
2
1
  import Image from 'next/image';
2
+ import { Cloudinary } from '@cloudinary/url-gen';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function _extends() {
@@ -34,13 +34,51 @@ function _objectWithoutPropertiesLoose(source, excluded) {
34
34
  return target;
35
35
  }
36
36
 
37
- var _excluded = ["effects", "removeBackground"];
37
+ var primary = {
38
+ gravity: {
39
+ qualifier: 'g'
40
+ },
41
+ crop: {
42
+ qualifier: 'c'
43
+ },
44
+ width: {
45
+ qualifier: 'w'
46
+ },
47
+ height: {
48
+ qualifier: 'h'
49
+ }
50
+ };
51
+ var position = {
52
+ x: {
53
+ qualifier: 'x'
54
+ },
55
+ y: {
56
+ qualifier: 'y'
57
+ },
58
+ gravity: {
59
+ qualifier: 'g'
60
+ }
61
+ };
62
+ var text = {
63
+ color: {
64
+ qualifier: 'co',
65
+ location: 'primary'
66
+ },
67
+ fontFamily: {},
68
+ fontSize: {},
69
+ fontWeight: {},
70
+ textDecoration: {},
71
+ letterSpacing: {
72
+ qualifier: 'letter_spacing'
73
+ }
74
+ };
75
+
76
+ var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
38
77
  var cld = new Cloudinary({
39
78
  cloud: {
40
79
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
41
80
  }
42
81
  });
43
-
44
82
  function cloudinaryLoader(options, cldOptions) {
45
83
  var src = options.src,
46
84
  width = options.width,
@@ -48,30 +86,141 @@ function cloudinaryLoader(options, cldOptions) {
48
86
  format = _options$format === void 0 ? 'auto' : _options$format,
49
87
  _options$quality = options.quality,
50
88
  quality = _options$quality === void 0 ? 'auto' : _options$quality;
51
- var _cldOptions$effects = cldOptions.effects,
52
- effects = _cldOptions$effects === void 0 ? [] : _cldOptions$effects,
89
+ var _cldOptions$overlays = cldOptions.overlays,
90
+ overlays = _cldOptions$overlays === void 0 ? [] : _cldOptions$overlays,
53
91
  _cldOptions$removeBac = cldOptions.removeBackground,
54
- removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac;
92
+ removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
93
+ _cldOptions$underlays = cldOptions.underlays,
94
+ underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
55
95
  var cldImage = cld.image(src);
56
96
 
57
97
  if (removeBackground) {
58
98
  cldImage.effect('e_background_removal');
59
- }
99
+ } // Adding overlays and underlays allows you to compose your image
100
+ // by using layering with overlays appearing on top of and udnerlays
101
+ // appearing below your base image layer
102
+ //
103
+ // Learn more: https://cloudinary.com/documentation/layers
104
+
105
+
106
+ var layers = [].concat(overlays.map(function (overlay) {
107
+ return _extends({}, overlay, {
108
+ type: 'overlay'
109
+ });
110
+ }), underlays.map(function (underlay) {
111
+ return _extends({}, underlay, {
112
+ type: 'underlay'
113
+ });
114
+ }));
115
+ layers.forEach(function (_ref) {
116
+ var publicId = _ref.publicId,
117
+ type = _ref.type,
118
+ position$1 = _ref.position,
119
+ text$1 = _ref.text,
120
+ _ref$effects = _ref.effects,
121
+ layerEffects = _ref$effects === void 0 ? [] : _ref$effects,
122
+ options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
123
+
124
+ var hasPublicId = typeof publicId === 'string';
125
+ var hasText = typeof text$1 === 'object';
126
+ var hasPosition = typeof position$1 === 'object';
127
+
128
+ if (!hasPublicId && !hasText) {
129
+ console.warn(type + " is missing Public ID or Text");
130
+ return;
131
+ } // Determine the qualifier for the type of layer
132
+
133
+
134
+ var typeQualifier;
135
+
136
+ if (type === 'overlay') {
137
+ typeQualifier = 'l';
138
+ } else if (type === 'underlay') {
139
+ typeQualifier = 'u';
140
+ } // Start to construct the transformation string using text or the public ID
141
+ // if it's image-based
60
142
 
61
- effects.forEach(function (effect) {
62
- return cldImage.effect(effect);
143
+
144
+ var layerTransformation;
145
+
146
+ if (hasText) {
147
+ layerTransformation = typeQualifier + "_text";
148
+ } else {
149
+ layerTransformation = typeQualifier + "_" + publicId.replace(/\//g, ':');
150
+ } // Begin organizing transformations based on what it is and the location
151
+ // it needs to be placed in the URL
152
+
153
+
154
+ var primary$1 = [];
155
+ var applied = []; // Gemeral options
156
+
157
+ Object.keys(options).forEach(function (key) {
158
+ if (!primary[key]) return;
159
+ var qualifier = primary[key].qualifier;
160
+ primary$1.push(qualifier + "_" + options[key]);
161
+ }); // Layer effects
162
+
163
+ layerEffects.forEach(function (effect) {
164
+ Object.keys(effect).forEach(function (key) {
165
+ if (!primary[key]) return;
166
+ var qualifier = primary[key].qualifier;
167
+ primary$1.push(qualifier + "_" + effect[key]);
168
+ });
169
+ }); // Text styling
170
+
171
+ if (hasText) {
172
+ var textTransformations = [];
173
+ Object.keys(text$1).forEach(function (key) {
174
+ if (!text[key]) return;
175
+ var _qualifiersText$key = text[key],
176
+ qualifier = _qualifiersText$key.qualifier,
177
+ location = _qualifiersText$key.location;
178
+
179
+ if (location === 'primary') {
180
+ primary$1.push(qualifier + "_" + text$1[key]);
181
+ } else {
182
+ textTransformations.push(text$1[key]);
183
+ }
184
+ });
185
+ layerTransformation = layerTransformation + ":" + textTransformations.join('_') + ":" + text$1.text;
186
+ } // Positioning
187
+
188
+
189
+ if (hasPosition) {
190
+ Object.keys(position$1).forEach(function (key) {
191
+ if (!position[key]) return;
192
+ var qualifier = position[key].qualifier;
193
+ applied.push(qualifier + "_" + position$1[key]);
194
+ });
195
+ } // Add all primary transformations
196
+
197
+
198
+ layerTransformation = layerTransformation + "," + primary$1.join(','); // Add all applied transformations
199
+
200
+ layerTransformation = layerTransformation + "/fl_layer_apply";
201
+
202
+ if (applied.length > 0) {
203
+ layerTransformation = layerTransformation + "," + applied.join(',');
204
+ } // Finally add it to the image
205
+
206
+
207
+ cldImage.addTransformation(layerTransformation);
63
208
  });
64
209
  return cldImage.resize("c_limit,w_" + width).format(format).delivery("q_" + quality).toURL();
65
210
  }
66
211
 
212
+ var _excluded = ["overlays", "removeBackground", "underlays"];
213
+
67
214
  var CldImage = function CldImage(_ref) {
68
- var effects = _ref.effects,
215
+ var overlays = _ref.overlays,
69
216
  removeBackground = _ref.removeBackground,
217
+ underlays = _ref.underlays,
70
218
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
71
219
 
72
220
  var cldOptions = {
73
- effects: effects,
74
- removeBackground: removeBackground
221
+ overlays: overlays,
222
+ removeBackground: removeBackground,
223
+ underlays: underlays
75
224
  };
76
225
  return /*#__PURE__*/jsx(Image, _extends({}, props, {
77
226
  loader: function loader(options) {
@@ -80,5 +229,5 @@ var CldImage = function CldImage(_ref) {
80
229
  }));
81
230
  };
82
231
 
83
- export { CldImage };
232
+ export { CldImage, cloudinaryLoader, position, primary, text };
84
233
  //# sourceMappingURL=next-cloudinary.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.module.js","sources":["../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\nimport Image from 'next/image';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n});\n\nfunction cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto'\n } = options;\n\n const {\n effects = [],\n removeBackground = false\n } = cldOptions;\n\n const cldImage = cld.image(src);\n\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n\n effects.forEach(effect => cldImage.effect(effect));\n\n return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();\n}\n\nconst CldImage = ({ effects, removeBackground, ...props }) => {\n const cldOptions = {\n effects,\n removeBackground\n };\n return <Image {...props} loader={(options) => cloudinaryLoader(options, cldOptions)} />\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","width","format","quality","effects","removeBackground","cldImage","image","effect","forEach","resize","delivery","toURL","CldImage","props","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAMA,GAAG,GAAG,IAAIC,UAAJ,CAAe;AACzBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;AADlB,GAAA;AADkB,CAAf,CAAZ,CAAA;;AAMA,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;AAC7C,EAAA,IACEC,GADF,GAKIF,OALJ,CACEE,GADF;AAAA,MAEEC,KAFF,GAKIH,OALJ,CAEEG,KAFF;MAKIH,eAAAA,GAAAA,OALJ,CAGEI,MAHF;MAGEA,MAHF,gCAGW,MAHX,GAAA,eAAA;MAKIJ,gBAAAA,GAAAA,OALJ,CAIEK,OAJF;MAIEA,OAJF,iCAIY,MAJZ,GAAA,gBAAA,CAAA;EAOA,IAGIJ,mBAAAA,GAAAA,UAHJ,CACEK,OADF;MACEA,OADF,oCACY,EADZ,GAAA,mBAAA;MAGIL,qBAAAA,GAAAA,UAHJ,CAEEM,gBAFF;MAEEA,gBAFF,sCAEqB,KAFrB,GAAA,qBAAA,CAAA;AAKA,EAAA,IAAMC,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;AAEA,EAAA,IAAKK,gBAAL,EAAwB;IACtBC,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;AACD,GAAA;;AAEDJ,EAAAA,OAAO,CAACK,OAAR,CAAgB,UAAAD,MAAM,EAAA;AAAA,IAAA,OAAIF,QAAQ,CAACE,MAAT,CAAgBA,MAAhB,CAAJ,CAAA;GAAtB,CAAA,CAAA;AAEA,EAAA,OAAOF,QAAQ,CAACI,MAAT,CAAA,YAAA,GAA6BT,KAA7B,CAAsCC,CAAAA,MAAtC,CAA6CA,MAA7C,EAAqDS,QAArD,CAAA,IAAA,GAAmER,OAAnE,CAAA,CAA8ES,KAA9E,EAAP,CAAA;AACD,CAAA;;AAED,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAA6C,IAAA,EAAA;EAAA,IAA1CT,OAA0C,QAA1CA,OAA0C;MAAjCC,gBAAiC,QAAjCA,gBAAiC;AAAA,MAAZS,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AAC5D,EAAA,IAAMf,UAAU,GAAG;AACjBK,IAAAA,OAAO,EAAPA,OADiB;AAEjBC,IAAAA,gBAAgB,EAAhBA,gBAAAA;GAFF,CAAA;EAIA,oBAAOU,GAAA,CAAC,KAAD,EAAA,QAAA,CAAA,EAAA,EAAWD,KAAX,EAAA;IAAkB,MAAM,EAAE,gBAAChB,OAAD,EAAA;AAAA,MAAA,OAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAA7B,CAAA;AAAA,KAAA;GAAjC,CAAA,CAAA,CAAA;AACD;;;;"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GAAA;GAFQ;AAIrBC,EAAAA,IAAI,EAAE;AACJD,IAAAA,SAAS,EAAE,GAAA;GALQ;AAOrBE,EAAAA,KAAK,EAAE;AACLF,IAAAA,SAAS,EAAE,GAAA;GARQ;AAUrBG,EAAAA,MAAM,EAAE;AACNH,IAAAA,SAAS,EAAE,GAAA;AADL,GAAA;AAVa,EAAhB;AAeA,IAAMI,QAAQ,GAAG;AACtBC,EAAAA,CAAC,EAAE;AACDL,IAAAA,SAAS,EAAE,GAAA;GAFS;AAItBM,EAAAA,CAAC,EAAE;AACDN,IAAAA,SAAS,EAAE,GAAA;GALS;AAOtBD,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,GAAA;AADJ,GAAA;AAPa,EAAjB;AAYA,IAAMO,IAAI,GAAG;AAClBC,EAAAA,KAAK,EAAE;AACLR,IAAAA,SAAS,EAAE,IADN;AAELS,IAAAA,QAAQ,EAAE,SAAA;GAHM;AAKlBC,EAAAA,UAAU,EAAE,EALM;AAOlBC,EAAAA,QAAQ,EAAE,EAPQ;AASlBC,EAAAA,UAAU,EAAE,EATM;AAWlBC,EAAAA,cAAc,EAAE,EAXE;AAalBC,EAAAA,aAAa,EAAE;AACbd,IAAAA,SAAS,EAAE,gBAAA;AADE,GAAA;AAbG;;;ACnBpB,IAAMe,GAAG,GAAG,IAAIC,UAAJ,CAAe;AACzBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;AADlB,GAAA;AADkB,CAAf,CAAZ,CAAA;AAMO,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;AACpD,EAAA,IACEC,GADF,GAKIF,OALJ,CACEE,GADF;AAAA,MAEEvB,KAFF,GAKIqB,OALJ,CAEErB,KAFF;MAKIqB,eAAAA,GAAAA,OALJ,CAGEG,MAHF;MAGEA,MAHF,gCAGW,MAHX,GAAA,eAAA;MAKIH,gBAAAA,GAAAA,OALJ,CAIEI,OAJF;MAIEA,OAJF,iCAIY,MAJZ,GAAA,gBAAA,CAAA;EAYIH,IAAAA,oBAAAA,GAAAA,UALJ,CACEI,QADF,CAAA;MACEA,QADF,qCACa,EADb,GAAA,oBAAA,CAAA;MAKIJ,qBAAAA,GAAAA,UALJ,CAGEK,gBAHF,CAAA;MAGEA,gBAHF,sCAGqB,KAHrB,GAAA,qBAAA,CAAA;MAKIL,qBAAAA,GAAAA,UALJ,CAIEM,SAJF,CAAA;MAIEA,SAJF,sCAIc,EAJd,GAAA,sBAAA;AAOA,EAAA,IAAMC,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;AAEA,EAAA,IAAKI,gBAAL,EAAwB;IACtBE,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;AACD,GAnBmD;AAsBpD;AACA;AACA;AACA;;;AAEA,EAAA,IAAMC,MAAM,GACPN,EAAAA,CAAAA,MAAAA,CAAAA,QAAQ,CAACO,GAAT,CAAa,UAAAC,OAAO,EAAA;AAAA,IAAA,OAAA,QAAA,CAAA,EAAA,EAAUA,OAAV,EAAA;AAAmBC,MAAAA,IAAI,EAAE,SAAA;AAAzB,KAAA,CAAA,CAAA;AAAA,GAApB,CADO,EAEPP,SAAS,CAACK,GAAV,CAAc,UAAAG,QAAQ,EAAA;AAAA,IAAA,OAAA,QAAA,CAAA,EAAA,EAAUA,QAAV,EAAA;AAAoBD,MAAAA,IAAI,EAAE,UAAA;AAA1B,KAAA,CAAA,CAAA;AAAA,GAAtB,CAFO,CAAZ,CAAA;EAKAH,MAAM,CAACK,OAAP,CAAe,UAAgF,IAAA,EAAA;IAAA,IAA7EC,QAA6E,QAA7EA,QAA6E;QAAnEH,IAAmE,QAAnEA,IAAmE;QAA7DjC,UAA6D,QAA7DA,QAA6D;QAAnDG,MAAmD,QAAnDA,IAAmD;AAAA,QAAA,YAAA,GAAA,IAAA,CAA7CkC,OAA6C;QAApCC,YAAoC,6BAArB,EAAqB,GAAA,YAAA;AAAA,QAAdnB,OAAc,GAAA,6BAAA,CAAA,IAAA,EAAAoB,WAAA,CAAA,CAAA;;AAC7F,IAAA,IAAMC,WAAW,GAAG,OAAOJ,QAAP,KAAoB,QAAxC,CAAA;AACA,IAAA,IAAMK,OAAO,GAAG,OAAOtC,MAAP,KAAgB,QAAhC,CAAA;AACA,IAAA,IAAMuC,WAAW,GAAG,OAAO1C,UAAP,KAAoB,QAAxC,CAAA;;AAEA,IAAA,IAAK,CAACwC,WAAD,IAAgB,CAACC,OAAtB,EAAgC;MAC9BE,OAAO,CAACC,IAAR,CAAgBX,IAAhB,GAAA,+BAAA,CAAA,CAAA;AACA,MAAA,OAAA;AACD,KAR4F;;;AAY7F,IAAA,IAAIY,aAAJ,CAAA;;IAEA,IAAKZ,IAAI,KAAK,SAAd,EAA0B;AACxBY,MAAAA,aAAa,GAAG,GAAhB,CAAA;AACD,KAFD,MAEO,IAAKZ,IAAI,KAAK,UAAd,EAA2B;AAChCY,MAAAA,aAAa,GAAG,GAAhB,CAAA;AACD,KAlB4F;AAqB7F;;;AAEA,IAAA,IAAIC,mBAAJ,CAAA;;AAEA,IAAA,IAAKL,OAAL,EAAe;MACbK,mBAAmB,GAAMD,aAAN,GAAnB,OAAA,CAAA;AACD,KAFD,MAEO;MACLC,mBAAmB,GAAMD,aAAN,GAAA,GAAA,GAAuBT,QAAQ,CAACW,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,CAA1C,CAAA;AACD,KA7B4F;AAgC7F;;;IAEA,IAAMrD,SAAO,GAAG,EAAhB,CAAA;AACA,IAAA,IAAMsD,OAAO,GAAG,EAAhB,CAnC6F;;IAuC7FC,MAAM,CAACC,IAAP,CAAY/B,OAAZ,EAAqBgB,OAArB,CAA6B,UAAAgB,GAAG,EAAI;AAClC,MAAA,IAAK,CAACC,OAAiB,CAACD,GAAD,CAAvB,EAA+B,OAAA;AAC/B,MAAA,IAAQvD,SAAR,GAAsBwD,OAAiB,CAACD,GAAD,CAAvC,CAAQvD,SAAR,CAAA;MACAF,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BuB,OAAO,CAACgC,GAAD,CAApC,CAAA,CAAA;AACD,KAJD,EAvC6F;;AA+C7Fb,IAAAA,YAAY,CAACH,OAAb,CAAqB,UAAAN,MAAM,EAAI;MAC7BoB,MAAM,CAACC,IAAP,CAAYrB,MAAZ,EAAoBM,OAApB,CAA4B,UAAAgB,GAAG,EAAI;AACjC,QAAA,IAAK,CAACC,OAAiB,CAACD,GAAD,CAAvB,EAA+B,OAAA;AAC/B,QAAA,IAAQvD,SAAR,GAAsBwD,OAAiB,CAACD,GAAD,CAAvC,CAAQvD,SAAR,CAAA;QACAF,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BiC,MAAM,CAACsB,GAAD,CAAnC,CAAA,CAAA;OAHF,CAAA,CAAA;AAKD,KAND,EA/C6F;;AAyD7F,IAAA,IAAKV,OAAL,EAAe;MACb,IAAMa,mBAAmB,GAAG,EAA5B,CAAA;MAEAL,MAAM,CAACC,IAAP,CAAY/C,MAAZ,EAAkBgC,OAAlB,CAA0B,UAAAgB,GAAG,EAAI;AAC/B,QAAA,IAAK,CAACI,IAAc,CAACJ,GAAD,CAApB,EAA4B,OAAA;QAE5B,IAAgCI,mBAAAA,GAAAA,IAAc,CAACJ,GAAD,CAA9C;YAAQvD,SAAR,uBAAQA,SAAR;YAAmBS,QAAnB,uBAAmBA,QAAnB,CAAA;;QAEA,IAAKA,QAAQ,KAAK,SAAlB,EAA8B;UAC5BX,SAAO,CAAC2D,IAAR,CAAgBzD,SAAhB,SAA6BO,MAAI,CAACgD,GAAD,CAAjC,CAAA,CAAA;AACD,SAFD,MAEO;AACLG,UAAAA,mBAAmB,CAACD,IAApB,CAAyBlD,MAAI,CAACgD,GAAD,CAA7B,CAAA,CAAA;AACD,SAAA;OATH,CAAA,CAAA;AAYAL,MAAAA,mBAAmB,GAAMA,mBAAN,GAA6BQ,GAAAA,GAAAA,mBAAmB,CAACE,IAApB,CAAyB,GAAzB,CAA7B,GAAA,GAAA,GAA8DrD,MAAI,CAACA,IAAtF,CAAA;AACD,KAzE4F;;;AA6E7F,IAAA,IAAKuC,WAAL,EAAmB;MACjBO,MAAM,CAACC,IAAP,CAAYlD,UAAZ,EAAsBmC,OAAtB,CAA8B,UAAAgB,GAAG,EAAI;AACnC,QAAA,IAAK,CAACM,QAAkB,CAACN,GAAD,CAAxB,EAAgC,OAAA;AAEhC,QAAA,IAAQvD,SAAR,GAAsB6D,QAAkB,CAACN,GAAD,CAAxC,CAAQvD,SAAR,CAAA;QAEAoD,OAAO,CAACK,IAAR,CAAgBzD,SAAhB,SAA6BI,UAAQ,CAACmD,GAAD,CAArC,CAAA,CAAA;OALF,CAAA,CAAA;AAOD,KArF4F;;;IAyF7FL,mBAAmB,GAAMA,mBAAN,GAAA,GAAA,GAA6BpD,SAAO,CAAC8D,IAAR,CAAa,GAAb,CAAhD,CAzF6F;;IA6F7FV,mBAAmB,GAAMA,mBAAN,GAAnB,iBAAA,CAAA;;AAEA,IAAA,IAAKE,OAAO,CAACU,MAAR,GAAiB,CAAtB,EAA0B;MACxBZ,mBAAmB,GAAMA,mBAAN,GAA6BE,GAAAA,GAAAA,OAAO,CAACQ,IAAR,CAAa,GAAb,CAAhD,CAAA;AACD,KAjG4F;;;IAqG7F7B,QAAQ,CAACgC,iBAAT,CAA2Bb,mBAA3B,CAAA,CAAA;GArGF,CAAA,CAAA;AAwGA,EAAA,OAAOnB,QAAQ,CAACiC,MAAT,CAAA,YAAA,GAA6B9D,KAA7B,CAAsCwB,CAAAA,MAAtC,CAA6CA,MAA7C,EAAqDuC,QAArD,CAAA,IAAA,GAAmEtC,OAAnE,CAAA,CAA8EuC,KAA9E,EAAP,CAAA;AACD;;;;AClJD,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAyD,IAAA,EAAA;EAAA,IAAtDvC,QAAsD,QAAtDA,QAAsD;MAA5CC,gBAA4C,QAA5CA,gBAA4C;MAA1BC,SAA0B,QAA1BA,SAA0B;AAAA,MAAZsC,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AACxE,EAAA,IAAM5C,UAAU,GAAG;AACjBI,IAAAA,QAAQ,EAARA,QADiB;AAEjBC,IAAAA,gBAAgB,EAAhBA,gBAFiB;AAGjBC,IAAAA,SAAS,EAATA,SAAAA;GAHF,CAAA;EAKA,oBAAOuC,GAAA,CAAC,KAAD,EAAA,QAAA,CAAA,EAAA,EAAWD,KAAX,EAAA;IAAkB,MAAM,EAAE,gBAAC7C,OAAD,EAAA;AAAA,MAAA,OAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAA7B,CAAA;AAAA,KAAA;GAAjC,CAAA,CAAA,CAAA;AACD;;;;"}
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@cloudinary/url-gen'), require('next/image'), require('react/jsx-runtime')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@cloudinary/url-gen', 'next/image', 'react/jsx-runtime'], factory) :
4
- (global = global || self, factory(global.nextCloudinary = {}, global.urlGen, global.Image, global.jsxRuntime));
5
- })(this, (function (exports, urlGen, Image, jsxRuntime) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('next/image'), require('@cloudinary/url-gen'), require('react/jsx-runtime')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'next/image', '@cloudinary/url-gen', 'react/jsx-runtime'], factory) :
4
+ (global = global || self, factory(global.nextCloudinary = {}, global.Image, global.urlGen, global.jsxRuntime));
5
+ })(this, (function (exports, Image, urlGen, jsxRuntime) {
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
8
8
  var Image__default = /*#__PURE__*/_interopDefaultLegacy(Image);
@@ -39,13 +39,51 @@
39
39
  return target;
40
40
  }
41
41
 
42
- var _excluded = ["effects", "removeBackground"];
42
+ var primary = {
43
+ gravity: {
44
+ qualifier: 'g'
45
+ },
46
+ crop: {
47
+ qualifier: 'c'
48
+ },
49
+ width: {
50
+ qualifier: 'w'
51
+ },
52
+ height: {
53
+ qualifier: 'h'
54
+ }
55
+ };
56
+ var position = {
57
+ x: {
58
+ qualifier: 'x'
59
+ },
60
+ y: {
61
+ qualifier: 'y'
62
+ },
63
+ gravity: {
64
+ qualifier: 'g'
65
+ }
66
+ };
67
+ var text = {
68
+ color: {
69
+ qualifier: 'co',
70
+ location: 'primary'
71
+ },
72
+ fontFamily: {},
73
+ fontSize: {},
74
+ fontWeight: {},
75
+ textDecoration: {},
76
+ letterSpacing: {
77
+ qualifier: 'letter_spacing'
78
+ }
79
+ };
80
+
81
+ var _excluded$1 = ["publicId", "type", "position", "text", "effects"];
43
82
  var cld = new urlGen.Cloudinary({
44
83
  cloud: {
45
84
  cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME
46
85
  }
47
86
  });
48
-
49
87
  function cloudinaryLoader(options, cldOptions) {
50
88
  var src = options.src,
51
89
  width = options.width,
@@ -53,30 +91,141 @@
53
91
  format = _options$format === void 0 ? 'auto' : _options$format,
54
92
  _options$quality = options.quality,
55
93
  quality = _options$quality === void 0 ? 'auto' : _options$quality;
56
- var _cldOptions$effects = cldOptions.effects,
57
- effects = _cldOptions$effects === void 0 ? [] : _cldOptions$effects,
94
+ var _cldOptions$overlays = cldOptions.overlays,
95
+ overlays = _cldOptions$overlays === void 0 ? [] : _cldOptions$overlays,
58
96
  _cldOptions$removeBac = cldOptions.removeBackground,
59
- removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac;
97
+ removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac,
98
+ _cldOptions$underlays = cldOptions.underlays,
99
+ underlays = _cldOptions$underlays === void 0 ? [] : _cldOptions$underlays;
60
100
  var cldImage = cld.image(src);
61
101
 
62
102
  if (removeBackground) {
63
103
  cldImage.effect('e_background_removal');
64
- }
104
+ } // Adding overlays and underlays allows you to compose your image
105
+ // by using layering with overlays appearing on top of and udnerlays
106
+ // appearing below your base image layer
107
+ //
108
+ // Learn more: https://cloudinary.com/documentation/layers
109
+
110
+
111
+ var layers = [].concat(overlays.map(function (overlay) {
112
+ return _extends({}, overlay, {
113
+ type: 'overlay'
114
+ });
115
+ }), underlays.map(function (underlay) {
116
+ return _extends({}, underlay, {
117
+ type: 'underlay'
118
+ });
119
+ }));
120
+ layers.forEach(function (_ref) {
121
+ var publicId = _ref.publicId,
122
+ type = _ref.type,
123
+ position$1 = _ref.position,
124
+ text$1 = _ref.text,
125
+ _ref$effects = _ref.effects,
126
+ layerEffects = _ref$effects === void 0 ? [] : _ref$effects,
127
+ options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
128
+
129
+ var hasPublicId = typeof publicId === 'string';
130
+ var hasText = typeof text$1 === 'object';
131
+ var hasPosition = typeof position$1 === 'object';
132
+
133
+ if (!hasPublicId && !hasText) {
134
+ console.warn(type + " is missing Public ID or Text");
135
+ return;
136
+ } // Determine the qualifier for the type of layer
137
+
138
+
139
+ var typeQualifier;
140
+
141
+ if (type === 'overlay') {
142
+ typeQualifier = 'l';
143
+ } else if (type === 'underlay') {
144
+ typeQualifier = 'u';
145
+ } // Start to construct the transformation string using text or the public ID
146
+ // if it's image-based
147
+
65
148
 
66
- effects.forEach(function (effect) {
67
- return cldImage.effect(effect);
149
+ var layerTransformation;
150
+
151
+ if (hasText) {
152
+ layerTransformation = typeQualifier + "_text";
153
+ } else {
154
+ layerTransformation = typeQualifier + "_" + publicId.replace(/\//g, ':');
155
+ } // Begin organizing transformations based on what it is and the location
156
+ // it needs to be placed in the URL
157
+
158
+
159
+ var primary$1 = [];
160
+ var applied = []; // Gemeral options
161
+
162
+ Object.keys(options).forEach(function (key) {
163
+ if (!primary[key]) return;
164
+ var qualifier = primary[key].qualifier;
165
+ primary$1.push(qualifier + "_" + options[key]);
166
+ }); // Layer effects
167
+
168
+ layerEffects.forEach(function (effect) {
169
+ Object.keys(effect).forEach(function (key) {
170
+ if (!primary[key]) return;
171
+ var qualifier = primary[key].qualifier;
172
+ primary$1.push(qualifier + "_" + effect[key]);
173
+ });
174
+ }); // Text styling
175
+
176
+ if (hasText) {
177
+ var textTransformations = [];
178
+ Object.keys(text$1).forEach(function (key) {
179
+ if (!text[key]) return;
180
+ var _qualifiersText$key = text[key],
181
+ qualifier = _qualifiersText$key.qualifier,
182
+ location = _qualifiersText$key.location;
183
+
184
+ if (location === 'primary') {
185
+ primary$1.push(qualifier + "_" + text$1[key]);
186
+ } else {
187
+ textTransformations.push(text$1[key]);
188
+ }
189
+ });
190
+ layerTransformation = layerTransformation + ":" + textTransformations.join('_') + ":" + text$1.text;
191
+ } // Positioning
192
+
193
+
194
+ if (hasPosition) {
195
+ Object.keys(position$1).forEach(function (key) {
196
+ if (!position[key]) return;
197
+ var qualifier = position[key].qualifier;
198
+ applied.push(qualifier + "_" + position$1[key]);
199
+ });
200
+ } // Add all primary transformations
201
+
202
+
203
+ layerTransformation = layerTransformation + "," + primary$1.join(','); // Add all applied transformations
204
+
205
+ layerTransformation = layerTransformation + "/fl_layer_apply";
206
+
207
+ if (applied.length > 0) {
208
+ layerTransformation = layerTransformation + "," + applied.join(',');
209
+ } // Finally add it to the image
210
+
211
+
212
+ cldImage.addTransformation(layerTransformation);
68
213
  });
69
214
  return cldImage.resize("c_limit,w_" + width).format(format).delivery("q_" + quality).toURL();
70
215
  }
71
216
 
217
+ var _excluded = ["overlays", "removeBackground", "underlays"];
218
+
72
219
  var CldImage = function CldImage(_ref) {
73
- var effects = _ref.effects,
220
+ var overlays = _ref.overlays,
74
221
  removeBackground = _ref.removeBackground,
222
+ underlays = _ref.underlays,
75
223
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
76
224
 
77
225
  var cldOptions = {
78
- effects: effects,
79
- removeBackground: removeBackground
226
+ overlays: overlays,
227
+ removeBackground: removeBackground,
228
+ underlays: underlays
80
229
  };
81
230
  return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, props, {
82
231
  loader: function loader(options) {
@@ -86,6 +235,10 @@
86
235
  };
87
236
 
88
237
  exports.CldImage = CldImage;
238
+ exports.cloudinaryLoader = cloudinaryLoader;
239
+ exports.position = position;
240
+ exports.primary = primary;
241
+ exports.text = text;
89
242
 
90
243
  }));
91
244
  //# sourceMappingURL=next-cloudinary.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.umd.js","sources":["../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\nimport Image from 'next/image';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n});\n\nfunction cloudinaryLoader(options, cldOptions) {\n const {\n src,\n width,\n format = 'auto',\n quality = 'auto'\n } = options;\n\n const {\n effects = [],\n removeBackground = false\n } = cldOptions;\n\n const cldImage = cld.image(src);\n\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n\n effects.forEach(effect => cldImage.effect(effect));\n\n return cldImage.resize(`c_limit,w_${width}`).format(format).delivery(`q_${quality}`).toURL();\n}\n\nconst CldImage = ({ effects, removeBackground, ...props }) => {\n const cldOptions = {\n effects,\n removeBackground\n };\n return <Image {...props} loader={(options) => cloudinaryLoader(options, cldOptions)} />\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","cloudinaryLoader","options","cldOptions","src","width","format","quality","effects","removeBackground","cldImage","image","effect","forEach","resize","delivery","toURL","CldImage","props","_jsx","Image"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGA,IAAMA,GAAG,GAAG,IAAIC,iBAAJ,CAAe;EACzBC,EAAAA,KAAK,EAAE;EACLC,IAAAA,SAAS,EAAEC,OAAO,CAACC,GAAR,CAAYC,iCAAAA;EADlB,GAAA;EADkB,CAAf,CAAZ,CAAA;;EAMA,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,UAAnC,EAA+C;EAC7C,EAAA,IACEC,GADF,GAKIF,OALJ,CACEE,GADF;EAAA,MAEEC,KAFF,GAKIH,OALJ,CAEEG,KAFF;QAKIH,eAAAA,GAAAA,OALJ,CAGEI,MAHF;QAGEA,MAHF,gCAGW,MAHX,GAAA,eAAA;QAKIJ,gBAAAA,GAAAA,OALJ,CAIEK,OAJF;QAIEA,OAJF,iCAIY,MAJZ,GAAA,gBAAA,CAAA;IAOA,IAGIJ,mBAAAA,GAAAA,UAHJ,CACEK,OADF;QACEA,OADF,oCACY,EADZ,GAAA,mBAAA;QAGIL,qBAAAA,GAAAA,UAHJ,CAEEM,gBAFF;QAEEA,gBAFF,sCAEqB,KAFrB,GAAA,qBAAA,CAAA;EAKA,EAAA,IAAMC,QAAQ,GAAGhB,GAAG,CAACiB,KAAJ,CAAUP,GAAV,CAAjB,CAAA;;EAEA,EAAA,IAAKK,gBAAL,EAAwB;MACtBC,QAAQ,CAACE,MAAT,CAAgB,sBAAhB,CAAA,CAAA;EACD,GAAA;;EAEDJ,EAAAA,OAAO,CAACK,OAAR,CAAgB,UAAAD,MAAM,EAAA;EAAA,IAAA,OAAIF,QAAQ,CAACE,MAAT,CAAgBA,MAAhB,CAAJ,CAAA;KAAtB,CAAA,CAAA;EAEA,EAAA,OAAOF,QAAQ,CAACI,MAAT,CAAA,YAAA,GAA6BT,KAA7B,CAAsCC,CAAAA,MAAtC,CAA6CA,MAA7C,EAAqDS,QAArD,CAAA,IAAA,GAAmER,OAAnE,CAAA,CAA8ES,KAA9E,EAAP,CAAA;EACD,CAAA;;AAED,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAA6C,IAAA,EAAA;IAAA,IAA1CT,OAA0C,QAA1CA,OAA0C;QAAjCC,gBAAiC,QAAjCA,gBAAiC;EAAA,MAAZS,KAAY,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;EAC5D,EAAA,IAAMf,UAAU,GAAG;EACjBK,IAAAA,OAAO,EAAPA,OADiB;EAEjBC,IAAAA,gBAAgB,EAAhBA,gBAAAA;KAFF,CAAA;IAIA,oBAAOU,cAAA,CAACC,yBAAD,EAAA,QAAA,CAAA,EAAA,EAAWF,KAAX,EAAA;MAAkB,MAAM,EAAE,gBAAChB,OAAD,EAAA;EAAA,MAAA,OAAaD,gBAAgB,CAACC,OAAD,EAAUC,UAAV,CAA7B,CAAA;EAAA,KAAA;KAAjC,CAAA,CAAA,CAAA;EACD;;;;;;;;"}
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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"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "next-cloudinary",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
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",
7
7
  "source": "src/index.js",
8
8
  "scripts": {
9
- "build": "microbundle --no-compress --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react"
9
+ "build": "microbundle --no-compress --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react",
10
+ "dev": "microbundle watch --no-compress --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react"
10
11
  },
11
12
  "dependencies": {
12
13
  "@cloudinary/url-gen": "^1.8.5"