matrix-react-sdk
Version:
SDK for matrix.org using React
40 lines (37 loc) • 3.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTimeoutToggle = void 0;
var _react = require("react");
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/**
* Hook that allows toggling a boolean value and resets it after a timeout.
*
* @param {boolean} defaultValue Default value
* @param {number} timeoutMs Time after that the value will be reset
*/
const useTimeoutToggle = (defaultValue, timeoutMs) => {
const timeoutId = (0, _react.useRef)();
const [value, setValue] = (0, _react.useState)(defaultValue);
const toggle = () => {
setValue(!defaultValue);
timeoutId.current = window.setTimeout(() => setValue(defaultValue), timeoutMs);
};
(0, _react.useEffect)(() => {
return () => {
clearTimeout(timeoutId.current);
};
});
return {
toggle,
value
};
};
exports.useTimeoutToggle = useTimeoutToggle;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlVGltZW91dFRvZ2dsZSIsImRlZmF1bHRWYWx1ZSIsInRpbWVvdXRNcyIsInRpbWVvdXRJZCIsInVzZVJlZiIsInZhbHVlIiwic2V0VmFsdWUiLCJ1c2VTdGF0ZSIsInRvZ2dsZSIsImN1cnJlbnQiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidXNlRWZmZWN0IiwiY2xlYXJUaW1lb3V0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VUaW1lb3V0VG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBhbGxvd3MgdG9nZ2xpbmcgYSBib29sZWFuIHZhbHVlIGFuZCByZXNldHMgaXQgYWZ0ZXIgYSB0aW1lb3V0LlxuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGVmYXVsdFZhbHVlIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0TXMgVGltZSBhZnRlciB0aGF0IHRoZSB2YWx1ZSB3aWxsIGJlIHJlc2V0XG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUaW1lb3V0VG9nZ2xlID0gKFxuICAgIGRlZmF1bHRWYWx1ZTogYm9vbGVhbixcbiAgICB0aW1lb3V0TXM6IG51bWJlcixcbik6IHtcbiAgICB2YWx1ZTogYm9vbGVhbjtcbiAgICB0b2dnbGUoKTogdm9pZDtcbn0gPT4ge1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihkZWZhdWx0VmFsdWUpO1xuXG4gICAgY29uc3QgdG9nZ2xlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBzZXRWYWx1ZSghZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgdGltZW91dElkLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBzZXRWYWx1ZShkZWZhdWx0VmFsdWUpLCB0aW1lb3V0TXMpO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvZ2dsZSxcbiAgICAgICAgdmFsdWUsXG4gICAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGdCQUFnQixHQUFHQSxDQUM1QkMsWUFBcUIsRUFDckJDLFNBQWlCLEtBSWhCO0VBQ0QsTUFBTUMsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBcUIsQ0FBQztFQUM5QyxNQUFNLENBQUNDLEtBQUssRUFBRUMsUUFBUSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFVTixZQUFZLENBQUM7RUFFekQsTUFBTU8sTUFBTSxHQUFHQSxDQUFBLEtBQVk7SUFDdkJGLFFBQVEsQ0FBQyxDQUFDTCxZQUFZLENBQUM7SUFDdkJFLFNBQVMsQ0FBQ00sT0FBTyxHQUFHQyxNQUFNLENBQUNDLFVBQVUsQ0FBQyxNQUFNTCxRQUFRLENBQUNMLFlBQVksQ0FBQyxFQUFFQyxTQUFTLENBQUM7RUFDbEYsQ0FBQztFQUVELElBQUFVLGdCQUFTLEVBQUMsTUFBTTtJQUNaLE9BQU8sTUFBTTtNQUNUQyxZQUFZLENBQUNWLFNBQVMsQ0FBQ00sT0FBTyxDQUFDO0lBQ25DLENBQUM7RUFDTCxDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0hELE1BQU07SUFDTkg7RUFDSixDQUFDO0FBQ0wsQ0FBQztBQUFDUyxPQUFBLENBQUFkLGdCQUFBLEdBQUFBLGdCQUFBIiwiaWdub3JlTGlzdCI6W119