Docs / Block Reference

Block Reference

Every building block an object may be composed of, with its properties, their types, defaults and ranges. This page is generated from the live registry, so it cannot drift from what the compiler will accept.

New here? Building Blocks explains what these are and how a drawing is made from them, and Object Definition is the document you put them in.

How to read this page

The same catalogue is available to an agent at runtime through list_building_blocks, search_building_blocks and get_building_block_schema, which read the registry directly.

Limits

LimitValue
Nodes in one object2 000
Nesting depth16
Component nesting depth8
repeat count720
Characters in one expression512
Rows in one memory2 000, at six decimals
image sourceshttps:, data:image/ and relative paths
path dataThe SVG path grammar only

Primitives

The blocks that draw. A node names one as its type, and sets these under properties as constants or under bindings as declarative values.

arc circle clip-box ellipse freehand group image line path polygon polyline rect ring text

arc — Arc

Circular arc or annular sector measured clockwise from the start angle.

Capabilities: fillable strokable radial angular

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
centerXnumber0
centerYnumber0
radiusnumber40min 0
innerRadiusnumber0min 0
startAnglenumber225
endAnglenumber-45

circle — Circle

Circle defined by a centre point and a radius.

Capabilities: fillable strokable radial

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
centerXnumber0
centerYnumber0
radiusnumber40min 0

clip-box — Clip box

Container showing only the part of its children that falls inside it.

Capabilities: container sizable

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
xnumber0
ynumber0
widthnumber100min 0
heightnumber60min 0

Accepts children.

ellipse — Ellipse

Ellipse defined by a centre point and two radii.

Capabilities: fillable strokable radial

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
centerXnumber0
centerYnumber0
radiusXnumber50min 0
radiusYnumber30min 0

freehand — Freehand

Strokes drawn by hand, each a list of [across, down] points given as fractions of the box, smoothed into curves. A pencil texture roughens the line like graphite, and a multiply blend lets ink underneath show through, as a highlighter does.

Capabilities: strokable sizable

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
xnumber0
ynumber0
widthnumber100min 0
heightnumber100min 0
strokesobject[]
texturestring"none"none | pencil
blendModestring"normal"normal | multiply

group — Group

Container that positions, rotates and scales its children as one unit.

Capabilities: container

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate

Accepts children.

image — Image

Bitmap or SVG image placed in a box. Only https:, data: and same-origin relative sources are allowed.

Capabilities: sizable media

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
xnumber0
ynumber0
widthnumber60min 0
heightnumber60min 0
hrefstring""
preserveAspectRatiostring"xMidYMid meet"

line — Line

Straight line segment between two points.

Capabilities: strokable linear

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
x1number0
y1number0
x2number100
y2number0

path — Path

Raw SVG path data. Commands are restricted to the standard path grammar.

Capabilities: fillable strokable

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
dstring""

polygon — Polygon

Closed sequence of connected points.

Capabilities: fillable strokable

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
pointspoints[]

polyline — Polyline

Open sequence of connected points.

Capabilities: strokable linear

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
pointspoints[]

rect — Rectangle

Axis-aligned rectangle with optional corner radius.

Capabilities: fillable strokable sizable

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
xnumber0
ynumber0
widthnumber100min 0
heightnumber60min 0
cornerRadiusnumber0min 0

ring — Ring

Full annulus between an inner and an outer radius.

Capabilities: fillable strokable radial

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
centerXnumber0
centerYnumber0
innerRadiusnumber30min 0
outerRadiusnumber40min 0

text — Text

Single line of text anchored at a point.

Capabilities: fillable textual

PropertyTypeDefaultRange
fillcolour"none"
strokecolour"none"
strokeWidthnumber1min 0, max 100
strokeDashstring""
strokeLinecapstring"round"butt | round | square
strokeDashOffsetnumber0
strokeLinejoinstring"" | miter | round | bevel
opacitynumber1min 0, max 1
visiblebooleantrue
pointerEventsstring""
dropShadowbooleanfalse
shadingstring"none"none | cylinder | cylinder-upright | sphere | plate
xnumber0
ynumber0
textstring""
unitstring""
termstring""
fontSizenumber"token:font.size.default"min 1, max 400
fontFamilystring"token:font.family"
fontWeightnumber"token:font.weight.default"min 100, max 900
fontStylestring"normal"normal | italic
textAnchorstring"middle"start | middle | end
baselinestring"central"auto | central | hanging

Modifiers

Applied to a node and everything under it, in the order the modifiers array lists them.

along-path fill mirror opacity repeat rotate scale stroke translate visibility z-order

along-path — Along path

Moves a node to a point a fraction of the way along the route a connector is drawn on, optionally turned the way the route runs there.

Capabilities: transform

PropertyTypeDefaultRange
atnumber0.5min 0, max 1
rotatebooleanfalse

fill — Fill

Overrides the fill colour of a node.

Capabilities: style

PropertyTypeDefaultRange
colorcolournull

mirror — Mirror

Mirrors a node about a horizontal or vertical axis through an anchor point.

Capabilities: transform

PropertyTypeDefaultRange
axisstring"horizontal"horizontal | vertical
centerXnumber0
centerYnumber0

opacity — Opacity

Sets the opacity of a node or group.

Capabilities: style

PropertyTypeDefaultRange
valuenumber1min 0, max 1

repeat — Repeat

Repeats the node it is applied to, offsetting each copy by an angle step, a translation or a scale. The copy index is available to bindings as the parameter $index.

Capabilities: layout structural

PropertyTypeDefaultRange
countnumber1min 0
angleStepnumber0
angleStartnumber0
centerXnumber0
centerYnumber0
dxnumber0
dynumber0

rotate — Rotate

Rotates a node clockwise around an anchor point, in degrees.

Capabilities: transform angular

PropertyTypeDefaultRange
anglenumber0
centerXnumber0
centerYnumber0

scale — Scale

Scales a node around an anchor point.

Capabilities: transform

PropertyTypeDefaultRange
scaleXnumber1
scaleYnumber1
centerXnumber0
centerYnumber0

stroke — Stroke

Overrides the stroke colour, width and dash pattern of a node.

Capabilities: style

PropertyTypeDefaultRange
colorcolournull
widthnumbernullmin 0
dashstringnull

translate — Translate

Moves a node or group by an offset.

Capabilities: transform

PropertyTypeDefaultRange
dxnumber0
dynumber0

visibility — Visibility

Shows or hides a node, typically bound to a model condition.

Capabilities: style conditional

PropertyTypeDefaultRange
visiblebooleantrue

z-order — Z order

Sorts siblings; higher values are drawn on top.

Capabilities: layout

PropertyTypeDefaultRange
ordernumber0

Behaviours

What the reader can do to a node, and what that writes. Listed on the node under behaviours.

clickable drag-along-route drag-angle drag-axis-tick drag-circle-point drag-in-frame drag-rotate drag-value draggable edit-text edit-value follow-pointer forget hoverable keep-time play-note press-and-slide remember resizable respond-to-simulation rotatable selectable tooltip track-pointer

clickable — Clickable

Writes a value into a model variable or into a component parameter when the node is clicked. The value is a binding like any other, so a key can write what the model or the object itself currently holds rather than only a constant.

Capabilities: interaction writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""
valuenumber0

drag-along-route — Drag along the route

Lets the reader slide the node along the route of the connector it is drawn in: the point of the route nearest the pointer is written into the component property as the fraction of the way along it, from 0 at the start to 1 at the end. It is what moves a connector's label.

Capabilities: interaction linear

PropertyTypeDefaultRange
propertystring""

drag-angle — Drag angle

Lets the user drag the node around an anchor point and writes the resulting angle back into a model variable, using the same angle-to-value mapping the node was bound with. Naming a length as well makes the node reach the pointer rather than only point at it: how far the pointer stands from the anchor is written as the length, in the units the node is drawn in, so one drag both turns the thing and stretches it.

Capabilities: interaction angular writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""
verticalVariablevariable""
verticalPropertystring""
centerXnumber0
centerYnumber0
degreesPerUnitnumber6
offsetDegreesnumber0
signedbooleanfalse
minimumnumbernull
maximumnumbernull
wrapAtnumbernull
spanDegreesnumbernullmin 0, max 360
valueOffsetnumber0
stepnumbernullmin 0
lengthVariablevariable""
lengthPropertystring""
pixelsPerUnitnumber1
minimumLengthnumbernull
maximumLengthnumbernull
hoverFillcolour"none"
hoverOpacitynumber0.15min 0, max 1

drag-axis-tick — Drag axis tick

Rescales an axis by dragging one of its ticks: the tick follows the pointer and the far end of the axis moves with it, writing the object's own maximum. An axis standing on zero is pulled from the middle, naming no minimum property and handing nought over as the minimum value, so what it writes is how far the drawing reaches from the origin. The same interaction, and the same arithmetic, the chart's axes have. An axis whose ticks are placed by the logarithm of their value is dragged in decades rather than in values, and one that says how many parts it is cut into rather than how much one part is worth keeps the part and writes the count, so its numbers stay the same distance apart and there are more or fewer of them.

