next-cloudinary 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/next-cloudinary.js +14 -10
- package/dist/next-cloudinary.js.map +1 -1
- package/dist/next-cloudinary.modern.mjs +14 -10
- package/dist/next-cloudinary.modern.mjs.map +1 -1
- package/dist/next-cloudinary.module.js +14 -10
- package/dist/next-cloudinary.module.js.map +1 -1
- package/dist/next-cloudinary.umd.js +14 -10
- package/dist/next-cloudinary.umd.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -20,6 +20,8 @@ High-performance image delivery and uploading at scale in Next.js powered by Clo
|
|
|
20
20
|
|
|
21
21
|
<a href="#-features">Features</a> • <a href="#-getting-started">Getting Started</a> • <a href="#%EF%B8%8F-community--support">Community & Support</a> • <a href="#-contributing">Contributing</a>
|
|
22
22
|
|
|
23
|
+
**This plugin is a community library and not officially supported by Cloudinary.**
|
|
24
|
+
|
|
23
25
|
## ✨ Features
|
|
24
26
|
|
|
25
27
|
* Automatically optimize images and deliver in modern formats
|
|
@@ -31,7 +33,6 @@ High-performance image delivery and uploading at scale in Next.js powered by Clo
|
|
|
31
33
|
* Drop-in Upload Widget
|
|
32
34
|
* ...all at scale with Cloudinary
|
|
33
35
|
|
|
34
|
-
**This plugin is a community library and not officially supported by Cloudinary.**
|
|
35
36
|
|
|
36
37
|
## 🚀 Getting Started
|
|
37
38
|
|
package/dist/next-cloudinary.js
CHANGED
|
@@ -42,7 +42,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
var name = "next-cloudinary";
|
|
45
|
-
var version = "2.0.
|
|
45
|
+
var version = "2.0.1";
|
|
46
46
|
var main = "dist/next-cloudinary.umd.js";
|
|
47
47
|
var module$1 = "dist/next-cloudinary.module.js";
|
|
48
48
|
var source = "src/index.ts";
|
|
@@ -55,7 +55,7 @@ var scripts = {
|
|
|
55
55
|
};
|
|
56
56
|
var dependencies = {
|
|
57
57
|
"@cloudinary-util/url-loader": "^1.2.4",
|
|
58
|
-
"@cloudinary-util/util": "^1.
|
|
58
|
+
"@cloudinary-util/util": "^1.2.0",
|
|
59
59
|
"@cloudinary/url-gen": "^1.8.6"
|
|
60
60
|
};
|
|
61
61
|
var devDependencies = {
|
|
@@ -234,7 +234,7 @@ var CldImage = function CldImage(props) {
|
|
|
234
234
|
return Promise.reject(e);
|
|
235
235
|
}
|
|
236
236
|
};
|
|
237
|
-
var CLD_OPTIONS = ['deliveryType'];
|
|
237
|
+
var CLD_OPTIONS = ['deliveryType', 'preserveTransformations'];
|
|
238
238
|
urlLoader.transformationPlugins.forEach(function (_ref) {
|
|
239
239
|
var _ref$props = _ref.props,
|
|
240
240
|
props = _ref$props === void 0 ? [] : _ref$props;
|
|
@@ -245,7 +245,6 @@ var CldImage = function CldImage(props) {
|
|
|
245
245
|
CLD_OPTIONS.push(prop);
|
|
246
246
|
});
|
|
247
247
|
});
|
|
248
|
-
// Construct the base Image component props by filtering out Cloudinary-specific props
|
|
249
248
|
var imageProps = {
|
|
250
249
|
alt: props.alt,
|
|
251
250
|
src: props.src
|
|
@@ -261,11 +260,10 @@ var CldImage = function CldImage(props) {
|
|
|
261
260
|
var _useState = react.useState(defaultImgKey),
|
|
262
261
|
imgKey = _useState[0],
|
|
263
262
|
setImgKey = _useState[1];
|
|
264
|
-
// Construct Cloudinary-specific props by looking for values for any of the supported prop keys
|
|
265
263
|
var cldOptions = {};
|
|
266
264
|
CLD_OPTIONS.forEach(function (key) {
|
|
267
265
|
if (props[key]) {
|
|
268
|
-
cldOptions[key] = props[key];
|
|
266
|
+
cldOptions[key] = props[key] || undefined;
|
|
269
267
|
}
|
|
270
268
|
});
|
|
271
269
|
// If we see a placeholder option, configure a Cloudinary-based URL.
|
|
@@ -294,10 +292,16 @@ var CldImage = function CldImage(props) {
|
|
|
294
292
|
imageProps.placeholder = 'blur';
|
|
295
293
|
}
|
|
296
294
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
// Try to preserve the original transformations from the Cloudinary URL passed in
|
|
296
|
+
// to the component. This only works if the URL has a version number on it and otherwise
|
|
297
|
+
// will fail to load
|
|
298
|
+
if (props.preserveTransformations) {
|
|
299
|
+
try {
|
|
300
|
+
var transformations = util.getTransformations(props.src);
|
|
301
|
+
cldOptions.rawTransformations = [].concat(transformations.flat(), props.rawTransformations || []);
|
|
302
|
+
} catch (e) {
|
|
303
|
+
console.warn("Failed to preserve transformations: " + e.message);
|
|
304
|
+
}
|
|
301
305
|
}
|
|
302
306
|
return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, imageProps, {
|
|
303
307
|
loader: function loader(loaderOptions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-cloudinary.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\ndeclare type PlaceholderValue = 'blur' | 'empty'; // this is from next/image, but isn't exported\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps: {\n rawTransformations?: string[];\n blurDataURL?: string;\n placeholder?: PlaceholderValue;\n alt: string;\n src: string;\n } = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n if (props.src && props.preserveTransformations) {\n const transformations = getTransformations(props.src,props.preserveTransformations);\n const rawTransformations = imageProps.rawTransformations ? [...imageProps.rawTransformations] : []\n imageProps.rawTransformations = [...rawTransformations,...transformations,];\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","_jsx","Image","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","Head","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","Script","floor","random","console","message","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-cloudinary.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType',\n 'preserveTransformations'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n interface ImageProps {\n alt: string;\n blurDataURL?: string;\n placeholder?: 'blur' | 'empty'; // this is from next/image, but isn't exported\n src: string;\n }\n\n const imageProps: ImageProps = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n interface CldOptions {\n rawTransformations?: string[];\n }\n\n const cldOptions: CldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key] || undefined;\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n // Try to preserve the original transformations from the Cloudinary URL passed in\n // to the component. This only works if the URL has a version number on it and otherwise\n // will fail to load\n\n if (props.preserveTransformations) {\n try {\n const transformations = getTransformations(props.src);\n cldOptions.rawTransformations = [...transformations.flat(), ...(props.rawTransformations || [])];\n } catch(e) {\n console.warn(`Failed to preserve transformations: ${(e as Error).message}`)\n }\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","undefined","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","flat","console","warn","message","_jsx","Image","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","Head","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","Script","floor","random","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
var name = "next-cloudinary";
|
|
38
|
-
var version = "2.0.
|
|
38
|
+
var version = "2.0.1";
|
|
39
39
|
var main = "dist/next-cloudinary.umd.js";
|
|
40
40
|
var module = "dist/next-cloudinary.module.js";
|
|
41
41
|
var source = "src/index.ts";
|
|
@@ -48,7 +48,7 @@ var scripts = {
|
|
|
48
48
|
};
|
|
49
49
|
var dependencies = {
|
|
50
50
|
"@cloudinary-util/url-loader": "^1.2.4",
|
|
51
|
-
"@cloudinary-util/util": "^1.
|
|
51
|
+
"@cloudinary-util/util": "^1.2.0",
|
|
52
52
|
"@cloudinary/url-gen": "^1.8.6"
|
|
53
53
|
};
|
|
54
54
|
var devDependencies = {
|
|
@@ -183,7 +183,7 @@ function cloudinaryLoader({
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
const CldImage = props => {
|
|
186
|
-
const CLD_OPTIONS = ['deliveryType'];
|
|
186
|
+
const CLD_OPTIONS = ['deliveryType', 'preserveTransformations'];
|
|
187
187
|
transformationPlugins.forEach(({
|
|
188
188
|
props: _props = []
|
|
189
189
|
}) => {
|
|
@@ -194,7 +194,6 @@ const CldImage = props => {
|
|
|
194
194
|
CLD_OPTIONS.push(prop);
|
|
195
195
|
});
|
|
196
196
|
});
|
|
197
|
-
// Construct the base Image component props by filtering out Cloudinary-specific props
|
|
198
197
|
const imageProps = {
|
|
199
198
|
alt: props.alt,
|
|
200
199
|
src: props.src
|
|
@@ -202,11 +201,10 @@ const CldImage = props => {
|
|
|
202
201
|
Object.keys(props).filter(key => !CLD_OPTIONS.includes(key)).forEach(key => imageProps[key] = props[key]);
|
|
203
202
|
const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');
|
|
204
203
|
const [imgKey, setImgKey] = useState(defaultImgKey);
|
|
205
|
-
// Construct Cloudinary-specific props by looking for values for any of the supported prop keys
|
|
206
204
|
const cldOptions = {};
|
|
207
205
|
CLD_OPTIONS.forEach(key => {
|
|
208
206
|
if (props[key]) {
|
|
209
|
-
cldOptions[key] = props[key];
|
|
207
|
+
cldOptions[key] = props[key] || undefined;
|
|
210
208
|
}
|
|
211
209
|
});
|
|
212
210
|
// If we see a placeholder option, configure a Cloudinary-based URL.
|
|
@@ -235,10 +233,16 @@ const CldImage = props => {
|
|
|
235
233
|
imageProps.placeholder = 'blur';
|
|
236
234
|
}
|
|
237
235
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
// Try to preserve the original transformations from the Cloudinary URL passed in
|
|
237
|
+
// to the component. This only works if the URL has a version number on it and otherwise
|
|
238
|
+
// will fail to load
|
|
239
|
+
if (props.preserveTransformations) {
|
|
240
|
+
try {
|
|
241
|
+
const transformations = getTransformations(props.src);
|
|
242
|
+
cldOptions.rawTransformations = [...transformations.flat(), ...(props.rawTransformations || [])];
|
|
243
|
+
} catch (e) {
|
|
244
|
+
console.warn(`Failed to preserve transformations: ${e.message}`);
|
|
245
|
+
}
|
|
242
246
|
}
|
|
243
247
|
/**
|
|
244
248
|
* handleOnError
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-cloudinary.modern.mjs","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\ndeclare type PlaceholderValue = 'blur' | 'empty'; // this is from next/image, but isn't exported\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps: {\n rawTransformations?: string[];\n blurDataURL?: string;\n placeholder?: PlaceholderValue;\n alt: string;\n src: string;\n } = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n if (props.src && props.preserveTransformations) {\n const transformations = getTransformations(props.src,props.preserveTransformations);\n const rawTransformations = imageProps.rawTransformations ? [...imageProps.rawTransformations] : []\n imageProps.rawTransformations = [...rawTransformations,...transformations,];\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","createPlaceholderUrl","src","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","options","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","pollForProcessingImage","Promise","resolve","reject","fetch","then","res","ok","e","status","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","defaultImgKey","map","imgKey","setImgKey","useState","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","handleOnError","result","target","Date","now","_jsx","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","floor","random","console","message","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-cloudinary.modern.mjs","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType',\n 'preserveTransformations'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n interface ImageProps {\n alt: string;\n blurDataURL?: string;\n placeholder?: 'blur' | 'empty'; // this is from next/image, but isn't exported\n src: string;\n }\n\n const imageProps: ImageProps = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n interface CldOptions {\n rawTransformations?: string[];\n }\n\n const cldOptions: CldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key] || undefined;\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n // Try to preserve the original transformations from the Cloudinary URL passed in\n // to the component. This only works if the URL has a version number on it and otherwise\n // will fail to load\n\n if (props.preserveTransformations) {\n try {\n const transformations = getTransformations(props.src);\n cldOptions.rawTransformations = [...transformations.flat(), ...(props.rawTransformations || [])];\n } catch(e) {\n console.warn(`Failed to preserve transformations: ${(e as Error).message}`)\n }\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","createPlaceholderUrl","src","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","options","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","pollForProcessingImage","Promise","resolve","reject","fetch","then","res","ok","e","status","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","defaultImgKey","map","imgKey","setImgKey","useState","undefined","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","flat","console","warn","message","handleOnError","result","target","Date","now","_jsx","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","floor","random","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
var name = "next-cloudinary";
|
|
38
|
-
var version = "2.0.
|
|
38
|
+
var version = "2.0.1";
|
|
39
39
|
var main = "dist/next-cloudinary.umd.js";
|
|
40
40
|
var module = "dist/next-cloudinary.module.js";
|
|
41
41
|
var source = "src/index.ts";
|
|
@@ -48,7 +48,7 @@ var scripts = {
|
|
|
48
48
|
};
|
|
49
49
|
var dependencies = {
|
|
50
50
|
"@cloudinary-util/url-loader": "^1.2.4",
|
|
51
|
-
"@cloudinary-util/util": "^1.
|
|
51
|
+
"@cloudinary-util/util": "^1.2.0",
|
|
52
52
|
"@cloudinary/url-gen": "^1.8.6"
|
|
53
53
|
};
|
|
54
54
|
var devDependencies = {
|
|
@@ -227,7 +227,7 @@ var CldImage = function CldImage(props) {
|
|
|
227
227
|
return Promise.reject(e);
|
|
228
228
|
}
|
|
229
229
|
};
|
|
230
|
-
var CLD_OPTIONS = ['deliveryType'];
|
|
230
|
+
var CLD_OPTIONS = ['deliveryType', 'preserveTransformations'];
|
|
231
231
|
transformationPlugins.forEach(function (_ref) {
|
|
232
232
|
var _ref$props = _ref.props,
|
|
233
233
|
props = _ref$props === void 0 ? [] : _ref$props;
|
|
@@ -238,7 +238,6 @@ var CldImage = function CldImage(props) {
|
|
|
238
238
|
CLD_OPTIONS.push(prop);
|
|
239
239
|
});
|
|
240
240
|
});
|
|
241
|
-
// Construct the base Image component props by filtering out Cloudinary-specific props
|
|
242
241
|
var imageProps = {
|
|
243
242
|
alt: props.alt,
|
|
244
243
|
src: props.src
|
|
@@ -254,11 +253,10 @@ var CldImage = function CldImage(props) {
|
|
|
254
253
|
var _useState = useState(defaultImgKey),
|
|
255
254
|
imgKey = _useState[0],
|
|
256
255
|
setImgKey = _useState[1];
|
|
257
|
-
// Construct Cloudinary-specific props by looking for values for any of the supported prop keys
|
|
258
256
|
var cldOptions = {};
|
|
259
257
|
CLD_OPTIONS.forEach(function (key) {
|
|
260
258
|
if (props[key]) {
|
|
261
|
-
cldOptions[key] = props[key];
|
|
259
|
+
cldOptions[key] = props[key] || undefined;
|
|
262
260
|
}
|
|
263
261
|
});
|
|
264
262
|
// If we see a placeholder option, configure a Cloudinary-based URL.
|
|
@@ -287,10 +285,16 @@ var CldImage = function CldImage(props) {
|
|
|
287
285
|
imageProps.placeholder = 'blur';
|
|
288
286
|
}
|
|
289
287
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
288
|
+
// Try to preserve the original transformations from the Cloudinary URL passed in
|
|
289
|
+
// to the component. This only works if the URL has a version number on it and otherwise
|
|
290
|
+
// will fail to load
|
|
291
|
+
if (props.preserveTransformations) {
|
|
292
|
+
try {
|
|
293
|
+
var transformations = getTransformations(props.src);
|
|
294
|
+
cldOptions.rawTransformations = [].concat(transformations.flat(), props.rawTransformations || []);
|
|
295
|
+
} catch (e) {
|
|
296
|
+
console.warn("Failed to preserve transformations: " + e.message);
|
|
297
|
+
}
|
|
294
298
|
}
|
|
295
299
|
return /*#__PURE__*/jsx(Image, _extends({}, imageProps, {
|
|
296
300
|
loader: function loader(loaderOptions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-cloudinary.module.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\ndeclare type PlaceholderValue = 'blur' | 'empty'; // this is from next/image, but isn't exported\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps: {\n rawTransformations?: string[];\n blurDataURL?: string;\n placeholder?: PlaceholderValue;\n alt: string;\n src: string;\n } = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n if (props.src && props.preserveTransformations) {\n const transformations = getTransformations(props.src,props.preserveTransformations);\n const rawTransformations = imageProps.rawTransformations ? [...imageProps.rawTransformations] : []\n imageProps.rawTransformations = [...rawTransformations,...transformations,];\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","_jsx","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","floor","random","console","message","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAMA,4BAA4B,GAAG,GAAG,CAAA;AACxC,IAAMC,uBAAuB,GAAGC,GAAG,CAACC,OAAO,CAAA;AAC3C,IAAMC,YAAY,GAAGC,OAAO,CAACF,OAAO;;ACD3C;;AAEG;;AAoCH;;AAEG;;;;;;;;;;;;;AAEH,IAAsBG,sBAAsB,GAAA,SAAtBA,sBAAsB,CAACC,OAAO,EAAA;EAAA,IAAA;AAAA,IAAA,IAAA,MAAA,CAAA;AAClD,IAAA,IAAQC,GAAG,GAAKD,OAAO,CAAfC,GAAG,CAAA;IAAa,IACpB,MAAA,GAAA,MAAA,CAAA,YAAA;AAAA,MAAA,OAAA,OAAA,CAAA,OAAA,CACI,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAI;QACpCC,KAAK,CAACJ,GAAG,CAAC,CAACK,IAAI,CAAC,UAAAC,GAAG,EAAG;AACpB,UAAA,IAAK,CAACA,GAAG,CAACC,EAAE,EAAG;YACbJ,MAAM,CAACG,GAAG,CAAC,CAAA;AACX,YAAA,OAAA;AACD,WAAA;UACDJ,OAAO,CAACI,GAAG,CAAC,CAAA;AACd,SAAC,CAAC,CAAA;AACJ,OAAC,CAAC,CAAA,CAAA,IAAA,CAAA,YAAA,EAAA,CAAA,CAAA;KACH,EAAA,UAAOE,CAAM,EAAE;AAAA,MAAA,SAAA,MAAA,CAAA,QAAA,EAAA;AAAA,QAAA,IAAA,MAAA,EAAA,OAAA,QAAA,CAAA;AAAA,QAAA,MAAA,GAAA,CAAA,CAAA;AAAA,QAAA,OAIP,KAAK,CAAA;AAAA,OAAA;AAAA,MAAA,IAAA,KAAA,GAAA,YAAA;AAAA,QAAA,IAHPA,CAAC,CAACC,MAAM,KAAK,GAAG,EAAA;UAAA,OACNX,OAAAA,CAAAA,OAAAA,CAAAA,sBAAsB,CAACC,OAAO,CAAC,CAAA,CAAA,IAAA,CAAA,UAAA,qBAAA,EAAA;AAAA,YAAA,MAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAAA,qBAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA,CAAA;AAAA,MAAA,OAAA,KAAA,IAAA,KAAA,CAAA,IAAA,GAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAA,CAAA;KAG/C,CAAA,CAAA;AAAA,IAAA,OAAA,OAAA,CAAA,OAAA,CAAA,MAAA,IAAA,MAAA,CAAA,IAAA,GAAA,MAAA,CAAA,IAAA,CAAA,UAAA,OAAA,EAAA;AAAA,MAAA,OAAA,MAAA,GAAA,OAAA,GACM,IAAI,CAAA;AAAA,KAAA,CAAA,GAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAA,CAAA;GACZ,CAAA,OAAA,CAAA,EAAA;AAAA,IAAA,OAAA,OAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,CAAA,CAAA;AAzDK,SAAUW,oBAAoB,CAAyF,IAAA,EAAA;EAAA,IAAtFV,GAAG,QAAHA,GAAG;AAAA,IAAA,gBAAA,GAAA,IAAA,CAAEW,WAAW;AAAXA,IAAAA,WAAW,iCAAG,IAAI,GAAA,gBAAA,CAAA;EAC5D,IAAMC,kBAAkB,GAAa,EAAE,CAAA;EAEvC,IAAKD,WAAW,KAAK,WAAW,EAAG;AACjCC,IAAAA,kBAAkB,CAACC,IAAI,CAAC,aAAa,CAAC,CAAA;AACvC,GAAA;EAED,IAAK,OAAOF,WAAW,KAAK,QAAQ,IAAIA,WAAW,CAACG,QAAQ,CAAC,QAAQ,CAAC,EAAG;AACvE,IAAA,IAAMC,KAAK,GAAGJ,WAAW,CAACK,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxDN,IAAAA,kBAAkB,CAACC,IAAI,CAAC,aAAa,CAAC,CAAA;AACtCD,IAAAA,kBAAkB,CAACC,IAAI,CAAqBE,mBAAAA,GAAAA,KAAK,CAAG,CAAA;AACrD,GAAA;AAED,EAAA,OAAOI,sBAAsB,CAAC;AAC5BpB,IAAAA,OAAO,EAAE;AACPC,MAAAA,GAAG,EAAHA,GAAG;AACHoB,MAAAA,KAAK,EAAE,GAAG;AACVC,MAAAA,OAAO,EAAE,CAAC;AACVT,MAAAA,kBAAkB,EAAlBA,kBAAAA;KACD;AACDU,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAEC,OAAO,CAACC,GAAG,CAACC,iCAAAA;AACxB,OAAA;KACF;AACDC,IAAAA,SAAS,EAAE;AACTC,MAAAA,OAAO,EAAErC,4BAA4B;AACrCsC,MAAAA,SAAS,EAAErC,uBAAuB;AAClCsC,MAAAA,WAAW,EAAEnC,YAAY;AACzBoC,MAAAA,OAAO,EAAE,EAAA;AACV,KAAA;AACF,GAAA,CAAC,CAAA;AACJ;;ACpCO,SAASC,gBAAgB,CAA4D,IAAA,EAAA;EAAA,IAAzDC,aAAa,QAAbA,aAAa;AAAEC,IAAAA,UAAU,QAAVA,UAAU;AAAEC,IAAAA,UAAU,QAAVA,UAAU;AAAA,IAAA,cAAA,GAAA,IAAA,CAAEC,SAAS;IAATA,SAAS,GAAA,cAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAA,cAAA,CAAA;AACtF,EAAA,IAAMtC,OAAO,GAAA,QAAA,CAAA,EAAA,EACRoC,UAAU,EACVC,UAAU,CACd,CAAA;EAEDrC,OAAO,CAACqB,KAAK,GAAGkB,QAAQ,CAACvC,OAAO,CAACqB,KAAK,CAAC,CAAA;EACvCrB,OAAO,CAACwC,MAAM,GAAGD,QAAQ,CAACvC,OAAO,CAACwC,MAAM,CAAC,CAAA;;AAEzC;AACA;AACA;AACA;;AAEA,EAAA,IAAKL,aAAa,IAAA,IAAA,IAAbA,aAAa,CAAEd,KAAK,IAAIc,aAAa,CAACd,KAAK,KAAKrB,OAAO,CAACqB,KAAK,EAAG;IACnE,IAAMoB,UAAU,GAAGN,aAAa,CAACd,KAAK,GAAGrB,OAAO,CAACqB,KAAK,CAAA;AACtDrB,IAAAA,OAAO,CAAC0C,WAAW,GAAGP,aAAa,CAACd,KAAK,CAAA;AACzCrB,IAAAA,OAAO,CAAC2C,YAAY,GAAGC,IAAI,CAACC,KAAK,CAAC7C,OAAO,CAACwC,MAAM,GAAGC,UAAU,CAAC,CAAA;AAChE,GAAA;AAEA,EAAA,OAAOrB,sBAAsB,CAAC;AAC5BpB,IAAAA,OAAO,EAAPA,OAAO;IACPuB,MAAM,EAAA,QAAA,CAAA;AACJC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAEC,OAAO,CAACC,GAAG,CAACC,iCAAAA;AACzB,OAAA;AAAC,KAAA,EACEU,SAAS,CACb;AACDT,IAAAA,SAAS,EAAE;AACTC,MAAAA,OAAO,EAAErC,4BAA4B;AACrCsC,MAAAA,SAAS,EAAErC,uBAAuB;AAClCsC,MAAAA,WAAW,EAAEnC,YAAY;AACzBoC,MAAAA,OAAO,EAAE,EAAA;AACX,KAAA;AACF,GAAC,CAAC,CAAA;AACJ;;AC1BA,IAAMa,QAAQ,GAAG,SAAXA,QAAQ,CAAGC,KAAK,EAAG;AAkFvB;;AAEG;AAFH,EAAA,IAIeC,aAAa,GAAA,SAAbA,aAAa,CAAChD,OAAO,EAAA;IAAA,IAAA;AAAA,MAAA,OAAA,OAAA,CAAA,OAAA,CACbD,sBAAsB,CAAC;AAAEE,QAAAA,GAAG,EAAED,OAAO,CAACiD,MAAM,CAAChD,GAAAA;OAAK,CAAC,iBAAlEiD,MAAM,EAAA;AAAA,QAAA,IACPA,MAAM,EAAA;AACTC,UAAAA,SAAS,CAAIC,aAAa,GAAA,GAAA,GAAIC,IAAI,CAACC,GAAG,EAAE,CAAG,CAAA;AAAC,SAAA;AAAA,OAAA,CAAA,CAAA;KAE/C,CAAA,OAAA,CAAA,EAAA;AAAA,MAAA,OAAA,OAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AA1FD,EAAA,IAAMC,WAAW,GAAG,CAClB,cAAc,CACf,CAAA;EAEDC,qBAAqB,CAACC,OAAO,CAAC,UAAmB,IAAA,EAAA;AAAA,IAAA,IAAA,UAAA,GAAA,IAAA,CAAhBV,KAAK;AAALA,MAAAA,KAAK,2BAAG,EAAE,GAAA,UAAA,CAAA;AACzCA,IAAAA,KAAK,CAACU,OAAO,CAAC,UAAAC,IAAI,EAAG;AACnB,MAAA,IAAKH,WAAW,CAACxC,QAAQ,CAAC2C,IAAI,CAAC,EAAG;AAChC,QAAA,MAAM,IAAIC,KAAK,CAAWD,SAAAA,GAAAA,IAAI,GAAmB,kBAAA,CAAA,CAAA;AAClD,OAAA;AACDH,MAAAA,WAAW,CAACzC,IAAI,CAAC4C,IAAI,CAAC,CAAA;AACxB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AAEF;AAEA,EAAA,IAAMtB,UAAU,GAMZ;IACFwB,GAAG,EAAEb,KAAK,CAACa,GAAG;IACd3D,GAAG,EAAE8C,KAAK,CAAC9C,GAAAA;GACZ,CAAA;EAED4D,MAAM,CAACC,IAAI,CAACf,KAAK,CAAC,CACfgB,MAAM,CAAC,UAAAC,GAAG,EAAA;AAAA,IAAA,OAAI,CAACT,WAAW,CAACxC,QAAQ,CAACiD,GAAG,CAAC,CAAA;AAAA,GAAA,CAAC,CACzCP,OAAO,CAAC,UAAAO,GAAG,EAAA;IAAA,OAAI5B,UAAU,CAAC4B,GAAG,CAAC,GAAGjB,KAAK,CAACiB,GAAG,CAAC,CAAA;GAAC,CAAA,CAAA;AAE/C,EAAA,IAAMZ,aAAa,GAAGS,MAAM,CAACC,IAAI,CAAC1B,UAAU,CAAC,CAAC6B,GAAG,CAAC,UAAAD,GAAG,EAAA;AAAA,IAAA,OAAOA,GAAG,GAAA,GAAA,GAAI5B,UAAU,CAAC4B,GAAG,CAAC,CAAA;AAAA,GAAE,CAAC,CAAC7C,IAAI,CAAC,GAAG,CAAC,CAAA;EAC/F,IAA4B+C,SAAAA,GAAAA,QAAQ,CAACd,aAAa,CAAC;IAA5Ce,MAAM,GAAA,SAAA,CAAA,CAAA,CAAA;IAAEhB,SAAS,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAExB;EAEA,IAAMd,UAAU,GAAG,EAAE,CAAA;AAErBkB,EAAAA,WAAW,CAACE,OAAO,CAAC,UAAAO,GAAG,EAAG;AACxB,IAAA,IAAKjB,KAAK,CAACiB,GAAG,CAAC,EAAG;AAChB3B,MAAAA,UAAU,CAAC2B,GAAG,CAAC,GAAGjB,KAAK,CAACiB,GAAG,CAAC,CAAA;AAC7B,KAAA;AACH,GAAC,CAAC,CAAA;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAEA,IAAK5B,UAAU,CAACxB,WAAW,EAAG;AAC5B,IAAA,IAAIwD,QAAQ,CAAA;IAEZ,IAAKrB,KAAK,CAAC9C,GAAG,CAACoE,UAAU,CAAC,UAAU,CAAC,EAAG;MACtC,IAAI;AACFD,QAAAA,QAAQ,GAAGE,WAAW,CAACvB,KAAK,CAAC9C,GAAG,CAAC,CAAA;AAClC,OAAA,CAAC,OAAMQ,CAAC,EAAE,EAAE;AACd,KAAA;IAED,IAAK,CAAC2D,QAAQ,EAAG;MACfA,QAAQ,GAAGrB,KAAK,CAAC9C,GAAG,CAAA;AACrB,KAAA;AAEDmC,IAAAA,UAAU,CAACmC,WAAW,GAAG5D,oBAAoB,CAAC;AAC5CV,MAAAA,GAAG,EAAEmE,QAAQ;MACbxD,WAAW,EAAEmC,KAAK,CAACnC,WAAAA;AACpB,KAAA,CAAC,CAAA;AAEF,IAAA,IAAKwB,UAAU,CAACxB,WAAW,KAAK,MAAM,EAAG;MACvCwB,UAAU,CAACxB,WAAW,GAAG,MAAM,CAAA;AAChC,KAAA;AACF,GAAA;AAED,EAAA,IAAImC,KAAK,CAAC9C,GAAG,IAAI8C,KAAK,CAACyB,uBAAuB,EAAE;IAC9C,IAAMC,eAAe,GAAGC,kBAAkB,CAAC3B,KAAK,CAAC9C,GAAG,EAAC8C,KAAK,CAACyB,uBAAuB,CAAC,CAAA;IACnF,IAAM3D,kBAAkB,GAAGuB,UAAU,CAACvB,kBAAkB,aAAOuB,UAAU,CAACvB,kBAAkB,CAAA,GAAI,EAAE,CAAA;AAClGuB,IAAAA,UAAU,CAACvB,kBAAkB,GAAA,EAAA,CAAA,MAAA,CAAOA,kBAAkB,EAAI4D,eAAe,CAAE,CAAA;AAC5E,GAAA;EAaD,oBACEE,GAAA,CAAC,KAAK,EAAA,QAAA,CAAA,EAAA,EAEAvC,UAAU,EAAA;IACd,MAAM,EAAE,gBAACD,aAAa,EAAA;AAAA,MAAA,OAAKD,gBAAgB,CAAC;AAAEC,QAAAA,aAAa,EAAbA,aAAa;AAAEC,QAAAA,UAAU,EAAVA,UAAU;AAAEC,QAAAA,UAAU,EAAVA,UAAAA;AAAU,OAAE,CAAC,CAAA;KAAC;AACvF,IAAA,OAAO,EAAEW,aAAAA;AAAc,GAAA,CAAA,EAHlBmB,MAAM,CAIX,CAAA;AAEN;;;AC7GA,IAAMS,WAAW,GAAG,IAAI,CAAA;AACxB,IAAMC,YAAY,GAAG,IAAI,CAAA;AAEzB,IAAMC,YAAY,GAAG,qBAAqB,CAAA;AAE1C,IAAMC,UAAU,GAAG,SAAbA,UAAU,CAAgE,IAAA,EAAA;AAAA,EAAA,IAAA,gBAAA,GAAA,IAAA,CAA1DC,WAAW;AAAXA,IAAAA,WAAW,iCAAG,EAAc,GAAA,gBAAA;AAAEC,IAAAA,YAAY,QAAZA,YAAY;IAAKlC,KAAK,GAAA,6BAAA,CAAA,IAAA,EAAAmC,WAAA,CAAA,CAAA;EACxE,IAAMlF,OAAO,gBACR+C,KAAK,EAAA;IACRa,GAAG,EAAEb,KAAK,CAACa,GAAG;AACduB,IAAAA,IAAI,EAAEpC,KAAK,CAACoC,IAAI,IAAI,MAAM;AAC1BC,IAAAA,OAAO,EAAErC,KAAK,CAACqC,OAAO,IAAI,QAAQ;AAClC5C,IAAAA,MAAM,EAAEO,KAAK,CAACP,MAAM,IAAIqC,YAAY;IACpC5E,GAAG,EAAE8C,KAAK,CAAC9C,GAAG;AACdoB,IAAAA,KAAK,EAAE0B,KAAK,CAAC1B,KAAK,IAAIuD,WAAAA;GACvB,CAAA,CAAA;EAED,IAAMS,UAAU,GAAGjE,sBAAsB,CAAC;AACxCpB,IAAAA,OAAO,EAAPA,OAAO;AACPuB,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAEC,OAAO,CAACC,GAAG,CAACC,iCAAAA;AACxB,OAAA;KACF;AACDC,IAAAA,SAAS,EAAE;AACTC,MAAAA,OAAO,EAAErC,4BAA4B;AACrCsC,MAAAA,SAAS,EAAErC,uBAAuB;AAClCsC,MAAAA,WAAW,EAAEnC,YAAY;AACzBoC,MAAAA,OAAO,EAAE,EAAA;AACV,KAAA;AACF,GAAA,CAAC,CAAA;AAEF;AACA;AAEE,EAAA;AAAA;AACA;AACA,IAAAqD,IAAA,CAAC,IAAI,EAAA;MAAA,QACH,EAAA,cAAAX,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,UAAU;AAAC,QAAA,OAAO,EAAEU,UAAAA;AAAW,OAAA,CAC9C,eAAAV,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,qBAAqB;AAAC,QAAA,OAAO,EAAEU,UAAAA;AAAW,OAAA,CACzD,eAAAV,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,gBAAgB;QAAC,OAAO,EAAE3E,OAAO,CAACqB,KAAAA;AAAM,OAAA,CACvD,eAAAsD,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,iBAAiB;QAAC,OAAO,EAAE3E,OAAO,CAACwC,MAAAA;AAAO,OAAA,CAEzD,EAACxC,OAAO,CAAC4D,GAAG,iBACVe,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,cAAc;QAAC,OAAO,EAAE3E,OAAO,CAAC4D,GAAAA;OAChD,CAAA,EAKA,CAACoB,WAAW,CAACjE,QAAQ,CAAC,eAAe,CAAC,iBACrC4D,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,eAAe;QAAC,OAAO,EAAEM,YAAY,IAAI,GAAA;AAAI,OAAA,CAC7D,eAEDN,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,cAAc;AAAC,QAAA,OAAO,EAAEG,YAAAA;AAAa,OAAA,CACpD,eAAAH,GAAA,CAAA,MAAA,EAAA;AAAM,QAAA,QAAQ,EAAC,eAAe;AAAC,QAAA,OAAO,EAAEU,UAAAA;OAC1C,CAAA,CAAA;AAAA,KAAA,CAAA;AAAO,IAAA;AAEX;;AC3DA,IAAME,eAAe,GAAG,SAAlBA,eAAe,CAMhB,IAAA,EAAA;EAAA,IALHC,QAAQ,QAARA,QAAQ;AACRC,IAAAA,QAAQ,QAARA,QAAQ;AACRzF,IAAAA,OAAO,QAAPA,OAAO;AACP0F,IAAAA,iBAAiB,QAAjBA,iBAAiB;AACjBC,IAAAA,YAAY,QAAZA,YAAY,CAAA;EAEZ,IAAMC,UAAU,GAAGC,MAAM,EAAO,CAAA;EAChC,IAAMC,MAAM,GAAGD,MAAM,EAAE,CAAA;AAEvB,EAAA,IAAME,MAAM,GAAG,CAAC,CAACL,iBAAiB,CAAA;AAElC;;;AAGG;AAEH,EAAA,SAASM,iBAAiB,CAACC,QAAQ,EAAEC,YAAY,EAAA;IAC/C7F,KAAK,CAACqF,iBAAiB,EAAE;AACvBS,MAAAA,MAAM,EAAE,MAAM;AACdC,MAAAA,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;AACnBJ,QAAAA,YAAY,EAAZA,YAAAA;OACD,CAAA;KACF,CAAC,CACC5F,IAAI,CAAC,UAACiG,CAAC,EAAA;MAAA,OAAKA,CAAC,CAACC,IAAI,EAAE,CAAA;KAAC,CAAA,CACrBlG,IAAI,CAAC,UAAkB,KAAA,EAAA;MAAA,IAAfmG,SAAS,SAATA,SAAS,CAAA;MAChBR,QAAQ,CAACQ,SAAS,CAAC,CAAA;AACrB,KAAC,CAAC,CAAA;AACN,GAAA;AAEA;;;AAGG;AAEH,EAAA,SAASC,YAAY,GAAA;AAAA,IAAA,IAAA,mBAAA,CAAA;AACnB;AACA;AACA;AACA;AAEA,IAAA,IAAMC,aAAa,GAAA,QAAA,CAAA;AACjBlF,MAAAA,SAAS,EAAEC,OAAO,CAACC,GAAG,CAACC,iCAAiC;AACxD+D,MAAAA,YAAY,EAAEA,YAAY,IAAIjE,OAAO,CAACC,GAAG,CAACiF,oCAAoC;AAC9EC,MAAAA,MAAM,EAAEnF,OAAO,CAACC,GAAG,CAACmF,8BAAAA;AAA8B,KAAA,EAC/C9G,OAAO,CACX,CAAA;AAED,IAAA,IAAK+F,MAAM,EAAG;MACZY,aAAa,CAACI,eAAe,GAAGf,iBAAiB,CAAA;AAEjD;AAEA,MAAA,IAAI,CAACW,aAAa,CAACE,MAAM,EAAE;AACzB,QAAA,OAAO,IAAIlD,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAChD,OAAA;AACF,KAAA;AAED,IAAA,OAAA,CAAA,mBAAA,GAAOiC,UAAU,CAACoB,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAlB,mBAAoBC,CAAAA,kBAAkB,CAC3CN,aAAa,EACb,UAAUO,KAAK,EAAEhE,MAAM,EAAA;AACrB;AACA;AACA;AACA;AACA,MAAA,IAAIgE,KAAK,IAAIhE,MAAM,CAACiE,KAAK,KAAK,SAAS,EAAE;QACvC1B,QAAQ,CAACyB,KAAK,EAAEhE,MAAM,EAAE4C,MAAM,IAANA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAEkB,OAAO,CAAC,CAAA;AACzC,OAAA;AACH,KAAC,CACF,CAAA;AACH,GAAA;AAEA;;;AAGG;AAEH,EAAA,SAASI,IAAI,GAAA;AACX,IAAA,IAAI,EAACtB,MAAM,IAAA,IAAA,IAANA,MAAM,CAAEkB,OAAO,CAAE,EAAA;AACpBlB,MAAAA,MAAM,CAACkB,OAAO,GAAGN,YAAY,EAAE,CAAA;AAChC,KAAA;AAED;IACA,CAAAZ,MAAM,IAANA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAEkB,OAAO,KAAIlB,MAAM,CAACkB,OAAO,CAACI,IAAI,EAAE,CAAA;AAC1C,GAAA;AAEA;;;AAGG;AAEH,EAAA,SAASC,YAAY,GAAA;AACnB;AACAzB,IAAAA,UAAU,CAACoB,OAAO,GAAGM,MAAM,CAAC1B,UAAU,CAAA;AACxC,GAAA;EAEA,oBACEN,IAAA,CAAAiC,QAAA,EAAA;AAAA,IAAA,QAAA,EAAA,CACG/B,QAAQ,CAAC;MACRI,UAAU,EAAEA,UAAU,CAACoB,OAAO;MAC9BlB,MAAM,EAAEA,MAAM,CAACkB,OAAO;AACtBI,MAAAA,IAAI,EAAJA,IAAAA;KACD,CAAC,eACFzC,GAAA,CAAC,MAAM,EAAA;MACL,EAAE,EAAA,aAAA,GAAgB/B,IAAI,CAAC4E,KAAK,CAAC5E,IAAI,CAAC6E,MAAM,EAAE,GAAG,GAAG,CAAA;AAChD;AAAA;AACA,MAAA,GAAG,EAAC,kDAAkD;AACtD,MAAA,MAAM,EAAEJ,YAAa;MACrB,OAAO,EAAE,iBAAC5G,CAAC,EAAA;AAAA,QAAA,OAAKiH,OAAO,CAACR,KAAK,iCAA+BzG,CAAC,CAACkH,OAAO,CAAG,CAAA;AAAA,OAAA;KAE5E,CAAA,CAAA;GAAG,CAAA,CAAA;AAEP;;;ACjHA,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAQhB,IAAA,EAAA;EAAA,IAPHpC,SAAQ,QAARA,QAAQ;AACRqC,IAAAA,OAAO,QAAPA,OAAO;AACPpC,IAAAA,QAAQ,QAARA,QAAQ;AACRzF,IAAAA,OAAO,QAAPA,OAAO;AACP0F,IAAAA,iBAAiB,QAAjBA,iBAAiB;AACjBC,IAAAA,YAAY,QAAZA,YAAY;IACT5C,KAAK,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;EAER,oBACE4B,GAAA,CAAA4C,QAAA,EAAA;AAAA,IAAA,QAAA,eAEE5C,IAAC,eAAe,EAAA;AACd,MAAA,QAAQ,EAAEc,QAAS;AACnB,MAAA,OAAO,EAAEzF,OAAQ;AACjB,MAAA,iBAAiB,EAAE0F,iBAAkB;AACrC,MAAA,YAAY,EAAEC,YAAa;AAAA,MAAA,QAAA,EAE1B,SAAa,QAAA,CAAA,KAAA,EAAA;QAAA,IAAVyB,IAAI,SAAJA,IAAI,CAAA;QACN,SAASU,aAAa,CAACrH,CAAC,EAAA;UACtBA,CAAC,CAACsH,cAAc,EAAE,CAAA;AAElBX,UAAAA,IAAI,EAAE,CAAA;AAEN,UAAA,IAAK,OAAOS,OAAO,KAAK,UAAU,EAAG;YACnCA,OAAO,CAACpH,CAAC,CAAC,CAAA;AACX,WAAA;AACH,SAAA;AACA,QAAA,oBACEkE,2BAAY5B,KAAK,EAAA;AAAE,UAAA,OAAO,EAAE+E,aAAc;AAAA,UAAA,QAAA,EACvCtC,SAAQ,IAAI,QAAA;SACN,CAAA,CAAA,CAAA;AAEb,OAAA;AAAC,KAAA,CAAA;GAEF,CAAA,CAAA;AAEP;;;;"}
|
|
1
|
+
{"version":3,"file":"next-cloudinary.module.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType',\n 'preserveTransformations'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n interface ImageProps {\n alt: string;\n blurDataURL?: string;\n placeholder?: 'blur' | 'empty'; // this is from next/image, but isn't exported\n src: string;\n }\n\n const imageProps: ImageProps = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n interface CldOptions {\n rawTransformations?: string[];\n }\n\n const cldOptions: CldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key] || undefined;\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n // Try to preserve the original transformations from the Cloudinary URL passed in\n // to the component. This only works if the URL has a version number on it and otherwise\n // will fail to load\n\n if (props.preserveTransformations) {\n try {\n const transformations = getTransformations(props.src);\n cldOptions.rawTransformations = [...transformations.flat(), ...(props.rawTransformations || [])];\n } catch(e) {\n console.warn(`Failed to preserve transformations: ${(e as Error).message}`)\n }\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","undefined","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","flat","console","warn","message","_jsx","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","floor","random","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
var name = "next-cloudinary";
|
|
41
|
-
var version = "2.0.
|
|
41
|
+
var version = "2.0.1";
|
|
42
42
|
var main = "dist/next-cloudinary.umd.js";
|
|
43
43
|
var module = "dist/next-cloudinary.module.js";
|
|
44
44
|
var source = "src/index.ts";
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
};
|
|
52
52
|
var dependencies = {
|
|
53
53
|
"@cloudinary-util/url-loader": "^1.2.4",
|
|
54
|
-
"@cloudinary-util/util": "^1.
|
|
54
|
+
"@cloudinary-util/util": "^1.2.0",
|
|
55
55
|
"@cloudinary/url-gen": "^1.8.6"
|
|
56
56
|
};
|
|
57
57
|
var devDependencies = {
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
return Promise.reject(e);
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
|
-
var CLD_OPTIONS = ['deliveryType'];
|
|
233
|
+
var CLD_OPTIONS = ['deliveryType', 'preserveTransformations'];
|
|
234
234
|
urlLoader.transformationPlugins.forEach(function (_ref) {
|
|
235
235
|
var _ref$props = _ref.props,
|
|
236
236
|
props = _ref$props === void 0 ? [] : _ref$props;
|
|
@@ -241,7 +241,6 @@
|
|
|
241
241
|
CLD_OPTIONS.push(prop);
|
|
242
242
|
});
|
|
243
243
|
});
|
|
244
|
-
// Construct the base Image component props by filtering out Cloudinary-specific props
|
|
245
244
|
var imageProps = {
|
|
246
245
|
alt: props.alt,
|
|
247
246
|
src: props.src
|
|
@@ -257,11 +256,10 @@
|
|
|
257
256
|
var _useState = react.useState(defaultImgKey),
|
|
258
257
|
imgKey = _useState[0],
|
|
259
258
|
setImgKey = _useState[1];
|
|
260
|
-
// Construct Cloudinary-specific props by looking for values for any of the supported prop keys
|
|
261
259
|
var cldOptions = {};
|
|
262
260
|
CLD_OPTIONS.forEach(function (key) {
|
|
263
261
|
if (props[key]) {
|
|
264
|
-
cldOptions[key] = props[key];
|
|
262
|
+
cldOptions[key] = props[key] || undefined;
|
|
265
263
|
}
|
|
266
264
|
});
|
|
267
265
|
// If we see a placeholder option, configure a Cloudinary-based URL.
|
|
@@ -290,10 +288,16 @@
|
|
|
290
288
|
imageProps.placeholder = 'blur';
|
|
291
289
|
}
|
|
292
290
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
291
|
+
// Try to preserve the original transformations from the Cloudinary URL passed in
|
|
292
|
+
// to the component. This only works if the URL has a version number on it and otherwise
|
|
293
|
+
// will fail to load
|
|
294
|
+
if (props.preserveTransformations) {
|
|
295
|
+
try {
|
|
296
|
+
var transformations = util.getTransformations(props.src);
|
|
297
|
+
cldOptions.rawTransformations = [].concat(transformations.flat(), props.rawTransformations || []);
|
|
298
|
+
} catch (e) {
|
|
299
|
+
console.warn("Failed to preserve transformations: " + e.message);
|
|
300
|
+
}
|
|
297
301
|
}
|
|
298
302
|
return /*#__PURE__*/jsxRuntime.jsx(Image__default["default"], _extends({}, imageProps, {
|
|
299
303
|
loader: function loader(loaderOptions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-cloudinary.umd.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\ndeclare type PlaceholderValue = 'blur' | 'empty'; // this is from next/image, but isn't exported\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps: {\n rawTransformations?: string[];\n blurDataURL?: string;\n placeholder?: PlaceholderValue;\n alt: string;\n src: string;\n } = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n if (props.src && props.preserveTransformations) {\n const transformations = getTransformations(props.src,props.preserveTransformations);\n const rawTransformations = imageProps.rawTransformations ? [...imageProps.rawTransformations] : []\n imageProps.rawTransformations = [...rawTransformations,...transformations,];\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","_jsx","Image","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","Head","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","Script","floor","random","console","message","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-cloudinary.umd.js","sources":["../src/constants/analytics.js","../src/lib/cloudinary.ts","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.tsx","../src/components/CldOgImage/CldOgImage.tsx","../src/components/CldUploadWidget/CldUploadWidget.tsx","../src/components/CldUploadButton/CldUploadButton.tsx"],"sourcesContent":["import nextPkg from 'next/package.json';\nimport pkg from '../../package.json';\n\nexport const NEXT_CLOUDINARY_ANALYTICS_ID = 'V';\nexport const NEXT_CLOUDINARY_VERSION = pkg.version;\nexport const NEXT_VERSION = nextPkg.version;","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder = true }: { src?: any, placeholder?: boolean | string, config?: any }) {\n const rawTransformations: string[] = [];\n\n if ( placeholder === 'grayscale' ) {\n rawTransformations.push('e_grayscale');\n }\n\n if ( typeof placeholder === 'string' && placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n rawTransformations.push('e_grayscale');\n rawTransformations.push(`e_colorize:60,co_${color}`);\n }\n\n return constructCloudinaryUrl({\n options: {\n src,\n width: 100,\n quality: 1,\n rawTransformations,\n },\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}\n\n/**\n * pollForProcessingImage\n */\n\nexport async function pollForProcessingImage(options): Promise<boolean> {\n const { src } = options;\n try {\n await new Promise((resolve, reject) => {\n fetch(src).then(res => {\n if ( !res.ok ) {\n reject(res);\n return;\n }\n resolve(res);\n });\n });\n } catch(e: any) {\n if ( e.status === 423 ) {\n return await pollForProcessingImage(options);\n }\n return false;\n }\n return true;\n}","import { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../constants/analytics';\n\nexport function cloudinaryLoader({ loaderOptions, imageProps, cldOptions, cldConfig = {} }) {\n const options = {\n ...imageProps,\n ...cldOptions\n }\n\n options.width = parseInt(options.width);\n options.height = parseInt(options.height);\n\n // The loader options are used to create dynamic sizing when working with responsive images\n // so these should override the default options collected from the props alone if\n // the results are different. While we don't always use the height in the loader logic,\n // we always pass it here, as the usage is determined later based on cropping.js\n\n if ( loaderOptions?.width && loaderOptions.width !== options.width ) {\n const multiplier = loaderOptions.width / options.width;\n options.widthResize = loaderOptions.width;\n options.heightResize = Math.round(options.height * multiplier);\n }\n\n return constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n ...cldConfig\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n}","'use client';\n\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport { getTransformations, getPublicId } from '@cloudinary-util/util';\nimport { transformationPlugins } from '@cloudinary-util/url-loader';\n\nimport { createPlaceholderUrl, pollForProcessingImage } from '../../lib/cloudinary';\n\nimport { cloudinaryLoader } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n const CLD_OPTIONS = [\n 'deliveryType',\n 'preserveTransformations'\n ];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n interface ImageProps {\n alt: string;\n blurDataURL?: string;\n placeholder?: 'blur' | 'empty'; // this is from next/image, but isn't exported\n src: string;\n }\n\n const imageProps: ImageProps = {\n alt: props.alt,\n src: props.src\n };\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n const defaultImgKey = Object.keys(imageProps).map(key => `${key}:${imageProps[key]}`).join(';');\n const [imgKey, setImgKey] = useState(defaultImgKey);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n interface CldOptions {\n rawTransformations?: string[];\n }\n\n const cldOptions: CldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key] || undefined;\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n let publicId;\n\n if ( props.src.startsWith('https://') ) {\n try {\n publicId = getPublicId(props.src);\n } catch(e) {}\n }\n\n if ( !publicId ) {\n publicId = props.src;\n }\n\n imageProps.blurDataURL = createPlaceholderUrl({\n src: publicId,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n // Try to preserve the original transformations from the Cloudinary URL passed in\n // to the component. This only works if the URL has a version number on it and otherwise\n // will fail to load\n\n if (props.preserveTransformations) {\n try {\n const transformations = getTransformations(props.src);\n cldOptions.rawTransformations = [...transformations.flat(), ...(props.rawTransformations || [])];\n } catch(e) {\n console.warn(`Failed to preserve transformations: ${(e as Error).message}`)\n }\n }\n\n /**\n * handleOnError\n */\n\n async function handleOnError(options) {\n const result = await pollForProcessingImage({ src: options.target.src })\n if ( result ) {\n setImgKey(`${defaultImgKey};${Date.now()}`);\n }\n }\n\n return (\n <Image\n key={imgKey}\n {...imageProps}\n loader={(loaderOptions) => cloudinaryLoader({ loaderOptions, imageProps, cldOptions })}\n onError={handleOnError}\n />\n );\n}\n\nexport default CldImage;\n","import Head from 'next/head';\nimport { constructCloudinaryUrl } from '@cloudinary-util/url-loader';\n\nimport { NEXT_CLOUDINARY_ANALYTICS_ID, NEXT_CLOUDINARY_VERSION, NEXT_VERSION } from '../../constants/analytics';\n\nconst IMAGE_WIDTH = 2400;\nconst IMAGE_HEIGHT = 1200;\n\nconst TWITTER_CARD = 'summary_large_image';\n\nconst CldOgImage = ({ excludeTags = [] as string[], twitterTitle, ...props }) => {\n const options = {\n ...props,\n alt: props.alt,\n crop: props.crop || 'fill',\n gravity: props.gravity || 'center',\n height: props.height || IMAGE_HEIGHT,\n src: props.src,\n width: props.width || IMAGE_WIDTH,\n }\n\n const ogImageUrl = constructCloudinaryUrl({\n options,\n config: {\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n }\n },\n analytics: {\n sdkCode: NEXT_CLOUDINARY_ANALYTICS_ID,\n sdkSemver: NEXT_CLOUDINARY_VERSION,\n techVersion: NEXT_VERSION,\n feature: ''\n }\n });\n\n // We need to include the tags within the Next.js Head component rather than\n // direcly adding them inside of the Head otherwise we get unexpected results\n\n return (\n // @ts-ignore\n <Head>\n <meta property=\"og:image\" content={ogImageUrl} />\n <meta property=\"og:image:secure_url\" content={ogImageUrl} />\n <meta property=\"og:image:width\" content={options.width} />\n <meta property=\"og:image:height\" content={options.height} />\n\n {options.alt && (\n <meta property=\"og:image:alt\" content={options.alt} />\n )}\n\n {/* Required for summary_large_image, exclude vai excludeTags */}\n {/* https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image */}\n\n {!excludeTags.includes('twitter:title') && (\n <meta property=\"twitter:title\" content={twitterTitle || ' '} />\n )}\n\n <meta property=\"twitter:card\" content={TWITTER_CARD} />\n <meta property=\"twitter:image\" content={ogImageUrl} />\n </Head>\n );\n}\n\nexport default CldOgImage;","import { useRef } from 'react';\nimport Script from 'next/script';\n\nconst CldUploadWidget = ({\n children,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n}) => {\n const cloudinary = useRef<any>();\n const widget = useRef();\n\n const signed = !!signatureEndpoint;\n\n /**\n * generateSignature\n * @description Makes a request to an endpoint to sign Cloudinary parameters as part of widget creation\n */\n\n function generateSignature(callback, paramsToSign) {\n fetch(signatureEndpoint, {\n method: \"POST\",\n body: JSON.stringify({\n paramsToSign,\n }),\n })\n .then((r) => r.json())\n .then(({ signature }) => {\n callback(signature);\n });\n }\n\n /**\n * createWidget\n * @description Creates a new instance of the Cloudinary widget and stores in a ref\n */\n\n function createWidget() {\n // When creating a signed upload, you need to provide both your Cloudinary API Key\n // as well as a signature generator function that will sign any paramters\n // either on page load or during the upload process. Read more about signed uploads at:\n // https://cloudinary.com/documentation/upload_widget#signed_uploads\n\n const uploadOptions = {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,\n uploadPreset: uploadPreset || process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET,\n apiKey: process.env.NEXT_PUBLIC_CLOUDINARY_API_KEY,\n ...options,\n };\n\n if ( signed ) {\n uploadOptions.uploadSignature = generateSignature;\n\n // No need for apiSecret here because of api/sign-cloudinary-params\n\n if (!uploadOptions.apiKey) {\n return new Error(\"Signed Upload needs apiKey!\");\n }\n }\n\n return cloudinary.current?.createUploadWidget(\n uploadOptions,\n function (error, result) {\n // The callback is a bit more chatty than failed or success so\n // only trigger when one of those are the case. You can additionally\n // create a separate handler such as onEvent and trigger it on\n // ever occurrence\n if (error || result.event === \"success\") {\n onUpload(error, result, widget?.current);\n }\n }\n );\n }\n\n /**\n * open\n * @description When triggered, uses the current widget instance to open the upload modal\n */\n\n function open() {\n if (!widget?.current) {\n widget.current = createWidget();\n }\n\n // @ts-ignore\n widget?.current && widget.current.open();\n }\n\n /**\n * handleOnLoad\n * @description Stores the Cloudinary window instance to a ref when the widget script loads\n */\n\n function handleOnLoad() {\n // @ts-ignore\n cloudinary.current = window.cloudinary;\n }\n\n return (\n <>\n {children({\n cloudinary: cloudinary.current,\n widget: widget.current,\n open,\n })}\n <Script\n id={`cloudinary-${Math.floor(Math.random() * 100)}`}\n // @ts-ignore\n src=\"https://widget.cloudinary.com/v2.0/global/all.js\"\n onLoad={handleOnLoad}\n onError={(e) => console.error(`Failed to load Cloudinary: ${e.message}`)}\n />\n </>\n );\n};\n\nexport default CldUploadWidget;\n","import CldUploadWidget from '../CldUploadWidget';\n\nconst CldUploadButton = ({\n children,\n onClick,\n onUpload,\n options,\n signatureEndpoint,\n uploadPreset,\n ...props\n}) => {\n return (\n <>\n {/* @ts-ignore */}\n <CldUploadWidget\n onUpload={onUpload}\n options={options}\n signatureEndpoint={signatureEndpoint}\n uploadPreset={uploadPreset}\n >\n {({ open }) => {\n function handleOnClick(e) {\n e.preventDefault();\n\n open();\n\n if ( typeof onClick === 'function' ) {\n onClick(e);\n }\n }\n return (\n <button {...props} onClick={handleOnClick} >\n {children || 'Upload'}\n </button>\n );\n }}\n </CldUploadWidget>\n </>\n );\n};\n\nexport default CldUploadButton;\n"],"names":["NEXT_CLOUDINARY_ANALYTICS_ID","NEXT_CLOUDINARY_VERSION","pkg","version","NEXT_VERSION","nextPkg","pollForProcessingImage","options","src","Promise","resolve","reject","fetch","then","res","ok","e","status","createPlaceholderUrl","placeholder","rawTransformations","push","includes","color","split","splice","join","constructCloudinaryUrl","width","quality","config","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","analytics","sdkCode","sdkSemver","techVersion","feature","cloudinaryLoader","loaderOptions","imageProps","cldOptions","cldConfig","parseInt","height","multiplier","widthResize","heightResize","Math","round","CldImage","props","handleOnError","target","result","setImgKey","defaultImgKey","Date","now","CLD_OPTIONS","transformationPlugins","forEach","prop","Error","alt","Object","keys","filter","key","map","useState","imgKey","undefined","publicId","startsWith","getPublicId","blurDataURL","preserveTransformations","transformations","getTransformations","flat","console","warn","message","_jsx","Image","IMAGE_WIDTH","IMAGE_HEIGHT","TWITTER_CARD","CldOgImage","excludeTags","twitterTitle","_excluded","crop","gravity","ogImageUrl","_jsxs","Head","CldUploadWidget","children","onUpload","signatureEndpoint","uploadPreset","cloudinary","useRef","widget","signed","generateSignature","callback","paramsToSign","method","body","JSON","stringify","r","json","signature","createWidget","uploadOptions","NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET","apiKey","NEXT_PUBLIC_CLOUDINARY_API_KEY","uploadSignature","current","createUploadWidget","error","event","open","handleOnLoad","window","_Fragment","Script","floor","random","CldUploadButton","onClick","handleOnClick","preventDefault"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-cloudinary",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
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",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@cloudinary-util/url-loader": "^1.2.4",
|
|
17
|
-
"@cloudinary-util/util": "^1.
|
|
17
|
+
"@cloudinary-util/util": "^1.2.0",
|
|
18
18
|
"@cloudinary/url-gen": "^1.8.6"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|