123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- }));
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- });
- var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ImageUrlBuilder = void 0;
- var urlForImage_1 = __importStar(require("./urlForImage"));
- var validFits = ['clip', 'crop', 'fill', 'fillmax', 'max', 'scale', 'min'];
- var validCrops = ['top', 'bottom', 'left', 'right', 'center', 'focalpoint', 'entropy'];
- var validAutoModes = ['format'];
- function isSanityModernClientLike(client) {
- return client && 'config' in client ? typeof client.config === 'function' : false;
- }
- function isSanityClientLike(client) {
- return client && 'clientConfig' in client ? typeof client.clientConfig === 'object' : false;
- }
- function rewriteSpecName(key) {
- var specs = urlForImage_1.SPEC_NAME_TO_URL_NAME_MAPPINGS;
- for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {
- var entry = specs_1[_i];
- var specName = entry[0], param = entry[1];
- if (key === specName || key === param) {
- return specName;
- }
- }
- return key;
- }
- function urlBuilder(options) {
- // Did we get a modernish client?
- if (isSanityModernClientLike(options)) {
- // Inherit config from client
- var _a = options.config(), apiUrl = _a.apiHost, projectId = _a.projectId, dataset = _a.dataset;
- var apiHost = apiUrl || 'https://api.sanity.io';
- return new ImageUrlBuilder(null, {
- baseUrl: apiHost.replace(/^https:\/\/api\./, 'https://cdn.'),
- projectId: projectId,
- dataset: dataset,
- });
- }
- // Did we get a SanityClient?
- var client = options;
- if (isSanityClientLike(client)) {
- // Inherit config from client
- var _b = client.clientConfig, apiUrl = _b.apiHost, projectId = _b.projectId, dataset = _b.dataset;
- var apiHost = apiUrl || 'https://api.sanity.io';
- return new ImageUrlBuilder(null, {
- baseUrl: apiHost.replace(/^https:\/\/api\./, 'https://cdn.'),
- projectId: projectId,
- dataset: dataset,
- });
- }
- // Or just accept the options as given
- return new ImageUrlBuilder(null, options);
- }
- exports.default = urlBuilder;
- var ImageUrlBuilder = /** @class */ (function () {
- function ImageUrlBuilder(parent, options) {
- this.options = parent
- ? __assign(__assign({}, (parent.options || {})), (options || {})) : __assign({}, (options || {})); // Copy options
- }
- ImageUrlBuilder.prototype.withOptions = function (options) {
- var baseUrl = options.baseUrl || this.options.baseUrl;
- var newOptions = { baseUrl: baseUrl };
- for (var key in options) {
- if (options.hasOwnProperty(key)) {
- var specKey = rewriteSpecName(key);
- newOptions[specKey] = options[key];
- }
- }
- return new ImageUrlBuilder(this, __assign({ baseUrl: baseUrl }, newOptions));
- };
- // The image to be represented. Accepts a Sanity 'image'-document, 'asset'-document or
- // _id of asset. To get the benefit of automatic hot-spot/crop integration with the content
- // studio, the 'image'-document must be provided.
- ImageUrlBuilder.prototype.image = function (source) {
- return this.withOptions({ source: source });
- };
- // Specify the dataset
- ImageUrlBuilder.prototype.dataset = function (dataset) {
- return this.withOptions({ dataset: dataset });
- };
- // Specify the projectId
- ImageUrlBuilder.prototype.projectId = function (projectId) {
- return this.withOptions({ projectId: projectId });
- };
- // Specify background color
- ImageUrlBuilder.prototype.bg = function (bg) {
- return this.withOptions({ bg: bg });
- };
- // Set DPR scaling factor
- ImageUrlBuilder.prototype.dpr = function (dpr) {
- // A DPR of 1 is the default - so only include it if we have a different value
- return this.withOptions(dpr && dpr !== 1 ? { dpr: dpr } : {});
- };
- // Specify the width of the image in pixels
- ImageUrlBuilder.prototype.width = function (width) {
- return this.withOptions({ width: width });
- };
- // Specify the height of the image in pixels
- ImageUrlBuilder.prototype.height = function (height) {
- return this.withOptions({ height: height });
- };
- // Specify focal point in fraction of image dimensions. Each component 0.0-1.0
- ImageUrlBuilder.prototype.focalPoint = function (x, y) {
- return this.withOptions({ focalPoint: { x: x, y: y } });
- };
- ImageUrlBuilder.prototype.maxWidth = function (maxWidth) {
- return this.withOptions({ maxWidth: maxWidth });
- };
- ImageUrlBuilder.prototype.minWidth = function (minWidth) {
- return this.withOptions({ minWidth: minWidth });
- };
- ImageUrlBuilder.prototype.maxHeight = function (maxHeight) {
- return this.withOptions({ maxHeight: maxHeight });
- };
- ImageUrlBuilder.prototype.minHeight = function (minHeight) {
- return this.withOptions({ minHeight: minHeight });
- };
- // Specify width and height in pixels
- ImageUrlBuilder.prototype.size = function (width, height) {
- return this.withOptions({ width: width, height: height });
- };
- // Specify blur between 0 and 100
- ImageUrlBuilder.prototype.blur = function (blur) {
- return this.withOptions({ blur: blur });
- };
- ImageUrlBuilder.prototype.sharpen = function (sharpen) {
- return this.withOptions({ sharpen: sharpen });
- };
- // Specify the desired rectangle of the image
- ImageUrlBuilder.prototype.rect = function (left, top, width, height) {
- return this.withOptions({ rect: { left: left, top: top, width: width, height: height } });
- };
- // Specify the image format of the image. 'jpg', 'pjpg', 'png', 'webp'
- ImageUrlBuilder.prototype.format = function (format) {
- return this.withOptions({ format: format });
- };
- ImageUrlBuilder.prototype.invert = function (invert) {
- return this.withOptions({ invert: invert });
- };
- // Rotation in degrees 0, 90, 180, 270
- ImageUrlBuilder.prototype.orientation = function (orientation) {
- return this.withOptions({ orientation: orientation });
- };
- // Compression quality 0-100
- ImageUrlBuilder.prototype.quality = function (quality) {
- return this.withOptions({ quality: quality });
- };
- // Make it a download link. Parameter is default filename.
- ImageUrlBuilder.prototype.forceDownload = function (download) {
- return this.withOptions({ download: download });
- };
- // Flip image horizontally
- ImageUrlBuilder.prototype.flipHorizontal = function () {
- return this.withOptions({ flipHorizontal: true });
- };
- // Flip image vertically
- ImageUrlBuilder.prototype.flipVertical = function () {
- return this.withOptions({ flipVertical: true });
- };
- // Ignore crop/hotspot from image record, even when present
- ImageUrlBuilder.prototype.ignoreImageParams = function () {
- return this.withOptions({ ignoreImageParams: true });
- };
- ImageUrlBuilder.prototype.fit = function (value) {
- if (validFits.indexOf(value) === -1) {
- throw new Error("Invalid fit mode \"".concat(value, "\""));
- }
- return this.withOptions({ fit: value });
- };
- ImageUrlBuilder.prototype.crop = function (value) {
- if (validCrops.indexOf(value) === -1) {
- throw new Error("Invalid crop mode \"".concat(value, "\""));
- }
- return this.withOptions({ crop: value });
- };
- // Saturation
- ImageUrlBuilder.prototype.saturation = function (saturation) {
- return this.withOptions({ saturation: saturation });
- };
- ImageUrlBuilder.prototype.auto = function (value) {
- if (validAutoModes.indexOf(value) === -1) {
- throw new Error("Invalid auto mode \"".concat(value, "\""));
- }
- return this.withOptions({ auto: value });
- };
- // Specify the number of pixels to pad the image
- ImageUrlBuilder.prototype.pad = function (pad) {
- return this.withOptions({ pad: pad });
- };
- // Gets the url based on the submitted parameters
- ImageUrlBuilder.prototype.url = function () {
- return (0, urlForImage_1.default)(this.options);
- };
- // Alias for url()
- ImageUrlBuilder.prototype.toString = function () {
- return this.url();
- };
- return ImageUrlBuilder;
- }());
- exports.ImageUrlBuilder = ImageUrlBuilder;
- //# sourceMappingURL=builder.js.map
|