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.
- package/dist/next-cloudinary.js +165 -12
- package/dist/next-cloudinary.js.map +1 -1
- package/dist/next-cloudinary.modern.mjs +166 -11
- package/dist/next-cloudinary.modern.mjs.map +1 -1
- package/dist/next-cloudinary.module.js +162 -13
- package/dist/next-cloudinary.module.js.map +1 -1
- package/dist/next-cloudinary.umd.js +168 -15
- package/dist/next-cloudinary.umd.js.map +1 -1
- package/package.json +3 -2
package/dist/next-cloudinary.js
CHANGED
|
@@ -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
|
|
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$
|
|
56
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
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
|
-
|
|
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":"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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
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
68
|
-
removeBackground
|
|
220
|
+
overlays,
|
|
221
|
+
removeBackground,
|
|
222
|
+
underlays
|
|
69
223
|
} = _ref,
|
|
70
224
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
71
225
|
|
|
72
226
|
const cldOptions = {
|
|
73
|
-
|
|
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
|
|
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$
|
|
52
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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
|
|
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
|
-
|
|
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":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@cloudinary/url-gen', '
|
|
4
|
-
(global = global || self, factory(global.nextCloudinary = {}, global.
|
|
5
|
-
})(this, (function (exports,
|
|
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
|
|
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$
|
|
57
|
-
|
|
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
|
-
|
|
67
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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"
|