@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
149 lines (148 loc) • 4.96 kB
JavaScript
;
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