Initial commit
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
export function getAssetsBaseUrl () {
|
||||
const data = window.CartoConfig.data;
|
||||
const dataAssetsHost = data.asset_host && data.asset_host + '/assets';
|
||||
|
||||
const assetsBaseUrl =
|
||||
window.StaticConfig.assetsBaseUrl ||
|
||||
dataAssetsHost ||
|
||||
data.config.app_assets_base_url;
|
||||
|
||||
return assetsBaseUrl + '/';
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
const countCharsArray = function countCharsArray (array, joinString = '') {
|
||||
if (!array || array.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
if (!joinString) {
|
||||
joinString = '';
|
||||
}
|
||||
return array.join(joinString).length;
|
||||
};
|
||||
|
||||
export default countCharsArray;
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copied from https://stackoverflow.com/questions/38345937/object-assign-vs-extend/42740894#42740894
|
||||
|
||||
function isObject (item) {
|
||||
return (item && typeof item === 'object' && !Array.isArray(item));
|
||||
}
|
||||
|
||||
export default function deepObjectExtend (target, ...sources) {
|
||||
if (!sources.length) return target;
|
||||
const source = sources.shift();
|
||||
|
||||
if (isObject(target) && isObject(source)) {
|
||||
for (const key in source) {
|
||||
if (isObject(source[key])) {
|
||||
if (!target[key]) Object.assign(target, { [key]: {} });
|
||||
deepObjectExtend(target[key], source[key]);
|
||||
} else {
|
||||
Object.assign(target, { [key]: source[key] });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return deepObjectExtend(target, ...sources);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
export function importFilesFrom (folderContext, patternNameRegex) {
|
||||
const components = {};
|
||||
|
||||
folderContext.keys().forEach(filename => {
|
||||
const name = stripTokenFromString(filename, patternNameRegex);
|
||||
const component = folderContext(filename);
|
||||
components[name] = component.default;
|
||||
});
|
||||
|
||||
return components;
|
||||
}
|
||||
|
||||
function stripTokenFromString (string, patternNameRegex) {
|
||||
const results = patternNameRegex.exec(string);
|
||||
return results[1];
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
export function humanFileSize (size) {
|
||||
if (size === 0) {
|
||||
return '0 B';
|
||||
}
|
||||
const i = Math.floor(Math.log(size) / Math.log(1024));
|
||||
return `${(size / Math.pow(1024, i)).toFixed(2) * 1} ${['B', 'kB', 'MB', 'GB', 'TB'][i]}`;
|
||||
}
|
||||
|
||||
export function numberFormatter (size) {
|
||||
if (size < 1000) {
|
||||
return size;
|
||||
}
|
||||
const i = Math.floor(Math.log(size) / Math.log(1000));
|
||||
return `${(size / Math.pow(1000, i)).toFixed(2) * 1}${['k', 'M', 'G'][i - 1]}`;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import replaceAll from './replace-all';
|
||||
|
||||
const getCSSModifier = function getCSSModifier (option) {
|
||||
return replaceAll(option, ' ', '-').toLowerCase();
|
||||
};
|
||||
|
||||
export default getCSSModifier;
|
||||
@@ -0,0 +1,23 @@
|
||||
export default function storageAvailable (type) {
|
||||
try {
|
||||
var storage = window[type];
|
||||
var x = '__storage_test__';
|
||||
|
||||
storage.setItem(x, x);
|
||||
storage.removeItem(x);
|
||||
return true;
|
||||
} catch (e) {
|
||||
return e instanceof DOMException && (
|
||||
// everything except Firefox
|
||||
e.code === 22 ||
|
||||
// Firefox
|
||||
e.code === 1014 ||
|
||||
// test name field too, because code might not be present
|
||||
// everything except Firefox
|
||||
e.name === 'QuotaExceededError' ||
|
||||
// Firefox
|
||||
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
|
||||
// acknowledge QuotaExceededError only if there's something already stored
|
||||
storage.length !== 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export default function removeElementsFromArray (array, elementsToRemove) {
|
||||
return array.filter(item => !elementsToRemove.includes(item));
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
const replaceAll = function replaceAll (str, find, replace) {
|
||||
return str.replace(new RegExp(find, 'g'), replace);
|
||||
};
|
||||
|
||||
export default replaceAll;
|
||||
@@ -0,0 +1,13 @@
|
||||
import store from '../store';
|
||||
|
||||
export default function sendCustomEvent (eventName, params) {
|
||||
const tagManagerId = store.state.config.google_tag_manager_id;
|
||||
|
||||
if (tagManagerId) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
window.dataLayer.push({
|
||||
'event': eventName,
|
||||
...params
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import removeElementsFromArray from './remove-items-from-array';
|
||||
|
||||
export function shiftClick (items, selectedItems, currentClickedItem, singleSelectedItem) {
|
||||
// Get indexes from items
|
||||
const lastSelectedItemIndex = items.findIndex(item => item.id === selectedItems[selectedItems.length - 1].id);
|
||||
const currentClickedItemIndex = items.indexOf(currentClickedItem);
|
||||
const singleSelectedItemIndex = items.findIndex(item => item.id === singleSelectedItem.id);
|
||||
|
||||
// Calculate items to select
|
||||
const currentSelectedRangeStart = Math.min(singleSelectedItemIndex, currentClickedItemIndex);
|
||||
const itemsToSelect = Math.abs(singleSelectedItemIndex - currentClickedItemIndex) + 1;
|
||||
const nextSelectedItems = items.slice(currentSelectedRangeStart, currentSelectedRangeStart + itemsToSelect);
|
||||
|
||||
// If the selection is upwards, reverse selected items so that the delete range is correct
|
||||
if (currentClickedItemIndex < singleSelectedItemIndex) {
|
||||
nextSelectedItems.reverse();
|
||||
}
|
||||
|
||||
// Calculate items to delete
|
||||
const previousSelectedRangeStart = Math.min(lastSelectedItemIndex, currentClickedItemIndex);
|
||||
const itemsToDelete = Math.abs(lastSelectedItemIndex - currentClickedItemIndex) + 1;
|
||||
const previousSelectedRange = items.slice(previousSelectedRangeStart, previousSelectedRangeStart + itemsToDelete);
|
||||
|
||||
// Delete previous items from array and add the new ones
|
||||
selectedItems = removeElementsFromArray(selectedItems, previousSelectedRange);
|
||||
const currentSelectedItems = selectedItems.concat(nextSelectedItems);
|
||||
return Array.from(new Set(currentSelectedItems));
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
const toObject = function toObject (array, property) {
|
||||
return array.reduce((finalObject, currentElement) => {
|
||||
finalObject[currentElement[property]] = currentElement;
|
||||
return finalObject;
|
||||
}, {});
|
||||
};
|
||||
|
||||
export default toObject;
|
||||
Reference in New Issue
Block a user