ITADN

Possible future direction of the project

#220Closedmatthewp 创建于 2024-11-10
M
matthewpcommented
About a year ago I experienced with a library built on top of Robot that combined state machines with DOM manipulation. Ultimately I decided to stop pursuing it. The one thing that really resonated, however, was that it defined your state machine in a schema style syntax (similar to Zod) rather than the functional way we do in Robot now. I want to discuss this as a possible new syntax for Robot. Here's an example of what a machine would look like: ```js import { r } from 'robot3'; let machine = r .model({ mode: r.string(), dark: r.boolean(), emoji: r.string(), }) .states(['idle']) .events('idle', ['toggle']) .transition( 'idle', 'toggle', 'idle', r.assign('mode', ({ model }) => (model.mode === 'dark' ? 'light' : 'dark')), r.assign('dark', ({ model }) => model.mode === 'dark'), r.assign('emoji', ({ model }) => model.dark ? '🌛' : '☀️') ) ``` This renames `context` to `model`, and you define the properties on your model. Then in `assign` you get typesafe manipulation of model values. To be clear, I'm not sold on this idea as a replacement for Robot's current functional style. But I'm curious to hear what people think. There is no decision being made now, and it's not likely to do so for a long time, if ever.
关闭于 2024-12-14 2 条评论