@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
131 lines • 3.76 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import "core-js/modules/web.dom-collections.iterator.js";
import { format } from '../number-format/NumberUtils';
export const percentToValue = (percent, min, max, isReverse) => {
let num = (max - min) * percent / 100 + min;
if (isReverse) {
num = max + min - num;
}
return num;
};
export const getOffset = node => {
const {
pageYOffset,
pageXOffset
} = typeof window !== 'undefined' ? window : {
pageYOffset: 0,
pageXOffset: 0
};
const {
left,
top
} = node.getBoundingClientRect();
return {
top: top + pageYOffset,
left: left + pageXOffset
};
};
export const getMousePosition = event => {
if (event.changedTouches && event.changedTouches[0]) {
return {
x: event.changedTouches[0].pageX,
y: event.changedTouches[0].pageY
};
}
return {
x: event.pageX,
y: event.pageY
};
};
export const calculatePercent = (node, event, isVertical) => {
const {
width,
height
} = node.getBoundingClientRect();
const {
top,
left
} = getOffset(node);
const {
x,
y
} = getMousePosition(event);
const value = isVertical ? y - top : x - left;
const onePercent = (isVertical ? height : width) / 100;
return Math.abs(clamp(value / onePercent));
};
export const clamp = function (value) {
let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
return Math.min(Math.max(value, min), max);
};
export const roundValue = (value, _ref) => {
let {
step,
min,
max
} = _ref;
if (step > 0) {
if (value >= max) {
return max;
}
if (value <= min) {
return min;
}
return Math.round(value / step) * step;
}
return parseFloat(parseFloat(String(value)).toFixed(3));
};
export const createMockDiv = _ref2 => {
let {
width,
height
} = _ref2;
const div = document.createElement('div');
Object.assign(div.style, {
width: `${width}px`,
height: `${height}px`
});
div.getBoundingClientRect = () => ({
width,
height,
top: 0,
left: 0,
right: width,
bottom: height
});
return div;
};
export const getUpdatedValues = (value, index, newValue) => {
return value.map((val, i) => {
if (i === index) {
val = newValue;
}
return val;
});
};
export const closestIndex = (goal, array) => {
const res = [...array].sort((a, b) => Math.abs(goal - a) - Math.abs(goal - b))[0];
return array.findIndex(num => num === res);
};
export const getFormattedNumber = (value, numberFormat) => {
if (numberFormat) {
if (typeof numberFormat === 'function') {
const number = numberFormat(value);
return {
number,
aria: number
};
}
return format(value, _objectSpread(_objectSpread({}, numberFormat || {}), {}, {
returnAria: true
}));
}
return {
aria: null,
number: null
};
};
//# sourceMappingURL=SliderHelpers.js.map