Direction Utilities API
Direction constants and utility methods for parsing and manipulation.
Direction Constants
Built-in direction constants for spatial navigation.
import { Direction } from '@motioneffector/spatial'
// Compass directions
Direction.NORTH // 'NORTH'
Direction.NORTHEAST // 'NORTHEAST'
Direction.EAST // 'EAST'
Direction.SOUTHEAST // 'SOUTHEAST'
Direction.SOUTH // 'SOUTH'
Direction.SOUTHWEST // 'SOUTHWEST'
Direction.WEST // 'WEST'
Direction.NORTHWEST // 'NORTHWEST'
// Vertical directions
Direction.UP // 'UP'
Direction.DOWN // 'DOWN'
// Special directions
Direction.IN // 'IN'
Direction.OUT // 'OUT'
Direction.opposite()
Returns the opposite direction.
Signature:
Direction.opposite(direction: Direction): Direction | null
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
direction |
Direction |
Yes | Direction to get opposite of |
Returns: Direction | null — Opposite direction, or null for custom directions without opposite
Example:
Direction.opposite('NORTH') // 'SOUTH'
Direction.opposite('SOUTH') // 'NORTH'
Direction.opposite('EAST') // 'WEST'
Direction.opposite('WEST') // 'EAST'
Direction.opposite('NORTHEAST') // 'SOUTHWEST'
Direction.opposite('UP') // 'DOWN'
Direction.opposite('IN') // 'OUT'
// Custom direction without opposite
Direction.opposite('WARP') // null
Direction.parse()
Parses a string into a Direction constant.
Signature:
Direction.parse(input: string): Direction | null
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
input |
string |
Yes | String to parse (case-insensitive) |
Returns: Direction | null — Parsed direction, or null if invalid
Example:
// Full names
Direction.parse('north') // 'NORTH'
Direction.parse('NORTH') // 'NORTH'
Direction.parse('North') // 'NORTH'
// Abbreviations
Direction.parse('n') // 'NORTH'
Direction.parse('ne') // 'NORTHEAST'
Direction.parse('e') // 'EAST'
Direction.parse('se') // 'SOUTHEAST'
Direction.parse('s') // 'SOUTH'
Direction.parse('sw') // 'SOUTHWEST'
Direction.parse('w') // 'WEST'
Direction.parse('nw') // 'NORTHWEST'
Direction.parse('u') // 'UP'
Direction.parse('d') // 'DOWN'
// Special
Direction.parse('in') // 'IN'
Direction.parse('out') // 'OUT'
// Invalid
Direction.parse('invalid') // null
Direction.parse('') // null
registerDirection()
Registers a custom direction with its opposite mapping.
Signature:
graph.registerDirection(direction: string, options: RegisterDirectionOptions): void
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
direction |
string |
Yes | Custom direction name |
options |
RegisterDirectionOptions |
Yes | Registration options |
Returns: void
Example:
// Self-opposite (portal)
graph.registerDirection('PORTAL', { opposite: 'PORTAL' })
// Paired opposites
graph.registerDirection('CLIMB', { opposite: 'DESCEND' })
// Also registers DESCEND → CLIMB
// No opposite (one-way)
graph.registerDirection('WARP', { opposite: null })
// Use in connections
graph.connect('a', 'PORTAL' as any, 'b')
Types
Direction
Union type of all direction string literals.
type Direction =
| 'NORTH' | 'NORTHEAST' | 'EAST' | 'SOUTHEAST'
| 'SOUTH' | 'SOUTHWEST' | 'WEST' | 'NORTHWEST'
| 'UP' | 'DOWN'
| 'IN' | 'OUT'
RegisterDirectionOptions
Options for registering custom directions.
interface RegisterDirectionOptions {
opposite?: Direction | null
}
| Property | Type | Required | Description |
|---|---|---|---|
opposite |
Direction | null |
No | Opposite direction, or null for no opposite |
Opposite Mappings
Built-in direction opposite pairs:
| Direction | Opposite |
|---|---|
NORTH |
SOUTH |
SOUTH |
NORTH |
EAST |
WEST |
WEST |
EAST |
NORTHEAST |
SOUTHWEST |
SOUTHWEST |
NORTHEAST |
NORTHWEST |
SOUTHEAST |
SOUTHEAST |
NORTHWEST |
UP |
DOWN |
DOWN |
UP |
IN |
OUT |
OUT |
IN |
Parse Mappings
Supported input strings for parsing:
| Input | Result |
|---|---|
n, north |
NORTH |
ne, northeast |
NORTHEAST |
e, east |
EAST |
se, southeast |
SOUTHEAST |
s, south |
SOUTH |
sw, southwest |
SOUTHWEST |
w, west |
WEST |
nw, northwest |
NORTHWEST |
u, up |
UP |
d, down |
DOWN |
in |
IN |
out |
OUT |
All parsing is case-insensitive.