diff --git a/src/views/orb-view.ts b/src/views/orb-view.ts index 283730b..75e9be3 100644 --- a/src/views/orb-view.ts +++ b/src/views/orb-view.ts @@ -44,7 +44,11 @@ export interface IOrbViewSettings { export type IOrbViewSettingsInit = Omit< Partial>, 'render' -> & { render?: Partial }; +> & { render?: Partial } & { + instances: { + simulator?: ISimulator | (() => ISimulator); + }; +}; export class OrbView implements IOrbView> { private _container: HTMLElement; @@ -150,7 +154,7 @@ export class OrbView implements IOrbVi .on('contextmenu', this.mouseRightClicked) .on('dblclick.zoom', this.mouseDoubleClicked); - this._simulator = SimulatorFactory.getSimulator(); + this._simulator = this._createSimulator(settings?.instances?.simulator); this._simulator.on(SimulatorEventType.SIMULATION_START, () => { this._isSimulating = true; this._simulationStartedAt = Date.now(); @@ -569,6 +573,12 @@ export class OrbView implements IOrbVi this._simulator.simulate(); } + +private _createSimulator(simulator: ISimulator | (() => ISimulator) | undefined): ISimulator { + if(typeof simulator === "function") return simulator(); + return simulator || SimulatorFactory.getSimulator(); +} + // TODO: Do we keep these fixNodes() { this._simulator.fixNodes(); @@ -579,3 +589,4 @@ export class OrbView implements IOrbVi this._simulator.releaseNodes(); } } +