import Kinematic from '$lib/kinematic' import { ControllerData, KinematicData, ModeData, ModesEnum, WalkGaitData, WalkGaits } from '$lib/platform_shared/message' import { persistentStore } from '$lib/utilities/svelte-utilities' import { writable, type Writable } from 'svelte/store' export const emulateModel = writable(true) export const jointNames = persistentStore('joint_names', []) export const model = writable() export const mode: Writable = writable(ModeData.create({ mode: ModesEnum.DEACTIVATED })) export const walkGait: Writable = writable( WalkGaitData.create({ gait: WalkGaits.TROT }) ) export const kinematicData = writable(KinematicData.create()) export const input: Writable = writable( ControllerData.create({ left: { x: 0, y: 0 }, right: { x: 0, y: 0 }, height: 0.7, s1: 0.5, speed: 0.5 }) ) function enumToValuesAndLabels(enumObj: Record) { const entries = Object.entries(enumObj).filter( ([key, v]) => typeof v === 'number' && key !== 'UNRECOGNIZED' ) as [string, T][] return { values: entries.map(([, v]) => v), labels: Object.fromEntries( entries.map(([k, v]) => [v, k.charAt(0) + k.slice(1).toLowerCase()]) ) as Record } } const modesData = enumToValuesAndLabels(ModesEnum) export const modes = modesData.values export const modeLabels = modesData.labels const walkGaitsData = enumToValuesAndLabels(WalkGaits) export const walkGaits = walkGaitsData.values export const walkGaitLabels = walkGaitsData.labels