rs-react-native-image-gallery
Version:
React Native Image Gallery with Thumbnails
32 lines • 4.18 kB
JavaScript
/**
* Calculate squared distance between two points
* @param a First coordinate
* @param b Second coordinate
*/
export var pow2abs = function (a, b) { return Math.pow((a - b), 2); };
/**
* Get distance between two touch points
* @param touches Array of touch events
*/
export var getDistance = function (touches) {
// Early validation
if (!touches || touches.length < 2)
return 0;
var a = touches[0], b = touches[1];
// Null check with optional chaining
if (!(a === null || a === void 0 ? void 0 : a.pageX) || !(b === null || b === void 0 ? void 0 : b.pageX) || !(a === null || a === void 0 ? void 0 : a.pageY) || !(b === null || b === void 0 ? void 0 : b.pageY))
return 0;
return Math.sqrt(pow2abs(a.pageX, b.pageX) + pow2abs(a.pageY, b.pageY));
};
/**
* Calculate scale based on distance ratio with a multiplier
* @param currentDistance Current distance between touch points
* @param initialDistance Initial distance between touch points
*/
export var getScale = function (currentDistance, initialDistance) {
// Prevent division by zero
if (!initialDistance)
return 1;
return (currentDistance / initialDistance) * 1.2;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvX2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxJQUFNLE9BQU8sR0FBRyxVQUFDLENBQVMsRUFBRSxDQUFTLElBQWEsT0FBQSxTQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFJLENBQUMsQ0FBQSxFQUFaLENBQVksQ0FBQztBQUV0RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsSUFBTSxXQUFXLEdBQUcsVUFBQyxPQUFnQztJQUMzRCxtQkFBbUI7SUFDbkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUV0QyxJQUFBLENBQUMsR0FBTyxPQUFPLEdBQWQsRUFBRSxDQUFDLEdBQUksT0FBTyxHQUFYLENBQVk7SUFFdkIsb0NBQW9DO0lBQ3BDLElBQUksQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxLQUFLLENBQUEsSUFBSSxDQUFDLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLEtBQUssQ0FBQSxJQUFJLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsS0FBSyxDQUFBLElBQUksQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxLQUFLLENBQUE7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUUvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsSUFBTSxRQUFRLEdBQUcsVUFBQyxlQUF1QixFQUFFLGVBQXVCO0lBQ3hFLDJCQUEyQjtJQUMzQixJQUFJLENBQUMsZUFBZTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hdGl2ZVRvdWNoRXZlbnQgfSBmcm9tICdyZWFjdC1uYXRpdmUnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBzcXVhcmVkIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50c1xuICogQHBhcmFtIGEgRmlyc3QgY29vcmRpbmF0ZVxuICogQHBhcmFtIGIgU2Vjb25kIGNvb3JkaW5hdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHBvdzJhYnMgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIgPT4gKGEgLSBiKSAqKiAyO1xuXG4vKipcbiAqIEdldCBkaXN0YW5jZSBiZXR3ZWVuIHR3byB0b3VjaCBwb2ludHNcbiAqIEBwYXJhbSB0b3VjaGVzIEFycmF5IG9mIHRvdWNoIGV2ZW50c1xuICovXG5leHBvcnQgY29uc3QgZ2V0RGlzdGFuY2UgPSAodG91Y2hlczogQXJyYXk8TmF0aXZlVG91Y2hFdmVudD4pOiBudW1iZXIgPT4ge1xuXHQvLyBFYXJseSB2YWxpZGF0aW9uXG5cdGlmICghdG91Y2hlcyB8fCB0b3VjaGVzLmxlbmd0aCA8IDIpIHJldHVybiAwO1xuXG5cdGNvbnN0IFthLCBiXSA9IHRvdWNoZXM7XG5cblx0Ly8gTnVsbCBjaGVjayB3aXRoIG9wdGlvbmFsIGNoYWluaW5nXG5cdGlmICghYT8ucGFnZVggfHwgIWI/LnBhZ2VYIHx8ICFhPy5wYWdlWSB8fCAhYj8ucGFnZVkpIHJldHVybiAwO1xuXG5cdHJldHVybiBNYXRoLnNxcnQocG93MmFicyhhLnBhZ2VYLCBiLnBhZ2VYKSArIHBvdzJhYnMoYS5wYWdlWSwgYi5wYWdlWSkpO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgc2NhbGUgYmFzZWQgb24gZGlzdGFuY2UgcmF0aW8gd2l0aCBhIG11bHRpcGxpZXJcbiAqIEBwYXJhbSBjdXJyZW50RGlzdGFuY2UgQ3VycmVudCBkaXN0YW5jZSBiZXR3ZWVuIHRvdWNoIHBvaW50c1xuICogQHBhcmFtIGluaXRpYWxEaXN0YW5jZSBJbml0aWFsIGRpc3RhbmNlIGJldHdlZW4gdG91Y2ggcG9pbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTY2FsZSA9IChjdXJyZW50RGlzdGFuY2U6IG51bWJlciwgaW5pdGlhbERpc3RhbmNlOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuXHQvLyBQcmV2ZW50IGRpdmlzaW9uIGJ5IHplcm9cblx0aWYgKCFpbml0aWFsRGlzdGFuY2UpIHJldHVybiAxO1xuXG5cdHJldHVybiAoY3VycmVudERpc3RhbmNlIC8gaW5pdGlhbERpc3RhbmNlKSAqIDEuMjtcbn07XG4iXX0=