Capabilities: interaction

PropertyTypeDefaultRange
axisstring"x"x | y
valuenumber0
minimumPropertystring""
minimumValuenumbernull
maximumPropertystring""
scalestring"linear"linear | logarithmic
countPropertystring""
stepValuenumber0
wholeCountbooleantrue
scalePropertystring""
pairedScalePropertystring""
originPixelnumber0
lengthPixelsnumber0min 0

drag-circle-point — Drag a point round a circle

Drags a point round a circle and writes back everything the circle is read for at once: the angle the point stands at, how far out it stands, the cosine and the sine of that angle, its tangent and its cotangent, and the length of the arc it has swept. Each of them goes into the term its row names, or into the object's own parameter when that row holds a plain number instead, and a row the model works out for itself is left alone — so a circle whose angle a definition gives is still dragged where it writes the point. Asking for a number of divisions makes the angle land on one of them: the point follows the pointer while it is held and lands on the nearest division, exactly, the moment it is let go. The whole drag is one edit.

Capabilities: interaction angular writes-model

PropertyTypeDefaultRange
centerXnumber0
centerYnumber0
pixelsPerUnitnumber1
unitsPerTurnnumber360
angleValuenumber0
angleVariablevariable""
anglePropertystring""
radiusVariablevariable""
radiusPropertystring""
stretchbooleanfalse
minimumRadiusnumbernull
maximumRadiusnumbernull
xVariablevariable""
xPropertystring""
yVariablevariable""
yPropertystring""
tangentVariablevariable""
tangentPropertystring""
cotangentVariablevariable""
cotangentPropertystring""
tangentPointVariablevariable""
tangentPointPropertystring""
arcVariablevariable""
arcPropertystring""
snapDivisionsnumbernullmin 0, max 360
hoverFillcolour"none"
hoverOpacitynumber0.15min 0, max 1

drag-in-frame — Drag in the frame

Lets the reader drag a figure held in a referential by a node of its drawing, the pointer read in the referential's own units. As a point it writes where the pointer stands, less the origin, into the across and up variables, keeping the distance between the pointer and the point it was pressed on, and landing on the referential's ticks when it snaps to them; as an angle it writes the way the pointer stands from the origin, anticlockwise from the across axis in the model's angle unit; as a distance it writes how far the pointer stands from the origin. Each variable is written into the model, or into the component parameter when it holds a plain number.

Capabilities: interaction planar writes-model

PropertyTypeDefaultRange
modestring"point"point | angle | distance
variablevariable""
propertystring""
verticalVariablevariable""
verticalPropertystring""
originXnumber0
originYnumber0
perUnitXnumber1
perUnitYnumber1

drag-rotate — Drag rotate

Lets the user turn the node around an anchor point by dragging it. The variable moves by the angle the pointer travels, so the grabbed point follows the pointer instead of jumping to it, which is what a rose, a bezel or a dial ring needs.

Capabilities: interaction angular writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""
verticalVariablevariable""
verticalPropertystring""
centerXnumber0
centerYnumber0
degreesPerUnitnumber1
minimumnumbernull
maximumnumbernull
wrapAtnumbernull
hoverFillcolour"none"
hoverOpacitynumber0.15min 0, max 1

drag-value — Drag value

Lets the reader set a value by where they press along a line and drag: the pointer's place between the two ends of the scale is the value written, into the model variable or into the component parameter when the variable holds a plain number. It is what a slider's handle needs. The value can be made to land on whole steps, and it never leaves the scale.

Capabilities: interaction linear writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""
axisstring"y"x | y
originPixelnumber0
lengthPixelsnumber0min 0
minimumnumber0
maximumnumber1
stepnumbernullmin 0

draggable — Draggable

The object can be moved with the move handle. Provided by the host shape for every component.

Capabilities: interaction

edit-text — Edit text

Lets the reader write the text a component property holds: double-clicking the node, or the object when it is selected, opens a box over the place the text stands in where it can be written over several lines. Leaving the box, or Ctrl+Enter, writes what is in it into the property, and Escape leaves the text as it was.

Capabilities: interaction

PropertyTypeDefaultRange
propertystring""
xnumber0
ynumber0
widthnumber160min 0
heightnumber40min 0
fontSizenumber16min 1

edit-value — Edit value

Lets the reader type a new value over the node: double-clicking it opens a number box where it stands, Enter or leaving the box writes the number into the model variable, or into the component parameter when the variable holds a plain number, and Escape leaves it as it was. A variable the model works out for itself cannot be typed into.

Capabilities: interaction writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""

follow-pointer — Follow pointer

Reports where the pointer is over the node, in the units the node is scaled in, so a drawing can show the value under the cursor. What is reported is not kept: it lasts as long as the pointer is over the node, and the model is not touched.

Capabilities: interaction

PropertyTypeDefaultRange
xParameterstring""
yParameterstring""
activeParameterstring""
originXnumber0
originYnumber0
scaleXnumber1
scaleYnumber-1
minimumXnumbernull
maximumXnumbernull
minimumYnumbernull
maximumYnumbernull
whilePlayingbooleanfalse

forget — Forget

Empties one of the object's memories when the node is clicked.

Capabilities: interaction memory

PropertyTypeDefaultRange
memorystring""

hoverable — Hoverable

The node reacts to pointer hover with the standard highlight cursor.

Capabilities: interaction

PropertyTypeDefaultRange
cursorstring"pointer"

keep-time — Keep time

A transport key for a reading of the clock: play sets it counting real time from wherever it stands, pause holds it there, and stop ends the run and clears it. A key set to toggle is both — it starts a clock standing still and holds a clock that is counting, so one key does the work of two. What is counted is written into the four parts of the reading — the hours, the minutes, the seconds and the thousandths — each into the term that part names, or into the object's own property when it names a plain number instead. The whole run is one edit.

Capabilities: interaction writes-model

PropertyTypeDefaultRange
actionstring"play"play | pause | stop | toggle
hourVariablevariable""
hourPropertystring""
minuteVariablevariable""
minutePropertystring""
secondVariablevariable""
secondPropertystring""
millisecondVariablevariable""
millisecondPropertystring""
runningParameterstring""
intervalMsnumber33min 10, max 1000

play-note — Play a note

A key of an instrument: it sounds its own pitch for as long as it is held, and stops when it is let go. Several keys sound together, whether they are held by several fingers or by several computer keys at once, and sliding across them plays them in turn. The object reports the notes it is holding into a parameter of its own, so its drawing can show which keys are down and what it publishes can be worked out from the chord. Nothing is written down: a file remembers no note left sounding.

Capabilities: interaction sound

PropertyTypeDefaultRange
frequencynumber0min 0
notenumber0
keyCodestring""
notesParameterstring""

press-and-slide — Press and slide

A control the reader holds down: pressing keeps the value where it is, sliding the pointer up raises it and down lowers it, by however far it travelled, and letting go lets the value fall back to its resting value a step at a time. It is what a pedal or a throttle needs — nothing is written by pressing alone, and the whole gesture, the fall back included, is one edit.

Capabilities: interaction linear writes-model

PropertyTypeDefaultRange
variablevariable""
propertystring""
verticalVariablevariable""
verticalPropertystring""
bearingnumbernull
unitsPerPixelnumber1
restValuenumber0
returnStepnumber0min 0
intervalMsnumber100min 20, max 5000
minimumnumbernull
maximumnumbernull
hoverFillcolour"none"
hoverOpacitynumber0.15min 0, max 1

remember — Remember

Appends a row to one of the object's memories when the node is clicked. A row carries a label and two numbers, all of them bindings, so a key records what the object held at the moment it was pressed.

Capabilities: interaction memory

PropertyTypeDefaultRange
memorystring""
textstring""
xnumber0
ynumber0
limitnumber50min 1, max 2000

resizable — Resizable

The object can be resized with the corner handles. Provided by the host shape for every component.

Capabilities: interaction

respond-to-simulation — Respond to simulation updates

Marks the object as redrawing on every simulation tick. Components with model bindings get this automatically.

Capabilities: simulation

rotatable — Rotatable

The object can be rotated with the rotation handle. Provided by the host shape for every component.

Capabilities: interaction

selectable — Selectable

The object can be selected on the board. Provided by the host shape for every component.

Capabilities: interaction

tooltip — Tooltip

Shows a native tooltip with a fixed or bound text when the pointer rests on the node.

Capabilities: interaction textual

PropertyTypeDefaultRange
textstring""

track-pointer — Track pointer

Records where the pointer is while it is dragged over the node, one sample every sampling interval, into one of the object's memories. The sample is written in the units the node is scaled in, so what is recorded is a pair of values rather than a pair of pixels — and when the memory names model terms, the run becomes the values those terms take, iteration by iteration. Nothing is recorded until the pointer travels: a click that never moves leaves the memory alone, and a drag opens its run at the point the pointer went down.

Capabilities: interaction memory writes-model

