sanity-plugin-cloudinary 1.1.3 → 1.1.5
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/lib/index.esm.js +22 -27
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +22 -27
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/asset-source/CloudinaryAssetSource.tsx +2 -2
package/lib/index.esm.js
CHANGED
|
@@ -110,7 +110,7 @@ function encodeSourceId(asset) {
|
|
|
110
110
|
}));
|
|
111
111
|
}
|
|
112
112
|
function encodeFilename(asset) {
|
|
113
|
-
return
|
|
113
|
+
return `${asset.public_id.split("/").slice(-1)[0]}.${asset.format}`;
|
|
114
114
|
}
|
|
115
115
|
function decodeSourceId(sourceId) {
|
|
116
116
|
let sourceIdDecoded;
|
|
@@ -154,13 +154,12 @@ const AssetPreview = _ref2 => {
|
|
|
154
154
|
});
|
|
155
155
|
}
|
|
156
156
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const SetupButtonContainer = styled.div(_a$1 || (_a$1 = __template$1(["\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n"])));
|
|
157
|
+
const SetupButtonContainer = styled.div`
|
|
158
|
+
position: relative;
|
|
159
|
+
display: block;
|
|
160
|
+
font-size: 0.8em;
|
|
161
|
+
transform: translate(0%, -10%);
|
|
162
|
+
`;
|
|
164
163
|
const WidgetInput = props => {
|
|
165
164
|
const {
|
|
166
165
|
onChange,
|
|
@@ -267,13 +266,13 @@ const CloudinaryInput = props => {
|
|
|
267
266
|
onChange(PatchEvent.from([set(Object.assign({
|
|
268
267
|
_type: type.name,
|
|
269
268
|
_version: 1,
|
|
270
|
-
...(
|
|
269
|
+
...(value?._key ? {
|
|
271
270
|
_key: value._key
|
|
272
271
|
} : {
|
|
273
272
|
_key: nanoid()
|
|
274
273
|
})
|
|
275
274
|
}, updatedAsset))]));
|
|
276
|
-
}, [onChange, type, value
|
|
275
|
+
}, [onChange, type, value?._key]);
|
|
277
276
|
const action = secrets ? () => openMediaSelector(secrets.cloudName, secrets.apiKey, false,
|
|
278
277
|
// single selection
|
|
279
278
|
handleSelect, value) : () => setShowSettings(true);
|
|
@@ -392,7 +391,6 @@ const cloudinaryAssetSchema = defineType({
|
|
|
392
391
|
}
|
|
393
392
|
// metadata array of unknown content
|
|
394
393
|
],
|
|
395
|
-
|
|
396
394
|
...{
|
|
397
395
|
components: {
|
|
398
396
|
input: CloudinaryInput,
|
|
@@ -465,16 +463,13 @@ function CloudinaryIcon() {
|
|
|
465
463
|
})
|
|
466
464
|
});
|
|
467
465
|
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
value: __freeze(raw || cooked.slice())
|
|
472
|
-
}));
|
|
473
|
-
var _a;
|
|
474
|
-
const Widget = styled.div(_a || (_a = __template(["\n height: 70vh;\n"])));
|
|
466
|
+
const Widget = styled.div`
|
|
467
|
+
height: 70vh;
|
|
468
|
+
`;
|
|
475
469
|
function CloudinaryAssetSource(props) {
|
|
476
470
|
const {
|
|
477
|
-
onClose
|
|
471
|
+
onClose,
|
|
472
|
+
dialogHeaderTitle
|
|
478
473
|
} = props;
|
|
479
474
|
const [loadingMessage, setLoadingMessage] = useState("Loading Cloudinary Media Libary");
|
|
480
475
|
const library = useRef();
|
|
@@ -482,9 +477,9 @@ function CloudinaryAssetSource(props) {
|
|
|
482
477
|
const {
|
|
483
478
|
secrets
|
|
484
479
|
} = useSecrets(namespace);
|
|
485
|
-
const cloudName = secrets
|
|
486
|
-
const apiKey = secrets
|
|
487
|
-
const [widgetId] = useState(() =>
|
|
480
|
+
const cloudName = secrets?.cloudName;
|
|
481
|
+
const apiKey = secrets?.apiKey;
|
|
482
|
+
const [widgetId] = useState(() => `cloundinaryWidget-${Date.now()}`);
|
|
488
483
|
const [showSettings, setShowSettings] = useState(false);
|
|
489
484
|
const propsRef = useRef(props);
|
|
490
485
|
useEffect(() => {
|
|
@@ -503,7 +498,7 @@ function CloudinaryAssetSource(props) {
|
|
|
503
498
|
createMediaLibrary({
|
|
504
499
|
cloudName,
|
|
505
500
|
apiKey,
|
|
506
|
-
inlineContainer:
|
|
501
|
+
inlineContainer: `#${widgetId}`,
|
|
507
502
|
libraryCreated: lib => {
|
|
508
503
|
library.current = lib;
|
|
509
504
|
const selectedAssets = propsRef.current.selectedAssets;
|
|
@@ -553,7 +548,7 @@ function CloudinaryAssetSource(props) {
|
|
|
553
548
|
originalFilename: encodeFilename(asset),
|
|
554
549
|
source: {
|
|
555
550
|
id: encodeSourceId(asset),
|
|
556
|
-
name:
|
|
551
|
+
name: `cloudinary:${cloudName}`
|
|
557
552
|
}
|
|
558
553
|
}
|
|
559
554
|
};
|
|
@@ -564,7 +559,7 @@ function CloudinaryAssetSource(props) {
|
|
|
564
559
|
const hasConfig = apiKey && cloudName;
|
|
565
560
|
return /* @__PURE__ */jsx(Dialog, {
|
|
566
561
|
id: "cloudinary-asset-source",
|
|
567
|
-
header: "Select image from Cloudinary",
|
|
562
|
+
header: dialogHeaderTitle ?? "Select image from Cloudinary",
|
|
568
563
|
onClose: handleClose,
|
|
569
564
|
open: true,
|
|
570
565
|
width: 4,
|
|
@@ -641,7 +636,8 @@ const AssetListFunctions = props => {
|
|
|
641
636
|
const hide = useCallback(() => setShowSettings(false), [setShowSettings]);
|
|
642
637
|
const cloudinaryType = props.schemaType.of.find(t => t.name === cloudinaryAssetSchema.name);
|
|
643
638
|
if (!cloudinaryType) {
|
|
644
|
-
throw new Error(
|
|
639
|
+
throw new Error(`AssetListFunctions can only be used in array.of ${cloudinaryAssetSchema.name}, but it was array.of
|
|
640
|
+
${props.schemaType.of.map(t => t.name)}`);
|
|
645
641
|
}
|
|
646
642
|
const handleSelect = useCallback(selected => {
|
|
647
643
|
const items = selected.assets.map(asset => Object.assign({}, asset, {
|
|
@@ -650,7 +646,6 @@ const AssetListFunctions = props => {
|
|
|
650
646
|
}, onValueCreate(cloudinaryType)
|
|
651
647
|
// onValueCreate is mistyped
|
|
652
648
|
));
|
|
653
|
-
|
|
654
649
|
onChange(PatchEvent.from([setIfMissing([]), insert(items, "after", [-1])]));
|
|
655
650
|
}, [onValueCreate, onChange, cloudinaryType]);
|
|
656
651
|
const handleOpenSelector = useCallback(() => secrets && openMediaSelector(secrets.cloudName, secrets.apiKey, true,
|
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/components/VideoPlayer.tsx","../src/utils.ts","../src/components/AssetPreview.tsx","../src/components/WidgetInput.tsx","../src/components/SecretsConfigView.tsx","../src/components/CloudinaryInput.tsx","../src/components/AssetDiff.tsx","../src/schema/cloudinaryAsset.ts","../src/schema/cloudinaryAssetDerived.ts","../src/components/asset-source/Icon.tsx","../src/components/asset-source/CloudinaryAssetSource.tsx","../src/schema/cloudinaryAssetContext.ts","../src/schema/cloudinaryAssetContextCustom.ts","../src/components/AssetListFunctions.tsx","../src/index.ts"],"sourcesContent":["import React, {CSSProperties} from 'react'\n\ntype PlayerKind = 'player' | 'diff'\n\nexport type VideoPlayerProps = {\n src: string\n // eslint-disable-next-line react/no-unused-prop-types\n kind: PlayerKind\n}\n\nexport default function VideoPlayer(props: VideoPlayerProps) {\n const {src} = props\n\n const style: CSSProperties = {\n width: '100%',\n height: 'auto',\n }\n\n return (\n <video controls style={style}>\n <source src={src} type=\"video/mp4\" />\n </video>\n )\n}\n","/* eslint-disable camelcase,@typescript-eslint/explicit-module-boundary-types */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './types'\n\nconst widgetSrc = 'https://media-library.cloudinary.com/global/all.js'\n\nexport function assetUrl(asset: Partial<Pick<CloudinaryAsset, 'url' | 'secure_url' | 'derived'>>) {\n if (asset.derived && asset.derived.length > 0) {\n const [derived] = asset.derived\n if (derived.secure_url) {\n return derived.secure_url\n }\n return derived.url\n }\n if (asset.secure_url) {\n return asset.secure_url\n }\n return asset.url\n}\n\nexport const openMediaSelector = (\n cloudName: string,\n apiKey: string,\n multiple: boolean,\n insertHandler: (params: InsertHandlerParams) => void,\n selectedAsset?: CloudinaryAsset\n) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n multiple,\n }\n\n if (selectedAsset) {\n options.asset = {\n public_id: selectedAsset.public_id,\n type: selectedAsset.type,\n resource_type: selectedAsset.resource_type,\n }\n }\n\n window.cloudinary.openMediaLibrary(options, {insertHandler})\n })\n}\n\nexport const createMediaLibrary = ({\n cloudName,\n apiKey,\n inlineContainer,\n libraryCreated,\n insertHandler,\n}: {\n cloudName: string\n apiKey: string\n inlineContainer: string\n libraryCreated: (library: CloudinaryMediaLibrary) => void\n insertHandler: (params: InsertHandlerParams) => void\n}) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n inline_container: inlineContainer,\n remove_header: true,\n }\n\n libraryCreated(window.cloudinary.createMediaLibrary(options, {insertHandler}))\n })\n}\n\nexport function loadJS(url: string, callback: () => void) {\n const existingScript = document.getElementById('damWidget')\n if (!existingScript) {\n const script = document.createElement('script')\n script.src = url\n script.id = 'damWidget'\n document.body.appendChild(script)\n script.onload = () => {\n if (callback) {\n return callback()\n }\n return true\n }\n }\n if (existingScript && callback) {\n return callback()\n }\n return true\n}\n\nexport function encodeSourceId(asset: CloudinaryAssetResponse): string {\n const {resource_type, public_id, type} = asset\n return btoa(JSON.stringify({public_id, resource_type, type})) // Sort keys alphabetically!\n}\n\nexport function encodeFilename(asset: CloudinaryAssetResponse) {\n return `${asset.public_id.split('/').slice(-1)[0]}.${asset.format}`\n}\n\nexport function decodeSourceId(sourceId: string): CloudinaryAssetResponse | undefined {\n let sourceIdDecoded: any\n try {\n sourceIdDecoded = JSON.parse(atob(sourceId))\n } catch (err) {\n // Do nothing\n }\n return sourceIdDecoded\n}\n","import React from 'react'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {Flex} from '@sanity/ui'\nimport {CloudinaryAsset} from '../types'\n\ninterface ComponentProps {\n layout?: 'default' | 'block'\n value: CloudinaryAsset | undefined\n}\n\nconst AssetPreview = ({value, layout}: ComponentProps) => {\n const url = value && assetUrl(value)\n if (!value || !url) {\n return null\n }\n\n switch (value.resource_type) {\n case 'video':\n return (\n <Flex\n align=\"center\"\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n }}\n >\n <VideoPlayer src={url} kind=\"player\" />\n </Flex>\n )\n default:\n return (\n <Flex align=\"center\">\n <img\n alt=\"preview\"\n src={url}\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Flex>\n )\n }\n}\n\nexport default AssetPreview\n","import React, {useCallback} from 'react'\nimport {ObjectInputProps, PatchEvent, unset} from 'sanity'\nimport {Button, Flex, Grid, Stack} from '@sanity/ui'\nimport {PlugIcon} from '@sanity/icons'\nimport styled from 'styled-components'\nimport AssetPreview from './AssetPreview'\nimport {CloudinaryAsset} from '../types'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype WidgetInputProps = ObjectInputProps & {openMediaSelector: () => void; onSetup: () => void}\n\nconst WidgetInput = (props: WidgetInputProps) => {\n const {onChange, readOnly, value, openMediaSelector} = props\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n return (\n <Stack>\n <SetupButtonContainer>\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={props.onSetup}\n tabIndex={1}\n />\n </Flex>\n </SetupButtonContainer>\n\n <Flex style={{textAlign: 'center', width: '100%'}} marginBottom={2}>\n <AssetPreview value={value as CloudinaryAsset} />\n </Flex>\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n title=\"Select an asset\"\n tone=\"default\"\n onClick={openMediaSelector}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n )\n}\n\nexport default WidgetInput\n","import React from 'react'\nimport {SettingsView} from '@sanity/studio-secrets'\n\nexport type Secrets = {\n cloudName: string\n apiKey: string\n}\n\nconst pluginConfigKeys = [\n {\n key: 'cloudName',\n title: 'Cloud name',\n description: '',\n },\n {\n key: 'apiKey',\n title: 'API key',\n description: '',\n },\n]\n\nexport const namespace = 'cloudinary'\n\ntype Props = {\n onClose: () => void\n}\n\nconst SecretsConfigView = (props: Props) => {\n return (\n <SettingsView\n title=\"Cloudinary config\"\n namespace={namespace}\n keys={pluginConfigKeys}\n onClose={props.onClose}\n />\n )\n}\n\nexport default SecretsConfigView\n","import React, {useCallback, useState} from 'react'\nimport WidgetInput from './WidgetInput'\nimport {nanoid} from 'nanoid'\nimport {ObjectInputProps, PatchEvent, set} from 'sanity'\nimport {CloudinaryAsset} from '../types'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../types'\nimport {openMediaSelector} from '../utils'\nimport SecretsConfigView, {namespace, Secrets} from './SecretsConfigView'\n\nconst CloudinaryInput = (props: ObjectInputProps) => {\n const [showSettings, setShowSettings] = useState(false)\n const {secrets} = useSecrets<Secrets>(namespace)\n const {onChange, schemaType: type} = props\n const value = (props.value as CloudinaryAsset) || undefined\n\n const handleSelect = useCallback(\n (payload: InsertHandlerParams) => {\n const [asset] = payload.assets\n\n if (!asset) {\n return\n }\n\n let updatedAsset = asset\n\n //The metadata in Sanity Studio cannot contain special characters,\n //hence the cloudinary metadata (context) needs to be transformed to valid object keys\n if (asset.context) {\n const objectWithRenamedKeys = Object.fromEntries(\n Object.entries(asset.context.custom).map(([contextKey, contextValue]) => {\n return [contextKey.replace(/[^a-zA-Z0-9_]|-/g, '_'), contextValue]\n })\n )\n\n // Update the asset with the new custom values\n updatedAsset = {\n ...asset,\n context: {\n ...asset.context,\n custom: objectWithRenamedKeys,\n },\n }\n }\n\n onChange(\n PatchEvent.from([\n set(\n Object.assign(\n {\n _type: type.name,\n _version: 1,\n ...(value?._key ? {_key: value._key} : {_key: nanoid()}),\n },\n updatedAsset\n )\n ),\n ])\n )\n },\n [onChange, type, value?._key]\n )\n\n const action = secrets\n ? () =>\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n false, // single selection\n handleSelect,\n value\n )\n : () => setShowSettings(true)\n\n return (\n <>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <WidgetInput onSetup={() => setShowSettings(true)} openMediaSelector={action} {...props} />\n </>\n )\n}\n\nexport default CloudinaryInput\n","import React from 'react'\nimport {DiffFromTo} from 'sanity'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {CloudinaryAsset} from '../types'\n\ntype Props = {\n value: CloudinaryAsset | undefined\n}\n\nconst CloudinaryDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n const url = assetUrl(value)\n\n if (value.resource_type === 'video' && url) {\n return (\n <section\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n }}\n >\n <VideoPlayer src={url} kind=\"diff\" />\n </section>\n )\n }\n\n return <img alt=\"preview\" src={url} style={{maxWidth: '100%', height: 'auto'}} />\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={CloudinaryDiffPreview} />\n}\n\nexport default AssetDiff\n","/* eslint-disable */\nimport CloudinaryInput from '../components/CloudinaryInput'\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport {defineType} from 'sanity'\n\nexport const cloudinaryAssetSchema = defineType({\n type: 'object',\n name: 'cloudinary.asset',\n fields: [\n {\n type: 'string',\n name: 'public_id',\n },\n {\n type: 'string',\n name: 'resource_type',\n // \"image\", \"?\"\n },\n {\n type: 'string',\n name: 'type',\n // \"upload\", \"?\"\n },\n {\n type: 'string',\n name: 'format',\n // \"jpg\"\n },\n {\n type: 'number',\n name: 'version',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n {\n type: 'number',\n name: 'width',\n },\n {\n type: 'number',\n name: 'height',\n },\n {\n type: 'number',\n name: 'bytes',\n },\n {\n type: 'number',\n name: 'duration',\n // can be null\n },\n {\n type: 'array',\n name: 'tags',\n of: [{type: 'string'}],\n },\n {\n type: 'datetime',\n name: 'created_at',\n },\n {\n type: 'array',\n name: 'derived',\n of: [{type: 'cloudinary.assetDerived'}],\n },\n {\n type: 'string',\n name: 'access_mode',\n },\n {\n type: 'cloudinary.assetContext',\n name: 'context',\n },\n // metadata array of unknown content\n ],\n ...({\n components: {\n input: CloudinaryInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}), //TODO revert this change when rc.1 is released\n preview: {\n select: {\n url: 'url',\n resource_type: 'resource_type',\n derived: 'derived.0.url',\n },\n prepare({url, derived, resource_type}) {\n return {\n title: url,\n value: {\n title: url,\n resource_type,\n url: derived || url,\n },\n }\n },\n },\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetDerived = {\n raw_transformation: string\n url: string\n secure_url: string\n}\n\nexport const cloudinaryAssetDerivedSchema = defineType({\n type: 'object',\n name: 'cloudinary.assetDerived',\n fields: [\n {\n type: 'string',\n name: 'raw_transformation',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n ],\n})\n","import React from 'react'\n\nexport function CloudinaryIcon() {\n return (\n <svg\n version=\"1.1\"\n id=\"Layer_1\"\n x=\"0px\"\n y=\"0px\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 141.732 141.747\"\n enableBackground=\"new 0 0 141.732 141.747\"\n >\n <g>\n <path\n fill=\"#0071CE\"\n d=\"M115.585,109.242c-1.609,0-3.107-1.024-3.635-2.637c-0.657-2.008,0.438-4.169,2.447-4.826\n c7.278-2.382,11.98-8.761,11.98-16.252c0-9.487-7.718-17.206-17.205-17.206c-0.659,0-1.368,0.052-2.231,0.164l-3.741,0.485\n l-0.537-3.735c-2.299-16.016-16.251-28.094-32.454-28.094c-13.395,0-25.32,8.019-30.377,20.43l-0.952,2.335l-2.52,0.046\n c-11.581,0.213-21.003,9.804-21.003,21.379c0,8.45,4.906,16.156,12.498,19.631c1.921,0.88,2.766,3.15,1.886,5.071\n c-0.88,1.921-3.149,2.764-5.07,1.887C14.363,103.202,7.703,92.766,7.703,81.331c0-14.88,11.465-27.345,26.028-28.876\n c6.71-14.03,20.773-22.965,36.477-22.965c18.796,0,35.135,13.178,39.372,31.184c13.519,0.219,24.45,11.284,24.45,24.854\n c0,10.693-6.934,20.146-17.253,23.523C116.382,109.18,115.98,109.242,115.585,109.242z\"\n />\n <path\n fill=\"#DC8327\"\n d=\"M57.12,111.02c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001c0.001-0.001-0.001-0.001-0.001-0.001\n l-0.001-0.001c0,0-0.001,0-0.001,0l-0.001-0.001c0.001,0.001-0.001-0.001-0.001-0.001s-0.002-0.001-0.003-0.001l-0.001-0.001H57.1\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.003-0.001c-0.001,0.001-0.001-0.001-0.002-0.001\n l-0.001-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001s-0.003-0.001-0.004-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001h-0.001c-0.001-0.001-0.002-0.001-0.003-0.001c-0.001-0.001-0.003-0.001-0.003-0.001\n c-0.001,0-0.001,0-0.001,0l-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001h-0.001c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002\n h-0.002c-0.001,0-0.001,0-0.002,0c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c-0.001-0.001-0.001-0.001-0.001-0.001\n c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001h-0.001h-0.001c-0.001,0-0.002,0-0.002,0h-0.001H56.86h-0.001h-0.001\n c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001h-0.001c-0.001,0-0.001,0-0.001,0c-1.656,0-3.011-1.348-3.021-3V74.29h2.567\n c0.004,0,0.009,0,0.013,0c0.393,0.017,0.661-0.285,0.661-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.379-8.544\n c-0.222-0.153-0.515-0.153-0.737,0l-12.476,8.611c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.58\n l0.002,33.674c0.013,2.328,1.883,4.228,4.262,4.288c0.027,0.003,0.053,0.005,0.08,0.005h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.004-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001c0.001-0.001,0.001-0.001,0.001-0.001\n c0.002-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447\n v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002C57.498,111.345,57.343,111.121,57.12,111.02z\"\n />\n <path\n fill=\"#F4B21B\"\n d=\"M83.889,111.02c0,0-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001c0,0-0.001-0.001-0.001-0.001\n c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.002,0.001-0.002-0.001-0.002-0.001\n l-0.002-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001-0.001-0.002-0.001-0.002-0.001\n c-0.001,0.001-0.001-0.001-0.003-0.001l-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.002-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.001,0-0.002-0.001c0,0-0.001,0-0.002-0.001\n c-0.003-0.001-0.001-0.001-0.002-0.001c-0.003,0-0.001,0-0.002-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002c-0.001,0-0.001,0-0.001,0c-0.001,0-0.002,0-0.002,0s-0.001,0-0.001,0h-0.001h-0.001\n l-0.001-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0s-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001\n h-0.001c-0.001,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V81.829h2.579c0.009-0.001,0.016-0.001,0.026,0\n c0.358,0,0.648-0.29,0.648-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.222-0.153-0.515-0.153-0.737,0L57.86,80.647\n c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.568l0.002,26.135\n c0.011,2.329,1.884,4.23,4.264,4.289c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.006-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0.001-0.001,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001c0,0,0.001,0,0.001-0.001l0.001-0.001\n c0.001,0,0.001-0.001,0.001-0.001c0.003-0.001,0.002-0.001,0.002-0.002c0,0,0,0,0.001-0.001c0,0,0,0,0.001-0.001\n c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C84.267,111.345,84.112,111.121,83.889,111.02z\"\n />\n <path\n fill=\"#F2D864\"\n d=\"M110.667,111.02l-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001s-0.001,0-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001\n c-0.001,0.001-0.001-0.001-0.002-0.001c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001,0\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.002-0.001c-0.001,0.001-0.001-0.001-0.003-0.001\n l-0.001-0.001c0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001l-0.002-0.001c0,0-0.001,0-0.002-0.001l-0.002-0.001c-0.003-0.001-0.003-0.001-0.002-0.001\n c-0.003,0-0.003,0-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.001,0-0.002-0.001-0.002-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.003,0h-0.001h-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.002,0c0,0-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0h-0.002c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c0,0-0.001,0-0.001,0h-0.001h-0.001h-0.001H110.4\n c0,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V89.365h2.573c0.004,0,0.009,0,0.013,0c0.365-0.009,0.661-0.285,0.661-0.648\n c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.221-0.153-0.515-0.153-0.737,0l-12.476,8.61c-0.234,0.161-0.335,0.456-0.251,0.727\n c0.085,0.271,0.335,0.455,0.619,0.455h2.573l0.002,18.599c0.013,2.329,1.885,4.231,4.264,4.289\n c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0c0.17-0.003,0.324-0.071,0.438-0.18l0.001-0.001\n c0.002-0.002,0.005-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001\n l0.001-0.001l0.001-0.001l0.001-0.001c0.003-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001\n c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C111.045,111.345,110.889,111.121,110.667,111.02z\"\n />\n </g>\n </svg>\n )\n}\n","/* eslint-disable camelcase */\nimport React, {useCallback, useEffect, useRef, useState} from 'react'\nimport {Box, Button, Dialog, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {CloudinaryMediaLibrary, InsertHandlerParams} from '../../types'\nimport {createMediaLibrary, decodeSourceId, encodeFilename, encodeSourceId} from '../../utils'\nimport styled from 'styled-components'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace, Secrets} from '../SecretsConfigView'\nimport {AssetSourceComponentProps, ImageAsset} from 'sanity'\nimport {PlugIcon} from '@sanity/icons'\n\nexport const Widget = styled.div`\n height: 70vh;\n`\n\nexport function CloudinaryAssetSource(props: AssetSourceComponentProps) {\n const {onClose} = props\n\n const [loadingMessage, setLoadingMessage] = useState<string | undefined>(\n 'Loading Cloudinary Media Libary'\n )\n const library = useRef<CloudinaryMediaLibrary | undefined>()\n const contentRef = useRef<HTMLDivElement | null>(null)\n const {secrets} = useSecrets<Secrets>(namespace)\n const cloudName = secrets?.cloudName\n const apiKey = secrets?.apiKey\n const [widgetId] = useState(() => `cloundinaryWidget-${Date.now()}`)\n const [showSettings, setShowSettings] = useState(false)\n\n const propsRef = useRef(props)\n\n useEffect(() => {\n // because we have to access props after loading js in a callback,\n // we cannot pass props as dependecnies as that will cause infinite updates\n // this takes a snapshot of props, so we can access them later\n propsRef.current = props\n }, [props])\n\n const handleClose = useCallback(() => {\n if (library.current) {\n library.current.hide()\n }\n onClose()\n }, [onClose, library])\n\n useEffect(() => {\n if (!cloudName || !apiKey) {\n return\n }\n\n createMediaLibrary({\n cloudName,\n apiKey,\n inlineContainer: `#${widgetId}`,\n libraryCreated: (lib: CloudinaryMediaLibrary) => {\n library.current = lib\n const selectedAssets = propsRef.current.selectedAssets\n const firstSelectedAsset = selectedAssets ? selectedAssets[0] : null\n\n // eslint-disable-next-line no-undef\n const iframe: ChildNode | null | undefined =\n contentRef.current && contentRef.current.firstChild\n if (iframe && iframe instanceof HTMLIFrameElement) {\n setLoadingMessage(undefined)\n let asset\n if (\n propsRef.current.selectionType === 'single' &&\n firstSelectedAsset &&\n firstSelectedAsset.source &&\n firstSelectedAsset.source.id\n ) {\n asset = decodeSourceId(firstSelectedAsset.source.id)\n }\n const folder = asset\n ? {\n path: asset.public_id.split('/').slice(0, -1).join('/'),\n resource_type: 'image',\n }\n : {path: '', resource_type: 'image'}\n if (lib && contentRef.current) {\n lib.show({folder, asset})\n contentRef.current.style.visibility = 'visible'\n }\n }\n },\n insertHandler: ({assets}: InsertHandlerParams) => {\n if (!library.current) {\n return\n }\n const imageAssets = assets.filter((asset) => asset.resource_type === 'image')\n if (imageAssets.length === 0) {\n throw new Error('The selection did not contain any images.')\n }\n library.current.hide()\n propsRef.current.onSelect(\n imageAssets.map((asset) => {\n const url =\n asset.derived && asset.derived[0] ? asset.derived[0].secure_url : asset.secure_url\n return {\n kind: 'url',\n value: url,\n assetDocumentProps: {\n _type: 'sanity.imageAsset',\n originalFilename: encodeFilename(asset),\n source: {\n id: encodeSourceId(asset),\n name: `cloudinary:${cloudName}`,\n },\n } as ImageAsset,\n }\n })\n )\n },\n })\n }, [cloudName, apiKey, widgetId])\n\n const hasConfig = apiKey && cloudName\n return (\n <Dialog\n id=\"cloudinary-asset-source\"\n header=\"Select image from Cloudinary\"\n onClose={handleClose}\n open\n width={4}\n >\n <Box padding={4}>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={() => setShowSettings(true)}\n tabIndex={1}\n text={hasConfig ? undefined : 'Configure Cloudinary plugin'}\n />\n </Flex>\n\n {hasConfig && loadingMessage && (\n <Stack space={3}>\n <Flex align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n <Text size={1} muted align=\"center\">\n {loadingMessage}\n </Text>\n </Stack>\n )}\n\n <Widget style={{visibility: 'hidden'}} ref={contentRef} id={widgetId} />\n </Box>\n </Dialog>\n )\n}\n","import {defineType} from 'sanity'\n\nexport interface CloudinaryAssetContext {\n custom: object\n}\n\nexport const cloudinaryAssetContext = defineType({\n type: 'object',\n name: 'cloudinary.assetContext',\n fields: [\n {\n type: 'cloudinary.assetContextCustom',\n name: 'custom',\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetContextCustom = {\n alt: string\n caption: string\n}\n\nexport const cloudinaryAssetContextCustom = defineType({\n type: 'object',\n name: 'cloudinary.assetContextCustom',\n fields: [\n {\n type: 'string',\n name: 'alt',\n },\n {\n type: 'string',\n name: 'caption',\n },\n ],\n})\n","import React, {useCallback} from 'react'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {\n ArrayInputFunctionsProps,\n ArrayOfObjectsFunctions,\n ArraySchemaType,\n insert,\n ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n} from 'sanity'\n\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace} from './SecretsConfigView'\nimport {cloudinaryAssetSchema} from '../schema/cloudinaryAsset'\nimport {openMediaSelector} from '../utils'\nimport {InsertHandlerParams} from '../types'\nimport {PlugIcon} from '@sanity/icons'\n\ninterface ApiConfig {\n cloudName: string\n apiKey: string\n}\n\nexport const AssetListFunctions = (\n props: ArrayInputFunctionsProps<{_key: string}, ArraySchemaType>\n) => {\n const {onValueCreate, onChange} = props\n\n const {secrets, loading} = useSecrets<ApiConfig>(namespace)\n const [showSettings, setShowSettings] = React.useState(false)\n\n const show = useCallback(() => setShowSettings(true), [setShowSettings])\n const hide = useCallback(() => setShowSettings(false), [setShowSettings])\n\n const cloudinaryType = props.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n ) as ObjectSchemaType | undefined\n\n if (!cloudinaryType) {\n throw new Error(`AssetListFunctions can only be used in array.of ${\n cloudinaryAssetSchema.name\n }, but it was array.of\n ${props.schemaType.of.map((t) => t.name)}`)\n }\n\n const handleSelect = useCallback(\n (selected: InsertHandlerParams) => {\n const items = selected.assets.map((asset) =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onValueCreate(cloudinaryType as any) // onValueCreate is mistyped\n )\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n },\n [onValueCreate, onChange, cloudinaryType]\n )\n\n const handleOpenSelector = useCallback(\n () =>\n secrets &&\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n true, // multi-selection\n handleSelect\n ),\n [secrets, handleSelect]\n )\n return (\n <Flex gap={2} flex={1}>\n {showSettings && <SecretsConfigView onClose={hide} />}\n <Box flex={1}>\n <ArrayOfObjectsFunctions {...props} />\n </Box>\n {cloudinaryType && (\n <>\n <Box flex={1}>\n <Button\n style={{width: '100%'}}\n disabled={props.readOnly || loading}\n mode=\"bleed\"\n text=\"Add multiple\"\n onClick={handleOpenSelector}\n />\n </Box>\n <Box>\n <Button onClick={show} icon={PlugIcon} mode=\"bleed\" title={'Configure'} />\n </Box>\n </>\n )}\n </Flex>\n )\n}\n","import {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {\n definePlugin,\n AssetSource,\n ArrayOfObjectsInputProps,\n isArrayOfObjectsSchemaType,\n} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\nimport {cloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nimport {cloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\nimport {AssetListFunctions} from './components/AssetListFunctions'\n\nexport {type CloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nexport {type CloudinaryAssetDerived} from './schema/cloudinaryAssetDerived'\nexport {type CloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\n\nexport type {AssetDocument, CloudinaryAsset} from './types'\n\nexport {\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n if (isArrayOfObjectsSchemaType(schemaType)) {\n const arrayProps = props as ArrayOfObjectsInputProps\n const cloudinaryType = arrayProps.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n )\n if (cloudinaryType) {\n return arrayProps.renderDefault({...arrayProps, arrayFunctions: AssetListFunctions})\n }\n }\n return props.renderDefault(props)\n },\n },\n },\n schema: {\n types: [\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n ],\n },\n})\n\nexport const cloudinaryImageSource: AssetSource = {\n name: 'cloudinary-image',\n title: 'Cloudinary',\n icon: CloudinaryIcon,\n component: CloudinaryAssetSource,\n}\n\nexport const cloudinaryAssetSourcePlugin = definePlugin({\n name: 'cloudinart-asset-source',\n form: {\n image: {\n assetSources: [cloudinaryImageSource],\n },\n },\n})\n"],"names":["VideoPlayer","props","src","style","width","height","jsx","controls","children","type","widgetSrc","assetUrl","asset","derived","length","secure_url","url","openMediaSelector","cloudName","apiKey","multiple","insertHandler","selectedAsset","loadJS","options","cloud_name","api_key","insert_caption","public_id","resource_type","window","cloudinary","openMediaLibrary","createMediaLibrary","_ref","inlineContainer","libraryCreated","inline_container","remove_header","callback","existingScript","document","getElementById","script","createElement","id","body","appendChild","onload","encodeSourceId","btoa","JSON","stringify","encodeFilename","concat","split","slice","format","decodeSourceId","sourceId","sourceIdDecoded","parse","atob","err","AssetPreview","_ref2","value","layout","Flex","align","maxWidth","kind","alt","_a","SetupButtonContainer","styled","div","__template","WidgetInput","onChange","readOnly","removeValue","useCallback","PatchEvent","from","unset","Stack","flex","justify","Button","color","icon","PlugIcon","mode","title","onClick","onSetup","tabIndex","textAlign","marginBottom","jsxs","Grid","gap","gridTemplateColumns","disabled","tone","text","pluginConfigKeys","key","description","namespace","SecretsConfigView","SettingsView","keys","onClose","CloudinaryInput","showSettings","setShowSettings","useState","secrets","useSecrets","schemaType","handleSelect","payload","assets","updatedAsset","context","objectWithRenamedKeys","Object","fromEntries","entries","custom","map","_ref3","contextKey","contextValue","replace","set","assign","_type","name","_version","_key","nanoid","action","Fragment","CloudinaryDiffPreview","_ref4","display","flexWrap","justifyContent","AssetDiff","_ref5","diff","DiffFromTo","previewComponent","cloudinaryAssetSchema","defineType","fields","of","components","input","preview","select","prepare","_ref6","cloudinaryAssetDerivedSchema","CloudinaryIcon","version","x","y","viewBox","enableBackground","fill","d","Widget","CloudinaryAssetSource","loadingMessage","setLoadingMessage","library","useRef","contentRef","widgetId","Date","now","propsRef","useEffect","current","handleClose","hide","lib","selectedAssets","firstSelectedAsset","iframe","firstChild","HTMLIFrameElement","selectionType","source","folder","path","join","show","visibility","_ref7","imageAssets","filter","Error","onSelect","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","Box","padding","space","Spinner","muted","Text","size","ref","cloudinaryAssetContext","cloudinaryAssetContextCustom","AssetListFunctions","onValueCreate","loading","React","cloudinaryType","find","t","selected","items","setIfMissing","insert","handleOpenSelector","ArrayOfObjectsFunctions","cloudinarySchemaPlugin","definePlugin","form","isArrayOfObjectsSchemaType","arrayProps","renderDefault","arrayFunctions","schema","types","cloudinaryImageSource","component","cloudinaryAssetSourcePlugin","image","assetSources"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/components/VideoPlayer.tsx","../src/utils.ts","../src/components/AssetPreview.tsx","../src/components/WidgetInput.tsx","../src/components/SecretsConfigView.tsx","../src/components/CloudinaryInput.tsx","../src/components/AssetDiff.tsx","../src/schema/cloudinaryAsset.ts","../src/schema/cloudinaryAssetDerived.ts","../src/components/asset-source/Icon.tsx","../src/components/asset-source/CloudinaryAssetSource.tsx","../src/schema/cloudinaryAssetContext.ts","../src/schema/cloudinaryAssetContextCustom.ts","../src/components/AssetListFunctions.tsx","../src/index.ts"],"sourcesContent":["import React, {CSSProperties} from 'react'\n\ntype PlayerKind = 'player' | 'diff'\n\nexport type VideoPlayerProps = {\n src: string\n // eslint-disable-next-line react/no-unused-prop-types\n kind: PlayerKind\n}\n\nexport default function VideoPlayer(props: VideoPlayerProps) {\n const {src} = props\n\n const style: CSSProperties = {\n width: '100%',\n height: 'auto',\n }\n\n return (\n <video controls style={style}>\n <source src={src} type=\"video/mp4\" />\n </video>\n )\n}\n","/* eslint-disable camelcase,@typescript-eslint/explicit-module-boundary-types */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './types'\n\nconst widgetSrc = 'https://media-library.cloudinary.com/global/all.js'\n\nexport function assetUrl(asset: Partial<Pick<CloudinaryAsset, 'url' | 'secure_url' | 'derived'>>) {\n if (asset.derived && asset.derived.length > 0) {\n const [derived] = asset.derived\n if (derived.secure_url) {\n return derived.secure_url\n }\n return derived.url\n }\n if (asset.secure_url) {\n return asset.secure_url\n }\n return asset.url\n}\n\nexport const openMediaSelector = (\n cloudName: string,\n apiKey: string,\n multiple: boolean,\n insertHandler: (params: InsertHandlerParams) => void,\n selectedAsset?: CloudinaryAsset\n) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n multiple,\n }\n\n if (selectedAsset) {\n options.asset = {\n public_id: selectedAsset.public_id,\n type: selectedAsset.type,\n resource_type: selectedAsset.resource_type,\n }\n }\n\n window.cloudinary.openMediaLibrary(options, {insertHandler})\n })\n}\n\nexport const createMediaLibrary = ({\n cloudName,\n apiKey,\n inlineContainer,\n libraryCreated,\n insertHandler,\n}: {\n cloudName: string\n apiKey: string\n inlineContainer: string\n libraryCreated: (library: CloudinaryMediaLibrary) => void\n insertHandler: (params: InsertHandlerParams) => void\n}) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n inline_container: inlineContainer,\n remove_header: true,\n }\n\n libraryCreated(window.cloudinary.createMediaLibrary(options, {insertHandler}))\n })\n}\n\nexport function loadJS(url: string, callback: () => void) {\n const existingScript = document.getElementById('damWidget')\n if (!existingScript) {\n const script = document.createElement('script')\n script.src = url\n script.id = 'damWidget'\n document.body.appendChild(script)\n script.onload = () => {\n if (callback) {\n return callback()\n }\n return true\n }\n }\n if (existingScript && callback) {\n return callback()\n }\n return true\n}\n\nexport function encodeSourceId(asset: CloudinaryAssetResponse): string {\n const {resource_type, public_id, type} = asset\n return btoa(JSON.stringify({public_id, resource_type, type})) // Sort keys alphabetically!\n}\n\nexport function encodeFilename(asset: CloudinaryAssetResponse) {\n return `${asset.public_id.split('/').slice(-1)[0]}.${asset.format}`\n}\n\nexport function decodeSourceId(sourceId: string): CloudinaryAssetResponse | undefined {\n let sourceIdDecoded: any\n try {\n sourceIdDecoded = JSON.parse(atob(sourceId))\n } catch (err) {\n // Do nothing\n }\n return sourceIdDecoded\n}\n","import React from 'react'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {Flex} from '@sanity/ui'\nimport {CloudinaryAsset} from '../types'\n\ninterface ComponentProps {\n layout?: 'default' | 'block'\n value: CloudinaryAsset | undefined\n}\n\nconst AssetPreview = ({value, layout}: ComponentProps) => {\n const url = value && assetUrl(value)\n if (!value || !url) {\n return null\n }\n\n switch (value.resource_type) {\n case 'video':\n return (\n <Flex\n align=\"center\"\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n }}\n >\n <VideoPlayer src={url} kind=\"player\" />\n </Flex>\n )\n default:\n return (\n <Flex align=\"center\">\n <img\n alt=\"preview\"\n src={url}\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Flex>\n )\n }\n}\n\nexport default AssetPreview\n","import React, {useCallback} from 'react'\nimport {ObjectInputProps, PatchEvent, unset} from 'sanity'\nimport {Button, Flex, Grid, Stack} from '@sanity/ui'\nimport {PlugIcon} from '@sanity/icons'\nimport styled from 'styled-components'\nimport AssetPreview from './AssetPreview'\nimport {CloudinaryAsset} from '../types'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype WidgetInputProps = ObjectInputProps & {openMediaSelector: () => void; onSetup: () => void}\n\nconst WidgetInput = (props: WidgetInputProps) => {\n const {onChange, readOnly, value, openMediaSelector} = props\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n return (\n <Stack>\n <SetupButtonContainer>\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={props.onSetup}\n tabIndex={1}\n />\n </Flex>\n </SetupButtonContainer>\n\n <Flex style={{textAlign: 'center', width: '100%'}} marginBottom={2}>\n <AssetPreview value={value as CloudinaryAsset} />\n </Flex>\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n title=\"Select an asset\"\n tone=\"default\"\n onClick={openMediaSelector}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n )\n}\n\nexport default WidgetInput\n","import React from 'react'\nimport {SettingsView} from '@sanity/studio-secrets'\n\nexport type Secrets = {\n cloudName: string\n apiKey: string\n}\n\nconst pluginConfigKeys = [\n {\n key: 'cloudName',\n title: 'Cloud name',\n description: '',\n },\n {\n key: 'apiKey',\n title: 'API key',\n description: '',\n },\n]\n\nexport const namespace = 'cloudinary'\n\ntype Props = {\n onClose: () => void\n}\n\nconst SecretsConfigView = (props: Props) => {\n return (\n <SettingsView\n title=\"Cloudinary config\"\n namespace={namespace}\n keys={pluginConfigKeys}\n onClose={props.onClose}\n />\n )\n}\n\nexport default SecretsConfigView\n","import React, {useCallback, useState} from 'react'\nimport WidgetInput from './WidgetInput'\nimport {nanoid} from 'nanoid'\nimport {ObjectInputProps, PatchEvent, set} from 'sanity'\nimport {CloudinaryAsset} from '../types'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../types'\nimport {openMediaSelector} from '../utils'\nimport SecretsConfigView, {namespace, Secrets} from './SecretsConfigView'\n\nconst CloudinaryInput = (props: ObjectInputProps) => {\n const [showSettings, setShowSettings] = useState(false)\n const {secrets} = useSecrets<Secrets>(namespace)\n const {onChange, schemaType: type} = props\n const value = (props.value as CloudinaryAsset) || undefined\n\n const handleSelect = useCallback(\n (payload: InsertHandlerParams) => {\n const [asset] = payload.assets\n\n if (!asset) {\n return\n }\n\n let updatedAsset = asset\n\n //The metadata in Sanity Studio cannot contain special characters,\n //hence the cloudinary metadata (context) needs to be transformed to valid object keys\n if (asset.context) {\n const objectWithRenamedKeys = Object.fromEntries(\n Object.entries(asset.context.custom).map(([contextKey, contextValue]) => {\n return [contextKey.replace(/[^a-zA-Z0-9_]|-/g, '_'), contextValue]\n })\n )\n\n // Update the asset with the new custom values\n updatedAsset = {\n ...asset,\n context: {\n ...asset.context,\n custom: objectWithRenamedKeys,\n },\n }\n }\n\n onChange(\n PatchEvent.from([\n set(\n Object.assign(\n {\n _type: type.name,\n _version: 1,\n ...(value?._key ? {_key: value._key} : {_key: nanoid()}),\n },\n updatedAsset\n )\n ),\n ])\n )\n },\n [onChange, type, value?._key]\n )\n\n const action = secrets\n ? () =>\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n false, // single selection\n handleSelect,\n value\n )\n : () => setShowSettings(true)\n\n return (\n <>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <WidgetInput onSetup={() => setShowSettings(true)} openMediaSelector={action} {...props} />\n </>\n )\n}\n\nexport default CloudinaryInput\n","import React from 'react'\nimport {DiffFromTo} from 'sanity'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {CloudinaryAsset} from '../types'\n\ntype Props = {\n value: CloudinaryAsset | undefined\n}\n\nconst CloudinaryDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n const url = assetUrl(value)\n\n if (value.resource_type === 'video' && url) {\n return (\n <section\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n }}\n >\n <VideoPlayer src={url} kind=\"diff\" />\n </section>\n )\n }\n\n return <img alt=\"preview\" src={url} style={{maxWidth: '100%', height: 'auto'}} />\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={CloudinaryDiffPreview} />\n}\n\nexport default AssetDiff\n","/* eslint-disable */\nimport CloudinaryInput from '../components/CloudinaryInput'\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport {defineType} from 'sanity'\n\nexport const cloudinaryAssetSchema = defineType({\n type: 'object',\n name: 'cloudinary.asset',\n fields: [\n {\n type: 'string',\n name: 'public_id',\n },\n {\n type: 'string',\n name: 'resource_type',\n // \"image\", \"?\"\n },\n {\n type: 'string',\n name: 'type',\n // \"upload\", \"?\"\n },\n {\n type: 'string',\n name: 'format',\n // \"jpg\"\n },\n {\n type: 'number',\n name: 'version',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n {\n type: 'number',\n name: 'width',\n },\n {\n type: 'number',\n name: 'height',\n },\n {\n type: 'number',\n name: 'bytes',\n },\n {\n type: 'number',\n name: 'duration',\n // can be null\n },\n {\n type: 'array',\n name: 'tags',\n of: [{type: 'string'}],\n },\n {\n type: 'datetime',\n name: 'created_at',\n },\n {\n type: 'array',\n name: 'derived',\n of: [{type: 'cloudinary.assetDerived'}],\n },\n {\n type: 'string',\n name: 'access_mode',\n },\n {\n type: 'cloudinary.assetContext',\n name: 'context',\n },\n // metadata array of unknown content\n ],\n ...({\n components: {\n input: CloudinaryInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}), //TODO revert this change when rc.1 is released\n preview: {\n select: {\n url: 'url',\n resource_type: 'resource_type',\n derived: 'derived.0.url',\n },\n prepare({url, derived, resource_type}) {\n return {\n title: url,\n value: {\n title: url,\n resource_type,\n url: derived || url,\n },\n }\n },\n },\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetDerived = {\n raw_transformation: string\n url: string\n secure_url: string\n}\n\nexport const cloudinaryAssetDerivedSchema = defineType({\n type: 'object',\n name: 'cloudinary.assetDerived',\n fields: [\n {\n type: 'string',\n name: 'raw_transformation',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n ],\n})\n","import React from 'react'\n\nexport function CloudinaryIcon() {\n return (\n <svg\n version=\"1.1\"\n id=\"Layer_1\"\n x=\"0px\"\n y=\"0px\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 141.732 141.747\"\n enableBackground=\"new 0 0 141.732 141.747\"\n >\n <g>\n <path\n fill=\"#0071CE\"\n d=\"M115.585,109.242c-1.609,0-3.107-1.024-3.635-2.637c-0.657-2.008,0.438-4.169,2.447-4.826\n c7.278-2.382,11.98-8.761,11.98-16.252c0-9.487-7.718-17.206-17.205-17.206c-0.659,0-1.368,0.052-2.231,0.164l-3.741,0.485\n l-0.537-3.735c-2.299-16.016-16.251-28.094-32.454-28.094c-13.395,0-25.32,8.019-30.377,20.43l-0.952,2.335l-2.52,0.046\n c-11.581,0.213-21.003,9.804-21.003,21.379c0,8.45,4.906,16.156,12.498,19.631c1.921,0.88,2.766,3.15,1.886,5.071\n c-0.88,1.921-3.149,2.764-5.07,1.887C14.363,103.202,7.703,92.766,7.703,81.331c0-14.88,11.465-27.345,26.028-28.876\n c6.71-14.03,20.773-22.965,36.477-22.965c18.796,0,35.135,13.178,39.372,31.184c13.519,0.219,24.45,11.284,24.45,24.854\n c0,10.693-6.934,20.146-17.253,23.523C116.382,109.18,115.98,109.242,115.585,109.242z\"\n />\n <path\n fill=\"#DC8327\"\n d=\"M57.12,111.02c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001c0.001-0.001-0.001-0.001-0.001-0.001\n l-0.001-0.001c0,0-0.001,0-0.001,0l-0.001-0.001c0.001,0.001-0.001-0.001-0.001-0.001s-0.002-0.001-0.003-0.001l-0.001-0.001H57.1\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.003-0.001c-0.001,0.001-0.001-0.001-0.002-0.001\n l-0.001-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001s-0.003-0.001-0.004-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001h-0.001c-0.001-0.001-0.002-0.001-0.003-0.001c-0.001-0.001-0.003-0.001-0.003-0.001\n c-0.001,0-0.001,0-0.001,0l-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001h-0.001c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002\n h-0.002c-0.001,0-0.001,0-0.002,0c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c-0.001-0.001-0.001-0.001-0.001-0.001\n c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001h-0.001h-0.001c-0.001,0-0.002,0-0.002,0h-0.001H56.86h-0.001h-0.001\n c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001h-0.001c-0.001,0-0.001,0-0.001,0c-1.656,0-3.011-1.348-3.021-3V74.29h2.567\n c0.004,0,0.009,0,0.013,0c0.393,0.017,0.661-0.285,0.661-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.379-8.544\n c-0.222-0.153-0.515-0.153-0.737,0l-12.476,8.611c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.58\n l0.002,33.674c0.013,2.328,1.883,4.228,4.262,4.288c0.027,0.003,0.053,0.005,0.08,0.005h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.004-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001c0.001-0.001,0.001-0.001,0.001-0.001\n c0.002-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447\n v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002C57.498,111.345,57.343,111.121,57.12,111.02z\"\n />\n <path\n fill=\"#F4B21B\"\n d=\"M83.889,111.02c0,0-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001c0,0-0.001-0.001-0.001-0.001\n c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.002,0.001-0.002-0.001-0.002-0.001\n l-0.002-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001-0.001-0.002-0.001-0.002-0.001\n c-0.001,0.001-0.001-0.001-0.003-0.001l-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.002-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.001,0-0.002-0.001c0,0-0.001,0-0.002-0.001\n c-0.003-0.001-0.001-0.001-0.002-0.001c-0.003,0-0.001,0-0.002-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002c-0.001,0-0.001,0-0.001,0c-0.001,0-0.002,0-0.002,0s-0.001,0-0.001,0h-0.001h-0.001\n l-0.001-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0s-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001\n h-0.001c-0.001,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V81.829h2.579c0.009-0.001,0.016-0.001,0.026,0\n c0.358,0,0.648-0.29,0.648-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.222-0.153-0.515-0.153-0.737,0L57.86,80.647\n c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.568l0.002,26.135\n c0.011,2.329,1.884,4.23,4.264,4.289c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.006-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0.001-0.001,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001c0,0,0.001,0,0.001-0.001l0.001-0.001\n c0.001,0,0.001-0.001,0.001-0.001c0.003-0.001,0.002-0.001,0.002-0.002c0,0,0,0,0.001-0.001c0,0,0,0,0.001-0.001\n c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C84.267,111.345,84.112,111.121,83.889,111.02z\"\n />\n <path\n fill=\"#F2D864\"\n d=\"M110.667,111.02l-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001s-0.001,0-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001\n c-0.001,0.001-0.001-0.001-0.002-0.001c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001,0\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.002-0.001c-0.001,0.001-0.001-0.001-0.003-0.001\n l-0.001-0.001c0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001l-0.002-0.001c0,0-0.001,0-0.002-0.001l-0.002-0.001c-0.003-0.001-0.003-0.001-0.002-0.001\n c-0.003,0-0.003,0-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.001,0-0.002-0.001-0.002-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.003,0h-0.001h-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.002,0c0,0-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0h-0.002c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c0,0-0.001,0-0.001,0h-0.001h-0.001h-0.001H110.4\n c0,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V89.365h2.573c0.004,0,0.009,0,0.013,0c0.365-0.009,0.661-0.285,0.661-0.648\n c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.221-0.153-0.515-0.153-0.737,0l-12.476,8.61c-0.234,0.161-0.335,0.456-0.251,0.727\n c0.085,0.271,0.335,0.455,0.619,0.455h2.573l0.002,18.599c0.013,2.329,1.885,4.231,4.264,4.289\n c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0c0.17-0.003,0.324-0.071,0.438-0.18l0.001-0.001\n c0.002-0.002,0.005-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001\n l0.001-0.001l0.001-0.001l0.001-0.001c0.003-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001\n c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C111.045,111.345,110.889,111.121,110.667,111.02z\"\n />\n </g>\n </svg>\n )\n}\n","/* eslint-disable camelcase */\nimport React, {useCallback, useEffect, useRef, useState} from 'react'\nimport {Box, Button, Dialog, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {CloudinaryMediaLibrary, InsertHandlerParams} from '../../types'\nimport {createMediaLibrary, decodeSourceId, encodeFilename, encodeSourceId} from '../../utils'\nimport styled from 'styled-components'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace, Secrets} from '../SecretsConfigView'\nimport {AssetSourceComponentProps, ImageAsset} from 'sanity'\nimport {PlugIcon} from '@sanity/icons'\n\nexport const Widget = styled.div`\n height: 70vh;\n`\n\nexport function CloudinaryAssetSource(props: AssetSourceComponentProps) {\n const {onClose, dialogHeaderTitle} = props\n\n const [loadingMessage, setLoadingMessage] = useState<string | undefined>(\n 'Loading Cloudinary Media Libary'\n )\n const library = useRef<CloudinaryMediaLibrary | undefined>()\n const contentRef = useRef<HTMLDivElement | null>(null)\n const {secrets} = useSecrets<Secrets>(namespace)\n const cloudName = secrets?.cloudName\n const apiKey = secrets?.apiKey\n const [widgetId] = useState(() => `cloundinaryWidget-${Date.now()}`)\n const [showSettings, setShowSettings] = useState(false)\n\n const propsRef = useRef(props)\n\n useEffect(() => {\n // because we have to access props after loading js in a callback,\n // we cannot pass props as dependecnies as that will cause infinite updates\n // this takes a snapshot of props, so we can access them later\n propsRef.current = props\n }, [props])\n\n const handleClose = useCallback(() => {\n if (library.current) {\n library.current.hide()\n }\n onClose()\n }, [onClose, library])\n\n useEffect(() => {\n if (!cloudName || !apiKey) {\n return\n }\n\n createMediaLibrary({\n cloudName,\n apiKey,\n inlineContainer: `#${widgetId}`,\n libraryCreated: (lib: CloudinaryMediaLibrary) => {\n library.current = lib\n const selectedAssets = propsRef.current.selectedAssets\n const firstSelectedAsset = selectedAssets ? selectedAssets[0] : null\n\n // eslint-disable-next-line no-undef\n const iframe: ChildNode | null | undefined =\n contentRef.current && contentRef.current.firstChild\n if (iframe && iframe instanceof HTMLIFrameElement) {\n setLoadingMessage(undefined)\n let asset\n if (\n propsRef.current.selectionType === 'single' &&\n firstSelectedAsset &&\n firstSelectedAsset.source &&\n firstSelectedAsset.source.id\n ) {\n asset = decodeSourceId(firstSelectedAsset.source.id)\n }\n const folder = asset\n ? {\n path: asset.public_id.split('/').slice(0, -1).join('/'),\n resource_type: 'image',\n }\n : {path: '', resource_type: 'image'}\n if (lib && contentRef.current) {\n lib.show({folder, asset})\n contentRef.current.style.visibility = 'visible'\n }\n }\n },\n insertHandler: ({assets}: InsertHandlerParams) => {\n if (!library.current) {\n return\n }\n const imageAssets = assets.filter((asset) => asset.resource_type === 'image')\n if (imageAssets.length === 0) {\n throw new Error('The selection did not contain any images.')\n }\n library.current.hide()\n propsRef.current.onSelect(\n imageAssets.map((asset) => {\n const url =\n asset.derived && asset.derived[0] ? asset.derived[0].secure_url : asset.secure_url\n return {\n kind: 'url',\n value: url,\n assetDocumentProps: {\n _type: 'sanity.imageAsset',\n originalFilename: encodeFilename(asset),\n source: {\n id: encodeSourceId(asset),\n name: `cloudinary:${cloudName}`,\n },\n } as ImageAsset,\n }\n })\n )\n },\n })\n }, [cloudName, apiKey, widgetId])\n\n const hasConfig = apiKey && cloudName\n return (\n <Dialog\n id=\"cloudinary-asset-source\"\n header={dialogHeaderTitle ?? 'Select image from Cloudinary'}\n onClose={handleClose}\n open\n width={4}\n >\n <Box padding={4}>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={() => setShowSettings(true)}\n tabIndex={1}\n text={hasConfig ? undefined : 'Configure Cloudinary plugin'}\n />\n </Flex>\n\n {hasConfig && loadingMessage && (\n <Stack space={3}>\n <Flex align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n <Text size={1} muted align=\"center\">\n {loadingMessage}\n </Text>\n </Stack>\n )}\n\n <Widget style={{visibility: 'hidden'}} ref={contentRef} id={widgetId} />\n </Box>\n </Dialog>\n )\n}\n","import {defineType} from 'sanity'\n\nexport interface CloudinaryAssetContext {\n custom: object\n}\n\nexport const cloudinaryAssetContext = defineType({\n type: 'object',\n name: 'cloudinary.assetContext',\n fields: [\n {\n type: 'cloudinary.assetContextCustom',\n name: 'custom',\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetContextCustom = {\n alt: string\n caption: string\n}\n\nexport const cloudinaryAssetContextCustom = defineType({\n type: 'object',\n name: 'cloudinary.assetContextCustom',\n fields: [\n {\n type: 'string',\n name: 'alt',\n },\n {\n type: 'string',\n name: 'caption',\n },\n ],\n})\n","import React, {useCallback} from 'react'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {\n ArrayInputFunctionsProps,\n ArrayOfObjectsFunctions,\n ArraySchemaType,\n insert,\n ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n} from 'sanity'\n\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace} from './SecretsConfigView'\nimport {cloudinaryAssetSchema} from '../schema/cloudinaryAsset'\nimport {openMediaSelector} from '../utils'\nimport {InsertHandlerParams} from '../types'\nimport {PlugIcon} from '@sanity/icons'\n\ninterface ApiConfig {\n cloudName: string\n apiKey: string\n}\n\nexport const AssetListFunctions = (\n props: ArrayInputFunctionsProps<{_key: string}, ArraySchemaType>\n) => {\n const {onValueCreate, onChange} = props\n\n const {secrets, loading} = useSecrets<ApiConfig>(namespace)\n const [showSettings, setShowSettings] = React.useState(false)\n\n const show = useCallback(() => setShowSettings(true), [setShowSettings])\n const hide = useCallback(() => setShowSettings(false), [setShowSettings])\n\n const cloudinaryType = props.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n ) as ObjectSchemaType | undefined\n\n if (!cloudinaryType) {\n throw new Error(`AssetListFunctions can only be used in array.of ${\n cloudinaryAssetSchema.name\n }, but it was array.of\n ${props.schemaType.of.map((t) => t.name)}`)\n }\n\n const handleSelect = useCallback(\n (selected: InsertHandlerParams) => {\n const items = selected.assets.map((asset) =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onValueCreate(cloudinaryType as any) // onValueCreate is mistyped\n )\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n },\n [onValueCreate, onChange, cloudinaryType]\n )\n\n const handleOpenSelector = useCallback(\n () =>\n secrets &&\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n true, // multi-selection\n handleSelect\n ),\n [secrets, handleSelect]\n )\n return (\n <Flex gap={2} flex={1}>\n {showSettings && <SecretsConfigView onClose={hide} />}\n <Box flex={1}>\n <ArrayOfObjectsFunctions {...props} />\n </Box>\n {cloudinaryType && (\n <>\n <Box flex={1}>\n <Button\n style={{width: '100%'}}\n disabled={props.readOnly || loading}\n mode=\"bleed\"\n text=\"Add multiple\"\n onClick={handleOpenSelector}\n />\n </Box>\n <Box>\n <Button onClick={show} icon={PlugIcon} mode=\"bleed\" title={'Configure'} />\n </Box>\n </>\n )}\n </Flex>\n )\n}\n","import {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {\n definePlugin,\n AssetSource,\n ArrayOfObjectsInputProps,\n isArrayOfObjectsSchemaType,\n} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\nimport {cloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nimport {cloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\nimport {AssetListFunctions} from './components/AssetListFunctions'\n\nexport {type CloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nexport {type CloudinaryAssetDerived} from './schema/cloudinaryAssetDerived'\nexport {type CloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\n\nexport type {AssetDocument, CloudinaryAsset} from './types'\n\nexport {\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n if (isArrayOfObjectsSchemaType(schemaType)) {\n const arrayProps = props as ArrayOfObjectsInputProps\n const cloudinaryType = arrayProps.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n )\n if (cloudinaryType) {\n return arrayProps.renderDefault({...arrayProps, arrayFunctions: AssetListFunctions})\n }\n }\n return props.renderDefault(props)\n },\n },\n },\n schema: {\n types: [\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n ],\n },\n})\n\nexport const cloudinaryImageSource: AssetSource = {\n name: 'cloudinary-image',\n title: 'Cloudinary',\n icon: CloudinaryIcon,\n component: CloudinaryAssetSource,\n}\n\nexport const cloudinaryAssetSourcePlugin = definePlugin({\n name: 'cloudinart-asset-source',\n form: {\n image: {\n assetSources: [cloudinaryImageSource],\n },\n },\n})\n"],"names":["VideoPlayer","props","src","style","width","height","jsx","controls","children","type","widgetSrc","assetUrl","asset","derived","length","secure_url","url","openMediaSelector","cloudName","apiKey","multiple","insertHandler","selectedAsset","loadJS","options","cloud_name","api_key","insert_caption","public_id","resource_type","window","cloudinary","openMediaLibrary","createMediaLibrary","_ref","inlineContainer","libraryCreated","inline_container","remove_header","callback","existingScript","document","getElementById","script","createElement","id","body","appendChild","onload","encodeSourceId","btoa","JSON","stringify","encodeFilename","split","slice","format","decodeSourceId","sourceId","sourceIdDecoded","parse","atob","err","AssetPreview","_ref2","value","layout","Flex","align","maxWidth","kind","alt","SetupButtonContainer","styled","div","WidgetInput","onChange","readOnly","removeValue","useCallback","PatchEvent","from","unset","Stack","flex","justify","Button","color","icon","PlugIcon","mode","title","onClick","onSetup","tabIndex","textAlign","marginBottom","jsxs","Grid","gap","gridTemplateColumns","disabled","tone","text","pluginConfigKeys","key","description","namespace","SecretsConfigView","SettingsView","keys","onClose","CloudinaryInput","showSettings","setShowSettings","useState","secrets","useSecrets","schemaType","handleSelect","payload","assets","updatedAsset","context","objectWithRenamedKeys","Object","fromEntries","entries","custom","map","_ref3","contextKey","contextValue","replace","set","assign","_type","name","_version","_key","nanoid","action","Fragment","CloudinaryDiffPreview","_ref4","display","flexWrap","justifyContent","AssetDiff","_ref5","diff","DiffFromTo","previewComponent","cloudinaryAssetSchema","defineType","fields","of","components","input","preview","select","prepare","_ref6","cloudinaryAssetDerivedSchema","CloudinaryIcon","version","x","y","viewBox","enableBackground","fill","d","Widget","CloudinaryAssetSource","dialogHeaderTitle","loadingMessage","setLoadingMessage","library","useRef","contentRef","widgetId","Date","now","propsRef","useEffect","current","handleClose","hide","lib","selectedAssets","firstSelectedAsset","iframe","firstChild","HTMLIFrameElement","selectionType","source","folder","path","join","show","visibility","_ref7","imageAssets","filter","Error","onSelect","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","Box","padding","space","Spinner","muted","Text","size","ref","cloudinaryAssetContext","cloudinaryAssetContextCustom","AssetListFunctions","onValueCreate","loading","React","cloudinaryType","find","t","selected","items","setIfMissing","insert","handleOpenSelector","ArrayOfObjectsFunctions","cloudinarySchemaPlugin","definePlugin","form","isArrayOfObjectsSchemaType","arrayProps","renderDefault","arrayFunctions","schema","types","cloudinaryImageSource","component","cloudinaryAssetSourcePlugin","image","assetSources"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -122,7 +122,7 @@ function encodeSourceId(asset) {
|
|
|
122
122
|
}));
|
|
123
123
|
}
|
|
124
124
|
function encodeFilename(asset) {
|
|
125
|
-
return
|
|
125
|
+
return `${asset.public_id.split("/").slice(-1)[0]}.${asset.format}`;
|
|
126
126
|
}
|
|
127
127
|
function decodeSourceId(sourceId) {
|
|
128
128
|
let sourceIdDecoded;
|
|
@@ -166,13 +166,12 @@ const AssetPreview = _ref2 => {
|
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
};
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const SetupButtonContainer = styled__default.default.div(_a$1 || (_a$1 = __template$1(["\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n"])));
|
|
169
|
+
const SetupButtonContainer = styled__default.default.div`
|
|
170
|
+
position: relative;
|
|
171
|
+
display: block;
|
|
172
|
+
font-size: 0.8em;
|
|
173
|
+
transform: translate(0%, -10%);
|
|
174
|
+
`;
|
|
176
175
|
const WidgetInput = props => {
|
|
177
176
|
const {
|
|
178
177
|
onChange,
|
|
@@ -279,13 +278,13 @@ const CloudinaryInput = props => {
|
|
|
279
278
|
onChange(sanity.PatchEvent.from([sanity.set(Object.assign({
|
|
280
279
|
_type: type.name,
|
|
281
280
|
_version: 1,
|
|
282
|
-
...(
|
|
281
|
+
...(value?._key ? {
|
|
283
282
|
_key: value._key
|
|
284
283
|
} : {
|
|
285
284
|
_key: nanoid.nanoid()
|
|
286
285
|
})
|
|
287
286
|
}, updatedAsset))]));
|
|
288
|
-
}, [onChange, type, value
|
|
287
|
+
}, [onChange, type, value?._key]);
|
|
289
288
|
const action = secrets ? () => openMediaSelector(secrets.cloudName, secrets.apiKey, false,
|
|
290
289
|
// single selection
|
|
291
290
|
handleSelect, value) : () => setShowSettings(true);
|
|
@@ -404,7 +403,6 @@ const cloudinaryAssetSchema = sanity.defineType({
|
|
|
404
403
|
}
|
|
405
404
|
// metadata array of unknown content
|
|
406
405
|
],
|
|
407
|
-
|
|
408
406
|
...{
|
|
409
407
|
components: {
|
|
410
408
|
input: CloudinaryInput,
|
|
@@ -477,16 +475,13 @@ function CloudinaryIcon() {
|
|
|
477
475
|
})
|
|
478
476
|
});
|
|
479
477
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
value: __freeze(raw || cooked.slice())
|
|
484
|
-
}));
|
|
485
|
-
var _a;
|
|
486
|
-
const Widget = styled__default.default.div(_a || (_a = __template(["\n height: 70vh;\n"])));
|
|
478
|
+
const Widget = styled__default.default.div`
|
|
479
|
+
height: 70vh;
|
|
480
|
+
`;
|
|
487
481
|
function CloudinaryAssetSource(props) {
|
|
488
482
|
const {
|
|
489
|
-
onClose
|
|
483
|
+
onClose,
|
|
484
|
+
dialogHeaderTitle
|
|
490
485
|
} = props;
|
|
491
486
|
const [loadingMessage, setLoadingMessage] = React.useState("Loading Cloudinary Media Libary");
|
|
492
487
|
const library = React.useRef();
|
|
@@ -494,9 +489,9 @@ function CloudinaryAssetSource(props) {
|
|
|
494
489
|
const {
|
|
495
490
|
secrets
|
|
496
491
|
} = studioSecrets.useSecrets(namespace);
|
|
497
|
-
const cloudName = secrets
|
|
498
|
-
const apiKey = secrets
|
|
499
|
-
const [widgetId] = React.useState(() =>
|
|
492
|
+
const cloudName = secrets?.cloudName;
|
|
493
|
+
const apiKey = secrets?.apiKey;
|
|
494
|
+
const [widgetId] = React.useState(() => `cloundinaryWidget-${Date.now()}`);
|
|
500
495
|
const [showSettings, setShowSettings] = React.useState(false);
|
|
501
496
|
const propsRef = React.useRef(props);
|
|
502
497
|
React.useEffect(() => {
|
|
@@ -515,7 +510,7 @@ function CloudinaryAssetSource(props) {
|
|
|
515
510
|
createMediaLibrary({
|
|
516
511
|
cloudName,
|
|
517
512
|
apiKey,
|
|
518
|
-
inlineContainer:
|
|
513
|
+
inlineContainer: `#${widgetId}`,
|
|
519
514
|
libraryCreated: lib => {
|
|
520
515
|
library.current = lib;
|
|
521
516
|
const selectedAssets = propsRef.current.selectedAssets;
|
|
@@ -565,7 +560,7 @@ function CloudinaryAssetSource(props) {
|
|
|
565
560
|
originalFilename: encodeFilename(asset),
|
|
566
561
|
source: {
|
|
567
562
|
id: encodeSourceId(asset),
|
|
568
|
-
name:
|
|
563
|
+
name: `cloudinary:${cloudName}`
|
|
569
564
|
}
|
|
570
565
|
}
|
|
571
566
|
};
|
|
@@ -576,7 +571,7 @@ function CloudinaryAssetSource(props) {
|
|
|
576
571
|
const hasConfig = apiKey && cloudName;
|
|
577
572
|
return /* @__PURE__ */jsxRuntime.jsx(ui.Dialog, {
|
|
578
573
|
id: "cloudinary-asset-source",
|
|
579
|
-
header: "Select image from Cloudinary",
|
|
574
|
+
header: dialogHeaderTitle ?? "Select image from Cloudinary",
|
|
580
575
|
onClose: handleClose,
|
|
581
576
|
open: true,
|
|
582
577
|
width: 4,
|
|
@@ -653,7 +648,8 @@ const AssetListFunctions = props => {
|
|
|
653
648
|
const hide = React.useCallback(() => setShowSettings(false), [setShowSettings]);
|
|
654
649
|
const cloudinaryType = props.schemaType.of.find(t => t.name === cloudinaryAssetSchema.name);
|
|
655
650
|
if (!cloudinaryType) {
|
|
656
|
-
throw new Error(
|
|
651
|
+
throw new Error(`AssetListFunctions can only be used in array.of ${cloudinaryAssetSchema.name}, but it was array.of
|
|
652
|
+
${props.schemaType.of.map(t => t.name)}`);
|
|
657
653
|
}
|
|
658
654
|
const handleSelect = React.useCallback(selected => {
|
|
659
655
|
const items = selected.assets.map(asset => Object.assign({}, asset, {
|
|
@@ -662,7 +658,6 @@ const AssetListFunctions = props => {
|
|
|
662
658
|
}, onValueCreate(cloudinaryType)
|
|
663
659
|
// onValueCreate is mistyped
|
|
664
660
|
));
|
|
665
|
-
|
|
666
661
|
onChange(sanity.PatchEvent.from([sanity.setIfMissing([]), sanity.insert(items, "after", [-1])]));
|
|
667
662
|
}, [onValueCreate, onChange, cloudinaryType]);
|
|
668
663
|
const handleOpenSelector = React.useCallback(() => secrets && openMediaSelector(secrets.cloudName, secrets.apiKey, true,
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/VideoPlayer.tsx","../src/utils.ts","../src/components/AssetPreview.tsx","../src/components/WidgetInput.tsx","../src/components/SecretsConfigView.tsx","../src/components/CloudinaryInput.tsx","../src/components/AssetDiff.tsx","../src/schema/cloudinaryAsset.ts","../src/schema/cloudinaryAssetDerived.ts","../src/components/asset-source/Icon.tsx","../src/components/asset-source/CloudinaryAssetSource.tsx","../src/schema/cloudinaryAssetContext.ts","../src/schema/cloudinaryAssetContextCustom.ts","../src/components/AssetListFunctions.tsx","../src/index.ts"],"sourcesContent":["import React, {CSSProperties} from 'react'\n\ntype PlayerKind = 'player' | 'diff'\n\nexport type VideoPlayerProps = {\n src: string\n // eslint-disable-next-line react/no-unused-prop-types\n kind: PlayerKind\n}\n\nexport default function VideoPlayer(props: VideoPlayerProps) {\n const {src} = props\n\n const style: CSSProperties = {\n width: '100%',\n height: 'auto',\n }\n\n return (\n <video controls style={style}>\n <source src={src} type=\"video/mp4\" />\n </video>\n )\n}\n","/* eslint-disable camelcase,@typescript-eslint/explicit-module-boundary-types */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './types'\n\nconst widgetSrc = 'https://media-library.cloudinary.com/global/all.js'\n\nexport function assetUrl(asset: Partial<Pick<CloudinaryAsset, 'url' | 'secure_url' | 'derived'>>) {\n if (asset.derived && asset.derived.length > 0) {\n const [derived] = asset.derived\n if (derived.secure_url) {\n return derived.secure_url\n }\n return derived.url\n }\n if (asset.secure_url) {\n return asset.secure_url\n }\n return asset.url\n}\n\nexport const openMediaSelector = (\n cloudName: string,\n apiKey: string,\n multiple: boolean,\n insertHandler: (params: InsertHandlerParams) => void,\n selectedAsset?: CloudinaryAsset\n) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n multiple,\n }\n\n if (selectedAsset) {\n options.asset = {\n public_id: selectedAsset.public_id,\n type: selectedAsset.type,\n resource_type: selectedAsset.resource_type,\n }\n }\n\n window.cloudinary.openMediaLibrary(options, {insertHandler})\n })\n}\n\nexport const createMediaLibrary = ({\n cloudName,\n apiKey,\n inlineContainer,\n libraryCreated,\n insertHandler,\n}: {\n cloudName: string\n apiKey: string\n inlineContainer: string\n libraryCreated: (library: CloudinaryMediaLibrary) => void\n insertHandler: (params: InsertHandlerParams) => void\n}) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n inline_container: inlineContainer,\n remove_header: true,\n }\n\n libraryCreated(window.cloudinary.createMediaLibrary(options, {insertHandler}))\n })\n}\n\nexport function loadJS(url: string, callback: () => void) {\n const existingScript = document.getElementById('damWidget')\n if (!existingScript) {\n const script = document.createElement('script')\n script.src = url\n script.id = 'damWidget'\n document.body.appendChild(script)\n script.onload = () => {\n if (callback) {\n return callback()\n }\n return true\n }\n }\n if (existingScript && callback) {\n return callback()\n }\n return true\n}\n\nexport function encodeSourceId(asset: CloudinaryAssetResponse): string {\n const {resource_type, public_id, type} = asset\n return btoa(JSON.stringify({public_id, resource_type, type})) // Sort keys alphabetically!\n}\n\nexport function encodeFilename(asset: CloudinaryAssetResponse) {\n return `${asset.public_id.split('/').slice(-1)[0]}.${asset.format}`\n}\n\nexport function decodeSourceId(sourceId: string): CloudinaryAssetResponse | undefined {\n let sourceIdDecoded: any\n try {\n sourceIdDecoded = JSON.parse(atob(sourceId))\n } catch (err) {\n // Do nothing\n }\n return sourceIdDecoded\n}\n","import React from 'react'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {Flex} from '@sanity/ui'\nimport {CloudinaryAsset} from '../types'\n\ninterface ComponentProps {\n layout?: 'default' | 'block'\n value: CloudinaryAsset | undefined\n}\n\nconst AssetPreview = ({value, layout}: ComponentProps) => {\n const url = value && assetUrl(value)\n if (!value || !url) {\n return null\n }\n\n switch (value.resource_type) {\n case 'video':\n return (\n <Flex\n align=\"center\"\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n }}\n >\n <VideoPlayer src={url} kind=\"player\" />\n </Flex>\n )\n default:\n return (\n <Flex align=\"center\">\n <img\n alt=\"preview\"\n src={url}\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Flex>\n )\n }\n}\n\nexport default AssetPreview\n","import React, {useCallback} from 'react'\nimport {ObjectInputProps, PatchEvent, unset} from 'sanity'\nimport {Button, Flex, Grid, Stack} from '@sanity/ui'\nimport {PlugIcon} from '@sanity/icons'\nimport styled from 'styled-components'\nimport AssetPreview from './AssetPreview'\nimport {CloudinaryAsset} from '../types'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype WidgetInputProps = ObjectInputProps & {openMediaSelector: () => void; onSetup: () => void}\n\nconst WidgetInput = (props: WidgetInputProps) => {\n const {onChange, readOnly, value, openMediaSelector} = props\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n return (\n <Stack>\n <SetupButtonContainer>\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={props.onSetup}\n tabIndex={1}\n />\n </Flex>\n </SetupButtonContainer>\n\n <Flex style={{textAlign: 'center', width: '100%'}} marginBottom={2}>\n <AssetPreview value={value as CloudinaryAsset} />\n </Flex>\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n title=\"Select an asset\"\n tone=\"default\"\n onClick={openMediaSelector}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n )\n}\n\nexport default WidgetInput\n","import React from 'react'\nimport {SettingsView} from '@sanity/studio-secrets'\n\nexport type Secrets = {\n cloudName: string\n apiKey: string\n}\n\nconst pluginConfigKeys = [\n {\n key: 'cloudName',\n title: 'Cloud name',\n description: '',\n },\n {\n key: 'apiKey',\n title: 'API key',\n description: '',\n },\n]\n\nexport const namespace = 'cloudinary'\n\ntype Props = {\n onClose: () => void\n}\n\nconst SecretsConfigView = (props: Props) => {\n return (\n <SettingsView\n title=\"Cloudinary config\"\n namespace={namespace}\n keys={pluginConfigKeys}\n onClose={props.onClose}\n />\n )\n}\n\nexport default SecretsConfigView\n","import React, {useCallback, useState} from 'react'\nimport WidgetInput from './WidgetInput'\nimport {nanoid} from 'nanoid'\nimport {ObjectInputProps, PatchEvent, set} from 'sanity'\nimport {CloudinaryAsset} from '../types'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../types'\nimport {openMediaSelector} from '../utils'\nimport SecretsConfigView, {namespace, Secrets} from './SecretsConfigView'\n\nconst CloudinaryInput = (props: ObjectInputProps) => {\n const [showSettings, setShowSettings] = useState(false)\n const {secrets} = useSecrets<Secrets>(namespace)\n const {onChange, schemaType: type} = props\n const value = (props.value as CloudinaryAsset) || undefined\n\n const handleSelect = useCallback(\n (payload: InsertHandlerParams) => {\n const [asset] = payload.assets\n\n if (!asset) {\n return\n }\n\n let updatedAsset = asset\n\n //The metadata in Sanity Studio cannot contain special characters,\n //hence the cloudinary metadata (context) needs to be transformed to valid object keys\n if (asset.context) {\n const objectWithRenamedKeys = Object.fromEntries(\n Object.entries(asset.context.custom).map(([contextKey, contextValue]) => {\n return [contextKey.replace(/[^a-zA-Z0-9_]|-/g, '_'), contextValue]\n })\n )\n\n // Update the asset with the new custom values\n updatedAsset = {\n ...asset,\n context: {\n ...asset.context,\n custom: objectWithRenamedKeys,\n },\n }\n }\n\n onChange(\n PatchEvent.from([\n set(\n Object.assign(\n {\n _type: type.name,\n _version: 1,\n ...(value?._key ? {_key: value._key} : {_key: nanoid()}),\n },\n updatedAsset\n )\n ),\n ])\n )\n },\n [onChange, type, value?._key]\n )\n\n const action = secrets\n ? () =>\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n false, // single selection\n handleSelect,\n value\n )\n : () => setShowSettings(true)\n\n return (\n <>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <WidgetInput onSetup={() => setShowSettings(true)} openMediaSelector={action} {...props} />\n </>\n )\n}\n\nexport default CloudinaryInput\n","import React from 'react'\nimport {DiffFromTo} from 'sanity'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {CloudinaryAsset} from '../types'\n\ntype Props = {\n value: CloudinaryAsset | undefined\n}\n\nconst CloudinaryDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n const url = assetUrl(value)\n\n if (value.resource_type === 'video' && url) {\n return (\n <section\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n }}\n >\n <VideoPlayer src={url} kind=\"diff\" />\n </section>\n )\n }\n\n return <img alt=\"preview\" src={url} style={{maxWidth: '100%', height: 'auto'}} />\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={CloudinaryDiffPreview} />\n}\n\nexport default AssetDiff\n","/* eslint-disable */\nimport CloudinaryInput from '../components/CloudinaryInput'\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport {defineType} from 'sanity'\n\nexport const cloudinaryAssetSchema = defineType({\n type: 'object',\n name: 'cloudinary.asset',\n fields: [\n {\n type: 'string',\n name: 'public_id',\n },\n {\n type: 'string',\n name: 'resource_type',\n // \"image\", \"?\"\n },\n {\n type: 'string',\n name: 'type',\n // \"upload\", \"?\"\n },\n {\n type: 'string',\n name: 'format',\n // \"jpg\"\n },\n {\n type: 'number',\n name: 'version',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n {\n type: 'number',\n name: 'width',\n },\n {\n type: 'number',\n name: 'height',\n },\n {\n type: 'number',\n name: 'bytes',\n },\n {\n type: 'number',\n name: 'duration',\n // can be null\n },\n {\n type: 'array',\n name: 'tags',\n of: [{type: 'string'}],\n },\n {\n type: 'datetime',\n name: 'created_at',\n },\n {\n type: 'array',\n name: 'derived',\n of: [{type: 'cloudinary.assetDerived'}],\n },\n {\n type: 'string',\n name: 'access_mode',\n },\n {\n type: 'cloudinary.assetContext',\n name: 'context',\n },\n // metadata array of unknown content\n ],\n ...({\n components: {\n input: CloudinaryInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}), //TODO revert this change when rc.1 is released\n preview: {\n select: {\n url: 'url',\n resource_type: 'resource_type',\n derived: 'derived.0.url',\n },\n prepare({url, derived, resource_type}) {\n return {\n title: url,\n value: {\n title: url,\n resource_type,\n url: derived || url,\n },\n }\n },\n },\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetDerived = {\n raw_transformation: string\n url: string\n secure_url: string\n}\n\nexport const cloudinaryAssetDerivedSchema = defineType({\n type: 'object',\n name: 'cloudinary.assetDerived',\n fields: [\n {\n type: 'string',\n name: 'raw_transformation',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n ],\n})\n","import React from 'react'\n\nexport function CloudinaryIcon() {\n return (\n <svg\n version=\"1.1\"\n id=\"Layer_1\"\n x=\"0px\"\n y=\"0px\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 141.732 141.747\"\n enableBackground=\"new 0 0 141.732 141.747\"\n >\n <g>\n <path\n fill=\"#0071CE\"\n d=\"M115.585,109.242c-1.609,0-3.107-1.024-3.635-2.637c-0.657-2.008,0.438-4.169,2.447-4.826\n c7.278-2.382,11.98-8.761,11.98-16.252c0-9.487-7.718-17.206-17.205-17.206c-0.659,0-1.368,0.052-2.231,0.164l-3.741,0.485\n l-0.537-3.735c-2.299-16.016-16.251-28.094-32.454-28.094c-13.395,0-25.32,8.019-30.377,20.43l-0.952,2.335l-2.52,0.046\n c-11.581,0.213-21.003,9.804-21.003,21.379c0,8.45,4.906,16.156,12.498,19.631c1.921,0.88,2.766,3.15,1.886,5.071\n c-0.88,1.921-3.149,2.764-5.07,1.887C14.363,103.202,7.703,92.766,7.703,81.331c0-14.88,11.465-27.345,26.028-28.876\n c6.71-14.03,20.773-22.965,36.477-22.965c18.796,0,35.135,13.178,39.372,31.184c13.519,0.219,24.45,11.284,24.45,24.854\n c0,10.693-6.934,20.146-17.253,23.523C116.382,109.18,115.98,109.242,115.585,109.242z\"\n />\n <path\n fill=\"#DC8327\"\n d=\"M57.12,111.02c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001c0.001-0.001-0.001-0.001-0.001-0.001\n l-0.001-0.001c0,0-0.001,0-0.001,0l-0.001-0.001c0.001,0.001-0.001-0.001-0.001-0.001s-0.002-0.001-0.003-0.001l-0.001-0.001H57.1\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.003-0.001c-0.001,0.001-0.001-0.001-0.002-0.001\n l-0.001-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001s-0.003-0.001-0.004-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001h-0.001c-0.001-0.001-0.002-0.001-0.003-0.001c-0.001-0.001-0.003-0.001-0.003-0.001\n c-0.001,0-0.001,0-0.001,0l-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001h-0.001c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002\n h-0.002c-0.001,0-0.001,0-0.002,0c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c-0.001-0.001-0.001-0.001-0.001-0.001\n c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001h-0.001h-0.001c-0.001,0-0.002,0-0.002,0h-0.001H56.86h-0.001h-0.001\n c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001h-0.001c-0.001,0-0.001,0-0.001,0c-1.656,0-3.011-1.348-3.021-3V74.29h2.567\n c0.004,0,0.009,0,0.013,0c0.393,0.017,0.661-0.285,0.661-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.379-8.544\n c-0.222-0.153-0.515-0.153-0.737,0l-12.476,8.611c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.58\n l0.002,33.674c0.013,2.328,1.883,4.228,4.262,4.288c0.027,0.003,0.053,0.005,0.08,0.005h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.004-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001c0.001-0.001,0.001-0.001,0.001-0.001\n c0.002-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447\n v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002C57.498,111.345,57.343,111.121,57.12,111.02z\"\n />\n <path\n fill=\"#F4B21B\"\n d=\"M83.889,111.02c0,0-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001c0,0-0.001-0.001-0.001-0.001\n c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.002,0.001-0.002-0.001-0.002-0.001\n l-0.002-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001-0.001-0.002-0.001-0.002-0.001\n c-0.001,0.001-0.001-0.001-0.003-0.001l-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.002-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.001,0-0.002-0.001c0,0-0.001,0-0.002-0.001\n c-0.003-0.001-0.001-0.001-0.002-0.001c-0.003,0-0.001,0-0.002-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002c-0.001,0-0.001,0-0.001,0c-0.001,0-0.002,0-0.002,0s-0.001,0-0.001,0h-0.001h-0.001\n l-0.001-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0s-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001\n h-0.001c-0.001,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V81.829h2.579c0.009-0.001,0.016-0.001,0.026,0\n c0.358,0,0.648-0.29,0.648-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.222-0.153-0.515-0.153-0.737,0L57.86,80.647\n c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.568l0.002,26.135\n c0.011,2.329,1.884,4.23,4.264,4.289c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.006-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0.001-0.001,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001c0,0,0.001,0,0.001-0.001l0.001-0.001\n c0.001,0,0.001-0.001,0.001-0.001c0.003-0.001,0.002-0.001,0.002-0.002c0,0,0,0,0.001-0.001c0,0,0,0,0.001-0.001\n c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C84.267,111.345,84.112,111.121,83.889,111.02z\"\n />\n <path\n fill=\"#F2D864\"\n d=\"M110.667,111.02l-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001s-0.001,0-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001\n c-0.001,0.001-0.001-0.001-0.002-0.001c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001,0\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.002-0.001c-0.001,0.001-0.001-0.001-0.003-0.001\n l-0.001-0.001c0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001l-0.002-0.001c0,0-0.001,0-0.002-0.001l-0.002-0.001c-0.003-0.001-0.003-0.001-0.002-0.001\n c-0.003,0-0.003,0-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.001,0-0.002-0.001-0.002-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.003,0h-0.001h-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.002,0c0,0-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0h-0.002c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c0,0-0.001,0-0.001,0h-0.001h-0.001h-0.001H110.4\n c0,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V89.365h2.573c0.004,0,0.009,0,0.013,0c0.365-0.009,0.661-0.285,0.661-0.648\n c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.221-0.153-0.515-0.153-0.737,0l-12.476,8.61c-0.234,0.161-0.335,0.456-0.251,0.727\n c0.085,0.271,0.335,0.455,0.619,0.455h2.573l0.002,18.599c0.013,2.329,1.885,4.231,4.264,4.289\n c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0c0.17-0.003,0.324-0.071,0.438-0.18l0.001-0.001\n c0.002-0.002,0.005-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001\n l0.001-0.001l0.001-0.001l0.001-0.001c0.003-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001\n c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C111.045,111.345,110.889,111.121,110.667,111.02z\"\n />\n </g>\n </svg>\n )\n}\n","/* eslint-disable camelcase */\nimport React, {useCallback, useEffect, useRef, useState} from 'react'\nimport {Box, Button, Dialog, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {CloudinaryMediaLibrary, InsertHandlerParams} from '../../types'\nimport {createMediaLibrary, decodeSourceId, encodeFilename, encodeSourceId} from '../../utils'\nimport styled from 'styled-components'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace, Secrets} from '../SecretsConfigView'\nimport {AssetSourceComponentProps, ImageAsset} from 'sanity'\nimport {PlugIcon} from '@sanity/icons'\n\nexport const Widget = styled.div`\n height: 70vh;\n`\n\nexport function CloudinaryAssetSource(props: AssetSourceComponentProps) {\n const {onClose} = props\n\n const [loadingMessage, setLoadingMessage] = useState<string | undefined>(\n 'Loading Cloudinary Media Libary'\n )\n const library = useRef<CloudinaryMediaLibrary | undefined>()\n const contentRef = useRef<HTMLDivElement | null>(null)\n const {secrets} = useSecrets<Secrets>(namespace)\n const cloudName = secrets?.cloudName\n const apiKey = secrets?.apiKey\n const [widgetId] = useState(() => `cloundinaryWidget-${Date.now()}`)\n const [showSettings, setShowSettings] = useState(false)\n\n const propsRef = useRef(props)\n\n useEffect(() => {\n // because we have to access props after loading js in a callback,\n // we cannot pass props as dependecnies as that will cause infinite updates\n // this takes a snapshot of props, so we can access them later\n propsRef.current = props\n }, [props])\n\n const handleClose = useCallback(() => {\n if (library.current) {\n library.current.hide()\n }\n onClose()\n }, [onClose, library])\n\n useEffect(() => {\n if (!cloudName || !apiKey) {\n return\n }\n\n createMediaLibrary({\n cloudName,\n apiKey,\n inlineContainer: `#${widgetId}`,\n libraryCreated: (lib: CloudinaryMediaLibrary) => {\n library.current = lib\n const selectedAssets = propsRef.current.selectedAssets\n const firstSelectedAsset = selectedAssets ? selectedAssets[0] : null\n\n // eslint-disable-next-line no-undef\n const iframe: ChildNode | null | undefined =\n contentRef.current && contentRef.current.firstChild\n if (iframe && iframe instanceof HTMLIFrameElement) {\n setLoadingMessage(undefined)\n let asset\n if (\n propsRef.current.selectionType === 'single' &&\n firstSelectedAsset &&\n firstSelectedAsset.source &&\n firstSelectedAsset.source.id\n ) {\n asset = decodeSourceId(firstSelectedAsset.source.id)\n }\n const folder = asset\n ? {\n path: asset.public_id.split('/').slice(0, -1).join('/'),\n resource_type: 'image',\n }\n : {path: '', resource_type: 'image'}\n if (lib && contentRef.current) {\n lib.show({folder, asset})\n contentRef.current.style.visibility = 'visible'\n }\n }\n },\n insertHandler: ({assets}: InsertHandlerParams) => {\n if (!library.current) {\n return\n }\n const imageAssets = assets.filter((asset) => asset.resource_type === 'image')\n if (imageAssets.length === 0) {\n throw new Error('The selection did not contain any images.')\n }\n library.current.hide()\n propsRef.current.onSelect(\n imageAssets.map((asset) => {\n const url =\n asset.derived && asset.derived[0] ? asset.derived[0].secure_url : asset.secure_url\n return {\n kind: 'url',\n value: url,\n assetDocumentProps: {\n _type: 'sanity.imageAsset',\n originalFilename: encodeFilename(asset),\n source: {\n id: encodeSourceId(asset),\n name: `cloudinary:${cloudName}`,\n },\n } as ImageAsset,\n }\n })\n )\n },\n })\n }, [cloudName, apiKey, widgetId])\n\n const hasConfig = apiKey && cloudName\n return (\n <Dialog\n id=\"cloudinary-asset-source\"\n header=\"Select image from Cloudinary\"\n onClose={handleClose}\n open\n width={4}\n >\n <Box padding={4}>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={() => setShowSettings(true)}\n tabIndex={1}\n text={hasConfig ? undefined : 'Configure Cloudinary plugin'}\n />\n </Flex>\n\n {hasConfig && loadingMessage && (\n <Stack space={3}>\n <Flex align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n <Text size={1} muted align=\"center\">\n {loadingMessage}\n </Text>\n </Stack>\n )}\n\n <Widget style={{visibility: 'hidden'}} ref={contentRef} id={widgetId} />\n </Box>\n </Dialog>\n )\n}\n","import {defineType} from 'sanity'\n\nexport interface CloudinaryAssetContext {\n custom: object\n}\n\nexport const cloudinaryAssetContext = defineType({\n type: 'object',\n name: 'cloudinary.assetContext',\n fields: [\n {\n type: 'cloudinary.assetContextCustom',\n name: 'custom',\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetContextCustom = {\n alt: string\n caption: string\n}\n\nexport const cloudinaryAssetContextCustom = defineType({\n type: 'object',\n name: 'cloudinary.assetContextCustom',\n fields: [\n {\n type: 'string',\n name: 'alt',\n },\n {\n type: 'string',\n name: 'caption',\n },\n ],\n})\n","import React, {useCallback} from 'react'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {\n ArrayInputFunctionsProps,\n ArrayOfObjectsFunctions,\n ArraySchemaType,\n insert,\n ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n} from 'sanity'\n\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace} from './SecretsConfigView'\nimport {cloudinaryAssetSchema} from '../schema/cloudinaryAsset'\nimport {openMediaSelector} from '../utils'\nimport {InsertHandlerParams} from '../types'\nimport {PlugIcon} from '@sanity/icons'\n\ninterface ApiConfig {\n cloudName: string\n apiKey: string\n}\n\nexport const AssetListFunctions = (\n props: ArrayInputFunctionsProps<{_key: string}, ArraySchemaType>\n) => {\n const {onValueCreate, onChange} = props\n\n const {secrets, loading} = useSecrets<ApiConfig>(namespace)\n const [showSettings, setShowSettings] = React.useState(false)\n\n const show = useCallback(() => setShowSettings(true), [setShowSettings])\n const hide = useCallback(() => setShowSettings(false), [setShowSettings])\n\n const cloudinaryType = props.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n ) as ObjectSchemaType | undefined\n\n if (!cloudinaryType) {\n throw new Error(`AssetListFunctions can only be used in array.of ${\n cloudinaryAssetSchema.name\n }, but it was array.of\n ${props.schemaType.of.map((t) => t.name)}`)\n }\n\n const handleSelect = useCallback(\n (selected: InsertHandlerParams) => {\n const items = selected.assets.map((asset) =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onValueCreate(cloudinaryType as any) // onValueCreate is mistyped\n )\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n },\n [onValueCreate, onChange, cloudinaryType]\n )\n\n const handleOpenSelector = useCallback(\n () =>\n secrets &&\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n true, // multi-selection\n handleSelect\n ),\n [secrets, handleSelect]\n )\n return (\n <Flex gap={2} flex={1}>\n {showSettings && <SecretsConfigView onClose={hide} />}\n <Box flex={1}>\n <ArrayOfObjectsFunctions {...props} />\n </Box>\n {cloudinaryType && (\n <>\n <Box flex={1}>\n <Button\n style={{width: '100%'}}\n disabled={props.readOnly || loading}\n mode=\"bleed\"\n text=\"Add multiple\"\n onClick={handleOpenSelector}\n />\n </Box>\n <Box>\n <Button onClick={show} icon={PlugIcon} mode=\"bleed\" title={'Configure'} />\n </Box>\n </>\n )}\n </Flex>\n )\n}\n","import {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {\n definePlugin,\n AssetSource,\n ArrayOfObjectsInputProps,\n isArrayOfObjectsSchemaType,\n} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\nimport {cloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nimport {cloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\nimport {AssetListFunctions} from './components/AssetListFunctions'\n\nexport {type CloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nexport {type CloudinaryAssetDerived} from './schema/cloudinaryAssetDerived'\nexport {type CloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\n\nexport type {AssetDocument, CloudinaryAsset} from './types'\n\nexport {\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n if (isArrayOfObjectsSchemaType(schemaType)) {\n const arrayProps = props as ArrayOfObjectsInputProps\n const cloudinaryType = arrayProps.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n )\n if (cloudinaryType) {\n return arrayProps.renderDefault({...arrayProps, arrayFunctions: AssetListFunctions})\n }\n }\n return props.renderDefault(props)\n },\n },\n },\n schema: {\n types: [\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n ],\n },\n})\n\nexport const cloudinaryImageSource: AssetSource = {\n name: 'cloudinary-image',\n title: 'Cloudinary',\n icon: CloudinaryIcon,\n component: CloudinaryAssetSource,\n}\n\nexport const cloudinaryAssetSourcePlugin = definePlugin({\n name: 'cloudinart-asset-source',\n form: {\n image: {\n assetSources: [cloudinaryImageSource],\n },\n },\n})\n"],"names":["VideoPlayer","props","src","style","width","height","jsx","controls","children","type","widgetSrc","assetUrl","asset","derived","length","secure_url","url","openMediaSelector","cloudName","apiKey","multiple","insertHandler","selectedAsset","loadJS","options","cloud_name","api_key","insert_caption","public_id","resource_type","window","cloudinary","openMediaLibrary","createMediaLibrary","_ref","inlineContainer","libraryCreated","inline_container","remove_header","callback","existingScript","document","getElementById","script","createElement","id","body","appendChild","onload","encodeSourceId","btoa","JSON","stringify","encodeFilename","concat","split","slice","format","decodeSourceId","sourceId","sourceIdDecoded","parse","atob","err","AssetPreview","_ref2","value","layout","Flex","align","maxWidth","kind","alt","_a","SetupButtonContainer","styled","div","__template","WidgetInput","onChange","readOnly","removeValue","useCallback","PatchEvent","from","unset","Stack","flex","justify","Button","color","icon","PlugIcon","mode","title","onClick","onSetup","tabIndex","textAlign","marginBottom","jsxs","Grid","gap","gridTemplateColumns","disabled","tone","text","pluginConfigKeys","key","description","namespace","SecretsConfigView","SettingsView","keys","onClose","CloudinaryInput","showSettings","setShowSettings","useState","secrets","useSecrets","schemaType","handleSelect","payload","assets","updatedAsset","context","objectWithRenamedKeys","Object","fromEntries","entries","custom","map","_ref3","contextKey","contextValue","replace","set","assign","_type","name","_version","_key","nanoid","action","Fragment","CloudinaryDiffPreview","_ref4","display","flexWrap","justifyContent","AssetDiff","_ref5","diff","DiffFromTo","previewComponent","cloudinaryAssetSchema","defineType","fields","of","components","input","preview","select","prepare","_ref6","cloudinaryAssetDerivedSchema","CloudinaryIcon","version","x","y","viewBox","enableBackground","fill","d","Widget","CloudinaryAssetSource","loadingMessage","setLoadingMessage","library","useRef","contentRef","widgetId","Date","now","propsRef","useEffect","current","handleClose","hide","lib","selectedAssets","firstSelectedAsset","iframe","firstChild","HTMLIFrameElement","selectionType","source","folder","path","join","show","visibility","_ref7","imageAssets","filter","Error","onSelect","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","Box","padding","space","Spinner","muted","Text","size","ref","cloudinaryAssetContext","cloudinaryAssetContextCustom","AssetListFunctions","onValueCreate","loading","React","cloudinaryType","find","t","selected","items","setIfMissing","insert","handleOpenSelector","ArrayOfObjectsFunctions","cloudinarySchemaPlugin","definePlugin","form","isArrayOfObjectsSchemaType","arrayProps","renderDefault","arrayFunctions","schema","types","cloudinaryImageSource","component","cloudinaryAssetSourcePlugin","image","assetSources"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/VideoPlayer.tsx","../src/utils.ts","../src/components/AssetPreview.tsx","../src/components/WidgetInput.tsx","../src/components/SecretsConfigView.tsx","../src/components/CloudinaryInput.tsx","../src/components/AssetDiff.tsx","../src/schema/cloudinaryAsset.ts","../src/schema/cloudinaryAssetDerived.ts","../src/components/asset-source/Icon.tsx","../src/components/asset-source/CloudinaryAssetSource.tsx","../src/schema/cloudinaryAssetContext.ts","../src/schema/cloudinaryAssetContextCustom.ts","../src/components/AssetListFunctions.tsx","../src/index.ts"],"sourcesContent":["import React, {CSSProperties} from 'react'\n\ntype PlayerKind = 'player' | 'diff'\n\nexport type VideoPlayerProps = {\n src: string\n // eslint-disable-next-line react/no-unused-prop-types\n kind: PlayerKind\n}\n\nexport default function VideoPlayer(props: VideoPlayerProps) {\n const {src} = props\n\n const style: CSSProperties = {\n width: '100%',\n height: 'auto',\n }\n\n return (\n <video controls style={style}>\n <source src={src} type=\"video/mp4\" />\n </video>\n )\n}\n","/* eslint-disable camelcase,@typescript-eslint/explicit-module-boundary-types */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './types'\n\nconst widgetSrc = 'https://media-library.cloudinary.com/global/all.js'\n\nexport function assetUrl(asset: Partial<Pick<CloudinaryAsset, 'url' | 'secure_url' | 'derived'>>) {\n if (asset.derived && asset.derived.length > 0) {\n const [derived] = asset.derived\n if (derived.secure_url) {\n return derived.secure_url\n }\n return derived.url\n }\n if (asset.secure_url) {\n return asset.secure_url\n }\n return asset.url\n}\n\nexport const openMediaSelector = (\n cloudName: string,\n apiKey: string,\n multiple: boolean,\n insertHandler: (params: InsertHandlerParams) => void,\n selectedAsset?: CloudinaryAsset\n) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n multiple,\n }\n\n if (selectedAsset) {\n options.asset = {\n public_id: selectedAsset.public_id,\n type: selectedAsset.type,\n resource_type: selectedAsset.resource_type,\n }\n }\n\n window.cloudinary.openMediaLibrary(options, {insertHandler})\n })\n}\n\nexport const createMediaLibrary = ({\n cloudName,\n apiKey,\n inlineContainer,\n libraryCreated,\n insertHandler,\n}: {\n cloudName: string\n apiKey: string\n inlineContainer: string\n libraryCreated: (library: CloudinaryMediaLibrary) => void\n insertHandler: (params: InsertHandlerParams) => void\n}) => {\n loadJS(widgetSrc, () => {\n const options: Record<string, any> = {\n cloud_name: cloudName,\n api_key: apiKey,\n insert_caption: 'Select',\n inline_container: inlineContainer,\n remove_header: true,\n }\n\n libraryCreated(window.cloudinary.createMediaLibrary(options, {insertHandler}))\n })\n}\n\nexport function loadJS(url: string, callback: () => void) {\n const existingScript = document.getElementById('damWidget')\n if (!existingScript) {\n const script = document.createElement('script')\n script.src = url\n script.id = 'damWidget'\n document.body.appendChild(script)\n script.onload = () => {\n if (callback) {\n return callback()\n }\n return true\n }\n }\n if (existingScript && callback) {\n return callback()\n }\n return true\n}\n\nexport function encodeSourceId(asset: CloudinaryAssetResponse): string {\n const {resource_type, public_id, type} = asset\n return btoa(JSON.stringify({public_id, resource_type, type})) // Sort keys alphabetically!\n}\n\nexport function encodeFilename(asset: CloudinaryAssetResponse) {\n return `${asset.public_id.split('/').slice(-1)[0]}.${asset.format}`\n}\n\nexport function decodeSourceId(sourceId: string): CloudinaryAssetResponse | undefined {\n let sourceIdDecoded: any\n try {\n sourceIdDecoded = JSON.parse(atob(sourceId))\n } catch (err) {\n // Do nothing\n }\n return sourceIdDecoded\n}\n","import React from 'react'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {Flex} from '@sanity/ui'\nimport {CloudinaryAsset} from '../types'\n\ninterface ComponentProps {\n layout?: 'default' | 'block'\n value: CloudinaryAsset | undefined\n}\n\nconst AssetPreview = ({value, layout}: ComponentProps) => {\n const url = value && assetUrl(value)\n if (!value || !url) {\n return null\n }\n\n switch (value.resource_type) {\n case 'video':\n return (\n <Flex\n align=\"center\"\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n }}\n >\n <VideoPlayer src={url} kind=\"player\" />\n </Flex>\n )\n default:\n return (\n <Flex align=\"center\">\n <img\n alt=\"preview\"\n src={url}\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Flex>\n )\n }\n}\n\nexport default AssetPreview\n","import React, {useCallback} from 'react'\nimport {ObjectInputProps, PatchEvent, unset} from 'sanity'\nimport {Button, Flex, Grid, Stack} from '@sanity/ui'\nimport {PlugIcon} from '@sanity/icons'\nimport styled from 'styled-components'\nimport AssetPreview from './AssetPreview'\nimport {CloudinaryAsset} from '../types'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype WidgetInputProps = ObjectInputProps & {openMediaSelector: () => void; onSetup: () => void}\n\nconst WidgetInput = (props: WidgetInputProps) => {\n const {onChange, readOnly, value, openMediaSelector} = props\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n return (\n <Stack>\n <SetupButtonContainer>\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={props.onSetup}\n tabIndex={1}\n />\n </Flex>\n </SetupButtonContainer>\n\n <Flex style={{textAlign: 'center', width: '100%'}} marginBottom={2}>\n <AssetPreview value={value as CloudinaryAsset} />\n </Flex>\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n title=\"Select an asset\"\n tone=\"default\"\n onClick={openMediaSelector}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n )\n}\n\nexport default WidgetInput\n","import React from 'react'\nimport {SettingsView} from '@sanity/studio-secrets'\n\nexport type Secrets = {\n cloudName: string\n apiKey: string\n}\n\nconst pluginConfigKeys = [\n {\n key: 'cloudName',\n title: 'Cloud name',\n description: '',\n },\n {\n key: 'apiKey',\n title: 'API key',\n description: '',\n },\n]\n\nexport const namespace = 'cloudinary'\n\ntype Props = {\n onClose: () => void\n}\n\nconst SecretsConfigView = (props: Props) => {\n return (\n <SettingsView\n title=\"Cloudinary config\"\n namespace={namespace}\n keys={pluginConfigKeys}\n onClose={props.onClose}\n />\n )\n}\n\nexport default SecretsConfigView\n","import React, {useCallback, useState} from 'react'\nimport WidgetInput from './WidgetInput'\nimport {nanoid} from 'nanoid'\nimport {ObjectInputProps, PatchEvent, set} from 'sanity'\nimport {CloudinaryAsset} from '../types'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../types'\nimport {openMediaSelector} from '../utils'\nimport SecretsConfigView, {namespace, Secrets} from './SecretsConfigView'\n\nconst CloudinaryInput = (props: ObjectInputProps) => {\n const [showSettings, setShowSettings] = useState(false)\n const {secrets} = useSecrets<Secrets>(namespace)\n const {onChange, schemaType: type} = props\n const value = (props.value as CloudinaryAsset) || undefined\n\n const handleSelect = useCallback(\n (payload: InsertHandlerParams) => {\n const [asset] = payload.assets\n\n if (!asset) {\n return\n }\n\n let updatedAsset = asset\n\n //The metadata in Sanity Studio cannot contain special characters,\n //hence the cloudinary metadata (context) needs to be transformed to valid object keys\n if (asset.context) {\n const objectWithRenamedKeys = Object.fromEntries(\n Object.entries(asset.context.custom).map(([contextKey, contextValue]) => {\n return [contextKey.replace(/[^a-zA-Z0-9_]|-/g, '_'), contextValue]\n })\n )\n\n // Update the asset with the new custom values\n updatedAsset = {\n ...asset,\n context: {\n ...asset.context,\n custom: objectWithRenamedKeys,\n },\n }\n }\n\n onChange(\n PatchEvent.from([\n set(\n Object.assign(\n {\n _type: type.name,\n _version: 1,\n ...(value?._key ? {_key: value._key} : {_key: nanoid()}),\n },\n updatedAsset\n )\n ),\n ])\n )\n },\n [onChange, type, value?._key]\n )\n\n const action = secrets\n ? () =>\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n false, // single selection\n handleSelect,\n value\n )\n : () => setShowSettings(true)\n\n return (\n <>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <WidgetInput onSetup={() => setShowSettings(true)} openMediaSelector={action} {...props} />\n </>\n )\n}\n\nexport default CloudinaryInput\n","import React from 'react'\nimport {DiffFromTo} from 'sanity'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {CloudinaryAsset} from '../types'\n\ntype Props = {\n value: CloudinaryAsset | undefined\n}\n\nconst CloudinaryDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n const url = assetUrl(value)\n\n if (value.resource_type === 'video' && url) {\n return (\n <section\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n }}\n >\n <VideoPlayer src={url} kind=\"diff\" />\n </section>\n )\n }\n\n return <img alt=\"preview\" src={url} style={{maxWidth: '100%', height: 'auto'}} />\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={CloudinaryDiffPreview} />\n}\n\nexport default AssetDiff\n","/* eslint-disable */\nimport CloudinaryInput from '../components/CloudinaryInput'\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport {defineType} from 'sanity'\n\nexport const cloudinaryAssetSchema = defineType({\n type: 'object',\n name: 'cloudinary.asset',\n fields: [\n {\n type: 'string',\n name: 'public_id',\n },\n {\n type: 'string',\n name: 'resource_type',\n // \"image\", \"?\"\n },\n {\n type: 'string',\n name: 'type',\n // \"upload\", \"?\"\n },\n {\n type: 'string',\n name: 'format',\n // \"jpg\"\n },\n {\n type: 'number',\n name: 'version',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n {\n type: 'number',\n name: 'width',\n },\n {\n type: 'number',\n name: 'height',\n },\n {\n type: 'number',\n name: 'bytes',\n },\n {\n type: 'number',\n name: 'duration',\n // can be null\n },\n {\n type: 'array',\n name: 'tags',\n of: [{type: 'string'}],\n },\n {\n type: 'datetime',\n name: 'created_at',\n },\n {\n type: 'array',\n name: 'derived',\n of: [{type: 'cloudinary.assetDerived'}],\n },\n {\n type: 'string',\n name: 'access_mode',\n },\n {\n type: 'cloudinary.assetContext',\n name: 'context',\n },\n // metadata array of unknown content\n ],\n ...({\n components: {\n input: CloudinaryInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}), //TODO revert this change when rc.1 is released\n preview: {\n select: {\n url: 'url',\n resource_type: 'resource_type',\n derived: 'derived.0.url',\n },\n prepare({url, derived, resource_type}) {\n return {\n title: url,\n value: {\n title: url,\n resource_type,\n url: derived || url,\n },\n }\n },\n },\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetDerived = {\n raw_transformation: string\n url: string\n secure_url: string\n}\n\nexport const cloudinaryAssetDerivedSchema = defineType({\n type: 'object',\n name: 'cloudinary.assetDerived',\n fields: [\n {\n type: 'string',\n name: 'raw_transformation',\n },\n {\n type: 'url',\n name: 'url',\n },\n {\n type: 'url',\n name: 'secure_url',\n },\n ],\n})\n","import React from 'react'\n\nexport function CloudinaryIcon() {\n return (\n <svg\n version=\"1.1\"\n id=\"Layer_1\"\n x=\"0px\"\n y=\"0px\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 141.732 141.747\"\n enableBackground=\"new 0 0 141.732 141.747\"\n >\n <g>\n <path\n fill=\"#0071CE\"\n d=\"M115.585,109.242c-1.609,0-3.107-1.024-3.635-2.637c-0.657-2.008,0.438-4.169,2.447-4.826\n c7.278-2.382,11.98-8.761,11.98-16.252c0-9.487-7.718-17.206-17.205-17.206c-0.659,0-1.368,0.052-2.231,0.164l-3.741,0.485\n l-0.537-3.735c-2.299-16.016-16.251-28.094-32.454-28.094c-13.395,0-25.32,8.019-30.377,20.43l-0.952,2.335l-2.52,0.046\n c-11.581,0.213-21.003,9.804-21.003,21.379c0,8.45,4.906,16.156,12.498,19.631c1.921,0.88,2.766,3.15,1.886,5.071\n c-0.88,1.921-3.149,2.764-5.07,1.887C14.363,103.202,7.703,92.766,7.703,81.331c0-14.88,11.465-27.345,26.028-28.876\n c6.71-14.03,20.773-22.965,36.477-22.965c18.796,0,35.135,13.178,39.372,31.184c13.519,0.219,24.45,11.284,24.45,24.854\n c0,10.693-6.934,20.146-17.253,23.523C116.382,109.18,115.98,109.242,115.585,109.242z\"\n />\n <path\n fill=\"#DC8327\"\n d=\"M57.12,111.02c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001c0.001-0.001-0.001-0.001-0.001-0.001\n l-0.001-0.001c0,0-0.001,0-0.001,0l-0.001-0.001c0.001,0.001-0.001-0.001-0.001-0.001s-0.002-0.001-0.003-0.001l-0.001-0.001H57.1\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.003-0.001c-0.001,0.001-0.001-0.001-0.002-0.001\n l-0.001-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001s-0.003-0.001-0.004-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001h-0.001c-0.001-0.001-0.002-0.001-0.003-0.001c-0.001-0.001-0.003-0.001-0.003-0.001\n c-0.001,0-0.001,0-0.001,0l-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001h-0.001c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002\n h-0.002c-0.001,0-0.001,0-0.002,0c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c-0.001-0.001-0.001-0.001-0.001-0.001\n c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001h-0.001h-0.001c-0.001,0-0.002,0-0.002,0h-0.001H56.86h-0.001h-0.001\n c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001h-0.001c-0.001,0-0.001,0-0.001,0c-1.656,0-3.011-1.348-3.021-3V74.29h2.567\n c0.004,0,0.009,0,0.013,0c0.393,0.017,0.661-0.285,0.661-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.379-8.544\n c-0.222-0.153-0.515-0.153-0.737,0l-12.476,8.611c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.58\n l0.002,33.674c0.013,2.328,1.883,4.228,4.262,4.288c0.027,0.003,0.053,0.005,0.08,0.005h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.004-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001l0.001-0.001c0.001-0.001,0.001-0.001,0.001-0.001\n c0.002-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447\n v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002C57.498,111.345,57.343,111.121,57.12,111.02z\"\n />\n <path\n fill=\"#F4B21B\"\n d=\"M83.889,111.02c0,0-0.001-0.001-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001c0,0-0.001-0.001-0.001-0.001\n c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.002,0.001-0.002-0.001-0.002-0.001\n l-0.002-0.001l-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001-0.001-0.002-0.001-0.002-0.001\n c-0.001,0.001-0.001-0.001-0.003-0.001l-0.001-0.001l-0.001-0.001c0,0-0.001,0-0.002-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001c-0.001-0.001-0.001-0.001-0.002-0.001c-0.001,0-0.001,0-0.002-0.001c0,0-0.001,0-0.002-0.001\n c-0.003-0.001-0.001-0.001-0.002-0.001c-0.003,0-0.001,0-0.002-0.001c0,0-0.001-0.001-0.002-0.001l-0.001-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.002c-0.001,0-0.001,0-0.001,0c-0.001,0-0.002,0-0.002,0s-0.001,0-0.001,0h-0.001h-0.001\n l-0.001-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.002,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0s-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001c-0.001,0-0.001,0-0.001,0h-0.001h-0.001h-0.001\n h-0.001c-0.001,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V81.829h2.579c0.009-0.001,0.016-0.001,0.026,0\n c0.358,0,0.648-0.29,0.648-0.648c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.222-0.153-0.515-0.153-0.737,0L57.86,80.647\n c-0.234,0.161-0.335,0.456-0.251,0.727c0.085,0.271,0.335,0.455,0.619,0.455h2.568l0.002,26.135\n c0.011,2.329,1.884,4.23,4.264,4.289c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0\n c0.17-0.003,0.324-0.071,0.438-0.18c0,0,0,0,0.001-0.001c0.002-0.002,0.006-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003\n c0.001-0.001,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001c0,0,0.001,0,0.001-0.001l0.001-0.001\n c0.001,0,0.001-0.001,0.001-0.001c0.003-0.001,0.002-0.001,0.002-0.002c0,0,0,0,0.001-0.001c0,0,0,0,0.001-0.001\n c0,0,0,0,0.001-0.001c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C84.267,111.345,84.112,111.121,83.889,111.02z\"\n />\n <path\n fill=\"#F2D864\"\n d=\"M110.667,111.02l-0.002-0.001c-0.001,0-0.002-0.001-0.003-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001-0.001h-0.001l-0.001-0.001\n c-0.001-0.001-0.001-0.001-0.001-0.001s-0.001,0-0.001-0.001h-0.001c0,0-0.001-0.001-0.001-0.001\n c-0.001,0.001-0.001-0.001-0.002-0.001c0.001-0.001-0.001-0.001-0.002-0.001l-0.001-0.001c-0.001,0-0.001,0-0.001,0\n c-0.001-0.001-0.001-0.001-0.001-0.001l-0.001-0.001c-0.003-0.001-0.002-0.001-0.002-0.001c-0.001,0.001-0.001-0.001-0.003-0.001\n l-0.001-0.001c0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.001-0.001c-0.001-0.001-0.003-0.001-0.004-0.001\n s-0.003-0.001-0.004-0.001l-0.002-0.001c0,0-0.001,0-0.002-0.001l-0.002-0.001c-0.003-0.001-0.003-0.001-0.002-0.001\n c-0.003,0-0.003,0-0.002-0.001c-0.001,0-0.001-0.001-0.001-0.001c-0.001,0-0.002-0.001-0.002-0.001h-0.001\n c-0.059-0.021-0.122-0.034-0.188-0.037h-0.001c-0.001,0-0.002,0-0.002,0c-0.001,0-0.002,0-0.003,0h-0.001h-0.001h-0.001\n c-0.001-0.001-0.001-0.001-0.002-0.001c0,0-0.001,0-0.002,0c0,0-0.001,0-0.002,0h-0.001c0,0-0.001,0-0.001,0h-0.001\n c-0.001,0-0.002,0-0.002,0h-0.002c0,0,0,0-0.001,0c0,0-0.001,0-0.001,0h-0.001c0,0-0.001,0-0.001,0h-0.001h-0.001h-0.001H110.4\n c0,0-0.001,0-0.001,0c-1.655,0-3.01-1.348-3.02-3V89.365h2.573c0.004,0,0.009,0,0.013,0c0.365-0.009,0.661-0.285,0.661-0.648\n c0-0.271-0.166-0.503-0.402-0.6l-12.38-8.544c-0.221-0.153-0.515-0.153-0.737,0l-12.476,8.61c-0.234,0.161-0.335,0.456-0.251,0.727\n c0.085,0.271,0.335,0.455,0.619,0.455h2.573l0.002,18.599c0.013,2.329,1.885,4.231,4.264,4.289\n c0.026,0.003,0.052,0.004,0.078,0.004h18.481c0.004,0,0.007,0,0.011,0c0.17-0.003,0.324-0.071,0.438-0.18l0.001-0.001\n c0.002-0.002,0.005-0.004,0.005-0.005c0.001-0.001,0.002-0.001,0.003-0.003c0,0,0.001-0.001,0.001-0.001l0.001-0.001l0.001-0.001\n l0.001-0.001l0.001-0.001l0.001-0.001c0.003-0.001,0.001-0.001,0.002-0.002c0,0,0,0,0.001-0.001l0.001-0.001c0,0,0,0,0.001-0.001\n c0.112-0.116,0.182-0.273,0.183-0.447v-0.002v-0.001v-0.001v-0.001v-0.001v-0.001v-0.001v-0.002\n C111.045,111.345,110.889,111.121,110.667,111.02z\"\n />\n </g>\n </svg>\n )\n}\n","/* eslint-disable camelcase */\nimport React, {useCallback, useEffect, useRef, useState} from 'react'\nimport {Box, Button, Dialog, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {CloudinaryMediaLibrary, InsertHandlerParams} from '../../types'\nimport {createMediaLibrary, decodeSourceId, encodeFilename, encodeSourceId} from '../../utils'\nimport styled from 'styled-components'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace, Secrets} from '../SecretsConfigView'\nimport {AssetSourceComponentProps, ImageAsset} from 'sanity'\nimport {PlugIcon} from '@sanity/icons'\n\nexport const Widget = styled.div`\n height: 70vh;\n`\n\nexport function CloudinaryAssetSource(props: AssetSourceComponentProps) {\n const {onClose, dialogHeaderTitle} = props\n\n const [loadingMessage, setLoadingMessage] = useState<string | undefined>(\n 'Loading Cloudinary Media Libary'\n )\n const library = useRef<CloudinaryMediaLibrary | undefined>()\n const contentRef = useRef<HTMLDivElement | null>(null)\n const {secrets} = useSecrets<Secrets>(namespace)\n const cloudName = secrets?.cloudName\n const apiKey = secrets?.apiKey\n const [widgetId] = useState(() => `cloundinaryWidget-${Date.now()}`)\n const [showSettings, setShowSettings] = useState(false)\n\n const propsRef = useRef(props)\n\n useEffect(() => {\n // because we have to access props after loading js in a callback,\n // we cannot pass props as dependecnies as that will cause infinite updates\n // this takes a snapshot of props, so we can access them later\n propsRef.current = props\n }, [props])\n\n const handleClose = useCallback(() => {\n if (library.current) {\n library.current.hide()\n }\n onClose()\n }, [onClose, library])\n\n useEffect(() => {\n if (!cloudName || !apiKey) {\n return\n }\n\n createMediaLibrary({\n cloudName,\n apiKey,\n inlineContainer: `#${widgetId}`,\n libraryCreated: (lib: CloudinaryMediaLibrary) => {\n library.current = lib\n const selectedAssets = propsRef.current.selectedAssets\n const firstSelectedAsset = selectedAssets ? selectedAssets[0] : null\n\n // eslint-disable-next-line no-undef\n const iframe: ChildNode | null | undefined =\n contentRef.current && contentRef.current.firstChild\n if (iframe && iframe instanceof HTMLIFrameElement) {\n setLoadingMessage(undefined)\n let asset\n if (\n propsRef.current.selectionType === 'single' &&\n firstSelectedAsset &&\n firstSelectedAsset.source &&\n firstSelectedAsset.source.id\n ) {\n asset = decodeSourceId(firstSelectedAsset.source.id)\n }\n const folder = asset\n ? {\n path: asset.public_id.split('/').slice(0, -1).join('/'),\n resource_type: 'image',\n }\n : {path: '', resource_type: 'image'}\n if (lib && contentRef.current) {\n lib.show({folder, asset})\n contentRef.current.style.visibility = 'visible'\n }\n }\n },\n insertHandler: ({assets}: InsertHandlerParams) => {\n if (!library.current) {\n return\n }\n const imageAssets = assets.filter((asset) => asset.resource_type === 'image')\n if (imageAssets.length === 0) {\n throw new Error('The selection did not contain any images.')\n }\n library.current.hide()\n propsRef.current.onSelect(\n imageAssets.map((asset) => {\n const url =\n asset.derived && asset.derived[0] ? asset.derived[0].secure_url : asset.secure_url\n return {\n kind: 'url',\n value: url,\n assetDocumentProps: {\n _type: 'sanity.imageAsset',\n originalFilename: encodeFilename(asset),\n source: {\n id: encodeSourceId(asset),\n name: `cloudinary:${cloudName}`,\n },\n } as ImageAsset,\n }\n })\n )\n },\n })\n }, [cloudName, apiKey, widgetId])\n\n const hasConfig = apiKey && cloudName\n return (\n <Dialog\n id=\"cloudinary-asset-source\"\n header={dialogHeaderTitle ?? 'Select image from Cloudinary'}\n onClose={handleClose}\n open\n width={4}\n >\n <Box padding={4}>\n {showSettings && <SecretsConfigView onClose={() => setShowSettings(false)} />}\n <Flex flex={1} justify=\"flex-end\">\n <Button\n color=\"primary\"\n icon={PlugIcon}\n mode=\"bleed\"\n title=\"Configure\"\n onClick={() => setShowSettings(true)}\n tabIndex={1}\n text={hasConfig ? undefined : 'Configure Cloudinary plugin'}\n />\n </Flex>\n\n {hasConfig && loadingMessage && (\n <Stack space={3}>\n <Flex align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n <Text size={1} muted align=\"center\">\n {loadingMessage}\n </Text>\n </Stack>\n )}\n\n <Widget style={{visibility: 'hidden'}} ref={contentRef} id={widgetId} />\n </Box>\n </Dialog>\n )\n}\n","import {defineType} from 'sanity'\n\nexport interface CloudinaryAssetContext {\n custom: object\n}\n\nexport const cloudinaryAssetContext = defineType({\n type: 'object',\n name: 'cloudinary.assetContext',\n fields: [\n {\n type: 'cloudinary.assetContextCustom',\n name: 'custom',\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport type CloudinaryAssetContextCustom = {\n alt: string\n caption: string\n}\n\nexport const cloudinaryAssetContextCustom = defineType({\n type: 'object',\n name: 'cloudinary.assetContextCustom',\n fields: [\n {\n type: 'string',\n name: 'alt',\n },\n {\n type: 'string',\n name: 'caption',\n },\n ],\n})\n","import React, {useCallback} from 'react'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {\n ArrayInputFunctionsProps,\n ArrayOfObjectsFunctions,\n ArraySchemaType,\n insert,\n ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n} from 'sanity'\n\nimport {useSecrets} from '@sanity/studio-secrets'\nimport SecretsConfigView, {namespace} from './SecretsConfigView'\nimport {cloudinaryAssetSchema} from '../schema/cloudinaryAsset'\nimport {openMediaSelector} from '../utils'\nimport {InsertHandlerParams} from '../types'\nimport {PlugIcon} from '@sanity/icons'\n\ninterface ApiConfig {\n cloudName: string\n apiKey: string\n}\n\nexport const AssetListFunctions = (\n props: ArrayInputFunctionsProps<{_key: string}, ArraySchemaType>\n) => {\n const {onValueCreate, onChange} = props\n\n const {secrets, loading} = useSecrets<ApiConfig>(namespace)\n const [showSettings, setShowSettings] = React.useState(false)\n\n const show = useCallback(() => setShowSettings(true), [setShowSettings])\n const hide = useCallback(() => setShowSettings(false), [setShowSettings])\n\n const cloudinaryType = props.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n ) as ObjectSchemaType | undefined\n\n if (!cloudinaryType) {\n throw new Error(`AssetListFunctions can only be used in array.of ${\n cloudinaryAssetSchema.name\n }, but it was array.of\n ${props.schemaType.of.map((t) => t.name)}`)\n }\n\n const handleSelect = useCallback(\n (selected: InsertHandlerParams) => {\n const items = selected.assets.map((asset) =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onValueCreate(cloudinaryType as any) // onValueCreate is mistyped\n )\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n },\n [onValueCreate, onChange, cloudinaryType]\n )\n\n const handleOpenSelector = useCallback(\n () =>\n secrets &&\n openMediaSelector(\n secrets.cloudName,\n secrets.apiKey,\n true, // multi-selection\n handleSelect\n ),\n [secrets, handleSelect]\n )\n return (\n <Flex gap={2} flex={1}>\n {showSettings && <SecretsConfigView onClose={hide} />}\n <Box flex={1}>\n <ArrayOfObjectsFunctions {...props} />\n </Box>\n {cloudinaryType && (\n <>\n <Box flex={1}>\n <Button\n style={{width: '100%'}}\n disabled={props.readOnly || loading}\n mode=\"bleed\"\n text=\"Add multiple\"\n onClick={handleOpenSelector}\n />\n </Box>\n <Box>\n <Button onClick={show} icon={PlugIcon} mode=\"bleed\" title={'Configure'} />\n </Box>\n </>\n )}\n </Flex>\n )\n}\n","import {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {\n definePlugin,\n AssetSource,\n ArrayOfObjectsInputProps,\n isArrayOfObjectsSchemaType,\n} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\nimport {cloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nimport {cloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\nimport {AssetListFunctions} from './components/AssetListFunctions'\n\nexport {type CloudinaryAssetContext} from './schema/cloudinaryAssetContext'\nexport {type CloudinaryAssetDerived} from './schema/cloudinaryAssetDerived'\nexport {type CloudinaryAssetContextCustom} from './schema/cloudinaryAssetContextCustom'\n\nexport type {AssetDocument, CloudinaryAsset} from './types'\n\nexport {\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n if (isArrayOfObjectsSchemaType(schemaType)) {\n const arrayProps = props as ArrayOfObjectsInputProps\n const cloudinaryType = arrayProps.schemaType.of.find(\n (t: {name: string}) => t.name === cloudinaryAssetSchema.name\n )\n if (cloudinaryType) {\n return arrayProps.renderDefault({...arrayProps, arrayFunctions: AssetListFunctions})\n }\n }\n return props.renderDefault(props)\n },\n },\n },\n schema: {\n types: [\n cloudinaryAssetSchema,\n cloudinaryAssetDerivedSchema,\n cloudinaryAssetContext,\n cloudinaryAssetContextCustom,\n ],\n },\n})\n\nexport const cloudinaryImageSource: AssetSource = {\n name: 'cloudinary-image',\n title: 'Cloudinary',\n icon: CloudinaryIcon,\n component: CloudinaryAssetSource,\n}\n\nexport const cloudinaryAssetSourcePlugin = definePlugin({\n name: 'cloudinart-asset-source',\n form: {\n image: {\n assetSources: [cloudinaryImageSource],\n },\n },\n})\n"],"names":["VideoPlayer","props","src","style","width","height","jsx","controls","children","type","widgetSrc","assetUrl","asset","derived","length","secure_url","url","openMediaSelector","cloudName","apiKey","multiple","insertHandler","selectedAsset","loadJS","options","cloud_name","api_key","insert_caption","public_id","resource_type","window","cloudinary","openMediaLibrary","createMediaLibrary","_ref","inlineContainer","libraryCreated","inline_container","remove_header","callback","existingScript","document","getElementById","script","createElement","id","body","appendChild","onload","encodeSourceId","btoa","JSON","stringify","encodeFilename","split","slice","format","decodeSourceId","sourceId","sourceIdDecoded","parse","atob","err","AssetPreview","_ref2","value","layout","Flex","align","maxWidth","kind","alt","SetupButtonContainer","styled","default","div","WidgetInput","onChange","readOnly","removeValue","useCallback","PatchEvent","from","unset","Stack","flex","justify","Button","color","icon","PlugIcon","mode","title","onClick","onSetup","tabIndex","textAlign","marginBottom","jsxs","Grid","gap","gridTemplateColumns","disabled","tone","text","pluginConfigKeys","key","description","namespace","SecretsConfigView","SettingsView","keys","onClose","CloudinaryInput","showSettings","setShowSettings","useState","secrets","useSecrets","schemaType","handleSelect","payload","assets","updatedAsset","context","objectWithRenamedKeys","Object","fromEntries","entries","custom","map","_ref3","contextKey","contextValue","replace","set","assign","_type","name","_version","_key","nanoid","action","Fragment","CloudinaryDiffPreview","_ref4","display","flexWrap","justifyContent","AssetDiff","_ref5","diff","DiffFromTo","previewComponent","cloudinaryAssetSchema","defineType","fields","of","components","input","preview","select","prepare","_ref6","cloudinaryAssetDerivedSchema","CloudinaryIcon","version","x","y","viewBox","enableBackground","fill","d","Widget","CloudinaryAssetSource","dialogHeaderTitle","loadingMessage","setLoadingMessage","library","useRef","contentRef","widgetId","Date","now","propsRef","useEffect","current","handleClose","hide","lib","selectedAssets","firstSelectedAsset","iframe","firstChild","HTMLIFrameElement","selectionType","source","folder","path","join","show","visibility","_ref7","imageAssets","filter","Error","onSelect","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","Box","padding","space","Spinner","muted","Text","size","ref","cloudinaryAssetContext","cloudinaryAssetContextCustom","AssetListFunctions","onValueCreate","loading","React","cloudinaryType","find","t","selected","items","setIfMissing","insert","handleOpenSelector","ArrayOfObjectsFunctions","cloudinarySchemaPlugin","definePlugin","form","isArrayOfObjectsSchemaType","arrayProps","renderDefault","arrayFunctions","schema","types","cloudinaryImageSource","component","cloudinaryAssetSourcePlugin","image","assetSources"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sanity-plugin-cloudinary",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Cloudinary integration for Sanity Studio V3.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@sanity/icons": "^2.0.0",
|
|
51
51
|
"@sanity/incompatible-plugin": "^1.0.4",
|
|
52
|
-
"@sanity/studio-secrets": "^
|
|
53
|
-
"@sanity/ui": "^
|
|
52
|
+
"@sanity/studio-secrets": "^3.0.0",
|
|
53
|
+
"@sanity/ui": "^2.8.25",
|
|
54
54
|
"nanoid": "^4.0.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
@@ -14,7 +14,7 @@ export const Widget = styled.div`
|
|
|
14
14
|
`
|
|
15
15
|
|
|
16
16
|
export function CloudinaryAssetSource(props: AssetSourceComponentProps) {
|
|
17
|
-
const {onClose} = props
|
|
17
|
+
const {onClose, dialogHeaderTitle} = props
|
|
18
18
|
|
|
19
19
|
const [loadingMessage, setLoadingMessage] = useState<string | undefined>(
|
|
20
20
|
'Loading Cloudinary Media Libary'
|
|
@@ -118,7 +118,7 @@ export function CloudinaryAssetSource(props: AssetSourceComponentProps) {
|
|
|
118
118
|
return (
|
|
119
119
|
<Dialog
|
|
120
120
|
id="cloudinary-asset-source"
|
|
121
|
-
header=
|
|
121
|
+
header={dialogHeaderTitle ?? 'Select image from Cloudinary'}
|
|
122
122
|
onClose={handleClose}
|
|
123
123
|
open
|
|
124
124
|
width={4}
|