Update about for Opposites Attract interactive and make public

[#48204543]
ITSI states-of-matter Interactives
its evaporation: disable button after first use
Revert "pulldown-controller: revert change, fixes Android issue"

This reverts commit ee179b2fc8907d0010dee80bed959bc842a4c4d4.
Fix selectbox width bug (value is in em, not px)

[#48363405]
refactor em/px handling in selectboxview

[#48363405]
Define second sensor type, labquestLight

IS [#54785632]
Sensor type options come from sensor defs

Also threw in a little bit of de-onevaring.

IS [#54787026]
Temporarily ignore spurious sensorUnplugged cb

IS [#54785632] (sensor story)
IS [#55564922] (sensorUnplugged bug)
sensor graph: remove static sensor type & units

Waiting for a dynamic way to bind elements of the propertiesGraph to the relevant model/interactive properties.

IS [#54785632]
Add full list of non-pseudo sensor types

IS [#54785632]
Check for DG only if dataGamesProxyPrefix is set

[#55584804]
test for showElectricField false conversion using mazeGame example

[#54798910]
include exports in Interactive serialization

IS: [#55586270]
specify width when laying out 3 containers wide

[#55426982]

The layout was failing for the embedded and full-screen
latent heat Interactives when the width of the third
component was not specified directly.

Also add example interactives in ./src/interactives/layout-tests
use-once pattern: latent-heat "Start Heating" buttons
latent-heat cooling: fix use-once button references
allow digits to be used in template container ids
semantic layout: additional comments
model divergence with extra-long DNA

[#55660284]

Open this Interactive and click "Translate" button.