@vendasta/store
Version:
Components and data for Store
140 lines (139 loc) • 4.89 kB
JavaScript
var Package = /** @class */ (function () {
function Package() {
}
Package.fromApi = function (data) {
var newPackage = new Package();
if (!data.pricing && data.selling_price) {
data.pricing = {
currency: data.currency,
prices: [{
price: data.selling_price * 100,
frequency: data.billingFrequency
}]
};
}
Object.assign(newPackage, data);
if (!newPackage.name) {
newPackage.name = 'Untitled';
}
if (data.created) {
newPackage.createdDate = new Date(data.created);
}
if (data.updated) {
newPackage.updatedDate = new Date(data.updated);
}
return newPackage;
};
Object.defineProperty(Package.prototype, "isPackageFree", {
get: function () {
return this.pricing && this.pricing.prices ? this.pricing.prices.some(function (p) { return p.price === 0; }) : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Package.prototype, "shouldContactSales", {
get: function () {
return this.pricing && this.pricing.prices ?
this.pricing.prices.some(function (p) { return p.price === null; }) ||
this.pricing.prices.length === 0 : true;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Package.prototype, "formattedPricingList", {
get: function () {
if (this.pricing && this.pricing.prices && this.pricing.prices.length) {
var hasCurrencyAndIsNotUSD = this.pricing.currency && this.pricing.currency !== 'USD';
var currencyStr_1 = hasCurrencyAndIsNotUSD ? this.pricing.currency : '';
var currencySymbol_1 = Package.getCurrencySymbol(this.pricing.currency);
return this.pricing.prices.map(function (price) {
var frequencyStr = price.frequency ? '/ ' + Package.getCapitalizeFirstLetter(price.frequency) : '';
var roundedPrice = (price.price / 100.0).toFixed(2);
var priceStr = "" + currencySymbol_1 + roundedPrice + " " + currencyStr_1 + " " + frequencyStr;
return (priceStr.trim().replace(/\s+/g, ' '));
});
}
else {
return ['Contact Sales'];
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(Package.prototype, "priceStrings", {
get: function () {
if (this.shouldContactSales) {
return ['Contact Sales'];
}
if (this.isPackageFree) {
return ['Free'];
}
return this.formattedPricingList;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Package.prototype, "formattedWholesalePrice", {
get: function () {
return this.priceStrings.join(' + ');
},
enumerable: true,
configurable: true
});
Package.getCapitalizeFirstLetter = function (inputString) {
return inputString ? inputString.charAt(0).toUpperCase() + inputString.slice(1) : null;
};
Package.getCurrencySymbol = function (currency) {
var currencySymbol = '$';
switch (currency) {
case 'EUR':
currencySymbol = '\u20AC';
break;
case 'GBP':
currencySymbol = '\u00A3';
break;
case 'CHF':
currencySymbol = 'Fr';
break;
case 'CNY':
currencySymbol = '\u00A5';
break;
case 'JPY':
currencySymbol = '\u00A5';
break;
case 'CZK':
currencySymbol = 'K\u010d';
break;
case 'INR':
currencySymbol = '\u20B9';
break;
case 'KHR':
currencySymbol = '\u17DB';
break;
case 'KRW':
currencySymbol = '\u20A9';
break;
case 'NOK':
currencySymbol = 'kr';
break;
case 'SEK':
currencySymbol = 'kr';
break;
case 'RUB':
currencySymbol = '\u20BD';
break;
case 'TRY':
currencySymbol = '\u20BA';
break;
case 'ZAR':
currencySymbol = 'R';
break;
default:
currencySymbol = '$';
break;
}
return currencySymbol;
};
return Package;
}());
export { Package };