UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

36 lines 2.35 kB
"use strict"; 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=