Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / utils / formatting.js
Size: Mime:
"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;