import { isWeex } from 'universal-env'; import { getComponentRect, px2rem } from './dom'; export const unit = isWeex ? 'px' : 'rpx'; export function pauseEvent(e: TouchEvent): void { e.stopPropagation(); } export function getTouchPosition(e: TouchEvent): number { return isWeex ? e.changedTouches[0].screenX : px2rem(e.changedTouches[0].pageX); } export function getNodeRect(node): any { return new Promise((resolve) => { getComponentRect( node, (e) => { resolve(e.size); }, true ); }); } export function getPrecision(step): number { const stepString = step.toString(); let precision = 0; if (stepString.indexOf('.') >= 0) { precision = stepString.length - stepString.indexOf('.') - 1; } return precision; } export function getClosestThumbIndex(position: number, thumbs: any) { const keys = Object.keys(thumbs); if (keys.length === 1) { return Promise.resolve(0); } let index = 0; return Promise.all(keys.map((key: string): ClientRect => getNodeRect(thumbs[key].current))).then((rects) => { if (Math.abs(rects[0].left - position) > Math.abs(rects[1].left - position)) { index = 1; } return +keys[index]; }); } export function handleMarks(marks) { return Object.keys(marks) .map(parseFloat) .sort((a, b) => a - b); } export function isInRange(value: number, range: number[]) { if (range.length === 1) { range.unshift(0); } return value >= range[0] && value <= range[1]; } export function noop(): void {} export function isNil(val) { return val === undefined || val === null; }