export class ToolBase { constructor(viewer) { this.viewer = viewer this.handler = null this.listeners = [] } subscribe(key, listener) { this.listeners.push({ key, listener }) } notify(key, data) { this.listeners.filter(item => item.key === key).forEach(item => item.listener(data)) } removeHandler(types) { if (!this.handler) return if (types?.length) { types.forEach(type => this.handler.removeInputAction(type)) } this.handler.destroy() this.handler = null } }