simpledit

0.0.0

FileIOManager

Manages file import/export operations Handles XYZ format and coordinate conversions

new FileIOManager(editor: any)
Parameters
editor (any)
Instance Members
importXYZ(xyzString)
exportXYZ()
atomsToXYZ(atoms)
atomsToJSON(atoms)
downloadXYZ()
loadXYZFile(file)

GeometryController

Controls geometry manipulation sliders and operations Handles bond length, angle, and dihedral adjustments

new GeometryController(editor: any)
Parameters
editor (any)
Instance Members
bindGeometrySliders()
bindBondLengthSlider()
bindAngleSlider()
bindDihedralSlider()
setBondLength(targetDist)
setAngle(targetAngle)
setDihedral(targetAngle)
getMovingFragment(pivot, direction)

calculateDistance

Calculate distance between two points

calculateDistance(p1: THREE.Vector3, p2: THREE.Vector3): number
Parameters
p1 (THREE.Vector3)
p2 (THREE.Vector3)
Returns
number: Distance in Angstroms

calculateAngle

Calculate angle between three points (p1-p2-p3)

calculateAngle(p1: THREE.Vector3, p2: THREE.Vector3, p3: THREE.Vector3): number
Parameters
p1 (THREE.Vector3)
p2 (THREE.Vector3) Vertex
p3 (THREE.Vector3)
Returns
number: Angle in degrees

calculateDihedral

Calculate dihedral angle (p1-p2-p3-p4)

calculateDihedral(p1: THREE.Vector3, p2: THREE.Vector3, p3: THREE.Vector3, p4: THREE.Vector3): number
Parameters
p1 (THREE.Vector3)
p2 (THREE.Vector3)
p3 (THREE.Vector3)
p4 (THREE.Vector3)
Returns
number: Dihedral angle in degrees

getNewPositionsForBondLength

Calculate new positions for bond length adjustment Moves 'movingAtoms' to satisfy target distance between atom1 and atom2

getNewPositionsForBondLength(pos1: THREE.Vector3, pos2: THREE.Vector3, movingAtomPositions: Array<THREE.Vector3>, targetDist: number): Array<THREE.Vector3>
Parameters
pos1 (THREE.Vector3) Position of fixed atom
pos2 (THREE.Vector3) Position of moving atom (pivot)
movingAtomPositions (Array<THREE.Vector3>) Positions of all atoms to move (including pos2)
targetDist (number) Target distance
Returns
Array<THREE.Vector3>: New positions for moving atoms

getNewPositionsForAngle

Calculate new positions for bond angle adjustment Rotates 'movingAtoms' around axis (pivot-normal) to satisfy target angle p1-pivot-p3

getNewPositionsForAngle(p1: THREE.Vector3, pivot: THREE.Vector3, p3: THREE.Vector3, movingAtomPositions: Array<THREE.Vector3>, targetAngleDegrees: number): Array<THREE.Vector3>
Parameters
p1 (THREE.Vector3) Fixed atom position
pivot (THREE.Vector3) Pivot atom position (vertex)
p3 (THREE.Vector3) Moving atom position (defines current angle)
movingAtomPositions (Array<THREE.Vector3>) Atoms to rotate
targetAngleDegrees (number) Target angle in degrees
Returns
Array<THREE.Vector3>: New positions

getNewPositionsForDihedral

Calculate new positions for dihedral angle adjustment Rotates 'movingAtoms' around axis p2-p3

getNewPositionsForDihedral(p1: THREE.Vector3, p2: THREE.Vector3, p3: THREE.Vector3, p4: THREE.Vector3, movingAtomPositions: Array<THREE.Vector3>, targetDihedralDegrees: number): Array<THREE.Vector3>
Parameters
p1 (THREE.Vector3)
p2 (THREE.Vector3) Axis start
p3 (THREE.Vector3) Axis end
p4 (THREE.Vector3)
movingAtomPositions (Array<THREE.Vector3>) Atoms to rotate
targetDihedralDegrees (number) Target dihedral
Returns
Array<THREE.Vector3>: New positions

