instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
758 lines (661 loc) • 19.6 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends5 = require('babel-runtime/helpers/extends');
var _extends6 = _interopRequireDefault(_extends5);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
exports.range = range;
exports.array_from_hash = array_from_hash;
exports.human_join = human_join;
exports.set_from_array = set_from_array;
exports.hash_with_key = hash_with_key;
exports.array_contains = array_contains;
exports.map_hash = map_hash;
exports.capitalize_first_letter = capitalize_first_letter;
exports.make_one_memoized = make_one_memoized;
exports.make_curryfied = make_curryfied;
exports.make_decurryfied = make_decurryfied;
exports.make_memoized = make_memoized;
exports.make_persistent = make_persistent;
exports.group_consecutive = group_consecutive;
exports.find_duplicates = find_duplicates;
exports.filter_hash = filter_hash;
exports.array_from_set = array_from_set;
exports.human_plural = human_plural;
exports.deep_merge = deep_merge;
exports.for_all = for_all;
exports.create_hash = create_hash;
exports.hash_key_with_value = hash_key_with_value;
exports.set_difference = set_difference;
exports.distance = distance;
exports.download_file = download_file;
exports.empty_hash = empty_hash;
exports.empty_set = empty_set;
exports.empty_array = empty_array;
exports.preview = preview;
exports.split_array = split_array;
exports.array_minimum = array_minimum;
exports.array_maximum = array_maximum;
exports.split_hash = split_hash;
exports.flatten_array = flatten_array;
exports.find_in_array = find_in_array;
exports.find_optimum_in_sorted_array = find_optimum_in_sorted_array;
exports.group_by_batch = group_by_batch;
exports.group_hash_by_value = group_hash_by_value;
exports.set_union = set_union;
exports.exist = exist;
exports.empty_object = empty_object;
exports.hash_size = hash_size;
exports.array_sum = array_sum;
exports.array_mean = array_mean;
exports.format_duration = format_duration;
exports.property_getter = property_getter;
exports.property_toggler = property_toggler;
exports.set_count = set_count;
exports.property_is = property_is;
exports.get_url_parameter = get_url_parameter;
exports.debounce = debounce;
exports.set_intersection = set_intersection;
exports.set_from_hash = set_from_hash;
exports.compare = compare;
exports.scope = scope;
exports.filter_set = filter_set;
exports.hash_each = hash_each;
var _geolib = require('geolib');
var _geolib2 = _interopRequireDefault(_geolib);
var _fileSaver = require('file-saver');
var _fileSaver2 = _interopRequireDefault(_fileSaver);
require('whatwg-fetch');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function range(arg1, arg2) {
var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var start = void 0,
end = void 0;
if (arg2) {
start = arg1;
end = arg2;
} else {
start = 0;
end = arg1;
}
var range = [];
for (var i = start; i < end; i += step) {
range.push(i);
}
return range;
}
function array_from_hash() {
var hash = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return (0, _keys2.default)(hash).map(function (key) {
return hash[key];
});
}
function human_join() {
var strings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var ellipsis = arguments[1];
var join = function join(strings) {
return strings.reduce(function (human_join, string) {
return string + ', ' + human_join;
}, "");
};
if (ellipsis && strings.length > ellipsis) {
return join(strings.slice(0, ellipsis)) + '...';
} else {
if (strings.length > 1) {
return '' + join(strings.slice(2)) + strings[1] + ' et ' + strings[0];
} else {
return strings[0];
}
}
}
function set_from_array() {
var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var hash = {};
array.forEach(function (item) {
hash[item] = true;
});
return hash;
}
function hash_with_key() {
var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
var hash = {};
array.forEach(function (item) {
hash[item[key]] = item;
});
return hash;
}
function array_contains(array, element) {
var strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var compare = void 0;
if (strict) {
compare = function compare(a, b) {
return a === b;
};
} else {
compare = function compare(a, b) {
return a == b;
};
}
return array && array.reduce(function (contains, e) {
return contains || compare(e, element);
}, false);
}
function map_hash(hash, mapping) {
var mapped_hash = {};
(0, _keys2.default)(hash).forEach(function (key) {
return mapped_hash[key] = mapping(hash[key]);
});
return mapped_hash;
}
function capitalize_first_letter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function make_one_memoized(fun) {
var results = {};
return function (arg) {
var result = results[arg];
if (typeof result == 'undefined') {
result = fun(arg);
results[arg] = result;
}
return result;
};
}
function make_curryfied(fun) {
function make_curryfied_fun_of_arity(fun, arity) {
if (arity > 1) {
return function (arg) {
return make_curryfied_fun_of_arity(function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return fun.apply(undefined, [arg].concat(args));
}, arity - 1);
};
} else {
return fun;
}
}
return make_curryfied_fun_of_arity(fun, fun.length);
}
function make_decurryfied(fun) {
return function () {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return args.reduce(function (partial, arg) {
return partial(arg);
}, fun);
};
}
function make_memoized(fun) {
function make_memoized_fun_of_arity(fun, arity) {
if (arity > 0) {
return make_one_memoized(function (arg) {
return make_memoized_fun_of_arity(fun(arg), arity - 1);
});
} else {
return fun;
}
}
return make_decurryfied(make_memoized_fun_of_arity(make_curryfied(fun), fun.length));
}
function make_persistent(fun) {
var previous_result = void 0;
var previous_arguments = [];
return function () {
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
if (args.length == previous_arguments.length && args.reduce(function (identical, argument, index) {
return identical && argument === previous_arguments[index];
}, true)) {
return previous_result;
} else {
previous_result = fun.apply(undefined, args);
previous_arguments = args;
return previous_result;
}
};
}
function group_consecutive(array, group) {
if (array.length == 0) {
return [];
} else {
var current_group = [];
var groups = [];
var add_to_current_group = function add_to_current_group(element) {
current_group.push(element);
};
var flush_current_group = function flush_current_group() {
groups.push(current_group);
current_group = [];
};
add_to_current_group(array[0]);
for (var index = 1; index < array.length; index++) {
if (!group(current_group[current_group.length - 1], array[index])) {
flush_current_group();
}
add_to_current_group(array[index]);
}
if (current_group.length > 0) {
flush_current_group();
}
return groups;
}
}
function find_duplicates(array) {
var found = {};
var duplicates = {};
array.forEach(function (element) {
if (found[element]) {
duplicates[element] = true;
} else {
found[element] = true;
}
});
return (0, _keys2.default)(duplicates);
}
function filter_hash(hash, filter) {
var result = {};
(0, _keys2.default)(hash).forEach(function (key) {
var value = hash[key];
if (filter(value)) {
result[key] = value;
}
});
return result;
}
function array_from_set() {
var set = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var array = [];
(0, _keys2.default)(set).forEach(function (key) {
if (set[key]) {
array.push(key);
}
});
return array;
}
function human_plural(quantity, singular, plural) {
if (quantity > 1) {
return plural.replace("%%", quantity);
} else {
return singular.replace("%%", quantity);
}
}
function deep_merge(hash1, hash2) {
if ((typeof hash1 === 'undefined' ? 'undefined' : (0, _typeof3.default)(hash1)) === 'object' && (typeof hash2 === 'undefined' ? 'undefined' : (0, _typeof3.default)(hash2)) === 'object') {
if (hash1 === null) {
hash1 = {};
}
if (hash2 === null) {
hash2 = {};
}
return (0, _keys2.default)(hash2).reduce(function (result, key) {
return (0, _extends6.default)({}, result, (0, _defineProperty3.default)({}, key, deep_merge(hash1[key], hash2[key])));
}, hash1);
} else {
return hash2;
}
}
function for_all(array, condition) {
var i = 0;
while (i < array.length) {
if (!condition(array[i])) {
return false;
}
i++;
}
return true;
}
function create_hash(array, fun) {
var hash = {},
i = 0;
while (i < array.length) {
var key = array[i];
hash[key] = fun(key, i);
i++;
}
return hash;
}
function hash_key_with_value(hash, value) {
var result = void 0;
(0, _keys2.default)(hash).forEach(function (key) {
if (hash[key] == value) {
result = key;
}
});
return result;
}
function set_difference(array, set) {
var result = {};
array.forEach(function (key) {
if (!set[key]) {
result[key] = true;
}
});
return result;
}
var memoized_distance = make_memoized(function (origin_latitude, origin_longitude, destination_latitude, destination_longitude) {
function not_set(mesure) {
return mesure === null || mesure === undefined;
}
if (exist([origin_latitude, origin_longitude, destination_latitude, destination_longitude], not_set)) {
return null;
} else {
return _geolib2.default.getDistance({ latitude: origin_latitude, longitude: origin_longitude }, { latitude: destination_latitude, longitude: destination_longitude });
}
});
function distance(origin, destination) {
if (!origin || !destination) {
return null;
} else {
return memoized_distance(origin.latitude, origin.longitude, destination.latitude, destination.longitude);
}
}
function download_file(url, name) {
var matches = url.match(/(\.\w+)(\?.*)?$/);
var extension = matches ? matches[1] : "";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
_fileSaver2.default.saveAs(this.response, '' + name.split('.')[0] + extension);
}
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
function empty_hash(hash) {
return (0, _keys2.default)(hash).length == 0;
}
function empty_set(set) {
return for_all((0, _keys2.default)(set), function (key) {
return !set[key];
});
}
function empty_array(array) {
return array.length == 0;
}
function preview(string, length) {
if (string) {
if (string.length < length) {
return string;
} else {
return string.slice(0, length - 3) + "...";
}
} else {
return string;
}
}
function split_array(array, which_category) {
var categories = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var result = create_hash(categories, function () {
return [];
});
array.forEach(function (element) {
var category = which_category(element);
if (result[category]) {
result[category].push(element);
} else {
result[category] = [element];
}
});
return result;
}
function array_minimum(array, is_smaller) {
var minimum = array[0];
array.slice(1).forEach(function (element) {
if (is_smaller(element, minimum)) {
minimum = element;
}
});
return minimum;
}
function array_maximum(array, is_smaller) {
return array_minimum(array, function (a, b) {
return is_smaller(b, a);
});
}
function split_hash(hash, which_category) {
var categories = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var result = create_hash(categories, function () {
return {};
});
(0, _keys2.default)(hash).forEach(function (key) {
var element = hash[key];
var category = which_category(element);
if (result[category]) {
result[category][key] = element;
} else {
result[category] = (0, _defineProperty3.default)({}, key, element);
}
});
return result;
}
function flatten_array(arrays) {
var result = [];
arrays.forEach(function (array) {
result.push.apply(result, (0, _toConsumableArray3.default)(array));
});
return result;
}
function find_in_array(array, condition) {
for (var i = 0; i < array.length; i++) {
if (condition(array[i])) {
return array[i];
}
}
return null;
}
function find_optimum_in_sorted_array(array, is_too_big) {
var n = array.length;
if (n == 0) {
return -1;
} else if (n == 1) {
if (is_too_big(array[0])) {
return -1;
} else {
return 0;
}
} else {
var half = Math.floor(n / 2);
if (is_too_big(array[half])) {
return find_optimum_in_sorted_array(array.slice(0, half), is_too_big);
} else {
return half + 1 + find_optimum_in_sorted_array(array.slice(half + 1), is_too_big);
}
}
}
function group_by_batch(array, batch_count) {
if (batch_count > array.length) {
return [array];
} else {
return [array.slice(0, batch_count)].concat((0, _toConsumableArray3.default)(group_by_batch(array.slice(batch_count), batch_count)));
}
}
function group_hash_by_value(hash) {
var categories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var result = create_hash(categories, function () {
return [];
});
(0, _keys2.default)(hash).forEach(function (key) {
var value = hash[key];
if (value) {
if (!result[value]) {
result[value] = [];
}
result[value].push(key);
}
});
return result;
}
function set_union() {
var set = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var array = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var result = (0, _extends6.default)({}, set);
array.forEach(function (element) {
result[element] = true;
});
return result;
}
function exist(array, condition) {
return !for_all(array, function (element) {
return !condition(element);
});
}
function empty_object(object) {
return (0, _keys2.default)(object).length === 0 && object.constructor === Object;
}
function hash_size(hash) {
return (0, _keys2.default)(hash).length;
}
function array_sum(array) {
var sum = 0;
array.forEach(function (value) {
return sum += value;
});
return sum;
}
function array_mean(array) {
return array_sum(array) / array.length;
}
var unit_counts = [1000, 60, 60, 24, 1e120];
var unit_labels = ["ms", "s", "m", "h", " j"];
function format_duration(duration) {
var last_unit_value = duration,
before_last_unit_value = 0,
unit = 0;
function step_one_unit() {
var count = unit_counts[unit];
var next_unit_value = last_unit_value / count;
if (unit == unit_counts.length - 1 || next_unit_value < 1) {
return '' + Math.floor(last_unit_value) + unit_labels[unit] + (before_last_unit_value > 0 ? ' ' + before_last_unit_value + unit_labels[unit - 1] : "");
} else {
before_last_unit_value = last_unit_value % count;
last_unit_value = Math.floor(next_unit_value);
unit++;
return step_one_unit();
}
}
return isNaN(duration) ? " - " : step_one_unit();
}
function property_getter(property, default_value) {
return function (object) {
return object[property] || default_value;
};
}
function property_toggler(property) {
return function () {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return (0, _extends6.default)({}, object, (0, _defineProperty3.default)({}, property, !object[property]));
};
}
function set_count(set) {
return array_from_set(set).length;
}
function property_is(property, value) {
return function (object) {
return object[property] == value;
};
}
function get_url_parameter(parameter) {
var results = new RegExp('[\?&]' + parameter + '=([^&#]*)').exec(window.location.href);
return results ? decodeURIComponent(results[1]) : null;
}
function debounce(fun) {
var wait_for = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
var running = false,
next = void 0;
return function () {
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
if (running) {
next = args;
} else {
running = true;
setTimeout(function () {
running = false;
if (next) {
fun.apply(undefined, (0, _toConsumableArray3.default)(next));
next = null;
}
}, wait_for);
fun.apply(undefined, args);
}
};
}
function set_intersection(set, array) {
var result = {};
if (Array.isArray(set)) {
set = set_from_array(set);
}
if (!Array.isArray(array)) {
array = array_from_set(array);
}
array.forEach(function (key) {
if (set[key]) {
result[key] = true;
}
});
return result;
}
function set_from_hash(hash) {
return set_from_array(array_from_hash(hash));
}
var opposite_function = function opposite_function(fun) {
return function () {
return -fun.apply(undefined, arguments);
};
};
function compare(getter) {
var ascending = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var compare = function compare(a, b) {
var c = getter(a),
d = getter(b);
if (c < d) {
return -1;
} else if (c > d) {
return 1;
} else {
return 0;
}
};
if (ascending) {
return compare;
} else {
return opposite_function(compare);
}
}
function scope(scope_name) {
return function (fun) {
return function () {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return (0, _extends6.default)({}, object, (0, _defineProperty3.default)({}, scope_name, fun(object[scope_name])));
};
};
}
function filter_set(set, keep) {
var result = {};
(0, _keys2.default)(set).forEach(function (element) {
if (set[element] && keep(element)) {
result[element] = true;
}
});
return result;
}
function hash_each(hash, each) {
(0, _keys2.default)(hash || {}).forEach(function (key) {
return each(key, hash[key]);
});
}