UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

149 lines (148 loc) 4.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.roundValue = exports.percentToValue = exports.getUpdatedValues = exports.getOffset = exports.getMousePosition = exports.getFormattedNumber = exports.createMockDiv = exports.closestIndex = exports.clamp = exports.calculatePercent = void 0; require("core-js/modules/web.dom-collections.iterator.js"); var _NumberUtils = require("../number-format/NumberUtils"); 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; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } const percentToValue = (percent, min, max, isReverse) => { let num = (max - min) * percent / 100 + min; if (isReverse) { num = max + min - num; } return num; }; exports.percentToValue = percentToValue; 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 }; }; exports.getOffset = getOffset; 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 }; }; exports.getMousePosition = getMousePosition; 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)); }; exports.calculatePercent = calculatePercent; 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); }; exports.clamp = clamp; 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)); }; exports.roundValue = roundValue; 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; }; exports.createMockDiv = createMockDiv; const getUpdatedValues = (value, index, newValue) => { return value.map((val, i) => { if (i === index) { val = newValue; } return val; }); }; exports.getUpdatedValues = getUpdatedValues; 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); }; exports.closestIndex = closestIndex; const getFormattedNumber = (value, numberFormat) => { if (numberFormat) { if (typeof numberFormat === 'function') { const number = numberFormat(value); return { number, aria: number }; } return (0, _NumberUtils.format)(value, _objectSpread(_objectSpread({}, numberFormat || {}), {}, { returnAria: true })); } return { aria: null, number: null }; }; exports.getFormattedNumber = getFormattedNumber; //# sourceMappingURL=SliderHelpers.js.map