PropertyTypeDefaultRange
memorystring""
modestring"replace"replace | append
xVariablestring""
xPropertystring""
yVariablestring""
yPropertystring""
limitnumber600min 1, max 2000
sampleMsnumber33min 10, max 1000
minimumMovePixelsnumber0min 0, max 50
breakOnDragbooleanfalse
originXnumber0
originYnumber0
scaleXnumber1
scaleYnumber-1
minimumXnumbernull
maximumXnumbernull
minimumYnumbernull
maximumYnumbernull

Components

Ready-made assemblies. A node names one as its type and sets these under parameters.

ac-generator battery cable calculator capacitor circuit circuit-track circular-gauge clock compass dial-face electric-circuit electric-switch gauge geometry-point geometry-system key-cap label-ring light-bulb magnetic-system mechanical-anchor mechanical-ball mechanical-block mechanical-joint mechanical-pulley mechanical-rope mechanical-spring mechanical-surface mechanical-system mechanical-wave media memory-list memory-trace microphone mind-map-bubble mind-map-connector mind-map-ellipse mind-map-rectangle mouse-tracker optical-system orbit-system oscilloscope piano piano-keyboard plot-axes plot-crosshair plot-grid pointer-hand pointer-ring program protractor question resistor rich-text rotating-vector ruler seven-segment-display slider slope speedometer steering-wheel text-box thermometer tick-ring trigonometric-circle value

ac-generator — AC generator

Represents an alternating-current generator in an electric circuit, with a terminal at each end for connecting cables. Its electromotive force swings as a sine of the independent variable, A·sin(2πft + φ), from its amplitude, frequency and phase, each read from a variable or a number, and it displays the current through it and the voltage across its terminals, with an optional arrow showing the direction of the current.

Capabilities: reads-model

ParameterTypeDefaultRange
amplitudevariable"10"
frequencyvariable"1"
phasevariable"0"
currentvariable"0"
voltagevariable"0"
showCurrentArrowbooleantrue
bodyColorcolour"#f1f5f9"
ringColorcolour"#334155"
waveColorcolour"#2563eb"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
amplitudeUnitunit"V"
frequencyUnitunit"Hz"
currentUnitunit"A"
voltageUnitunit"V"

battery — Battery

Represents a battery cell in an electric circuit, with a terminal at each end for connecting cables. Displays the electromotive force, the current through the cell and the voltage across its terminals, each read from a variable or a number, with an optional arrow showing the direction of the current.

Capabilities: reads-model

ParameterTypeDefaultRange
emfvariable"1.5"
currentvariable"0"
voltagevariable"0"
showCurrentArrowbooleantrue
bodyColorcolour"#262626"
capColorcolour"#f28c28"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
emfUnitunit"V"
currentUnitunit"A"
voltageUnitunit"V"

cable — Cable

Connects a terminal of one circuit part to a terminal of another. When linked to the variable holding the loop current, it displays charges moving along the cable in the direction of the current, at a speed proportional to its magnitude, and stationary when no current flows.

Capabilities: reads-model

ParameterTypeDefaultRange
currentTermvariable"0"
currentTermUnitunit"A"
showFlowbooleantrue
flowSpeednumber20min 0
lineWidthnumber6min 1, max 30
colorcolour"#d9453b"

calculator — Calculator

Provides a calculator on the board, with basic operations and, at larger widths, a scientific keypad for powers, roots, trigonometry and logarithms. Dedicated keys load the values of model variables at the current iteration, the result can be written to a model variable, and completed operations are kept in a history.

Capabilities: interaction textual reads-model writes-model memory

ParameterTypeDefaultRange
nnumber0
anumber0
pnumber0
snumber0
dpnumber0
adnumber0
freshnumber0
invnumber0
historymemory[]
termAvariable""
termBvariable""
termCvariable""
termDvariable""
keyAColorcolour"token:surface.muted"
keyBColorcolour"token:surface.muted"
keyCColorcolour"token:surface.muted"
keyDColorcolour"token:surface.muted"
resultVariablevariable""
digitsnumber2min 0, max 6
scientificbooleantrue
angleUnitstring"radians"radians | degrees
showHistorybooleantrue
historyLimitnumber24min 1, max 200
bodyColorcolour"token:surface.emphasis"
displayColorcolour"token:surface.default"
keyColorcolour"token:surface.default"
functionKeyColorcolour"token:surface.muted"
accentColorcolour"token:stroke.accent"
borderColorcolour"token:stroke.subtle"
textColorcolour"token:text.primary"
accentTextColorcolour"token:text.inverse"
mutedTextColorcolour"token:text.secondary"

capacitor — Capacitor

Represents an electrolytic capacitor in an electric circuit, with two terminals for connecting cables. Displays the capacitance, the current and the voltage, each read from a variable or a number, which makes it suitable for charging and discharging in RC circuit models.

Capabilities: reads-model

ParameterTypeDefaultRange
capacitancevariable"0.01"
currentvariable"0"
voltagevariable"0"
showCurrentArrowbooleantrue
canColorcolour"#2c4763"
stripeColorcolour"#a3b6ca"
baseColorcolour"#e7dac0"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
capacitanceUnitunit"F"
currentUnitunit"A"
voltageUnitunit"V"

circuit — Circuit

Displays a closed racing track generated from a track number, with straights, bends, kerbs and a start line. It holds bodies whose position and heading are model variables, measured from the center of the track in configurable units, and indicates when a body leaves the road.

Capabilities: holds-shapes

ParameterTypeDefaultRange
circuitNumbernumber1min 1, max 9999
unitsAcrossnumber100min 0.001
roadWidthnumber8min 0.001
showKerbsbooleantrue
showStartLinebooleantrue
roadColorcolour"#4b5563"
kerbColorcolour"#dc2626"
kerbAltColorcolour"#f8fafc"
lineColorcolour"#111827"

circuit-track — Circuit track

A closed racing track laid out from a seed: the same seed always draws the same loop of straights and bends, fitted to the width and height it is given. The road is drawn as one wide stroke along the centreline, red and white kerbs stand on every bend, and a chequered line marks the start of the lap. The road is the node called "road", so whatever holds shapes on the track can tell where its edges are.

Capabilities: generated

ParameterTypeDefaultRange
seednumber1min 0
widthnumber320min 1
heightnumber220min 1
roadWidthnumber24min 1
kerbWidthnumber5min 0
showKerbsbooleantrue
showStartLinebooleantrue
roadColorcolour"#4b5563"
kerbColorcolour"#dc2626"
kerbAltColorcolour"#f8fafc"
lineColorcolour"#111827"

circular-gauge — Circular gauge

Displays the value of a model variable as a ring that fills clockwise in proportion to that value between a configurable minimum and maximum. The start angle and span of the ring are adjustable, and an optional numeric readout shows the value with its unit.

Capabilities: radial angular reads-model

ParameterTypeDefaultRange
valueVariablevariable"0"
minimumnumber0
maximumnumber100
startAnglenumber90
spanAnglenumber360min 1, max 360
thicknessnumber0.22min 0.02, max 1
trackColorcolour"token:surface.muted"
fillColorcolour"token:stroke.accent"
labelColorcolour"token:text.primary"
digitsnumber0min 0, max 6
unitunit""
showReadoutbooleantrue

clock — Clock

Displays a time as an analog face or a digital readout, either from model variables for hours, minutes, seconds and milliseconds or from the independent variable taken as seconds. It can also operate as a stopwatch, with controls to start, stop and record laps.

Capabilities: radial angular reads-model textual interaction memory

ParameterTypeDefaultRange
syncedWithPlayerbooleanfalse
hourVariablevariable"0"
minuteVariablevariable"0"
secondVariablevariable"0"
millisecondVariablevariable"0"
shownAsstring"analogue"analogue | digital
showControlsbooleanfalse
showLapsbooleanfalse
faceColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
hourColorcolour"token:stroke.strong"
minuteColorcolour"token:stroke.strong"
secondColorcolour"token:stroke.warning"
millisecondColorcolour"#00000000"
numberColorcolour"token:text.primary"
buttonColorcolour"token:surface.muted"
runningnumber0
lapsmemory[]

compass — Compass

Displays a compass rose with cardinal directions and a needle whose heading is read from a model variable, while a second variable rotates the rose. Dragging the needle or the rim of the rose writes the corresponding value back to the model, so it also serves as a heading control.

Capabilities: radial angular reads-model interaction writes-model

ParameterTypeDefaultRange
headingVariablevariable"0"
rotationVariablevariable"0"
pointersterms[]
showDegreesbooleanfalse
faceColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
tickColorcolour"token:stroke.subtle"
needleColorcolour"token:stroke.warning"
tailColorcolour"token:stroke.subtle"
labelColorcolour"token:text.primary"

dial-face — Dial face

Circular face with an optional bezel ring, used as the background of clocks, gauges and compasses.

Capabilities: radial background

ParameterTypeDefaultRange
centerXnumber0
centerYnumber0
radiusnumber80min 1
faceColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
borderWidthnumber2min 0, max 40
bezelWidthnumber0min 0, max 60
bezelColorcolour"token:surface.emphasis"

