@almadar/std 16.241.0 → 16.243.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/behaviors/behaviors-registry.json +4650 -535
- package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +38 -1
- package/behaviors/lolo/agent/atoms/std-agent-session.lolo +1074 -47
- package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +8 -7
- package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +56 -37
- package/behaviors/lolo/infra/atoms/std-page-open.lolo +59 -0
- package/behaviors/lolo/infra/atoms/std-page-search.lolo +136 -0
- package/behaviors/lolo/infra/atoms/std-page-treat.lolo +59 -0
- package/behaviors/lolo/infra/atoms/std-page-watch.lolo +88 -0
- package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +25 -1
- package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +9 -0
- package/behaviors/lolo/ui/core/atoms/std-doc-page.lolo +153 -0
- package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +124 -92
- package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +114 -55
- package/behaviors/lolo/ui/learning/atoms/std-learn-compare.lolo +40 -14
- package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +363 -123
- package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +93 -48
- package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +60 -28
- package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +193 -96
- package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +75 -32
- package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +142 -86
- package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +266 -98
- package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +103 -65
- package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +223 -109
- package/behaviors/lolo/ui/learning/atoms/std-learn-measure.lolo +232 -64
- package/behaviors/lolo/ui/learning/atoms/std-learn-param-explorer.lolo +69 -29
- package/behaviors/lolo/ui/learning/atoms/std-learn-perturb.lolo +363 -123
- package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +73 -41
- package/behaviors/lolo/ui/learning/atoms/std-learn-sample-accumulator.lolo +96 -38
- package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +65 -45
- package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +243 -117
- package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +76 -28
- package/behaviors/lolo/ui/learning/atoms/std-learn-sim-3d.lolo +228 -109
- package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +95 -44
- package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +199 -125
- package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +92 -48
- package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +239 -78
- package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +147 -38
- package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +123 -58
- package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +22 -0
- package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +26 -0
- package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +26 -0
- package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +27 -1
- package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +27 -1
- package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +29 -9
- package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +26 -0
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/agent/atoms/std-agent-memory.orb +372 -2
- package/behaviors/registry/agent/atoms/std-agent-session.orb +4752 -348
- package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +54 -42
- package/behaviors/registry/agent/organisms/std-agent-assistant.orb +356 -122
- package/behaviors/registry/factory-signatures.json +1 -1
- package/behaviors/registry/infra/atoms/std-page-open.orb +435 -0
- package/behaviors/registry/infra/atoms/std-page-search.orb +885 -0
- package/behaviors/registry/infra/atoms/std-page-treat.orb +494 -0
- package/behaviors/registry/infra/atoms/std-page-watch.orb +572 -0
- package/behaviors/registry/ui/core/atoms/std-book-reader.orb +119 -0
- package/behaviors/registry/ui/core/atoms/std-card-grid.orb +61 -0
- package/behaviors/registry/ui/core/atoms/std-doc-page.orb +594 -0
- package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +903 -369
- package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1002 -232
- package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +253 -74
- package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +3624 -921
- package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +685 -144
- package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +404 -52
- package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1787 -210
- package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +699 -71
- package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1102 -578
- package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +2760 -872
- package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +689 -152
- package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1431 -633
- package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +2485 -512
- package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +501 -197
- package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +3642 -928
- package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +705 -125
- package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +624 -114
- package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +405 -153
- package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1911 -611
- package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +436 -128
- package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +2482 -485
- package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +896 -192
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +2001 -759
- package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +734 -228
- package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +2501 -764
- package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1591 -173
- package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +883 -122
- package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +176 -0
- package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +211 -0
- package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +211 -0
- package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +212 -1
- package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +212 -1
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +203 -9
- package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +211 -0
- package/behaviors/signatures.lolo +325 -655
- package/dist/behaviors/exports-reader.js +16092 -9747
- package/dist/behaviors/functions/index.d.ts +1052 -136
- package/dist/behaviors/functions/index.js +16063 -9745
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +16093 -9748
- package/dist/behaviors/query.js +16092 -9747
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +45 -25
- package/dist/behaviors-registry.json +4650 -535
- package/dist/index.d.ts +1 -1
- package/dist/index.js +16093 -9748
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +607 -263
- package/dist/registry/factory-signatures.json +1 -1
- package/package.json +3 -3
|
@@ -79,14 +79,21 @@ orbital LearnDoserOrbital {
|
|
|
79
79
|
padding: md
|
|
80
80
|
children: [
|
|
81
81
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
82
|
-
{ type:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
{ type:
|
|
82
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
83
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
84
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
85
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
86
|
+
] },
|
|
87
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
88
|
+
] },
|
|
89
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
90
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
91
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
92
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
93
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
94
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
95
|
+
] },
|
|
96
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
90
97
|
{ type: typography, variant: body, content: @entity.narration }
|
|
91
98
|
] }
|
|
92
99
|
]
|
|
@@ -96,18 +103,30 @@ orbital LearnDoserOrbital {
|
|
|
96
103
|
padding: md
|
|
97
104
|
children: [
|
|
98
105
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
99
|
-
{ type:
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
107
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
108
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
109
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
110
|
+
] },
|
|
111
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
112
|
+
] },
|
|
113
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
114
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
115
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
116
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
117
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
118
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
119
|
+
] }
|
|
106
120
|
] }
|
|
107
121
|
]
|
|
108
122
|
}))
|
|
109
123
|
(emit DOSER_UPDATED { running: @entity.running, dose: @entity.dose, bandLabel: @entity.bandLabel, done: @entity.done })
|
|
110
124
|
|
|
125
|
+
MODE_SELECTED -> idle when (and (not (== @config.matchMode "")) (not (== ?mode @config.matchMode)))
|
|
126
|
+
(set @entity.active false)
|
|
127
|
+
(set @entity.running false)
|
|
128
|
+
(render-ui main null)
|
|
129
|
+
|
|
111
130
|
MODE_SELECTED -> idle when (== ?mode @config.matchMode)
|
|
112
131
|
(set @entity.active true)
|
|
113
132
|
(set @entity.title @config.title)
|
|
@@ -141,14 +160,21 @@ orbital LearnDoserOrbital {
|
|
|
141
160
|
padding: md
|
|
142
161
|
children: [
|
|
143
162
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
144
|
-
{ type:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
{ type:
|
|
163
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
164
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
165
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
166
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
167
|
+
] },
|
|
168
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
169
|
+
] },
|
|
170
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
171
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
172
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
173
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
174
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
175
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
176
|
+
] },
|
|
177
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
152
178
|
{ type: typography, variant: body, content: @entity.narration }
|
|
153
179
|
] }
|
|
154
180
|
]
|
|
@@ -158,13 +184,20 @@ orbital LearnDoserOrbital {
|
|
|
158
184
|
padding: md
|
|
159
185
|
children: [
|
|
160
186
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
161
|
-
{ type:
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
187
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
188
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
189
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
190
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
191
|
+
] },
|
|
192
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
193
|
+
] },
|
|
194
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
195
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
196
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
197
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
198
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
199
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
200
|
+
] }
|
|
168
201
|
] }
|
|
169
202
|
]
|
|
170
203
|
}))
|
|
@@ -198,14 +231,21 @@ orbital LearnDoserOrbital {
|
|
|
198
231
|
padding: md
|
|
199
232
|
children: [
|
|
200
233
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
201
|
-
{ type:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
{ type:
|
|
234
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
235
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
236
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
237
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
238
|
+
] },
|
|
239
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
240
|
+
] },
|
|
241
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
242
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
243
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
244
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
245
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
246
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
247
|
+
] },
|
|
248
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
209
249
|
{ type: typography, variant: body, content: @entity.narration }
|
|
210
250
|
] }
|
|
211
251
|
]
|
|
@@ -215,13 +255,20 @@ orbital LearnDoserOrbital {
|
|
|
215
255
|
padding: md
|
|
216
256
|
children: [
|
|
217
257
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
218
|
-
{ type:
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
258
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
259
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
260
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
261
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
262
|
+
] },
|
|
263
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
264
|
+
] },
|
|
265
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
266
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
267
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
268
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
269
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
270
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
271
|
+
] }
|
|
225
272
|
] }
|
|
226
273
|
]
|
|
227
274
|
}))
|
|
@@ -256,14 +303,21 @@ orbital LearnDoserOrbital {
|
|
|
256
303
|
padding: md
|
|
257
304
|
children: [
|
|
258
305
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
259
|
-
{ type:
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
{ type:
|
|
306
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
307
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
308
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
309
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
310
|
+
] },
|
|
311
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
312
|
+
] },
|
|
313
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
314
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
315
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
316
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
317
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
318
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
319
|
+
] },
|
|
320
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
267
321
|
{ type: typography, variant: body, content: @entity.narration }
|
|
268
322
|
] }
|
|
269
323
|
]
|
|
@@ -273,13 +327,20 @@ orbital LearnDoserOrbital {
|
|
|
273
327
|
padding: md
|
|
274
328
|
children: [
|
|
275
329
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
276
|
-
{ type:
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
330
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
331
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
332
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
333
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
334
|
+
] },
|
|
335
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
336
|
+
] },
|
|
337
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
338
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
339
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
340
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
341
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
342
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
343
|
+
] }
|
|
283
344
|
] }
|
|
284
345
|
]
|
|
285
346
|
}))
|
|
@@ -295,14 +356,21 @@ orbital LearnDoserOrbital {
|
|
|
295
356
|
padding: md
|
|
296
357
|
children: [
|
|
297
358
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
298
|
-
{ type:
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
{ type:
|
|
359
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
360
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
361
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
362
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
363
|
+
] },
|
|
364
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
365
|
+
] },
|
|
366
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
367
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
368
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
369
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
370
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
371
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
372
|
+
] },
|
|
373
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
306
374
|
{ type: typography, variant: body, content: @entity.narration }
|
|
307
375
|
] }
|
|
308
376
|
]
|
|
@@ -312,13 +380,20 @@ orbital LearnDoserOrbital {
|
|
|
312
380
|
padding: md
|
|
313
381
|
children: [
|
|
314
382
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
315
|
-
{ type:
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
383
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
384
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
385
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
386
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
387
|
+
] },
|
|
388
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
389
|
+
] },
|
|
390
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
391
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
392
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
393
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
394
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
395
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
396
|
+
] }
|
|
322
397
|
] }
|
|
323
398
|
]
|
|
324
399
|
}))
|
|
@@ -356,14 +431,21 @@ orbital LearnDoserOrbital {
|
|
|
356
431
|
padding: md
|
|
357
432
|
children: [
|
|
358
433
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
359
|
-
{ type:
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
{ type:
|
|
434
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
435
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
436
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
437
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
438
|
+
] },
|
|
439
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
440
|
+
] },
|
|
441
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
442
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
443
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
444
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
445
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
446
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
447
|
+
] },
|
|
448
|
+
{ type: chemistry-canvas, series: @config.series, keyMap: { Space: TOGGLE_DRIP, KeyR: RESET }, width: @config.width, height: @config.height, backgroundColor: @config.backgroundColor, containers: @entity.containers, readouts: @entity.readouts, traces: [ { series: [ { samples: @entity.doseSeries, label: @config.quantityLabel } ], xLabel: "step", yLabel: @config.quantityLabel } ] },
|
|
367
449
|
{ type: typography, variant: body, content: @entity.narration }
|
|
368
450
|
] }
|
|
369
451
|
]
|
|
@@ -373,13 +455,20 @@ orbital LearnDoserOrbital {
|
|
|
373
455
|
padding: md
|
|
374
456
|
children: [
|
|
375
457
|
{ type: stack, direction: vertical, gap: md, children: [
|
|
376
|
-
{ type:
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
458
|
+
{ type: stack, direction: horizontal, justify: between, align: start, gap: md, children: [
|
|
459
|
+
{ type: stack, direction: vertical, gap: xs, children: [
|
|
460
|
+
{ type: typography, variant: h4, content: @entity.title },
|
|
461
|
+
(if (== @config.summary "") null { type: typography, variant: body2, color: muted, content: @config.summary })
|
|
462
|
+
] },
|
|
463
|
+
{ type: badge, label: (if @entity.done "Locked" (if @entity.running "Auto-dosing" "Ready")), variant: (if @entity.done "warning" (if @entity.running "primary" "neutral")) }
|
|
464
|
+
] },
|
|
465
|
+
{ type: stack, direction: horizontal, align: center, gap: sm, wrap: true, children: [
|
|
466
|
+
{ type: button, action: ADD_SMALL, label: (str/concat "Add " (str/concat (str/concat "" @config.stepSmall) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: primary, disabled: @entity.done },
|
|
467
|
+
{ type: button, action: ADD_LARGE, label: (str/concat "Add " (str/concat (str/concat "" @config.stepLarge) (if (== @config.unit "") "" (str/concat " " @config.unit)))), icon: "plus", variant: secondary, disabled: @entity.done },
|
|
468
|
+
(if @entity.running { type: button, action: TOGGLE_DRIP, label: "Pause", icon: "pause", variant: secondary, aria-pressed: "true" } { type: button, action: TOGGLE_DRIP, label: "Auto-dose", icon: "play", variant: secondary, aria-pressed: "false", disabled: @entity.done }),
|
|
469
|
+
{ type: button, action: RESET, label: "Reset", icon: "rotate-ccw", variant: ghost },
|
|
470
|
+
{ type: typography, variant: caption, color: muted, content: (str/concat @config.quantityLabel (str/concat " " (str/concat (str/concat "" (math/round @entity.dose 2)) (str/concat " of " (str/concat (str/concat "" @config.capacity) (if (== @config.unit "") "" (str/concat " " @config.unit))))))) }
|
|
471
|
+
] }
|
|
383
472
|
] }
|
|
384
473
|
]
|
|
385
474
|
}))
|
|
@@ -447,6 +536,10 @@ orbital LearnDoserOrbital {
|
|
|
447
536
|
@label "Title"
|
|
448
537
|
@description "Title shown above the instrument."
|
|
449
538
|
@tier "presentation"
|
|
539
|
+
summary : string = ""
|
|
540
|
+
@label "Concept"
|
|
541
|
+
@description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line."
|
|
542
|
+
@tier "presentation"
|
|
450
543
|
width : number = 600
|
|
451
544
|
@label "Width"
|
|
452
545
|
@description "Canvas width in pixels."
|
|
@@ -455,9 +548,13 @@ orbital LearnDoserOrbital {
|
|
|
455
548
|
@label "Height"
|
|
456
549
|
@description "Canvas height in pixels."
|
|
457
550
|
@tier "presentation"
|
|
458
|
-
backgroundColor : string = "
|
|
551
|
+
backgroundColor : string = ""
|
|
459
552
|
@label "Background Color"
|
|
460
|
-
@description "Canvas
|
|
553
|
+
@description "Canvas ground. Empty uses the theme drawing ground."
|
|
554
|
+
@tier "presentation"
|
|
555
|
+
series : [string] = []
|
|
556
|
+
@label "Palette"
|
|
557
|
+
@description "Overrides the theme's categorical palette on the canvas (series-1…N) — a subject's real-world color convention, such as indicator colors. Empty uses the theme's palette."
|
|
461
558
|
@tier "presentation"
|
|
462
559
|
showCanvas : boolean = true
|
|
463
560
|
@label "Show Canvas"
|
|
@@ -501,8 +598,8 @@ orbital LearnDoserOrbital {
|
|
|
501
598
|
@description "Maximum points kept in the dose-history trace; older points drop off once exceeded."
|
|
502
599
|
@tier "domain"
|
|
503
600
|
bands : [DoserBand] = [
|
|
504
|
-
{ upperBound: 50, label: "Low", color: "
|
|
505
|
-
{ upperBound: 999999999, label: "High", color: "
|
|
601
|
+
{ upperBound: 50, label: "Low", color: "muted", terminal: false },
|
|
602
|
+
{ upperBound: 999999999, label: "High", color: "success", terminal: true }
|
|
506
603
|
]
|
|
507
604
|
@label "Bands"
|
|
508
605
|
@description "Ordered ascending roster of dose bands/zones — each carries the dose upper bound it covers, a label, a color, and whether crossing into it is terminal (irreversible; sets done true until Reset). The accumulated dose is classified into the first band whose upperBound it does not exceed, falling through to the last band beyond all bounds."
|
|
@@ -518,9 +615,9 @@ orbital LearnDoserOrbital {
|
|
|
518
615
|
@description "Label for the vessel that drains as dose is delivered from it."
|
|
519
616
|
@synonyms "source, burette, supply, dispenser"
|
|
520
617
|
@tier "presentation"
|
|
521
|
-
sourceColor : string = "
|
|
618
|
+
sourceColor : string = "series-1"
|
|
522
619
|
@label "Source Color"
|
|
523
|
-
@description "
|
|
620
|
+
@description "Tone name for the source vessel fill (for example series-1)."
|
|
524
621
|
@tier "presentation"
|
|
525
622
|
}
|
|
526
623
|
}
|