sanity-plugin-aprimo
2.0.162.0.17
dist/index.js.map~
dist/index.js.mapModified+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["openSelector","tenantName","selectType","assetType","selectorOptions","title","description","accept","select","params","encodedOptions","btoa","JSON","stringify","window","open","Box","AprimoCDNAsset","ComponentProps","layout","value","title","AprimoCDNPreview","t0","$","_c","t1","undefined","url","rendition","publicuri","t2","t3","t4","maxWidth","height","t5","Card","Box","Flex","Stack","Text","Label","Button","useCallback","AprimoAsset","AprimoFilePreviewProps","value","tenantName","AprimoFilePreview","t0","$","_c","title","additionalFile","id","assetName","fileName","damUrl","t1","window","open","onClick","t2","Symbol","for","t3","t4","t5","Box","Button","Card","Grid","Text","useEffect","useState","useMemo","PatchEvent","ObjectInputProps","set","unset","AprimoCDNAsset","AprimoAsset","AprimoConfig","openSelector","AprimoCDNPreview","AprimoFilePreview","isAprimoCDNAsset","value","hasOwnProperty","isAprimoAsset","AprimoWidgetProps","pluginConfig","AprimoWidget","props","$","_c","readOnly","onChange","schemaType","t0","tenantName","_key","t1","from","removeValue","isLoading","setIsLoading","t2","t3","setAsset","asset","handleMessageEvent","event","origin","data","result","selection","window","addEventListener","removeEventListener","t4","name","selectType","action","t5","bb0","t6","preview","Symbol","for","t7","gridTemplateColumns","t8","t9","t10","t11","t12","defineType","AprimoAdditionalFileSchema","name","title","type","fields","AprimoWidget","AprimoAssetSchema","type","name","title","fields","components","input","DiffFromTo","SchemaType","AprimoCDNPreview","AprimoDiff","t0","$","_c","diff","schemaType","t1","AprimoDiff","AprimoWidget","AprimoCDNAssetSchema","type","name","title","fields","components","input","diff","preview","select","url","prepare","media","height","width","definePlugin","isObjectInputProps","SchemaType","AprimoWidget","AprimoAdditionalFileSchema","AprimoAssetSchema","AprimoCDNAssetSchema","AprimoCDNAsset","AprimoConfig","aprimoPlugin","config","Partial","reqConfig","tenantName","name","schema","types","form","components","input","props","isType","schemaType","value","renderDefault","type"],"sources":["../src/utils.ts","../src/components/AprimoCDNPreview.tsx","../src/components/AprimoFilePreview.tsx","../src/components/AprimoWidget.tsx","../src/schema/AdditionalFile.ts","../src/schema/AprimoAsset.ts","../src/components/AprimoDiff.tsx","../src/schema/AprimoCDNAsset.tsx","../src/plugin.tsx"],"sourcesContent":["export const openSelector = (tenantName: string, selectType: string): void => {\n let assetType = 'asset rendition'\n switch (selectType) {\n case 'singlefile':\n assetType = 'asset file'\n break\n case 'multiple':\n assetType = 'asset renditions'\n break\n default:\n assetType = 'asset rendition'\n }\n\n const selectorOptions = {\n title: `Select ${assetType}`,\n description: `Select the ${assetType} you'd like to bring into this document`,\n accept: `Use ${assetType}`,\n select: selectType,\n }\n\n const params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,\n width=1000,height=600,left=100,top=100`\n\n const encodedOptions = btoa(JSON.stringify(selectorOptions))\n window.open(\n `https://${tenantName}.dam.aprimo.com/dam/selectcontent#options=${encodedOptions}`,\n 'selector',\n params,\n )\n}\n","import {Box} from '@sanity/ui'\n\nimport type {AprimoCDNAsset} from '../types'\n\ntype ComponentProps = {\n layout?: 'default' | 'block'\n value: AprimoCDNAsset\n title?: string\n}\n\nexport function AprimoCDNPreview({\n value,\n layout = 'block',\n}: ComponentProps): React.JSX.Element | null {\n const url = value?.rendition?.publicuri\n if (url) {\n return (\n <Box>\n <img\n alt={`preview for ${value?.title}`}\n src={url}\n style={{\n maxWidth: layout === 'block' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Box>\n )\n }\n return null\n}\n","import {Card, Box, Flex, Stack, Text, Label, Button} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport type {AprimoAsset} from '../types'\n\ninterface AprimoFilePreviewProps {\n value: AprimoAsset\n tenantName: string\n}\n\nexport function AprimoFilePreview({value, tenantName}: AprimoFilePreviewProps): React.JSX.Element {\n const {title, additionalFile, id} = value\n const assetName = additionalFile?.fileName || title || 'No name'\n const damUrl = `https://${tenantName}.dam.aprimo.com/Assets/Records/${id}`\n const onClick = useCallback(() => {\n window.open(damUrl, '_blank')\n }, [damUrl])\n return (\n <Box paddingY={1}>\n <Card paddingY={3} paddingX={3} radius={1} shadow={1}>\n <Flex align=\"center\" justify=\"space-between\" gap={1}>\n <Stack gap={3}>\n <Label as=\"p\">Aprimo File Asset</Label>\n <Text as=\"p\">{assetName}</Text>\n </Stack>\n <Stack>\n {/* ADD launch icon */}\n <Button\n tone=\"primary\"\n as={'a'}\n href={damUrl}\n target={`_blank`}\n onClick={onClick}\n text={'View'}\n />\n </Stack>\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {Box, Button, Card, Grid, Text} from '@sanity/ui'\nimport {useEffect, useState, useMemo} from 'react'\nimport {PatchEvent, type ObjectInputProps, set, unset} from 'sanity'\n\nimport type {AprimoCDNAsset, AprimoAsset, AprimoConfig} from '../types'\nimport {openSelector} from '../utils'\nimport {AprimoCDNPreview} from './AprimoCDNPreview'\nimport {AprimoFilePreview} from './AprimoFilePreview'\n\nconst isAprimoCDNAsset = (value: AprimoCDNAsset | AprimoAsset): value is AprimoCDNAsset => {\n return value && value.hasOwnProperty('rendition')\n}\n\nconst isAprimoAsset = (value: AprimoCDNAsset | AprimoAsset): value is AprimoAsset => {\n //the ID is all we need to construct a link back to Aprimo\n return value && value.hasOwnProperty('id')\n}\n\nexport interface AprimoWidgetProps extends ObjectInputProps<AprimoCDNAsset | AprimoAsset> {\n pluginConfig: AprimoConfig\n}\n\nexport function AprimoWidget(props: AprimoWidgetProps): React.JSX.Element {\n const {\n value,\n readOnly,\n onChange,\n schemaType,\n pluginConfig: {tenantName},\n } = props\n\n const _key = value?._key\n const removeValue = () => {\n onChange(PatchEvent.from(unset()))\n }\n\n //this keeps track of which component is requesting an asset\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n const setAsset = (asset: Record<string, any>) => {\n onChange(PatchEvent.from(asset ? set(asset) : unset()))\n }\n\n const handleMessageEvent = async (event: MessageEvent) => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (tenantName && event.origin === `https://${tenantName || ''}.dam.aprimo.com`) {\n //if cancel, get out of fetching state\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n } else if (event.data.selection && event.data.selection[0] && isLoading) {\n if (_key) {\n setAsset({...event.data.selection[0], _key})\n } else {\n setAsset(event.data.selection[0])\n }\n setIsLoading(false)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [tenantName, isLoading, _key, onChange])\n\n const action = () => {\n const selectType = schemaType.name === 'aprimo.cdnasset' ? 'singlerendition' : 'singlefile'\n setIsLoading(true)\n openSelector(tenantName, selectType)\n }\n\n const preview = useMemo(() => {\n if (value && schemaType.name === 'aprimo.cdnasset' && isAprimoCDNAsset(value)) {\n return <AprimoCDNPreview value={value} layout=\"default\" />\n } else if (value && schemaType.name === 'aprimo.asset' && isAprimoAsset(value)) {\n return <AprimoFilePreview value={value} tenantName={tenantName} />\n }\n return null\n }, [tenantName, schemaType, value])\n\n if (!tenantName) {\n return (\n <Box padding={3}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Text>\n The tenant name has not been set in the configuration for the Aprimo plugin. Please add\n a tenant name.\n </Text>\n </Card>\n </Box>\n )\n }\n\n return (\n <Box>\n <Box>{preview}</Box>\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button disabled={readOnly} mode=\"ghost\" title=\"Select an asset\" onClick={action}>\n Select…\n </Button>\n <Button\n disabled={readOnly || !value}\n color=\"danger\"\n mode=\"ghost\"\n title=\"Remove asset\"\n onClick={removeValue}\n >\n Remove\n </Button>\n </Grid>\n </Box>\n )\n}\n","import {defineType} from 'sanity'\n\nexport const AprimoAdditionalFileSchema = defineType({\n name: 'aprimo.additionalFile',\n title: 'Aprimo Additional File',\n type: 'object',\n fields: [\n {\n name: 'additionalFileId',\n title: 'Additional File ID',\n type: 'string',\n },\n {\n name: 'fileName',\n title: 'File Name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'type',\n title: 'Type',\n type: 'string',\n },\n ],\n})\n","import {AprimoWidget} from '../components/AprimoWidget'\n\nexport const AprimoAssetSchema = {\n type: 'object',\n name: 'aprimo.asset',\n title: 'Aprimo Asset',\n fields: [\n {\n type: 'string',\n name: 'id',\n },\n {\n type: 'string',\n name: 'title',\n },\n {\n type: 'aprimo.additionalFile',\n name: 'additionalFile',\n },\n ],\n components: {\n input: AprimoWidget,\n },\n}\n","import {DiffFromTo, type SchemaType} from 'sanity'\n\nimport {AprimoCDNPreview} from './AprimoCDNPreview'\n\n//@TODO: HUGE\nexport function AprimoDiff({\n diff,\n schemaType,\n}: {\n diff: any\n schemaType: SchemaType\n}): React.JSX.Element {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={AprimoCDNPreview} />\n}\n","import {AprimoDiff} from '../components/AprimoDiff'\nimport {AprimoWidget} from '../components/AprimoWidget'\n\nexport const AprimoCDNAssetSchema = {\n type: 'object',\n name: 'aprimo.cdnasset',\n title: 'Aprimo CDN Asset',\n fields: [\n {\n type: 'string',\n name: 'id',\n },\n {\n type: 'string',\n name: 'title',\n },\n {\n type: 'object',\n name: 'rendition',\n fields: [\n {\n type: 'string',\n name: 'publicuri',\n },\n ],\n },\n ],\n components: {\n input: AprimoWidget,\n diff: AprimoDiff,\n },\n preview: {\n select: {\n url: 'rendition.publicuri',\n title: 'title',\n },\n prepare({url, title}: {url: string; title: string}) {\n return {\n title,\n media: <img src={url} alt=\"\" style={{height: '100%', width: '100%'}} />,\n }\n },\n },\n}\n","import {definePlugin, isObjectInputProps, type SchemaType} from 'sanity'\n\nimport {AprimoWidget} from './components/AprimoWidget'\nimport {AprimoAdditionalFileSchema} from './schema/AdditionalFile'\nimport {AprimoAssetSchema} from './schema/AprimoAsset'\nimport {AprimoCDNAssetSchema} from './schema/AprimoCDNAsset'\nimport type {AprimoCDNAsset, AprimoConfig} from './types'\n\nexport const aprimoPlugin = definePlugin((config: Partial<AprimoConfig>) => {\n const reqConfig: AprimoConfig = {\n tenantName: '',\n ...config,\n }\n\n return {\n name: 'aprimo-assets',\n schema: {\n types: [AprimoCDNAssetSchema, AprimoAdditionalFileSchema, AprimoAssetSchema],\n },\n form: {\n components: {\n input: (props) => {\n if (\n isObjectInputProps(props) &&\n (isType(props.schemaType, AprimoCDNAssetSchema.name) ||\n isType(props.schemaType, AprimoAssetSchema.name))\n ) {\n return (\n // @ts-expect-error - TODO: fix this\n <AprimoWidget\n {...props}\n // oxlint-disable-next-line no-unsafe-type-assertion\n value={props.value as AprimoCDNAsset}\n pluginConfig={reqConfig}\n />\n )\n }\n //add array check here to render the widget in array\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n\nfunction isType(schemaType: SchemaType, name: string): boolean {\n if (schemaType.name === name) {\n return true\n }\n if (schemaType.type) {\n return isType(schemaType.type, name)\n }\n return false\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["openSelector","tenantName","selectType","assetType","selectorOptions","title","description","accept","select","params","encodedOptions","btoa","JSON","stringify","window","open","Box","AprimoCDNAsset","ComponentProps","layout","value","title","AprimoCDNPreview","t0","$","_c","t1","undefined","url","rendition","publicuri","t2","t3","t4","maxWidth","height","t5","Card","Box","Flex","Stack","Text","Label","Button","useCallback","AprimoAsset","AprimoFilePreviewProps","value","tenantName","AprimoFilePreview","t0","$","_c","title","additionalFile","id","assetName","fileName","damUrl","t1","window","open","onClick","t2","Symbol","for","t3","t4","t5","Box","Button","Card","Grid","Text","useEffect","useState","useMemo","PatchEvent","ObjectInputProps","set","unset","AprimoCDNAsset","AprimoAsset","AprimoConfig","openSelector","AprimoCDNPreview","AprimoFilePreview","isAprimoCDNAsset","value","hasOwnProperty","isAprimoAsset","AprimoWidgetProps","pluginConfig","AprimoWidget","props","$","_c","readOnly","onChange","schemaType","t0","tenantName","_key","t1","from","removeValue","isLoading","setIsLoading","t2","t3","setAsset","asset","handleMessageEvent","event","origin","data","result","selection","window","addEventListener","removeEventListener","t4","name","selectType","action","t5","bb0","t6","preview","Symbol","for","t7","gridTemplateColumns","t8","t9","t10","t11","t12","defineType","AprimoAdditionalFileSchema","name","title","type","fields","AprimoWidget","AprimoAssetSchema","type","name","title","fields","components","input","DiffFromTo","SchemaType","AprimoCDNPreview","AprimoDiff","t0","$","_c","diff","schemaType","t1","AprimoDiff","AprimoWidget","AprimoCDNAssetSchema","type","name","title","fields","components","input","diff","preview","select","url","prepare","media","height","width","definePlugin","isObjectInputProps","SchemaType","AprimoWidget","AprimoAdditionalFileSchema","AprimoAssetSchema","AprimoCDNAssetSchema","AprimoCDNAsset","AprimoConfig","aprimoPlugin","config","Partial","reqConfig","tenantName","name","schema","types","form","components","input","props","isType","schemaType","value","renderDefault","type"],"sources":["../src/utils.ts","../src/components/AprimoCDNPreview.tsx","../src/components/AprimoFilePreview.tsx","../src/components/AprimoWidget.tsx","../src/schema/AdditionalFile.ts","../src/schema/AprimoAsset.ts","../src/components/AprimoDiff.tsx","../src/schema/AprimoCDNAsset.tsx","../src/plugin.tsx"],"sourcesContent":["export const openSelector = (tenantName: string, selectType: string): void => {\n let assetType = 'asset rendition'\n switch (selectType) {\n case 'singlefile':\n assetType = 'asset file'\n break\n case 'multiple':\n assetType = 'asset renditions'\n break\n default:\n assetType = 'asset rendition'\n }\n\n const selectorOptions = {\n title: `Select ${assetType}`,\n description: `Select the ${assetType} you'd like to bring into this document`,\n accept: `Use ${assetType}`,\n select: selectType,\n }\n\n const params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,\n width=1000,height=600,left=100,top=100`\n\n const encodedOptions = btoa(JSON.stringify(selectorOptions))\n window.open(\n `https://${tenantName}.dam.aprimo.com/dam/selectcontent#options=${encodedOptions}`,\n 'selector',\n params,\n )\n}\n","import {Box} from '@sanity/ui'\n\nimport type {AprimoCDNAsset} from '../types'\n\ntype ComponentProps = {\n layout?: 'default' | 'block'\n value: AprimoCDNAsset\n title?: string\n}\n\nexport function AprimoCDNPreview({\n value,\n layout = 'block',\n}: ComponentProps): React.JSX.Element | null {\n const url = value?.rendition?.publicuri\n if (url) {\n return (\n <Box>\n <img\n alt={`preview for ${value?.title}`}\n src={url}\n style={{\n maxWidth: layout === 'block' ? '80px' : '100%',\n height: 'auto',\n }}\n />\n </Box>\n )\n }\n return null\n}\n","import {Card, Box, Flex, Stack, Text, Label, Button} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport type {AprimoAsset} from '../types'\n\ninterface AprimoFilePreviewProps {\n value: AprimoAsset\n tenantName: string\n}\n\nexport function AprimoFilePreview({value, tenantName}: AprimoFilePreviewProps): React.JSX.Element {\n const {title, additionalFile, id} = value\n const assetName = additionalFile?.fileName || title || 'No name'\n const damUrl = `https://${tenantName}.dam.aprimo.com/Assets/Records/${id}`\n const onClick = useCallback(() => {\n window.open(damUrl, '_blank')\n }, [damUrl])\n return (\n <Box paddingY={1}>\n <Card paddingY={3} paddingX={3} radius={1} shadow={1}>\n <Flex align=\"center\" justify=\"space-between\" gap={1}>\n <Stack gap={3}>\n <Label as=\"p\">Aprimo File Asset</Label>\n <Text as=\"p\">{assetName}</Text>\n </Stack>\n <Stack>\n {/* ADD launch icon */}\n <Button\n tone=\"primary\"\n as={'a'}\n href={damUrl}\n target={`_blank`}\n onClick={onClick}\n text={'View'}\n />\n </Stack>\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {Box, Button, Card, Grid, Text} from '@sanity/ui'\nimport {useEffect, useState, useMemo} from 'react'\nimport {PatchEvent, type ObjectInputProps, set, unset} from 'sanity'\n\nimport type {AprimoCDNAsset, AprimoAsset, AprimoConfig} from '../types'\nimport {openSelector} from '../utils'\nimport {AprimoCDNPreview} from './AprimoCDNPreview'\nimport {AprimoFilePreview} from './AprimoFilePreview'\n\nconst isAprimoCDNAsset = (value: AprimoCDNAsset | AprimoAsset): value is AprimoCDNAsset => {\n return value && value.hasOwnProperty('rendition')\n}\n\nconst isAprimoAsset = (value: AprimoCDNAsset | AprimoAsset): value is AprimoAsset => {\n //the ID is all we need to construct a link back to Aprimo\n return value && value.hasOwnProperty('id')\n}\n\nexport interface AprimoWidgetProps extends ObjectInputProps<AprimoCDNAsset | AprimoAsset> {\n pluginConfig: AprimoConfig\n}\n\nexport function AprimoWidget(props: AprimoWidgetProps): React.JSX.Element {\n const {\n value,\n readOnly,\n onChange,\n schemaType,\n pluginConfig: {tenantName},\n } = props\n\n const _key = value?._key\n const removeValue = () => {\n onChange(PatchEvent.from(unset()))\n }\n\n //this keeps track of which component is requesting an asset\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n const setAsset = (asset: Record<string, any>) => {\n onChange(PatchEvent.from(asset ? set(asset) : unset()))\n }\n\n const handleMessageEvent = async (event: MessageEvent) => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (tenantName && event.origin === `https://${tenantName || ''}.dam.aprimo.com`) {\n //if cancel, get out of fetching state\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n } else if (event.data.selection && event.data.selection[0] && isLoading) {\n if (_key) {\n setAsset({...event.data.selection[0], _key})\n } else {\n setAsset(event.data.selection[0])\n }\n setIsLoading(false)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [tenantName, isLoading, _key, onChange])\n\n const action = () => {\n const selectType = schemaType.name === 'aprimo.cdnasset' ? 'singlerendition' : 'singlefile'\n setIsLoading(true)\n openSelector(tenantName, selectType)\n }\n\n const preview = useMemo(() => {\n if (value && schemaType.name === 'aprimo.cdnasset' && isAprimoCDNAsset(value)) {\n return <AprimoCDNPreview value={value} layout=\"default\" />\n } else if (value && schemaType.name === 'aprimo.asset' && isAprimoAsset(value)) {\n return <AprimoFilePreview value={value} tenantName={tenantName} />\n }\n return null\n }, [tenantName, schemaType, value])\n\n if (!tenantName) {\n return (\n <Box padding={3}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Text>\n The tenant name has not been set in the configuration for the Aprimo plugin. Please add\n a tenant name.\n </Text>\n </Card>\n </Box>\n )\n }\n\n return (\n <Box>\n <Box>{preview}</Box>\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button disabled={readOnly} mode=\"ghost\" title=\"Select an asset\" onClick={action}>\n Select…\n </Button>\n <Button\n disabled={readOnly || !value}\n color=\"danger\"\n mode=\"ghost\"\n title=\"Remove asset\"\n onClick={removeValue}\n >\n Remove\n </Button>\n </Grid>\n </Box>\n )\n}\n","import {defineType} from 'sanity'\n\nexport const AprimoAdditionalFileSchema = defineType({\n name: 'aprimo.additionalFile',\n title: 'Aprimo Additional File',\n type: 'object',\n fields: [\n {\n name: 'additionalFileId',\n title: 'Additional File ID',\n type: 'string',\n },\n {\n name: 'fileName',\n title: 'File Name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'type',\n title: 'Type',\n type: 'string',\n },\n ],\n})\n","import {AprimoWidget} from '../components/AprimoWidget'\n\nexport const AprimoAssetSchema = {\n type: 'object',\n name: 'aprimo.asset',\n title: 'Aprimo Asset',\n fields: [\n {\n type: 'string',\n name: 'id',\n },\n {\n type: 'string',\n name: 'title',\n },\n {\n type: 'aprimo.additionalFile',\n name: 'additionalFile',\n },\n ],\n components: {\n input: AprimoWidget,\n },\n}\n","import {DiffFromTo, type SchemaType} from 'sanity'\n\nimport {AprimoCDNPreview} from './AprimoCDNPreview'\n\n//@TODO: HUGE\nexport function AprimoDiff({\n diff,\n schemaType,\n}: {\n diff: any\n schemaType: SchemaType\n}): React.JSX.Element {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={AprimoCDNPreview} />\n}\n","import {AprimoDiff} from '../components/AprimoDiff'\nimport {AprimoWidget} from '../components/AprimoWidget'\n\nexport const AprimoCDNAssetSchema = {\n type: 'object',\n name: 'aprimo.cdnasset',\n title: 'Aprimo CDN Asset',\n fields: [\n {\n type: 'string',\n name: 'id',\n },\n {\n type: 'string',\n name: 'title',\n },\n {\n type: 'object',\n name: 'rendition',\n fields: [\n {\n type: 'string',\n name: 'publicuri',\n },\n ],\n },\n ],\n components: {\n input: AprimoWidget,\n diff: AprimoDiff,\n },\n preview: {\n select: {\n url: 'rendition.publicuri',\n title: 'title',\n },\n prepare({url, title}: {url: string; title: string}) {\n return {\n title,\n media: <img src={url} alt=\"\" style={{height: '100%', width: '100%'}} />,\n }\n },\n },\n}\n","import {definePlugin, isObjectInputProps, type SchemaType} from 'sanity'\n\nimport {AprimoWidget} from './components/AprimoWidget'\nimport {AprimoAdditionalFileSchema} from './schema/AdditionalFile'\nimport {AprimoAssetSchema} from './schema/AprimoAsset'\nimport {AprimoCDNAssetSchema} from './schema/AprimoCDNAsset'\nimport type {AprimoCDNAsset, AprimoConfig} from './types'\n\nexport const aprimoPlugin = definePlugin((config: Partial<AprimoConfig>) => {\n const reqConfig: AprimoConfig = {\n tenantName: '',\n ...config,\n }\n\n return {\n name: 'aprimo-assets',\n schema: {\n types: [AprimoCDNAssetSchema, AprimoAdditionalFileSchema, AprimoAssetSchema],\n },\n form: {\n components: {\n input: (props) => {\n if (\n isObjectInputProps(props) &&\n (isType(props.schemaType, AprimoCDNAssetSchema.name) ||\n isType(props.schemaType, AprimoAssetSchema.name))\n ) {\n return (\n // @ts-expect-error - TODO: fix this\n <AprimoWidget\n {...props}\n // oxlint-disable-next-line no-unsafe-type-assertion\n value={props.value as AprimoCDNAsset}\n pluginConfig={reqConfig}\n />\n )\n }\n //add array check here to render the widget in array\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n\nfunction isType(schemaType: SchemaType, name: string): boolean {\n if (schemaType.name === name) {\n return true\n }\n if (schemaType.type) {\n return isType(schemaType.type, name)\n }\n return false\n}\n"],"mappings":"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"}
\ No newline at end of file