48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { type Models } from '@kittycad/lib'
|
|
import { CameraSystem } from './cameraControls'
|
|
import { Themes } from './theme'
|
|
|
|
export const DEFAULT_PROJECT_NAME = 'project-$nnn'
|
|
export const SETTINGS_PERSIST_KEY = 'SETTINGS_PERSIST_KEY'
|
|
export const SETTINGS_FILE_NAME = 'settings.json'
|
|
|
|
export enum UnitSystem {
|
|
Imperial = 'imperial',
|
|
Metric = 'metric',
|
|
}
|
|
|
|
export const baseUnits = {
|
|
imperial: ['in', 'ft', 'yd'],
|
|
metric: ['mm', 'cm', 'm'],
|
|
} as const
|
|
|
|
export type BaseUnit = Models['UnitLength_type']
|
|
|
|
export const baseUnitsUnion = Object.values(baseUnits).flatMap((v) => v)
|
|
|
|
export type Toggle = 'On' | 'Off'
|
|
|
|
export type SettingsMachineContext = {
|
|
baseUnit: BaseUnit
|
|
cameraControls: CameraSystem
|
|
defaultDirectory: string
|
|
defaultProjectName: string
|
|
onboardingStatus: string
|
|
showDebugPanel: boolean
|
|
textWrapping: Toggle
|
|
theme: Themes
|
|
unitSystem: UnitSystem
|
|
}
|
|
|
|
export const initialSettings: SettingsMachineContext = {
|
|
baseUnit: 'mm' as BaseUnit,
|
|
cameraControls: 'KittyCAD' as CameraSystem,
|
|
defaultDirectory: '',
|
|
defaultProjectName: DEFAULT_PROJECT_NAME,
|
|
onboardingStatus: '',
|
|
showDebugPanel: false,
|
|
textWrapping: 'On' as Toggle,
|
|
theme: Themes.System,
|
|
unitSystem: UnitSystem.Metric,
|
|
}
|