UNPKG

sanity-plugin-s3-files

Version:
70 lines (69 loc) 3.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.s3Files = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const sanity_1 = require("sanity"); const sanity_plugin_external_files_1 = require("sanity-plugin-external-files"); const deleteFile_1 = __importDefault(require("./deleteFile")); const schema_config_1 = require("./schema.config"); const uploadFile_1 = __importDefault(require("./uploadFile")); const VENDOR_ID = 's3-files'; exports.s3Files = (0, sanity_1.definePlugin)((userConfig) => { const config = buildConfig(userConfig); return { name: config.schemaPrefix, schema: { types: [ // s3-files.custom-data (0, sanity_plugin_external_files_1.getCustomDataSchema)(config, schema_config_1.schemaConfig), // s3-files.dimensions (0, sanity_plugin_external_files_1.getDimensionsSchema)(config), // s3-files.storedFile (0, sanity_plugin_external_files_1.getStoredFileSchema)(config, schema_config_1.schemaConfig), { name: `${config.schemaPrefix}.media`, title: 'S3 media', type: 'object', components: { input: (0, sanity_plugin_external_files_1.createInput)(config), }, fields: [ { name: 'asset', title: 'Asset', type: 'reference', to: [{ type: `${config.schemaPrefix}.storedFile` }], }, ], }, ], }, tools: [ { name: config.schemaPrefix, title: config.toolTitle, component: () => (0, jsx_runtime_1.jsx)(sanity_plugin_external_files_1.StudioTool, Object.assign({}, config)), icon: sanity_plugin_external_files_1.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: schema_config_1.credentialsFields.filter( // Credentials already provided by the (field) => !userCredentials[field.name] && !(field.name in userCredentials)), deleteFile: (props) => (0, deleteFile_1.default)(Object.assign(Object.assign({}, props), { credentials: Object.assign(Object.assign({}, userCredentials), (props.credentials || {})) })), uploadFile: (props) => (0, uploadFile_1.default)(Object.assign(Object.assign({}, props), { credentials: Object.assign(Object.assign({}, userCredentials), (props.credentials || {})) })), }; }