sanity-plugin-cloudinary 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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/AssetDiff.tsx","../src/schema/cloudinaryAsset.ts","../src/components/CloudinaryInput.tsx","../src/schema/cloudinaryAssetDerived.ts","../src/components/asset-source/CloudinaryAssetSource.tsx","../src/index.ts","../src/components/asset-source/Icon.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport videojs, { VideoJsPlayer } from 'video.js';\n\ntype PlayerKind = 'player' | 'diff';\n\nexport type VideoPlayerProps = {\n src: string;\n kind: PlayerKind;\n};\n\nexport default class VideoPlayer extends React.Component<\n VideoPlayerProps,\n any\n> {\n videoNode?: HTMLVideoElement;\n player?: VideoJsPlayer;\n\n componentDidMount() {\n const { src } = this.props;\n this.player = videojs(this.videoNode, {\n sources: [{ src }],\n controls: true,\n });\n }\n\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose();\n }\n }\n\n render() {\n const { kind } = this.props;\n const className: Record<PlayerKind, string> = {\n player: 'video-js vjs-16-9 vjs-big-play-centered',\n diff: 'video-js vjs-layout-tiny vjs-fluid',\n };\n\n const style: CSSProperties = { position: 'relative' };\n\n return (\n <div>\n <link\n href=\"https://vjs.zencdn.net/7.8.4/video-js.css\"\n rel=\"stylesheet\"\n />\n <div data-vjs-player>\n <video\n onClick={event => event.stopPropagation()}\n style={kind === 'diff' ? style : {}}\n className={className[kind]}\n ref={node => {\n if (node) {\n this.videoNode = node;\n }\n }}\n ></video>\n </div>\n </div>\n );\n }\n}\n","/* eslint-disable camelcase */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './typings'\n\nconst widgetSrc = 'https://media-library.cloudinary.com/global/all.js'\n\nexport function assetUrl(asset: CloudinaryAsset) {\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 {Box} from '@sanity/ui'\nimport {CloudinaryAsset} from '../typings'\n\ntype 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 <Box>\n <VideoPlayer src={url} kind=\"player\" />\n </Box>\n )\n default:\n return (\n <Box>\n <img\n alt=\"preview\"\n src={url}\n style={{\n maxWidth: layout === 'default' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Box>\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 '../typings'\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'}} 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 from 'react'\nimport {DiffFromTo} from 'sanity'\nimport VideoPlayer from './VideoPlayer'\nimport {assetUrl} from '../utils'\nimport {CloudinaryAsset} from '../typings'\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') {\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 // context array of unknown content\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 resource_type,\n url: derived || url,\n }\n },\n },\n})\n","import React, {useCallback, useState} from 'react'\nimport WidgetInput from './WidgetInput'\nimport {nanoid} from 'nanoid'\nimport {ObjectInputProps, PatchEvent, set} from 'sanity'\nimport {CloudinaryAsset} from '../typings'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../typings'\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 if (!asset) {\n return\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 asset\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 {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","/* 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 '../../typings'\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 {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {definePlugin, AssetSource} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\n\nexport {cloudinaryAssetSchema, cloudinaryAssetDerivedSchema}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n schema: {\n types: [cloudinaryAssetSchema, cloudinaryAssetDerivedSchema],\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","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"],"names":["VideoPlayer","React","Component","componentDidMount","src","this","props","player","videojs","videoNode","sources","controls","componentWillUnmount","dispose","render","kind","jsxs","children","jsx","href","rel","onClick","event","stopPropagation","style","position","className","diff","ref","node","widgetSrc","assetUrl","asset","derived","length","secure_url","url","loadJS","callback","existingScript","document","getElementById","script","createElement","id","body","appendChild","onload","encodeSourceId","resource_type","public_id","type","btoa","JSON","stringify","encodeFilename","split","slice","format","AssetPreview","_ref2","value","layout","Box","alt","maxWidth","height","SetupButtonContainer","styled","div","_templateObject","_taggedTemplateLiteral","WidgetInput","onChange","readOnly","openMediaSelector","removeValue","useCallback","PatchEvent","from","unset","Stack","Flex","flex","justify","Button","color","icon","PlugIcon","mode","title","onSetup","tabIndex","textAlign","marginBottom","Grid","gap","gridTemplateColumns","disabled","tone","text","pluginConfigKeys","key","description","SecretsConfigView","SettingsView","namespace","keys","onClose","CloudinaryDiffPreview","_ref3","display","flexWrap","justifyContent","cloudinaryAssetSchema","defineType","_objectSpread","name","fields","of","components","input","showSettings","setShowSettings","useState","secrets","useSecrets","schemaType","handleSelect","payload","assets","set","Object","assign","_type","_version","_key","nanoid","action","cloudName","apiKey","multiple","insertHandler","selectedAsset","options","cloud_name","api_key","insert_caption","window","cloudinary","openMediaLibrary","Fragment","_ref4","DiffFromTo","previewComponent","preview","select","prepare","_ref5","cloudinaryAssetDerivedSchema","Widget","_templateObject2","cloudinarySchemaPlugin","definePlugin","schema","types","cloudinaryImageSource","version","x","y","width","viewBox","enableBackground","fill","d","component","loadingMessage","setLoadingMessage","library","useRef","contentRef","widgetId","concat","Date","now","propsRef","useEffect","current","handleClose","hide","_ref","inlineContainer","libraryCreated","inline_container","remove_header","createMediaLibrary","lib","selectedAssets","firstSelectedAsset","iframe","firstChild","HTMLIFrameElement","selectionType","source","sourceId","sourceIdDecoded","parse","atob","err","decodeSourceId","folder","path","join","show","visibility","_ref6","imageAssets","filter","Error","onSelect","map","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","padding","space","align","Spinner","muted","Text","size","cloudinaryAssetSourcePlugin","form","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/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 */\nimport {\n CloudinaryAsset,\n CloudinaryAssetResponse,\n CloudinaryMediaLibrary,\n InsertHandlerParams,\n} from './typings'\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 '../typings'\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 '../typings'\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 '../typings'\nimport {useSecrets} from '@sanity/studio-secrets'\nimport {InsertHandlerParams} from '../typings'\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 if (!asset) {\n return\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 asset\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 '../typings'\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 // context array of unknown content\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 '../../typings'\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 {cloudinaryAssetSchema} from './schema/cloudinaryAsset'\nimport {cloudinaryAssetDerivedSchema} from './schema/cloudinaryAssetDerived'\nimport {definePlugin, AssetSource} from 'sanity'\nimport {CloudinaryIcon} from './components/asset-source/Icon'\nimport {CloudinaryAssetSource} from './components/asset-source/CloudinaryAssetSource'\n\nexport {cloudinaryAssetSchema, cloudinaryAssetDerivedSchema}\n\nexport const cloudinarySchemaPlugin = definePlugin({\n name: 'cloudinary-schema',\n schema: {\n types: [cloudinaryAssetSchema, cloudinaryAssetDerivedSchema],\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","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","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","set","Object","assign","_type","name","_version","_key","nanoid","action","Fragment","CloudinaryDiffPreview","display","flexWrap","justifyContent","AssetDiff","diff","DiffFromTo","previewComponent","cloudinaryAssetSchema","defineType","fields","of","components","input","preview","select","prepare","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","imageAssets","filter","Error","onSelect","map","assetDocumentProps","originalFilename","hasConfig","Dialog","header","open","Box","padding","space","Spinner","muted","Text","size","ref","cloudinarySchemaPlugin","definePlugin","schema","types","cloudinaryImageSource","component","cloudinaryAssetSourcePlugin","form","image","assetSources"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "sanity-plugin-cloudinary",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Cloudinary integration for Sanity Studio V3.",
5
+ "keywords": [
6
+ "sanity",
7
+ "sanity-plugin"
8
+ ],
5
9
  "homepage": "https://github.com/sanity-io/sanity-plugin-cloudinary#readme",
6
10
  "bugs": {
7
11
  "url": "https://github.com/sanity-io/sanity-plugin-cloudinary/issues"
@@ -14,10 +18,10 @@
14
18
  "author": "Sanity.io <hello@sanity.io>",
15
19
  "exports": {
16
20
  ".": {
17
- "types": "./lib/src/index.d.ts",
21
+ "types": "./lib/index.d.ts",
18
22
  "source": "./src/index.ts",
19
- "import": "./lib/index.esm.js",
20
23
  "require": "./lib/index.js",
24
+ "import": "./lib/index.esm.js",
21
25
  "default": "./lib/index.esm.js"
22
26
  },
23
27
  "./package.json": "./package.json"
@@ -25,22 +29,22 @@
25
29
  "main": "./lib/index.js",
26
30
  "module": "./lib/index.esm.js",
27
31
  "source": "./src/index.ts",
28
- "types": "./lib/src/index.d.ts",
32
+ "types": "./lib/index.d.ts",
29
33
  "files": [
30
- "src",
31
34
  "lib",
32
- "v2-incompatible.js",
33
- "sanity.json"
35
+ "sanity.json",
36
+ "src",
37
+ "v2-incompatible.js"
34
38
  ],
35
39
  "scripts": {
36
- "prebuild": "npm run clean && plugin-kit verify-package --silent && pkg-utils",
37
- "build": "pkg-utils build --strict",
40
+ "build": "run-s clean && plugin-kit verify-package --silent && pkg-utils build --strict && pkg-utils --strict",
38
41
  "clean": "rimraf lib",
39
42
  "link-watch": "plugin-kit link-watch",
40
43
  "lint": "eslint .",
41
44
  "prepare": "husky install",
42
- "prepublishOnly": "npm run build",
43
- "watch": "pkg-utils watch"
45
+ "prepublishOnly": "run-s build",
46
+ "watch": "pkg-utils watch --strict",
47
+ "format": "prettier --write --cache --ignore-unknown ."
44
48
  },
45
49
  "dependencies": {
46
50
  "@sanity/icons": "^2.0.0",
@@ -48,40 +52,42 @@
48
52
  "@sanity/studio-secrets": "^2.0.1",
49
53
  "@sanity/ui": "^1.0.0",
50
54
  "nanoid": "^3.1.22",
51
- "styled-components": "^5.2.1",
52
- "video.js": "^7.11.7"
55
+ "styled-components": "^5.2.1"
53
56
  },
54
57
  "devDependencies": {
55
58
  "@commitlint/cli": "^17.2.0",
56
59
  "@commitlint/config-conventional": "^17.2.0",
57
- "@sanity/pkg-utils": "^1.17.2",
58
- "@sanity/plugin-kit": "^2.1.6",
60
+ "@sanity/pkg-utils": "^2.2.5",
61
+ "@sanity/plugin-kit": "^3.1.6",
59
62
  "@sanity/semantic-release-preset": "^2.0.2",
60
- "@types/react": "^18",
63
+ "@types/react": "^18.0.28",
61
64
  "@types/styled-components": "^5.1.26",
62
- "@types/video.js": "^7.3.15",
63
- "@typescript-eslint/eslint-plugin": "^5.42.0",
64
- "@typescript-eslint/parser": "^5.42.0",
65
- "eslint": "^8.26.0",
66
- "eslint-config-prettier": "^8.5.0",
65
+ "@typescript-eslint/eslint-plugin": "^5.52.0",
66
+ "@typescript-eslint/parser": "^5.52.0",
67
+ "eslint": "^8.34.0",
68
+ "eslint-config-prettier": "^8.6.0",
67
69
  "eslint-config-sanity": "^6.0.0",
68
70
  "eslint-plugin-prettier": "^4.2.1",
69
- "eslint-plugin-react": "^7.31.10",
71
+ "eslint-plugin-react": "^7.32.2",
70
72
  "eslint-plugin-react-hooks": "^4.6.0",
71
73
  "husky": "^8.0.1",
72
74
  "lint-staged": "^13.0.3",
75
+ "npm-run-all": "^4.1.5",
73
76
  "postcss": "^8.0.0",
74
- "prettier": "^2.7.1",
75
- "prettier-plugin-packagejson": "^2.3.0",
76
- "react": "^18",
77
- "rimraf": "^3.0.2",
78
- "sanity": "^3.0.0",
79
- "typescript": "^4.8.4"
77
+ "prettier": "^2.8.4",
78
+ "prettier-plugin-packagejson": "^2.4.3",
79
+ "react": "^18.2.0",
80
+ "react-dom": "^18.2.0",
81
+ "react-is": "^18.2.0",
82
+ "rimraf": "^4.1.2",
83
+ "sanity": "^3.4.0",
84
+ "styled-components": "^5.3.6",
85
+ "typescript": "^4.9.5"
80
86
  },
81
87
  "peerDependencies": {
82
88
  "react": "^18",
83
89
  "react-dom": "^18",
84
- "sanity": "^3.0.0"
90
+ "sanity": "^3"
85
91
  },
86
92
  "engines": {
87
93
  "node": ">=14"
@@ -15,7 +15,7 @@ const CloudinaryDiffPreview = ({value}: Props) => {
15
15
 
16
16
  const url = assetUrl(value)
17
17
 
18
- if (value.resource_type === 'video') {
18
+ if (value.resource_type === 'video' && url) {
19
19
  return (
20
20
  <section
21
21
  style={{
@@ -1,10 +1,10 @@
1
1
  import React from 'react'
2
2
  import VideoPlayer from './VideoPlayer'
3
3
  import {assetUrl} from '../utils'
4
- import {Box} from '@sanity/ui'
4
+ import {Flex} from '@sanity/ui'
5
5
  import {CloudinaryAsset} from '../typings'
6
6
 
7
- type ComponentProps = {
7
+ interface ComponentProps {
8
8
  layout?: 'default' | 'block'
9
9
  value: CloudinaryAsset | undefined
10
10
  }
@@ -18,13 +18,18 @@ const AssetPreview = ({value, layout}: ComponentProps) => {
18
18
  switch (value.resource_type) {
19
19
  case 'video':
20
20
  return (
21
- <Box>
21
+ <Flex
22
+ align="center"
23
+ style={{
24
+ maxWidth: layout === 'default' ? '80px' : '100%',
25
+ }}
26
+ >
22
27
  <VideoPlayer src={url} kind="player" />
23
- </Box>
28
+ </Flex>
24
29
  )
25
30
  default:
26
31
  return (
27
- <Box>
32
+ <Flex align="center">
28
33
  <img
29
34
  alt="preview"
30
35
  src={url}
@@ -33,7 +38,7 @@ const AssetPreview = ({value, layout}: ComponentProps) => {
33
38
  height: 'auto',
34
39
  }}
35
40
  />
36
- </Box>
41
+ </Flex>
37
42
  )
38
43
  }
39
44
  }
@@ -1,62 +1,24 @@
1
- import React, { CSSProperties } from 'react';
2
- import videojs, { VideoJsPlayer } from 'video.js';
1
+ import React, {CSSProperties} from 'react'
3
2
 
4
- type PlayerKind = 'player' | 'diff';
3
+ type PlayerKind = 'player' | 'diff'
5
4
 
6
5
  export type VideoPlayerProps = {
7
- src: string;
8
- kind: PlayerKind;
9
- };
10
-
11
- export default class VideoPlayer extends React.Component<
12
- VideoPlayerProps,
13
- any
14
- > {
15
- videoNode?: HTMLVideoElement;
16
- player?: VideoJsPlayer;
6
+ src: string
7
+ // eslint-disable-next-line react/no-unused-prop-types
8
+ kind: PlayerKind
9
+ }
17
10
 
18
- componentDidMount() {
19
- const { src } = this.props;
20
- this.player = videojs(this.videoNode, {
21
- sources: [{ src }],
22
- controls: true,
23
- });
24
- }
11
+ export default function VideoPlayer(props: VideoPlayerProps) {
12
+ const {src} = props
25
13
 
26
- componentWillUnmount() {
27
- if (this.player) {
28
- this.player.dispose();
29
- }
14
+ const style: CSSProperties = {
15
+ width: '100%',
16
+ height: 'auto',
30
17
  }
31
18
 
32
- render() {
33
- const { kind } = this.props;
34
- const className: Record<PlayerKind, string> = {
35
- player: 'video-js vjs-16-9 vjs-big-play-centered',
36
- diff: 'video-js vjs-layout-tiny vjs-fluid',
37
- };
38
-
39
- const style: CSSProperties = { position: 'relative' };
40
-
41
- return (
42
- <div>
43
- <link
44
- href="https://vjs.zencdn.net/7.8.4/video-js.css"
45
- rel="stylesheet"
46
- />
47
- <div data-vjs-player>
48
- <video
49
- onClick={event => event.stopPropagation()}
50
- style={kind === 'diff' ? style : {}}
51
- className={className[kind]}
52
- ref={node => {
53
- if (node) {
54
- this.videoNode = node;
55
- }
56
- }}
57
- ></video>
58
- </div>
59
- </div>
60
- );
61
- }
19
+ return (
20
+ <video controls style={style}>
21
+ <source src={src} type="video/mp4" />
22
+ </video>
23
+ )
62
24
  }
@@ -37,7 +37,7 @@ const WidgetInput = (props: WidgetInputProps) => {
37
37
  </Flex>
38
38
  </SetupButtonContainer>
39
39
 
40
- <Flex style={{textAlign: 'center'}} marginBottom={2}>
40
+ <Flex style={{textAlign: 'center', width: '100%'}} marginBottom={2}>
41
41
  <AssetPreview value={value as CloudinaryAsset} />
42
42
  </Flex>
43
43
 
@@ -93,8 +93,11 @@ export const cloudinaryAssetSchema = defineType({
93
93
  prepare({url, derived, resource_type}) {
94
94
  return {
95
95
  title: url,
96
- resource_type,
97
- url: derived || url,
96
+ value: {
97
+ title: url,
98
+ resource_type,
99
+ url: derived || url,
100
+ },
98
101
  }
99
102
  },
100
103
  },
package/src/utils.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  const widgetSrc = 'https://media-library.cloudinary.com/global/all.js'
10
10
 
11
- export function assetUrl(asset: CloudinaryAsset) {
11
+ export function assetUrl(asset: Partial<Pick<CloudinaryAsset, 'url' | 'secure_url' | 'derived'>>) {
12
12
  if (asset.derived && asset.derived.length > 0) {
13
13
  const [derived] = asset.derived
14
14
  if (derived.secure_url) {