electric-circuit — Electric circuit

Holds batteries, resistors, bulbs, capacitors, switches and the cables joining them, and works out the current through each part and the voltage across it. Parts and cables are added with the circuit's + button.

Capabilities: layout interaction

ParameterTypeDefaultRange
lineWidthnumber1min 0, max 20
backgroundColorcolour"#FFFFFF"
borderColorcolour"#1E1E1E"
partCountnumber0
emptyHintstring"Add parts and cables with the + button"

electric-switch — Switch

Represents a switch in an electric circuit, with two terminals for connecting cables. Clicking the switch opens or closes it, writing 0 or 1 to its variable, so the model can make or break the circuit. The current and the voltage across the switch are also displayed.

Capabilities: reads-model interaction writes-model

ParameterTypeDefaultRange
closedvariable"1"
currentvariable"0"
voltagevariable"0"
showCurrentArrowbooleantrue
plateColorcolour"#eee8db"
indicatorColorcolour"#f97316"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
currentUnitunit"A"
voltageUnitunit"V"

gauge — Gauge

Displays the value of a model variable as a needle on a numbered dial, and allows the value to be set by turning the needle. The scale can adjust automatically to the range of the run or use a fixed minimum and maximum, and up to three colored bands mark regions of the scale.

Capabilities: radial angular reads-model writes-model interaction scale

ParameterTypeDefaultRange
valueVariablevariable"0"
autoScalebooleantrue
minimumnumber0
maximumnumber10
stepnumber1min 0
snapToTickbooleanfalse
startAnglenumber225
endAnglenumber-45
lowBandFromnumber0
lowBandTonumber0
middleBandFromnumber0
middleBandTonumber0
highBandFromnumber0
highBandTonumber0
digitsnumber0min 0, max 6
unitunit""
backgroundColorcolour"token:surface.emphasis"
foregroundColorcolour"token:stroke.default"
borderColorcolour"token:stroke.default"
lowBandColorcolour"#2f9e44"
middleBandColorcolour"#f08c00"
highBandColorcolour"#e03130"
hoverXnumber0
hoverYnumber0
hoveringnumber0

geometry-point — Geometry point

A point of a geometric construction, placed by two coordinates. Dragging it moves every segment, line, circle, polygon and angle built on it; a variable the model defines moves it instead.

Capabilities: reads-model writes-model interaction

ParameterTypeDefaultRange
xVariablevariable"0"
xVariableUnitunit""
yVariablevariable"0"
yVariableUnitunit""
sizenumber4.5min 1, max 20
foregroundColorcolour"#1565C0"
trajectoryColorcolour"transparent"

geometry-system — Geometry

A workspace with axes for building geometric constructions as in dynamic geometry: points joined by segments, lines, rays and vectors, circles, triangles and polygons, and angles. Constructions follow their points wherever they are dragged or wherever the model moves them, and lengths, slopes, areas, perimeters and angles are shown on the drawing and can be written into model variables. Constructions are added with the system’s + button, by clicking existing points or empty places where new points are put.

Capabilities: layout interaction reads-model writes-model

ParameterTypeDefaultRange
scaleXnumber0.025
scaleYnumber0.025
autoScalebooleanfalse
equalAxisScalesbooleantrue
snapToTicksbooleantrue
showHorizontalAxisbooleantrue
showVerticalAxisbooleantrue
showTicksWithValuesbooleantrue
showHorizontalGridbooleantrue
showVerticalGridbooleantrue
backgroundImageUrlimage""
backgroundColorcolour"#FFFFFF"
foregroundColorcolour"#1E1E1E"
borderColorcolour"#1E1E1E"
originXnumber0
originYnumber0
axisRotationnumber0
frameTurnnumber0

key-cap — Key cap

Rounded key with a centred label. It carries no interaction of its own: put it inside a group and give that group the behaviour the key performs, so the same cap serves a keypad, a legend or a toolbar.

Capabilities: sizable textual

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber44min 0
heightnumber32min 0
labelstring""
fillcolour"token:surface.default"
borderColorcolour"token:stroke.subtle"
borderWidthnumber1min 0
cornerRadiusnumber6min 0
labelColorcolour"token:text.primary"
fontSizenumber14min 1
fontWeightnumber500min 100, max 900

label-ring — Label ring

Numeric or text labels placed evenly around a centre, always drawn upright.

Capabilities: radial angular textual

ParameterTypeDefaultRange
centerXnumber0
centerYnumber0
radiusnumber60min 1
countnumber12min 0, max 360
startAnglenumber90
spanAnglenumber360
includeEndbooleanfalse
startValuenumber12
valueStepnumber1
wrapAtnumber12min 0
digitsnumber0min 0, max 6
numberFormatstring"decimal"decimal | pi
textsstring""
fontSizenumber12min 1
fontFamilystring"token:font.family"
fontWeightnumber400min 100, max 900
colorcolour"token:text.primary"

light-bulb — Light bulb

Represents a light bulb in an electric circuit, with two terminals for connecting cables. Its brightness reflects the power it receives relative to its rated power, calculated from the voltage and current, or from the current and resistance when no voltage is given. Resistance, current and voltage are each read from a variable or a number.

Capabilities: reads-model

ParameterTypeDefaultRange
resistancevariable"10"
currentvariable"0"
voltagevariable"0"
ratedPowernumber1min 0.000001
showGlowbooleantrue
showCurrentArrowbooleantrue
glassColorcolour"#f6ecd8"
lightColorcolour"#ffd23f"
baseColorcolour"#b3b8bf"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
resistanceUnitunit"Ω"
currentUnitunit"A"
voltageUnitunit"V"

magnetic-system — Magnetic system

A space for magnetism, with axes in metres. It holds bar magnets, wires and coils carrying currents, compasses, regions of uniform field and charged particles, draws the field lines of the magnets and currents, turns each compass to the field and traces the path of each particle through the uniform fields. Parts are added with the system's + button.

Capabilities: layout interaction reads-model writes-model

ParameterTypeDefaultRange
backgroundFieldvariable"0"
showFieldLinesbooleantrue
showFieldVectorsbooleanfalse
lineDensitynumber12min 2, max 40
scaleXnumber0.0025
scaleYnumber0.0025
autoScalebooleanfalse
equalAxisScalesbooleantrue
snapToTicksbooleanfalse
showHorizontalAxisbooleantrue
showVerticalAxisbooleantrue
showTicksWithValuesbooleantrue
showHorizontalGridbooleantrue
showVerticalGridbooleantrue
backgroundImageUrlimage""
backgroundColorcolour"#FFFFFF"
foregroundColorcolour"#1E1E1E"
borderColorcolour"#1E1E1E"
fieldLineColorcolour"#2563EB"
originXnumber0
originYnumber0
axisRotationnumber0
frameTurnnumber0
previewArtbooleanfalse
partCountnumber0
emptyHintstring"Add magnets, wires, coils, compasses, fields and particles with the + button"

mechanical-anchor — Anchor

A fixed point in a mechanical system that springs, ropes and joints are fastened to, like the support of a pendulum. Dragging it moves the point of support. Springs, ropes and joints fasten to its terminals.

Capabilities: reads-model interaction

ParameterTypeDefaultRange
positionXvariable"0"
positionYvariable"0"
fillColorcolour"#6B7280"

mechanical-ball — Ball

A circular rigid body in a mechanical system that rolls and collides, with a mass, a radius, friction and restitution. Its position, angle and velocity are numbers it starts from, variables the simulation writes, or variables the model defines. Dragging it moves it and dragging the grip on its rim turns it. Springs, ropes and joints fasten to its terminals.

Capabilities: reads-model writes-model interaction

ParameterTypeDefaultRange
positionXvariable"0"
positionYvariable"0"
anglevariable""
velocityXvariable""
velocityYvariable""
angularVelocityvariable""
massvariable"1"
ballRadiusvariable"0.15"
kineticFrictionvariable"0.3"
staticFrictionvariable"0.4"
restitutionvariable"0.2"
fixedbooleanfalse
collidesbooleantrue
accelerationXvariable""
accelerationYvariable""
kineticEnergyvariable""
potentialEnergyvariable""
showVelocitybooleanfalse
showAccelerationbooleanfalse
showNetForcebooleanfalse
showContactForcebooleanfalse
velocityScalenumber40min 0.01, max 1000
accelerationScalenumber8min 0.01, max 1000
forceScalenumber6min 0.01, max 1000
fillColorcolour"#E07A5F"
borderColorcolour"#1F2937"
trajectoryColorcolour"transparent"
vectorColorcolour"#16A34A"
netForceXnumber0
netForceYnumber0
contactForceXnumber0
contactForceYnumber0
trailstring""
invalidnumber0

mechanical-block — Block

A rectangular rigid body in a mechanical system, with a mass, a size, friction and restitution. Its position, angle and velocity are numbers it starts from, variables the simulation writes, or variables the model defines. Dragging it moves it and dragging the grip on its side turns it. Springs, ropes and joints fasten to its terminals.

Capabilities: reads-model writes-model interaction

