@vendasta/store
Version:
Components and data for Store
141 lines • 12.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { File } from '../files/shared/file.model';
import { Sellable } from './sellable';
import { CaseTransform } from './case-transform';
/** @type {?} */
const COLOR_CODES = [
'#EF5350', '#42A5F5', '#66BB6A', '#FFA726', '#AB47BC', '#FFCA28', '#EC407A', '#26C6DA',
'#FF7B57'
];
/** @type {?} */
const DEFAULT_COLOR = '#808080';
export class Product extends Sellable {
/**
* @param {?=} data
*/
constructor(data) {
super();
this.addons = [];
data = data || {};
this.pricing = data.pricing;
this.productId = data.productId;
this.editionId = data.editionId;
this.editionName = data.editionName;
this.name = data.name;
this.description = data.description;
this.tagline = data.tagline;
this.iconUrl = data.iconUrl;
this.entryUrl = data.entryUrl;
this.screenshotUrls = data.screenshotUrls;
this.pdfUploadUrls = data.pdfUploadUrls;
this.lmiCategories = data.lmiCategories;
this.keySellingPoints = data.keySellingPoints;
this.faqs = data.faqs;
this.wholesalePrice = data.wholesalePrice;
this.currency = data.currency;
this.billingFrequency = data.billingFrequency;
this.isArchived = data.isArchived;
this.addons = data.addons;
this.restrictions = data.restrictions;
this.billingId = data.billingId;
if (data.hasOwnProperty('pdfUploadUrls')) {
this.files = this.pdfUploadUrls ? this.pdfUploadUrls.map(url => new File(url)) : null;
}
}
/**
* @param {?} data
* @return {?}
*/
static fromApi(data) {
/** @type {?} */
const newProduct = {};
data = data || {};
for (const key in data) {
if (data.hasOwnProperty(key)) {
/** @type {?} */
const newKey = CaseTransform.snakeToCamelCase(key);
newProduct[newKey] = data[key];
}
}
return new Product(newProduct);
}
/**
* @return {?}
*/
get iconStyle() {
return this.iconUrl ? `url("${this.iconUrl}") no-repeat center / 100% 100%` : null;
}
/**
* @return {?}
*/
get iconColor() {
// determine an icon color for a product with no icon by using the product name
if (!this.name) {
return DEFAULT_COLOR;
}
/** @type {?} */
let nameSum = 0;
for (let i = 0; i < this.name.length; i++) {
nameSum += this.name[i].charCodeAt(0);
}
/** @type {?} */
const index = nameSum % COLOR_CODES.length;
return COLOR_CODES[index];
}
/**
* @return {?}
*/
getLmiCategoryNames() {
/** @type {?} */
const lmiCategories = this.lmiCategories || [];
return lmiCategories.map(lmiCategory => CaseTransform.lowerToTitleCase(lmiCategory.toLowerCase().replace(/_/g, ' ')));
}
}
if (false) {
/** @type {?} */
Product.prototype.productId;
/** @type {?} */
Product.prototype.editionId;
/** @type {?} */
Product.prototype.editionName;
/** @type {?} */
Product.prototype.name;
/** @type {?} */
Product.prototype.description;
/** @type {?} */
Product.prototype.tagline;
/** @type {?} */
Product.prototype.iconUrl;
/** @type {?} */
Product.prototype.entryUrl;
/** @type {?} */
Product.prototype.screenshotUrls;
/** @type {?} */
Product.prototype.pdfUploadUrls;
/** @type {?} */
Product.prototype.lmiCategories;
/** @type {?} */
Product.prototype.keySellingPoints;
/** @type {?} */
Product.prototype.faqs;
/** @type {?} */
Product.prototype.wholesalePrice;
/** @type {?} */
Product.prototype.currency;
/** @type {?} */
Product.prototype.billingFrequency;
/** @type {?} */
Product.prototype.billingId;
/** @type {?} */
Product.prototype.isArchived;
/** @type {?} */
Product.prototype.addons;
/** @type {?} */
Product.prototype.files;
/** @type {?} */
Product.prototype.restrictions;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B2ZW5kYXN0YS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvcHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDOztNQUl6QyxXQUFXLEdBQUc7SUFDaEIsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7SUFDdEYsU0FBUztDQUNaOztNQUVLLGFBQWEsR0FBRyxTQUFTO0FBRS9CLE1BQU0sT0FBTyxPQUFRLFNBQVEsUUFBUTs7OztJQWtDakMsWUFBWSxJQUFVO1FBQ3BCLEtBQUssRUFBRSxDQUFDO1FBaEJWLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFpQm5CLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFD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QUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hILENBQUM7Q0FDSjs7O0lBcEZHLDRCQUFrQjs7SUFDbEIsNEJBQWtCOztJQUNsQiw4QkFBb0I7O0lBQ3BCLHVCQUFhOztJQUNiLDhCQUFvQjs7SUFDcEIsMEJBQWdCOztJQUNoQiwwQkFBZ0I7O0lBQ2hCLDJCQUFpQjs7SUFDakIsaUNBQXlCOztJQUN6QixnQ0FBd0I7O0lBQ3hCLGdDQUF3Qjs7SUFDeEIsbUNBQTJCOztJQUMzQix1QkFBWTs7SUFDWixpQ0FBdUI7O0lBQ3ZCLDJCQUFpQjs7SUFDakIsbUNBQXlCOztJQUN6Qiw0QkFBa0I7O0lBQ2xCLDZCQUFvQjs7SUFDcEIseUJBQXFCOztJQUNyQix3QkFBYzs7SUFDZCwrQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbGV9IGZyb20gJy4uL2ZpbGVzL3NoYXJlZC9maWxlLm1vZGVsJztcbmltcG9ydCB7RmFxfSBmcm9tICcuLi9mYXFzL3NoYXJlZC9mYXFzLm1vZGVsJztcbmltcG9ydCB7U2VsbGFibGV9IGZyb20gJy4vc2VsbGFibGUnO1xuaW1wb3J0IHtDYXNlVHJhbnNmb3JtfSBmcm9tICcuL2Nhc2UtdHJhbnNmb3JtJztcbmltcG9ydCB7QWRkb259IGZyb20gJ0B2ZW5kYXN0YS9jb3JlL3NoYXJlZCc7XG5pbXBvcnQge1Jlc3RyaWN0aW9uc30gZnJvbSAnLi4vcmVzdHJpY3Rpb25zL3NoYXJlZC9yZXN0cmljdGlvbnMubW9kZWwnO1xuXG5jb25zdCBDT0xPUl9DT0RFUyA9IFtcbiAgICAnI0VGNTM1MCcsICcjNDJBNUY1JywgJyM2NkJCNkEnLCAnI0ZGQTcyNicsICcjQUI0N0JDJywgJyNGRkNBMjgnLCAnI0VDNDA3QScsICcjMjZDNkRBJyxcbiAgICAnI0ZGN0I1Nydcbl07XG5cbmNvbnN0IERFRkFVTFRfQ09MT1IgPSAnIzgwODA4MCc7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0IGV4dGVuZHMgU2VsbGFibGUge1xuICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgIGVkaXRpb25JZDogc3RyaW5nO1xuICAgIGVkaXRpb25OYW1lOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgdGFnbGluZTogc3RyaW5nO1xuICAgIGljb25Vcmw6IHN0cmluZztcbiAgICBlbnRyeVVybDogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RVcmxzOiBzdHJpbmdbXTtcbiAgICBwZGZVcGxvYWRVcmxzOiBzdHJpbmdbXTtcbiAgICBsbWlDYXRlZ29yaWVzOiBzdHJpbmdbXTtcbiAgICBrZXlTZWxsaW5nUG9pbnRzOiBzdHJpbmdbXTtcbiAgICBmYXFzOiBGYXFbXTtcbiAgICB3aG9sZXNhbGVQcmljZTogbnVtYmVyO1xuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgYmlsbGluZ0ZyZXF1ZW5jeTogc3RyaW5nO1xuICAgIGJpbGxpbmdJZDogc3RyaW5nO1xuICAgIGlzQXJjaGl2ZWQ6IGJvb2xlYW47XG4gICAgYWRkb25zOiBBZGRvbltdID0gW107XG4gICAgZmlsZXM6IEZpbGVbXTtcbiAgICByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tQXBpKGRhdGE6IGFueSk6IFByb2R1Y3Qge1xuICAgICAgY29uc3QgbmV3UHJvZHVjdCA9IHt9O1xuICAgICAgZGF0YSA9IGRhdGEgfHwge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCBuZXdLZXkgPSBDYXNlVHJhbnNmb3JtLnNuYWtlVG9DYW1lbENhc2Uoa2V5KTtcbiAgICAgICAgICBuZXdQcm9kdWN0W25ld0tleV0gPSBkYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvZHVjdChuZXdQcm9kdWN0KTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgICAgdGhpcy5wcmljaW5nID0gZGF0YS5wcmljaW5nO1xuICAgICAgdGhpcy5wcm9kdWN0SWQgPSBkYXRhLnByb2R1Y3RJZDtcbiAgICAgIHRoaXMuZWRpdGlvbklkID0gZGF0YS5lZGl0aW9uSWQ7XG4gICAgICB0aGlzLmVkaXRpb25OYW1lID0gZGF0YS5lZGl0aW9uTmFtZTtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgdGhpcy50YWdsaW5lID0gZGF0YS50YWdsaW5lO1xuICAgICAgdGhpcy5pY29uVXJsID0gZGF0YS5pY29uVXJsO1xuICAgICAgdGhpcy5lbnRyeVVybCA9IGRhdGEuZW50cnlVcmw7XG4gICAgICB0aGlzLnNjcmVlbnNob3RVcmxzID0gZGF0YS5zY3JlZW5zaG90VXJscztcbiAgICAgIHRoaXMucGRmVXBsb2FkVXJscyA9IGRhdGEucGRmVXBsb2FkVXJscztcbiAgICAgIHRoaXMubG1pQ2F0ZWdvcmllcyA9IGRhdGEubG1pQ2F0ZWdvcmllcztcbiAgICAgIHRoaXMua2V5U2VsbGluZ1BvaW50cyA9IGRhdGEua2V5U2VsbGluZ1BvaW50cztcbiAgICAgIHRoaXMuZmFxcyA9IGRhdGEuZmFxcztcbiAgICAgIHRoaXMud2hvbGVzYWxlUHJpY2UgPSBkYXRhLndob2xlc2FsZVByaWNlO1xuICAgICAgdGhpcy5jdXJyZW5jeSA9IGRhdGEuY3VycmVuY3k7XG4gICAgICB0aGlzLmJpbGxpbmdGcmVxdWVuY3kgPSBkYXRhLmJpbGxpbmdGcmVxdWVuY3k7XG4gICAgICB0aGlzLmlzQXJjaGl2ZWQgPSBkYXRhLmlzQXJjaGl2ZWQ7XG4gICAgICB0aGlzLmFkZG9ucyA9IGRhdGEuYWRkb25zO1xuICAgICAgdGhpcy5yZXN0cmljdGlvbnMgPSBkYXRhLnJlc3RyaWN0aW9ucztcbiAgICAgIHRoaXMuYmlsbGluZ0lkID0gZGF0YS5iaWxsaW5nSWQ7XG4gICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eSgncGRmVXBsb2FkVXJscycpKSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLnBkZlVwbG9hZFVybHMgPyB0aGlzLnBkZlVwbG9hZFVybHMubWFwKHVybCA9PiBuZXcgRmlsZSh1cmwpKSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGdldCBpY29uU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblVybCA/IGB1cmwoXCIke3RoaXMuaWNvblVybH1cIikgbm8tcmVwZWF0IGNlbnRlciAvIDEwMCUgMTAwJWAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBpY29uQ29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGFuIGljb24gY29sb3IgZm9yIGEgcHJvZHVjdCB3aXRoIG5vIGljb24gYnkgdXNpbmcgdGhlIHByb2R1Y3QgbmFtZVxuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIERFRkFVTFRfQ09MT1I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmFtZVN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuYW1lU3VtICs9IHRoaXMubmFtZVtpXS5jaGFyQ29kZUF0KDApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSBuYW1lU3VtICUgQ09MT1JfQ09ERVMubGVuZ3RoO1xuICAgICAgICByZXR1cm4gQ09MT1JfQ09ERVNbaW5kZXhdO1xuICAgIH1cblxuICAgIGdldExtaUNhdGVnb3J5TmFtZXMoKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgbG1pQ2F0ZWdvcmllcyA9IHRoaXMubG1pQ2F0ZWdvcmllcyB8fCBbXTtcbiAgICAgIHJldHVybiBsbWlDYXRlZ29yaWVzLm1hcChsbWlDYXRlZ29yeSA9PiBDYXNlVHJhbnNmb3JtLmxvd2VyVG9UaXRsZUNhc2UobG1pQ2F0ZWdvcnkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csICcgJykpKTtcbiAgICB9XG59XG4iXX0=