import type { MorrisTelepresenceConfig } from './types'; import { createBrowserReachy } from './browser'; import { browserMicFactory } from './local-mic'; import { createSecureLeaseId, defaultControllerDependencies, MorrisTelepresenceController, } from './MorrisTelepresenceController'; import { PreviewReachy, previewMicFactory } from './preview'; /** Selects an entirely local fake before any SDK object is constructed. */ export function createRuntimeController( config: MorrisTelepresenceConfig, ): MorrisTelepresenceController { if (config.mode === 'preview') { return new MorrisTelepresenceController( config, defaultControllerDependencies( () => new PreviewReachy(), previewMicFactory, () => 'preview-morris-lease', ), ); } return new MorrisTelepresenceController( config, defaultControllerDependencies(createBrowserReachy, browserMicFactory, createSecureLeaseId), ); }