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