ParameterTypeDefaultRange
positionXvariable"0"
positionYvariable"0"
anglevariable""
velocityXvariable""
velocityYvariable""
angularVelocityvariable""
massvariable"1"
blockWidthvariable"0.4"
blockHeightvariable"0.3"
kineticFrictionvariable"0.3"
staticFrictionvariable"0.4"
restitutionvariable"0.2"
fixedbooleanfalse
collidesbooleantrue
accelerationXvariable""
accelerationYvariable""
kineticEnergyvariable""
potentialEnergyvariable""
showVelocitybooleanfalse
showAccelerationbooleanfalse
showNetForcebooleanfalse
showContactForcebooleanfalse
velocityScalenumber40min 0.01, max 1000
accelerationScalenumber8min 0.01, max 1000
forceScalenumber6min 0.01, max 1000
fillColorcolour"#4F7CAC"
borderColorcolour"#1F2937"
trajectoryColorcolour"transparent"
vectorColorcolour"#16A34A"
netForceXnumber0
netForceYnumber0
contactForceXnumber0
contactForceYnumber0
trailstring""
invalidnumber0

mechanical-joint — Joint

A rigid connection between two parts of a mechanical system: a rod that keeps them at the same distance, a pivot that pins one to the other at a point while both turn freely, or a weld that holds them fast. It is drawn from a terminal of one part to a terminal of another.

Capabilities: reads-model writes-model

ParameterTypeDefaultRange
kindstring"rod"rod | pivot | weld
lengthvariable""
forcevariable""
anglevariable""
angularVelocityvariable""
lineWidthnumber5min 1, max 30
colorcolour"#475569"

mechanical-pulley — Pulley

An ideal fixed pulley in a mechanical system, with no mass and no friction, that turns a rope round. Two ropes fastened to its left and right sides act as one rope over the wheel: the same tension pulls both bodies and the total length stays the same. Dragging it moves it.

Capabilities: reads-model interaction

ParameterTypeDefaultRange
positionXvariable"0"
positionYvariable"0"
wheelRadiusvariable"0.12"
fillColorcolour"#94A3B8"

mechanical-rope — Rope

A flexible rope fastened between two parts of a mechanical system. It pulls only while it is taut and goes slack when its ends come closer. It does not stretch, unless it is given a stiffness: then it stretches like a spring that only pulls, as a bungee cord does. Two ropes fastened to the sides of a pulley act as one rope over it.

Capabilities: reads-model writes-model

ParameterTypeDefaultRange
lengthvariable""
stiffnessvariable""
dampingvariable"0"
tensionvariable""
extensionvariable""
anglevariable""
angularVelocityvariable""
lineWidthnumber2.5min 0.5, max 20
colorcolour"#92400E"
controlXnumber0
controlYnumber0

mechanical-spring — Spring

A coil spring fastened between two parts of a mechanical system, pulling and pushing them by Hooke’s law with damping. It is drawn from a terminal of one part to a terminal of another and follows them as they move.

Capabilities: reads-model writes-model

ParameterTypeDefaultRange
stiffnessvariable"40"
restLengthvariable""
dampingvariable"0"
extensionvariable""
forcevariable""
energyvariable""
turnsnumber12min 2, max 80
coilDiameternumber18min 4, max 200
wireWidthnumber2min 0.5, max 20
colorcolour"#64748B"

mechanical-surface — Surface

A fixed flat or inclined surface in a mechanical system that bodies rest on, slide along and bounce off, with friction and restitution. Dragging it moves it; dragging its right end changes its inclination and its length. Springs, ropes and joints fasten to its terminals.

Capabilities: reads-model interaction

ParameterTypeDefaultRange
positionXvariable"0"
positionYvariable"0"
lengthvariable"3"
anglevariable"0"
thicknessvariable"0.15"
kineticFrictionvariable"0.3"
staticFrictionvariable"0.4"
restitutionvariable"0.2"
fillColorcolour"#D6D3D1"
lineColorcolour"#44403C"

mechanical-system — Mechanical system

A workspace with axes in metres for building mechanical systems from blocks, balls, surfaces, anchors, pulleys, springs, ropes, joints and forces. A built-in physics simulation works out their motion with gravity, friction, air drag, collisions, springs and constraints, row by row with the model; any position or velocity can instead be given by the model, and what the simulation works out can be written into model variables. Parts are added with the system’s + button.

Capabilities: layout interaction reads-model writes-model

ParameterTypeDefaultRange
gravityvariable"9.8"
linearDragvariable"0"
quadraticDragvariable"0"
elasticityvariable"0"
kineticEnergyvariable""
potentialEnergyvariable""
mechanicalEnergyvariable""
momentumXvariable""
momentumYvariable""
simulationStepnumber0.001min 0.00005, max 0.01
scaleXnumber0.01
scaleYnumber0.01
autoScalebooleanfalse
equalAxisScalesbooleantrue
snapToTicksbooleanfalse
showHorizontalAxisbooleantrue
showVerticalAxisbooleantrue
showTicksWithValuesbooleantrue
showHorizontalGridbooleantrue
showVerticalGridbooleantrue
backgroundImageUrlimage""
backgroundColorcolour"#FFFFFF"
foregroundColorcolour"#1E1E1E"
borderColorcolour"#1E1E1E"
originXnumber0
originYnumber0
axisRotationnumber0
frameTurnnumber0
partCountnumber0
emptyHintstring"Add bodies, surfaces and connections with the + button"

mechanical-wave — Mechanical wave

Represents a mechanical wave as a chain of oscillators, each reproducing the motion of the source with a delay proportional to its distance. It can replay the values of a model variable over the run, or compute a wave from its amplitude, frequency, speed and damping and return the displacement of a chosen oscillator to the model.

Capabilities: reads-model writes-model oscillation

ParameterTypeDefaultRange
wavevariable""
amplitudevariable"2"
frequencyvariable"0.5"
speedvariable"5"
dampingvariable"0"
lengthnumber20min 0.001
autoScalebooleantrue
minimumYnumber-2
maximumYnumber2
samplesnumber30min 2, max 200
orientationstring"transverse"transverse | longitudinal | radial
wavefrontbooleantrue
elementSizenumber4min 1, max 30
referenceIndexnumber1min 0, max 200
showArrowsbooleanfalse
showLinebooleanfalse
showGridbooleantrue
showAxesbooleantrue
backgroundColorcolour"token:surface.default"
borderColorcolour"token:stroke.subtle"
waveColorcolour"token:stroke.accent"
referenceColorcolour"token:stroke.strong"
axisColorcolour"token:axis.color"
gridColorcolour"token:grid.color"

media — Media

Shows an image, a video or a sound, chosen from a file, from the catalogue or from a link to a video page. A video or a sound can follow the model, a frame for each step, or play on its own with its own controls.

Capabilities: layout interaction

ParameterTypeDefaultRange
lineWidthnumber1min 0, max 20
borderColorcolour"#000000"
borderInsetnumber0
isPreviewnumber0

memory-list — Memory list

The rows of a memory drawn as a list, newest first, with the label on the left and the number on the right. Rows can carry actions, so choosing one puts what it holds back into the object.

Capabilities: memory textual interaction

ParameterTypeDefaultRange
rowsobject[]
xnumber0
ynumber0
widthnumber120min 0
heightnumber160min 0
rowHeightnumber20min 6
orderstring"newest"newest | oldest
layoutstring"row"row | stacked
digitsnumber2min 0, max 6
fontSizenumber"token:font.size.default"min 1
textColorcolour"token:text.secondary"
valueColorcolour"token:text.primary"
rowColorcolour"none"
cornerRadiusnumber4min 0
emptyTextstring""
rowActionsobject[]

memory-trace — Memory trace

The path the rows of a memory draw, mapped from the values they hold to the pixels of a plot with the same origin and scale the recording used.

Capabilities: memory linear

ParameterTypeDefaultRange
rowsobject[]
originXnumber0
originYnumber0
scaleXnumber1
scaleYnumber-1
colorcolour"token:stroke.accent"
lineWidthnumber2min 0
opacitynumber1min 0, max 1
shownRowsnumber0min 0
showPointsbooleanfalse
pointRadiusnumber1.5min 0
clipXnumber0
clipYnumber0
clipWidthnumber0min 0
clipHeightnumber0min 0

microphone — Microphone

Displays the sound level picked up by the computer's microphone as a column of lights colored by configurable ranges, with readouts of the level in decibels and the dominant frequency. When linked to existing model variables, it writes the level and frequency to them at each iteration, so dependent variables follow the sound.

Capabilities: writes-model sound

ParameterTypeDefaultRange
levelvariable""
frequencyvariable""
listeningbooleantrue
calibrationnumber110
maximumnumber120min 10, max 200
stepnumber10min 1, max 50
moderateFromnumber50
loudFromnumber70
dangerFromnumber90
liveLevelnumbernull
liveFrequencynumbernull
levelLivenumber1
frequencyLivenumber1
quietColorcolour"#5fd068"
moderateColorcolour"#f4e04d"
loudColorcolour"#f39a33"
dangerColorcolour"#e5483b"
frequencyColorcolour"#4fb3ff"
backgroundColorcolour"#262b31"
wellColorcolour"#14171b"
borderColorcolour"#3b424a"
foregroundColorcolour"#f1f3f5"
subtleColorcolour"#9aa2ab"

