Repository URL to install this package:
|
Version:
1.2.19 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getValueForKey = getValueForKey;
exports.formatPrice = formatPrice;
exports.updateState = updateState;
exports.mapFiltersToQuery = exports.pricifyFilter = exports.arrayToObject = void 0;
function processKeys(obj, keys) {
if (!obj || !keys || keys.length == 0) return null;
if (keys.length == 1) return obj[keys[0]];
const key = keys.shift();
return processKeys(obj[key], keys);
} // return a key given a key string aka. product.properties.children
function getValueForKey(obj, keyString, defaultValue) {
return processKeys(obj, keyString.split('.')) || defaultValue;
} // Format a price to standard fixed
function formatPrice(price) {
try {
let newPrice = Number(price);
return newPrice.toFixed(2);
} catch (e) {
return 'N/A';
}
} // Utility to updates state
function updateState(component, newState) {
component.setState(Object.assign({}, component.state, newState));
}
const arrayToObject = (arr, keyField) => {
return Object.assign({}, ...arr.map(item => ({
[item[keyField]]: item
})));
};
exports.arrayToObject = arrayToObject;
const pricifyFilter = str => {
// i.e 500 & Above -> $500 & Above
// '$' + str.replace(/-|&/, ' - ')
if (str.includes('&')) {
return `$${str.split(' & ')[0]} & ${str.split(' & ')[1]}`;
} // i.e TOP -> Top
if (!str.includes('-')) {
return str;
} // i.e 0-50 -> $0 - $50
return str.split('-').map(v => `$${v}`).join(' - ');
};
exports.pricifyFilter = pricifyFilter;
const mapFiltersToQuery = filters => Object.keys(filters).map(filter => {
return {
key: filter,
value: filters[filter].values && filters[filter].values.map((val, i) => {
let values = Object.values(val);
let keys = Object.keys(val);
if (values[i] === true) {
return keys[i];
} else {
return null;
}
}).filter(val => val !== null)
};
}).filter(v => v.value.length > 0);
exports.mapFiltersToQuery = mapFiltersToQuery;