one
Version:
One is a React framework for web, iOS, and Android apps.
31 lines (28 loc) • 909 B
JavaScript
import { useRef, useState } from "react";
function useControlled(onChange) {
var revision = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
if (!Number.isInteger(revision) || revision < 0 || revision > 2147483647) {
throw new Error("Control revision must be a nonnegative Int32");
}
var received = useRef({
eventCount: 0,
revision
});
var [acknowledged, setAcknowledged] = useState(received.current);
return {
revision,
acknowledgedEvent: acknowledged.revision === revision ? acknowledged.eventCount : 0,
onNativeChange(event) {
if (event.revision !== revision) return;
if (received.current.revision === revision && event.eventCount <= received.current.eventCount) return;
received.current = event;
try {
onChange(event);
} finally {
setAcknowledged(event);
}
}
};
}
export { useControlled };
//# sourceMappingURL=controlled.native.js.map