UNPKG

@attio/react-native-bottom-sheet-toolbox

Version:
54 lines (52 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BOTTOM_SHEET_DEV_TOOLS = void 0; var _nanoid = require("nanoid"); class BottomSheetToolboxDevTools { _adaptersWithListenerRemovers = []; _messageListeners = new Map(); addAdapter(adapter) { const adapterWithListenerRemovers = { adapter, listenerRemovers: new Map() }; this._adaptersWithListenerRemovers.push(adapterWithListenerRemovers); for (const [messageListenerId, listenerArgs] of this._messageListeners.entries()) { const [method, listener] = listenerArgs; const removeListener = adapter.addMessageListener(method, listener); adapterWithListenerRemovers.listenerRemovers.set(messageListenerId, removeListener); } return () => { this._adaptersWithListenerRemovers = this._adaptersWithListenerRemovers.filter(adapterWithListenerRemovers => adapterWithListenerRemovers.adapter !== adapter); }; } sendMessage(method, parameters) { // Message sent before an adapter is added are lost. this._adaptersWithListenerRemovers.forEach(adapterWithListenerRemovers => { adapterWithListenerRemovers.adapter.sendMessage(method, parameters); }); } addMessageListener(method, listener) { const messageListenerId = (0, _nanoid.nanoid)(); const listenerArgs = [method, listener]; this._messageListeners.set(messageListenerId, listenerArgs); for (const adapterWithListenerRemovers of this._adaptersWithListenerRemovers) { const removeListener = adapterWithListenerRemovers.adapter.addMessageListener(method, listener); adapterWithListenerRemovers.listenerRemovers.set(messageListenerId, removeListener); } return () => { this._messageListeners.delete(messageListenerId); for (const adapterWithListenerRemovers of this._adaptersWithListenerRemovers) { const removeListener = adapterWithListenerRemovers.listenerRemovers.get(messageListenerId); removeListener?.(); } }; } } /** * This is for internal use, so we can log to our separate devtools package. */ const BOTTOM_SHEET_DEV_TOOLS = exports.BOTTOM_SHEET_DEV_TOOLS = new BottomSheetToolboxDevTools(); //# sourceMappingURL=dev-tools-adapter.js.map