mind-map-bubble — Speech bubble

Represents a speech bubble in a mind map or diagram: a rounded box with a tail pointing toward a speaker or a part of the board. Its text is edited by double-clicking, the tail position is adjustable, and connectors can be attached anywhere on its outline.

Capabilities: textual interaction

ParameterTypeDefaultRange
textstring""
fontSizenumber16min 8, max 72
lineWidthnumber2min 0, max 20
borderColorcolour"token:stroke.default"
backgroundColorcolour"#f7f7f7"
textColorcolour"#000000"
tailHeightnumber20min 2, max 200
tailTipPositionnumber0.18min 0.02, max 0.98

mind-map-connector — Mind map connector

Connects two objects on the board with a line or an arrow, either end attached to an object or left free. The line can be curved, straight or elbowed, solid or dashed, with a choice of end tips, and can carry a text label positioned along its length.

Capabilities: interaction textual

ParameterTypeDefaultRange
routingstring"smooth"smooth | straight | orthogonal
startTipstring"none"none | arrow | closed | point | diamond
endTipstring"arrow"none | arrow | closed | point | diamond
lineStylestring"solid"solid | dashed
lineWidthnumber2min 1, max 20
textstring""
fontSizenumber12min 8, max 72
labelPositionnumber0.5min 0, max 1
colorcolour"token:stroke.default"
textColorcolour"#000000"
labelBackgroundcolour"#ffffff"

mind-map-ellipse — Mind map ellipse

Represents a node of a mind map as an ellipse holding text, typically used for the central idea. Its text is edited by double-clicking and wraps to fit the shape. Connectors can be attached anywhere on its outline and follow it when it moves.

Capabilities: textual interaction

ParameterTypeDefaultRange
textstring""
fontSizenumber16min 8, max 72
lineWidthnumber2min 0, max 20
borderColorcolour"token:stroke.default"
backgroundColorcolour"#f7f7f7"
textColorcolour"#000000"

mind-map-rectangle — Mind map box

Represents a node of a mind map or diagram as a box with rounded corners holding text. Its text is edited by double-clicking and wraps to fit the width of the box. Connectors can be attached anywhere on its outline and follow it when it moves.

Capabilities: textual interaction

ParameterTypeDefaultRange
textstring""
fontSizenumber16min 8, max 72
lineWidthnumber2min 0, max 20
borderColorcolour"token:stroke.default"
backgroundColorcolour"#f7f7f7"
textColorcolour"#000000"

mouse-tracker — Mouse tracker

Records the path of the pointer across a plot with horizontal and vertical axes, each drag adding a separate line. The recorded samples can be written to two model variables, one value per iteration, so the player replays the gesture and other objects reading those variables respond to it.

Capabilities: interaction memory linear writes-model textual

ParameterTypeDefaultRange
samplesmemory[]
xVariablevariable"0"
yVariablevariable"0"
xVariableUnitstring""
yVariableUnitstring""
xValueColorcolour"token:axis.color"
yValueColorcolour"token:axis.color"
characterKeycharacter""
characterImagestring""
characterPivotXnumber0.5
characterPivotYnumber0.5
characterAspectnumber1
hoverXnumber0
hoverYnumber0
hoveringnumber0
autoScalebooleanfalse
equalScalesbooleanfalse
minimumXnumber0
maximumXnumber10
minimumYnumber0
maximumYnumber10
perStepbooleanfalse
showGridbooleanfalse
showTicksbooleanfalse
ticksnumber5min 2, max 11
backgroundColorcolour"token:surface.default"
dataAreaColorcolour"token:surface.default"
axisColorcolour"token:axis.color"
valueColorcolour"token:stroke.warning"
foregroundColorcolour"token:axis.labelColor"
borderColorcolour"token:stroke.subtle"

optical-system — Optical system

A space for geometrical optics. It holds objects, light sources, lenses, mirrors and screens, traces the rays between them and draws the images they form, with the principal axis, the focal points and the distances and magnification of every lens and mirror. Parts are added with the system's + button.

Capabilities: layout interaction

ParameterTypeDefaultRange
pixelsPerMetrenumber400min 10, max 100000
showConstructionRaysbooleantrue
showFocalPointsbooleantrue
showValuesbooleantrue
showScalebooleantrue
showHorizontalGridbooleantrue
showVerticalGridbooleantrue
lineWidthnumber1min 0, max 20
backgroundColorcolour"#FFFFFF"
borderColorcolour"#1E1E1E"
axisColorcolour"#1E1E1E"
rayColorcolour"#F59E0B"
originXnumber0
originYnumber0
previewArtbooleanfalse

orbit-system — Orbit system

Displays a central body with up to four bodies orbiting it, each with its own orbital period. The angular positions are computed from a time variable, usually the independent variable, which makes it suitable for comparing periods in systems such as planets, moons or gears.

Capabilities: radial angular reads-model

ParameterTypeDefaultRange
timeVariablevariable"t"
bodyCountnumber3min 0, max 4
period1number4min 0.0001
period2number8min 0.0001
period3number16min 0.0001
period4number32min 0.0001
showOrbitsbooleantrue
starColorcolour"#f08c02"
bodyColorcolour"token:stroke.accent"
orbitColorcolour"token:stroke.subtle"

oscilloscope — Oscilloscope

Displays one or more waves defined by the model over element indices as traces on a graticule, each in its own color. A variable without element values is traced over the run instead, one point per iteration. A cursor reads every trace at the pointer, and a click mark measures distances such as wavelengths.

Capabilities: reads-model linear textual interaction

ParameterTypeDefaultRange
wavesterms[]
minimumXnumber-5
maximumXnumber5
minimumYnumber-5
maximumYnumber5
samplesnumber200min 2, max 300
ticksnumber10min 2, max 11
showGridbooleantrue
showTicksbooleantrue
showMarkbooleanfalse
markXnumber0
hoverXnumber0
hoverYnumber0
hoveringnumber0
backgroundColorcolour"#e0e0e0"
screenColorcolour"#a5d6a7"
gridColorcolour"#ffffff"
axisColorcolour"#000000"
originColorcolour"#000000"
cursorColorcolour"token:stroke.default"
foregroundColorcolour"token:axis.labelColor"
borderColorcolour"token:stroke.subtle"

piano — Piano

Displays a piano keyboard that can be played with the pointer or the computer keyboard, including chords. The sound of the notes being held is written to a model variable as a wave, one sample per iteration, which an oscilloscope or other objects can then read.

Capabilities: writes-model interaction sound

ParameterTypeDefaultRange
wavevariable""
amplitudevariable"1"
samplesnumber30min 2, max 2000
durationnumber0.02min 0.001
firstOctavenumber4min 0, max 8
octavesnumber2min 1, max 4
notesobjectnull
whiteColorcolour"token:surface.default"
blackColorcolour"token:stroke.strong"
pressedColorcolour"token:stroke.accent"
borderColorcolour"token:stroke.default"

piano-keyboard — Piano keyboard

A run of piano keys, drawn and tuned from the note each one carries: the naturals share the width between them and the sharps ride over the seams. Every key sounds its own pitch while it is held, by pointer or by the computer key that plays it, and the keys that are down are drawn lit. Nothing is written on a key: a keyboard is read by where a key sits, not by a letter painted on it.

Capabilities: interaction sound

ParameterTypeDefaultRange
widthnumber420min 1
heightnumber120min 1
firstOctavenumber4min 0, max 8
octavesnumber2min 1, max 4
notesobjectnull
notesParameterstring""
whiteColorcolour"token:surface.default"
blackColorcolour"token:stroke.strong"
pressedColorcolour"token:stroke.accent"
borderColorcolour"token:stroke.default"

plot-axes — Plot axes

Horizontal and vertical axis of a plot box, with tick marks and numbered labels. Any object that shows a value against a scale reads the same way a chart does.

Capabilities: layout textual

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber100min 1
heightnumber100min 1
minimumXnumber0
maximumXnumber10
minimumYnumber0
maximumYnumber10
ticksXnumber5min 2, max 41
ticksYnumber5min 2, max 41
showTicksbooleantrue
showLabelsbooleantrue
showMinorTicksbooleantrue
showBorderbooleanfalse
showZeroLinesbooleantrue
minimumXPropertystring""
maximumXPropertystring""
minimumYPropertystring""
maximumYPropertystring""
minimumXFixedbooleanfalse
minimumYFixedbooleanfalse
fromZeroXbooleanfalse
fromZeroYbooleanfalse
originstring"box"box | zero
showAxisLinesbooleantrue
rangePropertystring""
rangeAxisstring"shorter"shorter | x | y
scaleXPropertystring""
scaleYPropertystring""
equalScalesbooleanfalse
labelTurnnumber0
colorcolour"token:axis.color"
zeroColorcolour""
labelColorcolour"token:axis.labelColor"
fontFamilystring"token:font.family"
fontSizenumber"token:font.size.tick"min 1
lineWidthnumber"token:axis.strokeWidth"min 0
tickLengthnumber"token:axis.tickLength"min 0

