UNPKG

react-native-gesture-image-viewer

Version:

🖼️ A highly customizable and easy-to-use React Native image viewer with gesture support and external controls

50 lines (49 loc) 1.4 kB
"use strict"; import GestureViewerManager from "./GestureViewerManager.js"; class GestureViewerRegistry { managers = new Map(); subscribers = new Map(); subscribeToManager(id, callback) { if (!this.subscribers.has(id)) { this.subscribers.set(id, new Set()); } this.subscribers.get(id)?.add(callback); const manager = this.managers.get(id) || null; callback(manager); return () => { const subscribers = this.subscribers.get(id); subscribers?.delete(callback); if (subscribers && subscribers.size === 0) { this.subscribers.delete(id); } }; } createManager(id) { if (this.managers.has(id)) { return this.managers.get(id) || null; } const manager = new GestureViewerManager(); this.managers.set(id, manager); this.notifySubscribers(id, manager); return manager; } getManager(id) { return this.managers.get(id) || null; } deleteManager(id) { const manager = this.managers.get(id); if (manager) { manager.cleanUp(); this.managers.delete(id); this.notifySubscribers(id, null); } } notifySubscribers(id, manager) { const listeners = this.subscribers.get(id); if (listeners) { [...listeners].forEach(callback => callback(manager)); } } } export const registry = new GestureViewerRegistry(); //# sourceMappingURL=GestureViewerRegistry.js.map