@attio/react-native-bottom-sheet-toolbox
Version:
54 lines (52 loc) • 2.25 kB
JavaScript
"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