@launchmenu/core
Version:
An environment for visual keyboard controlled applets
36 lines • 2.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCallbackHook = void 0;
/**
* Creates a data hook that can be used for a single time callback
* @param callback The callback to be triggered
* @param forceRefreshTime The time such that if data is older, it will be refreshed
* @returns The created data hook, and a function to destroy it before it gets fired
*/
function createCallbackHook(callback, forceRefreshTime) {
let hookListenerRemovers = [];
let destroyed = false;
const remove = () => {
destroyed = true;
hookListenerRemovers.forEach(remover => remover());
hookListenerRemovers = [];
};
return [
{
call: () => {
if (destroyed)
return;
remove();
callback();
},
registerRemover: (remover) => {
hookListenerRemovers.push(remover);
},
refreshData: forceRefreshTime !== undefined,
...(forceRefreshTime !== undefined && { refreshTimestamp: forceRefreshTime }),
},
remove,
];
}
exports.createCallbackHook = createCallbackHook;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2FsbGJhY2tIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NyZWF0ZUNhbGxiYWNrSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7R0FLRztBQUNILFNBQWdCLGtCQUFrQixDQUM5QixRQUFvQixFQUNwQixnQkFBeUI7SUFFekIsSUFBSSxvQkFBb0IsR0FBRyxFQUFvQixDQUFDO0lBQ2hELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDaEIsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELG9CQUFvQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFDRixPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNQLElBQUksU0FBUztvQkFBRSxPQUFPO2dCQUN0QixNQUFNLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxlQUFlLEVBQUUsQ0FBQyxPQUFtQixFQUFFLEVBQUU7Z0JBQ3JDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsV0FBVyxFQUFFLGdCQUFnQixLQUFLLFNBQVM7WUFDM0MsR0FBRyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsSUFBSSxFQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLENBQUM7U0FDOUU7UUFDRCxNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUM7QUExQkQsZ0RBMEJDIn0=
;