UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

131 lines 3.76 kB
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