alinea
Version:
Headless git-based CMS
70 lines (68 loc) • 1.86 kB
JavaScript
import "../../chunks/chunk-NZLE2WMY.js";
// src/field/link/ImageLink.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 ImageLink;
((ImageLink2) => {
ImageLink2.title = Entry.title;
ImageLink2.src = MediaFile.location;
ImageLink2.extension = MediaFile.extension;
ImageLink2.size = MediaFile.size;
ImageLink2.hash = MediaFile.hash;
ImageLink2.width = MediaFile.width;
ImageLink2.height = MediaFile.height;
ImageLink2.averageColor = MediaFile.averageColor;
ImageLink2.thumbHash = MediaFile.thumbHash;
ImageLink2.focus = MediaFile.focus;
})(ImageLink || (ImageLink = {}));
var imageCondition = {
_type: "MediaFile",
extension: {
in: [
...imageExtensions,
...imageExtensions.map((e) => e.toUpperCase())
//Fix for historic files with case-insensitive extensions
]
}
};
function imagePicker(multiple, options) {
return entryPicker({
...options,
max: multiple ? void 0 : 1,
label: "Image",
title: multiple ? "Select images" : "Select an image",
condition: imageCondition,
showMedia: true,
defaultView: "thumb",
selection: {
...ImageLink,
filePath: Entry.filePath,
previewUrl: MediaFile.previewUrl
}
});
}
function image(label, options = {}) {
return createLink(label, {
...options,
pickers: { image: imagePicker(false, options) }
});
}
((image2) => {
function multiple(label, options = {}) {
return createLinks(label, {
...options,
pickers: { image: imagePicker(true, options) }
});
}
image2.multiple = multiple;
})(image || (image = {}));
export {
ImageLink,
image
};