alinea
Version:
Headless git-based CMS
56 lines (54 loc) • 1.44 kB
JavaScript
import "../../chunks/chunk-NZLE2WMY.js";
// src/field/link/FileLink.ts
import { Entry } from "alinea/core/Entry";
import { imageExtensions } from "alinea/core/media/IsImage";
import { MediaFile } from "alinea/core/media/MediaTypes";
import {
createLink,
createLinks
} from "alinea/field/link/LinkField";
import { entryPicker } from "alinea/picker/entry";
var FileLink;
((FileLink2) => {
FileLink2.title = Entry.title;
FileLink2.url = MediaFile.location;
FileLink2.href = MediaFile.location;
FileLink2.extension = MediaFile.extension;
FileLink2.size = MediaFile.size;
})(FileLink || (FileLink = {}));
var fileCondition = {
_type: "MediaFile",
extension: { notIn: imageExtensions }
};
function filePicker(multiple, options) {
return entryPicker({
...options,
max: multiple ? void 0 : 1,
label: "File",
title: multiple ? "Select files" : "Select a file",
condition: { or: [fileCondition, { _type: "MediaLibrary" }] },
showMedia: true,
defaultView: "thumb",
selection: FileLink
});
}
function file(label, options = {}) {
return createLink(label, {
...options,
pickers: { file: filePicker(false, options) }
});
}
((file2) => {
function multiple(label, options = {}) {
return createLinks(label, {
...options,
pickers: { file: filePicker(true, options) }
});
}
file2.multiple = multiple;
})(file || (file = {}));
export {
FileLink,
file,
filePicker
};