plot-crosshair — Plot crosshair

Dashed lines from a point out to both axes, with the value it stands at read on a badge against each one — the way a chart answers where a point is.

Capabilities: layout textual

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber100min 1
heightnumber100min 1
minimumXnumber0
maximumXnumber10
minimumYnumber0
maximumYnumber10
valueXnumber0
valueYnumber0
rowsobject[]
digitsnumber2min 0, max 6
xUnitstring""
yUnitstring""
showBadgesbooleantrue
colorcolour"token:stroke.default"
xColorcolour""
yColorcolour""
pointColorcolour"token:stroke.accent"
axisBadgeColorcolour"token:axis.labelColor"
badgeColorcolour"token:text.secondary"
badgeTextColorcolour"token:text.inverse"
fontFamilystring"token:font.family"
fontSizenumber"token:font.size.tick"min 1

plot-grid — Plot grid

Grid inside a plot box: one line at every tick of both axes, drawn the way the chart draws its own.

Capabilities: layout

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber100min 1
heightnumber100min 1
minimumXnumber0
maximumXnumber10
minimumYnumber0
maximumYnumber10
ticksXnumber5min 2, max 41
ticksYnumber5min 2, max 41
showVerticalbooleantrue
showHorizontalbooleantrue
showMinorbooleantrue
colorcolour"token:grid.color"
lineWidthnumber"token:strokeWidth.default"min 0

pointer-hand — Pointer hand

A clock hand, gauge needle or compass pointer that rotates clockwise around an anchor. Angle 0 points up.

Capabilities: angular rotation interaction

ParameterTypeDefaultRange
centerXnumber0
centerYnumber0
anglenumber0
lengthnumber60min 0
tailLengthnumber0min 0
widthnumber4min 0
colorcolour"token:stroke.strong"
stylestring"needle"needle | line | arrow
dragVariablevariable""
dragPropertystring""
degreesPerUnitnumber6
offsetDegreesnumber0
wrapAtnumber0min 0

pointer-ring — Pointer ring

Directions marked around a dial, one marker per row: a row names an angle, or a pair of values read as a vector — how far across and how far up. Each marker stands where the tick for its direction stands, so it is read against the same scale.

Capabilities: radial angular reads-model

ParameterTypeDefaultRange
centerXnumber0
centerYnumber0
radiusnumber80min 1
lengthnumber14min 0
widthnumber10min 0
startAnglenumber90
pointersobject[]

program — Program

Runs a short Python program on every row of the model. Every name it gives a value to becomes a term of the model, so graphs, tables and other objects can show it, and it can read every term the model has, on the row being worked out. Write it as blocks or as Python text, and switch between the two at any time. step is the time between rows, and n == 1 or t == 0 marks the first row; a name starting with _ stays inside the program.

Capabilities: reads-model writes-model textual

ParameterTypeDefaultRange
codestring"# This program runs once on every row of the model.\n# n is the row and step the time between rows.\nif n == 1:\n x = 0\n v = 1\nelse:\n x = x + v * step"
lineWidthnumber1min 0, max 20
backgroundColorcolour"#fbfbfd"
borderColorcolour"#000000"
isPreviewnumber0

protractor — Protractor

Provides an angular scale for measuring angles by hand on the board, laid over vectors, trajectories or drawings. It can span a half circle, a quadrant or a full circle, and resting the pointer on it reads the angle from its zero. It does not read from or write to the model.

Capabilities: radial angular scale interaction

ParameterTypeDefaultRange
startAnglenumber0min -360, max 360
endAnglenumber180min -360, max 360
angleUnitstring"degrees"degrees | radians
digitsnumber0min 0, max 6
faceColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
scaleColorcolour"token:axis.color"
scaleLabelColorcolour"token:axis.labelColor"
readingColorcolour"token:stroke.accent"
hoverXnumber0
hoverYnumber0
hoveringnumber0

question — Question

Asks the reader a question, with an optional picture, answered by choosing one or several answers or by writing one. Each answer can be marked correct and given a score. Double-click it to write the question and its answers.

Capabilities: textual interaction

ParameterTypeDefaultRange
lineWidthnumber1min 0, max 20
backgroundColorcolour"#f7f7f7"
borderColorcolour"#000000"
isPreviewnumber0

resistor — Resistor

Represents a resistor in an electric circuit, with two terminals for connecting cables. Its color bands follow the IEC 60062 code for the resistance and tolerance given. Resistance, current and voltage are each read from a variable or a number, so Ohm's law is expressed in the model.

Capabilities: reads-model

ParameterTypeDefaultRange
resistancevariable"100"
currentvariable"0"
voltagevariable"0"
tolerancestring"5%"0.01% | 0.02% | 0.05% | 0.1% | 0.25% | 0.5% | 1% | 2% | 5% | 10% | 20%
bandCountstring"4"4 | 5
showColourBandsbooleantrue
showCurrentArrowbooleantrue
bodyColorcolour"#e8d2ae"
leadColorcolour"#a7adb5"
arrowColorcolour"#dc2626"
resistanceUnitunit"Ω"
currentUnitunit"A"
voltageUnitunit"V"

rich-text — Text

Holds formatted text: headings, bold and italic, lists, links, tables and formulas. Double-click it to write, and format the text from the bar that opens beneath it.

Capabilities: textual interaction

ParameterTypeDefaultRange
lineWidthnumber1min 0, max 20
backgroundColorcolour"#f7f7f7"
borderColorcolour"#000000"
isPreviewnumber0

rotating-vector — Rotating vector

Represents a phasor: an arrow whose angle and length are read from model variables, with an optional reference circle and projections onto the axes. Dragging the tip rotates and stretches the arrow, writing both the angle and the length back to the model.

Capabilities: angular linear reads-model vector interaction writes-model

ParameterTypeDefaultRange
angleVariablevariable"0"
lengthVariablevariable"1"
lengthScalenumber1min 0
showCirclebooleantrue
showProjectionsbooleanfalse
backgroundColorcolour"none"
vectorColorcolour"token:stroke.accent"
circleColorcolour"token:stroke.subtle"
circleFillColorcolour"none"
projectionColorcolour"token:stroke.subtle"

ruler — Ruler

Provides a linear scale for measuring by hand on the board, with numbered divisions and subdivisions between configurable end values, on a linear or logarithmic scale. Resting the pointer on it reads the value at that position, and dragging a number stretches the scale. It does not read from or write to the model.

Capabilities: linear scale interaction

ParameterTypeDefaultRange
minimumXnumber0
maximumXnumber10
scaleTypestring"linear"linear | logarithmic
majorTicksnumber10min 1, max 60
unitunit""
digitsnumber2min 0, max 6
backgroundColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
scaleColorcolour"token:axis.color"
scaleLabelColorcolour"token:axis.labelColor"
readingColorcolour"token:stroke.accent"
hoverValuenumber0
hoverDepthnumber0
hoveringnumber0

seven-segment-display — Seven-segment display

A reading spelled out in seven-segment lamps, the way a digital clock, a meter or a stopwatch shows one. Digits, the colon, the point and the minus sign are drawn as bars; the bars a character does not light are left showing faintly, the way the unlit ones on a real panel are. The text is fitted to the box it is given, so it is placed by handing it a box rather than a font size.

Capabilities: sizable textual

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber120min 0
heightnumber40min 0
textstring""
colorcolour"token:text.primary"
colorsstring""
ghostOpacitynumber0.12min 0, max 1
thicknessnumber0.16min 0.02, max 0.4
digitWidthnumber0.56min 0.2, max 1.5
spacingnumber0.14min 0, max 1
slantnumber0min -30, max 30

slider — Slider

Displays the value of a model variable on a vertical scale between a minimum and a maximum, and sets it as the handle is dragged. It can be drawn as a filling bar or as a rail with a handle, with ticks at round values, a configurable step, and a scale that can expand to fit the run.

Capabilities: linear reads-model writes-model interaction scale

ParameterTypeDefaultRange
valueVariablevariable"0"
unitunit""
sliderStylestring"bar"bar | classic
showTicksbooleantrue
autoScalebooleantrue
minimumnumber0
maximumnumber10
showMinimumValuebooleantrue
showMaximumValuebooleantrue
precisionnumber0min 0
backgroundColorcolour"token:surface.emphasis"
positiveColorcolour"#000000"
negativeColorcolour"#C62828"
foregroundColorcolour"#000000"
borderColorcolour"#000000"

slope — Slope

Provides two perpendicular rulers, horizontal and vertical, forming a right triangle whose slope is shown as the ratio of rise to run. Each ruler has its own range and numbering, and dragging a number stretches that scale, so the slope of a line can be measured by hand.

Capabilities: linear scale interaction

