UNPKG

sanity-plugin-s3-files

Version:
64 lines (63 loc) 2.77 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { definePlugin } from 'sanity'; import { StudioTool, ToolIcon, createInput, getCustomDataSchema, getDimensionsSchema, getStoredFileSchema, } from 'sanity-plugin-external-files'; import deleteFile from './deleteFile'; import { credentialsFields, schemaConfig } from './schema.config'; import uploadFile from './uploadFile'; const VENDOR_ID = 's3-files'; export const s3Files = definePlugin((userConfig) => { const config = buildConfig(userConfig); return { name: config.schemaPrefix, schema: { types: [ // s3-files.custom-data getCustomDataSchema(config, schemaConfig), // s3-files.dimensions getDimensionsSchema(config), // s3-files.storedFile getStoredFileSchema(config, schemaConfig), { name: `${config.schemaPrefix}.media`, title: 'S3 media', type: 'object', components: { input: createInput(config), }, fields: [ { name: 'asset', title: 'Asset', type: 'reference', to: [{ type: `${config.schemaPrefix}.storedFile` }], }, ], }, ], }, tools: [ { name: config.schemaPrefix, title: config.toolTitle, component: () => _jsx(StudioTool, Object.assign({}, config)), icon: ToolIcon, }, ], }; }); function buildConfig(userConfig = {}) { var _a; const userCredentials = (userConfig === null || userConfig === void 0 ? void 0 : userConfig.credentials) || {}; return { id: VENDOR_ID, customDataFieldName: 's3', defaultAccept: userConfig.defaultAccept, schemaPrefix: userConfig.schemaPrefix || VENDOR_ID, toolTitle: (_a = userConfig.toolTitle) !== null && _a !== void 0 ? _a : 'Media Library (S3)', credentialsFields: credentialsFields.filter( // Credentials already provided by the (field) => !userCredentials[field.name] && !(field.name in userCredentials)), deleteFile: (props) => deleteFile(Object.assign(Object.assign({}, props), { credentials: Object.assign(Object.assign({}, userCredentials), (props.credentials || {})) })), uploadFile: (props) => uploadFile(Object.assign(Object.assign({}, props), { credentials: Object.assign(Object.assign({}, userCredentials), (props.credentials || {})) })), }; }