UNPKG

sanity-plugin-r2-files

Version:
71 lines (70 loc) 3.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.cloudflareR2Files = 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 = 'r2-files'; exports.cloudflareR2Files = (0, sanity_1.definePlugin)((userConfig) => { const config = buildConfig(userConfig); return { name: config.schemaPrefix, schema: { types: [ // r2-files.custom-data (0, sanity_plugin_external_files_1.getCustomDataSchema)(config, schema_config_1.schemaConfig), // r2-files.dimensions (0, sanity_plugin_external_files_1.getDimensionsSchema)(config), // r2-files.storedFile (0, sanity_plugin_external_files_1.getStoredFileSchema)(config, schema_config_1.schemaConfig), { name: `${config.schemaPrefix}.media`, title: 'Cloudflare R2 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` }], validation: (Rule) => Rule.required(), }, ], }, ], }, 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: 'cloudflareR2', defaultAccept: userConfig.defaultAccept, schemaPrefix: userConfig.schemaPrefix || VENDOR_ID, toolTitle: (_a = userConfig.toolTitle) !== null && _a !== void 0 ? _a : 'Media Library (Cloudflare R2)', 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 || {})) })), }; }