ParameterTypeDefaultRange
horizontalMinimumnumber0
horizontalMaximumnumber10
horizontalMajorTicksnumber5min 1, max 60
verticalMinimumnumber0
verticalMaximumnumber10
verticalMajorTicksnumber5min 1, max 60
backgroundColorcolour"token:surface.default"
foregroundColorcolour"token:stroke.default"
borderColorcolour"token:stroke.default"

speedometer — Speedometer

Displays the value of a model variable as a needle sweeping across a dial with major and minor ticks, together with a numeric readout. The minimum, maximum and angular range are configurable, and an optional sound, such as an engine note, can vary in pitch or volume with the reading.

Capabilities: radial angular reads-model scale audible

ParameterTypeDefaultRange
valueVariablevariable"0"
minimumnumber0
maximumnumber100
startAnglenumber225
endAnglenumber-45
majorTicksnumber9min 2, max 60
minorPerMajornumber4min 0, max 20
digitsnumber0min 0, max 6
unitunit""
showReadoutbooleantrue
faceColorcolour"token:surface.emphasis"
borderColorcolour"token:stroke.default"
needleColorcolour"token:stroke.warning"
labelColorcolour"token:text.primary"
soundaudio""

steering-wheel — Steering wheel

Provides vehicle controls: a steering wheel drawn as a car wheel, a motorcycle handlebar or a ship's helm, with accelerator and brake pedals. Dragging the wheel writes its angle or orientation to model variables, and the pedals write acceleration and braking values.

Capabilities: radial angular linear reads-model scale interaction writes-model

ParameterTypeDefaultRange
turnedBystring"angle"angle | orientation
angleVariablevariable"0"
angleUpVariablevariable"0"
accelerationVariablevariable"0"
accelerationUpVariablevariable"0"
brakingVariablevariable"0"
brakingUpVariablevariable"0"
wheelTypestring"car"car | motor bike | boat
showWheelbooleantrue
showPedalsbooleanfalse
showBrakebooleantrue
brakeMaximumnumber100min 0
maximumnumber100
pedalReturnStepnumber10min 0
rimColorcolour"token:stroke.default"
gripColorcolour"token:stroke.subtle"
hubColorcolour"token:surface.muted"
restingAnglenumber0
markColorcolour"token:stroke.warning"
acceleratorColorcolour"token:stroke.accent"
brakeColorcolour"token:stroke.warning"
frameColorcolour"token:stroke.default"
surfaceColorcolour"token:surface.muted"

text-box — Text box

Text written over as many lines as it needs, broken between words where a line would run past the width it is given and at every line break it holds. Fitted to a box, it is laid out inside the box at the alignment asked for and the lines the box has no room for are left out; fitted to its content, it stands centred on the point it is given, on a plate that hugs the lines it writes.

Capabilities: sizable textual

ParameterTypeDefaultRange
xnumber0
ynumber0
widthnumber160min 0
heightnumber60min 0
fitstring"box"box | content
textstring""
alignstring"middle"start | middle | end
verticalAlignstring"middle"top | middle | bottom
fontSizenumber16min 1
fontFamilystring"token:font.family.sans"
fontWeightnumber400min 100, max 900
lineHeightnumber1.25min 0.5
paddingnumber0min 0
colorcolour"token:text.primary"
backgroundcolour"none"
backgroundOpacitynumber1min 0, max 1
cornerRadiusnumber0min 0

thermometer — Thermometer

Displays the value of a model variable, typically a temperature, as the height of a liquid column against a graduated scale with configurable range and tick spacing. Dragging the column writes the value back to the model, and an optional sound can vary in pitch or volume with the reading.

Capabilities: linear scale reads-model interaction writes-model audible

ParameterTypeDefaultRange
valueVariablevariable"0"
minimumnumber-20
maximumnumber120
tickStepnumber20min 0
digitsnumber1min 0, max 6
unitstring"°C"°C | °F
showReadoutbooleantrue
columnColorcolour"token:stroke.warning"
glassColorcolour"token:surface.default"
borderColorcolour"token:stroke.default"
scaleColorcolour"token:axis.color"
scaleLabelColorcolour"token:axis.labelColor"
readoutColorcolour"token:text.primary"
soundaudio""

tick-ring — Tick ring

Evenly spaced radial tick marks around a centre, with optional longer major ticks.

Capabilities: radial angular scale

ParameterTypeDefaultRange
centerXnumber0
centerYnumber0
radiusnumber80min 1
countnumber12min 0, max 720
startAnglenumber90
spanAnglenumber360
includeEndbooleanfalse
lengthnumber8min 0
widthnumber1min 0
colorcolour"token:stroke.default"
majorEverynumber0min 0
majorLengthnumber12min 0
majorWidthnumber2min 0

trigonometric-circle — Trigonometric circle

Displays a trigonometric circle with a point that moves around it, showing the angle, the radius, the sine and cosine as projections, tangent, cotangent and arc length. Each quantity can be linked to a model variable: variables the model computes move the point, and free variables are written by dragging it or on every iteration of the run.

Capabilities: radial angular reads-model interaction writes-model textual

ParameterTypeDefaultRange
angleVariablevariable"0.9"
radiusVariablevariable"1"
pointXVariablevariable"0"
pointYVariablevariable"0"
tangentVariablevariable"0"
cotangentVariablevariable"0"
tangentPointVariablevariable"0"
arcVariablevariable"0"
angleUnitstring"pi"pi | radians | degrees
snapDivisionsnumbernullmin 0, max 360
dragRadiusbooleanfalse
showGridbooleantrue
showAxesbooleantrue
fitViewbooleanfalse
showAnglebooleantrue
showRadiusbooleantrue
showSinebooleantrue
showCosinebooleantrue
showTangentbooleanfalse
showTangentSegmentbooleanfalse
showCotangentbooleanfalse
showArcbooleanfalse
backgroundColorcolour"none"
circleColorcolour"token:stroke.default"
axisColorcolour"token:axis.color"
gridColorcolour"token:grid.color"
labelColorcolour"token:text.secondary"
radiusColorcolour"token:stroke.accent"
angleColorcolour"#00695c"
sineColorcolour"token:stroke.warning"
cosineColorcolour"#2f9e44"
tangentColorcolour"#6a1b9a"
cotangentColorcolour"#1971c2"
tangentPointColorcolour"#c2255c"
arcColorcolour"#f08c02"
viewRangenumber1.6min 0.05

value — Value

Displays the value of a model variable as a number with its unit and, optionally, its name. Double-clicking the value allows a new value to be typed into the model. The font size can follow a variable, and an optional sound can vary with the value as it changes.

Capabilities: reads-model writes-model interaction textual audible

ParameterTypeDefaultRange
valueVariablevariable"0"
showNamebooleanfalse
unitunit""
fontSizevariable"14"
boldbooleanfalse
italicbooleanfalse
backgroundColorcolour"token:surface.default"
foregroundColorcolour"token:stroke.default"
borderColorcolour"token:stroke.default"
soundaudio""

Design tokens

The board's own colours, widths, fonts, axis and crosshair numbers. Write one as a default with "token:stroke.accent", or read one with the binding { "token": "stroke.accent" } — never the literal value, so a preset restyles every object at once.

Values below are the standard preset. The presets are standard minimal scientific classroom high-contrast; each one overrides some of these and inherits the rest.

TokenStandard value
surface.default"#ffffff"
surface.emphasis"#f7f7f7"
surface.muted"#eeeeee"
stroke.default"#1e1e1e"
stroke.strong"#000000"
stroke.subtle"#9a9a9a"
stroke.accent"#1871c2"
stroke.warning"#e03130"
text.primary"#1e1e1e"
text.secondary"#6b6b6b"
text.inverse"#ffffff"
selection.outline"#1871c2"
handle.fill"#ffffff"
handle.stroke"#1871c2"
strokeWidth.hairline0.5
strokeWidth.default1
strokeWidth.strong2
strokeWidth.heavy3
radius.small2
radius.medium4
radius.large8
spacing.small4
spacing.medium8
spacing.large16
font.family"Katex_Main, Inter, serif"
font.family.sans"Inter, Assistant, system-ui, sans-serif"
font.size.small9
font.size.default11
font.size.large14
font.size.tick10
font.weight.default400
font.weight.strong600
axis.color"#7a7a7a"
axis.labelColor"#666666"
axis.strokeWidth1.2
axis.tickLength4
axis.minorTickLength2.5
axis.minorOpacity0.45
axis.labelGapX1.8
axis.labelGapY0.7
axis.labelRise0.3
grid.color"#d3d3d3"
grid.majorOpacity0.75
grid.minorOpacity0.4
crosshair.dash"4 3"
crosshair.opacity0.25
crosshair.strokeWidth1
badge.opacity0.85
badge.cornerRadius3
badge.paddingX4
badge.paddingY2
badge.charWidth0.58
shadow.soft"0 1px 2px rgba(0,0,0,0.16)"
opacity.disabled0.4
opacity.ghost0.5
duration.fast120
duration.default240
size.default.width180
size.default.height180
handle.size8