@attio/react-native-bottom-sheet-toolbox
Version:
36 lines (34 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLastSharedValueBeforeLock = useLastSharedValueBeforeLock;
var _reactNativeReanimated = require("react-native-reanimated");
var _context = require("../context");
var _useLastSharedValue = require("./use-last-shared-value");
/**
* Returns a shared value holding the last value seen of the input shared value
* prior to a current position lock being engaged.
*/
function useLastSharedValueBeforeLock(sharedValue) {
const {
currentPositionLockSharedValue
} = (0, _context.useBottomSheetToolboxInternalContext)();
const lastSharedValue = (0, _useLastSharedValue.useLastSharedValue)(sharedValue);
const sharedValueBeforeLock = (0, _reactNativeReanimated.useSharedValue)(null);
(0, _reactNativeReanimated.useAnimatedReaction)(() => currentPositionLockSharedValue.get(), (currentPositionLock, lastCurrentPositionLock) => {
const didJustLock = currentPositionLock !== null && currentPositionLock !== lastCurrentPositionLock;
if (didJustLock) {
const lastValue = lastSharedValue.get();
sharedValueBeforeLock.set(lastValue);
} else {
sharedValueBeforeLock.set(null);
/**
* When a lock ends take most recent value.
*/
lastSharedValue.set(sharedValue.get());
}
}, [currentPositionLockSharedValue.get]);
return sharedValueBeforeLock;
}
//# sourceMappingURL=use-last-shared-value-before-lock.js.map