UNPKG

1.45 kBJavaScriptView Raw
1'use strict';
2
3var _ = require('lodash');
4const common = require('./../lib/common');
5
6function helper(paper) {
7 paper.handlebars.registerHelper('getImage', function (image, presetName, defaultImageUrl) {
8 var sizeRegex = /^(\d+?)x(\d+?)$/g;
9 var settings = paper.themeSettings || {};
10 var presets = settings._images;
11 var size;
12 var width;
13 var height;
14
15 if (!_.isPlainObject(image) || !_.isString(image.data)
16 || !common.isValidURL(image.data) || image.data.indexOf('{:size}') === -1) {
17 // return empty string if not a valid image object
18 defaultImageUrl = defaultImageUrl ? defaultImageUrl : '';
19 return _.isString(image) ? image : defaultImageUrl;
20 }
21
22 if (_.isPlainObject(presets) && _.isPlainObject(presets[presetName])) {
23 // If preset is one of the given presets in _images
24 width = parseInt(presets[presetName].width, 10) || 5120;
25 height = parseInt(presets[presetName].height, 10) || 5120;
26 size = width + 'x' + height;
27
28 } else if (sizeRegex.test(settings[presetName])) {
29 // If preset name is a setting and match the NNNxNNN format
30 size = settings[presetName];
31 } else {
32 // Use the original image size
33 size = 'original';
34 }
35
36 return image.data.replace('{:size}', size);
37 });
38};
39
40module.exports = helper;