getCenterOfMass

Calculate center of mass of atoms

getCenterOfMass(atoms: Array<Object>): THREE.Vector3
Parameters
atoms (Array<Object>) Array of atom objects with position property
Returns
THREE.Vector3: Center of mass

getRotatedPositions

Get positions rotated by Euler angles (degrees) around (0,0,0)

getRotatedPositions(positions: Array<THREE.Vector3>, xDeg: number, yDeg: number, zDeg: number): Array<THREE.Vector3>
Parameters
positions (Array<THREE.Vector3>)
xDeg (number)
yDeg (number)
zDeg (number)
Returns
Array<THREE.Vector3>:

getTranslatedPositions

Get translated positions

getTranslatedPositions(positions: Array<THREE.Vector3>, x: number, y: number, z: number): Array<THREE.Vector3>
Parameters
positions (Array<THREE.Vector3>)
x (number)
y (number)
z (number)
Returns
Array<THREE.Vector3>:

calculateSmartOffset

Calculate smart offset to avoid overlap

calculateSmartOffset(incomingAtoms: Array<Object>, currentAtoms: Array<Object>, minDistance: number): THREE.Vector3
Parameters
incomingAtoms (Array<Object>) Atoms to add
currentAtoms (Array<Object>) Existing atoms
minDistance (number) Minimum distance required
Returns
THREE.Vector3: Offset vector

RenderManager

Manages 3D rendering of atoms and bonds Handles mesh creation, color management, and scene updates

new RenderManager(editor: any)
Parameters
editor (any)
Instance Members
createAtomMesh(atom)
createBondMesh(bond)
getElementColor(element)
getElementRadius(element)
updateAtomColors()
updateBondMeshes()
rebuildScene()
updateAtomVisuals(atom)
updateBondVisuals()

SelectionManager

Manages atom selection state and UI Handles selection highlighting, order tracking, and status updates

new SelectionManager(editor: any)
Parameters
editor (any)
Instance Members
clearSelection()
selectAtom(atom, add)
deselectAtom(atom)
selectByIndices(indices)
selectRange(start, end)
selectAll()
invertSelection()
getSelectedAtoms()
getSelectionCount()
getSelectionOrder()
setSelectionMode(mode)
cycleSelectionMode()
updateSelectionStatus()
clearSelectionStatus()
updateHighlights()

UIManager

Manages UI interactions, modals, and labels Handles toolbar events, periodic table, coordinate editor, and atom labels

new UIManager(editor: any)
Parameters
editor (any)
Instance Members
bindToolbarEvents()
bindModeButtons()
bindViewButtons()
bindLabelButton()
bindExportButton()
bindMoleculeButtons()
updateLabelButtonText()
openPeriodicTable(callback)
closePeriodicTable()
openCoordinateEditor()
closeCoordinateEditor()
toggleMaximize(element)
exportPNG()
showError(message)
showSuccess(message)
createAtomLabel(atom)
updateAtomLabelText(atom, label)
updateAllLabels()
updateLabelPositions()

ErrorHandler

Centralized error handling utility Provides consistent error/success response format across the application

new ErrorHandler()
Static Members
error(message, details)
success(message, data)
warning(message)
info(message)
logError(context, error)
validateParams(params, required)
validateNumber(value, name)
validatePositive(value, name)

LabelRenderer

Optimized label rendering with dirty checking and RAF batching Reduces DOM updates from every frame to only when needed

new LabelRenderer()
Instance Members
init(atoms, camera, canvas)
markDirty(atomIndex)
markAllDirty()
scheduleUpdate()
updateDirtyLabels()
getScreenPosition(atom)
updateAllLabels()
cancelUpdate()
dispose()

Vector3Pool

Object pool for THREE.Vector3 to reduce garbage collection Reuses Vector3 instances instead of creating new ones

new Vector3Pool(size: any)
Parameters
size (any = 100)
Instance Members
get()
getSet(x, y, z)
resize(newSize)