@vscada/primitives 0.0.1
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/dist/.tsbuildinfo +1 -0
- package/dist/annotation/index.d.ts +9 -0
- package/dist/annotation/index.d.ts.map +1 -0
- package/dist/annotation/off-page/index.d.ts +3 -0
- package/dist/annotation/off-page/index.d.ts.map +1 -0
- package/dist/annotation/off-page/off-page.stories.d.ts +7 -0
- package/dist/annotation/off-page/off-page.stories.d.ts.map +1 -0
- package/dist/annotation/story-kit.d.ts +28 -0
- package/dist/annotation/story-kit.d.ts.map +1 -0
- package/dist/annotation.js +44 -0
- package/dist/base-CByO_2mM.js +87 -0
- package/dist/bevel-DnmDNvyc.js +14 -0
- package/dist/chrome/bevel.d.ts +21 -0
- package/dist/chrome/bevel.d.ts.map +1 -0
- package/dist/controls/index.d.ts +4 -0
- package/dist/controls/index.d.ts.map +1 -0
- package/dist/controls/motor-starter-panel/index.d.ts +4 -0
- package/dist/controls/motor-starter-panel/index.d.ts.map +1 -0
- package/dist/controls/motor-starter-panel/motor-starter-panel.stories.d.ts +10 -0
- package/dist/controls/motor-starter-panel/motor-starter-panel.stories.d.ts.map +1 -0
- package/dist/controls/pushbutton/index.d.ts +4 -0
- package/dist/controls/pushbutton/index.d.ts.map +1 -0
- package/dist/controls/pushbutton/pushbutton.stories.d.ts +7 -0
- package/dist/controls/pushbutton/pushbutton.stories.d.ts.map +1 -0
- package/dist/controls/selector-switch/index.d.ts +4 -0
- package/dist/controls/selector-switch/index.d.ts.map +1 -0
- package/dist/controls/selector-switch/selector-switch.stories.d.ts +8 -0
- package/dist/controls/selector-switch/selector-switch.stories.d.ts.map +1 -0
- package/dist/controls/story-kit.d.ts +31 -0
- package/dist/controls/story-kit.d.ts.map +1 -0
- package/dist/controls.js +149 -0
- package/dist/conveyance/conveyor/conveyor.stories.d.ts +9 -0
- package/dist/conveyance/conveyor/conveyor.stories.d.ts.map +1 -0
- package/dist/conveyance/conveyor/index.d.ts +4 -0
- package/dist/conveyance/conveyor/index.d.ts.map +1 -0
- package/dist/conveyance/duct/duct.stories.d.ts +7 -0
- package/dist/conveyance/duct/duct.stories.d.ts.map +1 -0
- package/dist/conveyance/duct/index.d.ts +4 -0
- package/dist/conveyance/duct/index.d.ts.map +1 -0
- package/dist/conveyance/index.d.ts +5 -0
- package/dist/conveyance/index.d.ts.map +1 -0
- package/dist/conveyance/pipe/dash.d.ts +28 -0
- package/dist/conveyance/pipe/dash.d.ts.map +1 -0
- package/dist/conveyance/pipe/flange.d.ts +9 -0
- package/dist/conveyance/pipe/flange.d.ts.map +1 -0
- package/dist/conveyance/pipe/index.d.ts +3 -0
- package/dist/conveyance/pipe/index.d.ts.map +1 -0
- package/dist/conveyance/pipe/wave.d.ts +29 -0
- package/dist/conveyance/pipe/wave.d.ts.map +1 -0
- package/dist/conveyance/screw-feeder/index.d.ts +4 -0
- package/dist/conveyance/screw-feeder/index.d.ts.map +1 -0
- package/dist/conveyance/screw-feeder/screw-feeder.stories.d.ts +7 -0
- package/dist/conveyance/screw-feeder/screw-feeder.stories.d.ts.map +1 -0
- package/dist/conveyance/story-kit.d.ts +28 -0
- package/dist/conveyance/story-kit.d.ts.map +1 -0
- package/dist/conveyance.js +345 -0
- package/dist/electrical/base.d.ts +54 -0
- package/dist/electrical/base.d.ts.map +1 -0
- package/dist/electrical/breaker/breaker.stories.d.ts +9 -0
- package/dist/electrical/breaker/breaker.stories.d.ts.map +1 -0
- package/dist/electrical/breaker/index.d.ts +4 -0
- package/dist/electrical/breaker/index.d.ts.map +1 -0
- package/dist/electrical/busbar/busbar.stories.d.ts +8 -0
- package/dist/electrical/busbar/busbar.stories.d.ts.map +1 -0
- package/dist/electrical/busbar/index.d.ts +4 -0
- package/dist/electrical/busbar/index.d.ts.map +1 -0
- package/dist/electrical/generator/generator.stories.d.ts +9 -0
- package/dist/electrical/generator/generator.stories.d.ts.map +1 -0
- package/dist/electrical/generator/index.d.ts +4 -0
- package/dist/electrical/generator/index.d.ts.map +1 -0
- package/dist/electrical/index.d.ts +4 -0
- package/dist/electrical/index.d.ts.map +1 -0
- package/dist/electrical/single-line.stories.d.ts +15 -0
- package/dist/electrical/single-line.stories.d.ts.map +1 -0
- package/dist/electrical/story-kit.d.ts +34 -0
- package/dist/electrical/story-kit.d.ts.map +1 -0
- package/dist/electrical/transformer/index.d.ts +4 -0
- package/dist/electrical/transformer/index.d.ts.map +1 -0
- package/dist/electrical/transformer/transformer.stories.d.ts +8 -0
- package/dist/electrical/transformer/transformer.stories.d.ts.map +1 -0
- package/dist/electrical.js +214 -0
- package/dist/filtration/bag-filter/bag-filter.stories.d.ts +6 -0
- package/dist/filtration/bag-filter/bag-filter.stories.d.ts.map +1 -0
- package/dist/filtration/bag-filter/index.d.ts +3 -0
- package/dist/filtration/bag-filter/index.d.ts.map +1 -0
- package/dist/filtration/base.d.ts +25 -0
- package/dist/filtration/base.d.ts.map +1 -0
- package/dist/filtration/cyclone/cyclone.stories.d.ts +6 -0
- package/dist/filtration/cyclone/cyclone.stories.d.ts.map +1 -0
- package/dist/filtration/cyclone/index.d.ts +3 -0
- package/dist/filtration/cyclone/index.d.ts.map +1 -0
- package/dist/filtration/index.d.ts +9 -0
- package/dist/filtration/index.d.ts.map +1 -0
- package/dist/filtration/scrubber/index.d.ts +3 -0
- package/dist/filtration/scrubber/index.d.ts.map +1 -0
- package/dist/filtration/scrubber/scrubber.stories.d.ts +6 -0
- package/dist/filtration/scrubber/scrubber.stories.d.ts.map +1 -0
- package/dist/filtration/stack/index.d.ts +3 -0
- package/dist/filtration/stack/index.d.ts.map +1 -0
- package/dist/filtration/stack/stack.stories.d.ts +6 -0
- package/dist/filtration/stack/stack.stories.d.ts.map +1 -0
- package/dist/filtration/story-kit.d.ts +27 -0
- package/dist/filtration/story-kit.d.ts.map +1 -0
- package/dist/filtration.js +163 -0
- package/dist/gradients/pipe-gradient.d.ts +35 -0
- package/dist/gradients/pipe-gradient.d.ts.map +1 -0
- package/dist/heat/base.d.ts +28 -0
- package/dist/heat/base.d.ts.map +1 -0
- package/dist/heat/boiler/boiler.stories.d.ts +8 -0
- package/dist/heat/boiler/boiler.stories.d.ts.map +1 -0
- package/dist/heat/boiler/index.d.ts +3 -0
- package/dist/heat/boiler/index.d.ts.map +1 -0
- package/dist/heat/coil/coil.stories.d.ts +6 -0
- package/dist/heat/coil/coil.stories.d.ts.map +1 -0
- package/dist/heat/coil/index.d.ts +3 -0
- package/dist/heat/coil/index.d.ts.map +1 -0
- package/dist/heat/condenser/condenser.stories.d.ts +6 -0
- package/dist/heat/condenser/condenser.stories.d.ts.map +1 -0
- package/dist/heat/condenser/index.d.ts +3 -0
- package/dist/heat/condenser/index.d.ts.map +1 -0
- package/dist/heat/cooling-tower/cooling-tower.stories.d.ts +6 -0
- package/dist/heat/cooling-tower/cooling-tower.stories.d.ts.map +1 -0
- package/dist/heat/cooling-tower/index.d.ts +3 -0
- package/dist/heat/cooling-tower/index.d.ts.map +1 -0
- package/dist/heat/furnace/furnace.stories.d.ts +8 -0
- package/dist/heat/furnace/furnace.stories.d.ts.map +1 -0
- package/dist/heat/furnace/index.d.ts +3 -0
- package/dist/heat/furnace/index.d.ts.map +1 -0
- package/dist/heat/index.d.ts +9 -0
- package/dist/heat/index.d.ts.map +1 -0
- package/dist/heat/shell-tube/index.d.ts +3 -0
- package/dist/heat/shell-tube/index.d.ts.map +1 -0
- package/dist/heat/shell-tube/shell-tube.stories.d.ts +6 -0
- package/dist/heat/shell-tube/shell-tube.stories.d.ts.map +1 -0
- package/dist/heat/story-kit.d.ts +27 -0
- package/dist/heat/story-kit.d.ts.map +1 -0
- package/dist/heat.js +290 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/instruments/bargraph/bargraph.stories.d.ts +8 -0
- package/dist/instruments/bargraph/bargraph.stories.d.ts.map +1 -0
- package/dist/instruments/bargraph/index.d.ts +3 -0
- package/dist/instruments/bargraph/index.d.ts.map +1 -0
- package/dist/instruments/face.d.ts +15 -0
- package/dist/instruments/face.d.ts.map +1 -0
- package/dist/instruments/gauge-analog/gauge-analog.stories.d.ts +11 -0
- package/dist/instruments/gauge-analog/gauge-analog.stories.d.ts.map +1 -0
- package/dist/instruments/gauge-analog/index.d.ts +3 -0
- package/dist/instruments/gauge-analog/index.d.ts.map +1 -0
- package/dist/instruments/gauge-digital/gauge-digital.stories.d.ts +7 -0
- package/dist/instruments/gauge-digital/gauge-digital.stories.d.ts.map +1 -0
- package/dist/instruments/gauge-digital/index.d.ts +3 -0
- package/dist/instruments/gauge-digital/index.d.ts.map +1 -0
- package/dist/instruments/index.d.ts +10 -0
- package/dist/instruments/index.d.ts.map +1 -0
- package/dist/instruments/indicator-lamp/index.d.ts +3 -0
- package/dist/instruments/indicator-lamp/index.d.ts.map +1 -0
- package/dist/instruments/indicator-lamp/indicator-lamp.stories.d.ts +9 -0
- package/dist/instruments/indicator-lamp/indicator-lamp.stories.d.ts.map +1 -0
- package/dist/instruments/readout-panel/index.d.ts +3 -0
- package/dist/instruments/readout-panel/index.d.ts.map +1 -0
- package/dist/instruments/readout-panel/readout-panel.stories.d.ts +6 -0
- package/dist/instruments/readout-panel/readout-panel.stories.d.ts.map +1 -0
- package/dist/instruments/story-kit.d.ts +29 -0
- package/dist/instruments/story-kit.d.ts.map +1 -0
- package/dist/instruments/trend-mini/index.d.ts +3 -0
- package/dist/instruments/trend-mini/index.d.ts.map +1 -0
- package/dist/instruments/trend-mini/trend-mini.stories.d.ts +6 -0
- package/dist/instruments/trend-mini/trend-mini.stories.d.ts.map +1 -0
- package/dist/instruments.js +347 -0
- package/dist/motion/seamless-loop.d.ts +14 -0
- package/dist/motion/seamless-loop.d.ts.map +1 -0
- package/dist/pipe-gradient-B538FEvi.js +18 -0
- package/dist/readout/index.d.ts +3 -0
- package/dist/readout/index.d.ts.map +1 -0
- package/dist/readout/readout.stories.d.ts +8 -0
- package/dist/readout/readout.stories.d.ts.map +1 -0
- package/dist/readout/story-kit.d.ts +27 -0
- package/dist/readout/story-kit.d.ts.map +1 -0
- package/dist/readout.js +33 -0
- package/dist/recipe-BxxL1vV1.js +383 -0
- package/dist/rotating/compressor/compressor.stories.d.ts +28 -0
- package/dist/rotating/compressor/compressor.stories.d.ts.map +1 -0
- package/dist/rotating/compressor/index.d.ts +3 -0
- package/dist/rotating/compressor/index.d.ts.map +1 -0
- package/dist/rotating/fan-axial/fan-axial.stories.d.ts +31 -0
- package/dist/rotating/fan-axial/fan-axial.stories.d.ts.map +1 -0
- package/dist/rotating/fan-axial/index.d.ts +3 -0
- package/dist/rotating/fan-axial/index.d.ts.map +1 -0
- package/dist/rotating/fan-centrifugal/fan-centrifugal.stories.d.ts +31 -0
- package/dist/rotating/fan-centrifugal/fan-centrifugal.stories.d.ts.map +1 -0
- package/dist/rotating/fan-centrifugal/index.d.ts +3 -0
- package/dist/rotating/fan-centrifugal/index.d.ts.map +1 -0
- package/dist/rotating/index.d.ts +12 -0
- package/dist/rotating/index.d.ts.map +1 -0
- package/dist/rotating/motor/index.d.ts +3 -0
- package/dist/rotating/motor/index.d.ts.map +1 -0
- package/dist/rotating/motor/motor.stories.d.ts +28 -0
- package/dist/rotating/motor/motor.stories.d.ts.map +1 -0
- package/dist/rotating/pump-centrifugal/index.d.ts +3 -0
- package/dist/rotating/pump-centrifugal/index.d.ts.map +1 -0
- package/dist/rotating/pump-centrifugal/pump-centrifugal.stories.d.ts +29 -0
- package/dist/rotating/pump-centrifugal/pump-centrifugal.stories.d.ts.map +1 -0
- package/dist/rotating/pump-positive-displacement/index.d.ts +3 -0
- package/dist/rotating/pump-positive-displacement/index.d.ts.map +1 -0
- package/dist/rotating/pump-positive-displacement/pump-positive-displacement.stories.d.ts +28 -0
- package/dist/rotating/pump-positive-displacement/pump-positive-displacement.stories.d.ts.map +1 -0
- package/dist/rotating/story-kit.d.ts +65 -0
- package/dist/rotating/story-kit.d.ts.map +1 -0
- package/dist/rotating/turbine/index.d.ts +3 -0
- package/dist/rotating/turbine/index.d.ts.map +1 -0
- package/dist/rotating/turbine/turbine.stories.d.ts +29 -0
- package/dist/rotating/turbine/turbine.stories.d.ts.map +1 -0
- package/dist/rotating.js +513 -0
- package/dist/rotation-drive/base.d.ts +110 -0
- package/dist/rotation-drive/base.d.ts.map +1 -0
- package/dist/valves/ball/ball.stories.d.ts +26 -0
- package/dist/valves/ball/ball.stories.d.ts.map +1 -0
- package/dist/valves/ball/index.d.ts +3 -0
- package/dist/valves/ball/index.d.ts.map +1 -0
- package/dist/valves/base.d.ts +70 -0
- package/dist/valves/base.d.ts.map +1 -0
- package/dist/valves/butterfly/butterfly.stories.d.ts +26 -0
- package/dist/valves/butterfly/butterfly.stories.d.ts.map +1 -0
- package/dist/valves/butterfly/index.d.ts +3 -0
- package/dist/valves/butterfly/index.d.ts.map +1 -0
- package/dist/valves/check/check.stories.d.ts +25 -0
- package/dist/valves/check/check.stories.d.ts.map +1 -0
- package/dist/valves/check/index.d.ts +3 -0
- package/dist/valves/check/index.d.ts.map +1 -0
- package/dist/valves/control/control.stories.d.ts +26 -0
- package/dist/valves/control/control.stories.d.ts.map +1 -0
- package/dist/valves/control/index.d.ts +3 -0
- package/dist/valves/control/index.d.ts.map +1 -0
- package/dist/valves/gate/gate.stories.d.ts +26 -0
- package/dist/valves/gate/gate.stories.d.ts.map +1 -0
- package/dist/valves/gate/index.d.ts +3 -0
- package/dist/valves/gate/index.d.ts.map +1 -0
- package/dist/valves/index.d.ts +8 -0
- package/dist/valves/index.d.ts.map +1 -0
- package/dist/valves/relief/index.d.ts +3 -0
- package/dist/valves/relief/index.d.ts.map +1 -0
- package/dist/valves/relief/relief.stories.d.ts +26 -0
- package/dist/valves/relief/relief.stories.d.ts.map +1 -0
- package/dist/valves/story-kit.d.ts +54 -0
- package/dist/valves/story-kit.d.ts.map +1 -0
- package/dist/valves.js +424 -0
- package/dist/vapor/base.d.ts +42 -0
- package/dist/vapor/base.d.ts.map +1 -0
- package/dist/vapor/billow-layer.d.ts +33 -0
- package/dist/vapor/billow-layer.d.ts.map +1 -0
- package/dist/vapor/billow-path.d.ts +36 -0
- package/dist/vapor/billow-path.d.ts.map +1 -0
- package/dist/vapor/index.d.ts +8 -0
- package/dist/vapor/index.d.ts.map +1 -0
- package/dist/vapor/plume/index.d.ts +3 -0
- package/dist/vapor/plume/index.d.ts.map +1 -0
- package/dist/vapor/plume/plume.stories.d.ts +9 -0
- package/dist/vapor/plume/plume.stories.d.ts.map +1 -0
- package/dist/vapor/steam-vent/index.d.ts +3 -0
- package/dist/vapor/steam-vent/index.d.ts.map +1 -0
- package/dist/vapor/steam-vent/steam-vent.stories.d.ts +9 -0
- package/dist/vapor/steam-vent/steam-vent.stories.d.ts.map +1 -0
- package/dist/vapor/story-kit.d.ts +28 -0
- package/dist/vapor/story-kit.d.ts.map +1 -0
- package/dist/vapor.js +194 -0
- package/dist/vessel-body/hardware.d.ts +13 -0
- package/dist/vessel-body/hardware.d.ts.map +1 -0
- package/dist/vessel-body/liquid/dished-bottom.d.ts +33 -0
- package/dist/vessel-body/liquid/dished-bottom.d.ts.map +1 -0
- package/dist/vessel-body/liquid/index.d.ts +11 -0
- package/dist/vessel-body/liquid/index.d.ts.map +1 -0
- package/dist/vessel-body/liquid/wave-layer.d.ts +57 -0
- package/dist/vessel-body/liquid/wave-layer.d.ts.map +1 -0
- package/dist/vessel-body/liquid/wave-path.d.ts +45 -0
- package/dist/vessel-body/liquid/wave-path.d.ts.map +1 -0
- package/dist/vessel-body/recipe.d.ts +85 -0
- package/dist/vessel-body/recipe.d.ts.map +1 -0
- package/dist/vessel-body/shapes.d.ts +78 -0
- package/dist/vessel-body/shapes.d.ts.map +1 -0
- package/dist/vessels/drum/drum.stories.d.ts +33 -0
- package/dist/vessels/drum/drum.stories.d.ts.map +1 -0
- package/dist/vessels/drum/index.d.ts +3 -0
- package/dist/vessels/drum/index.d.ts.map +1 -0
- package/dist/vessels/hopper/hopper.stories.d.ts +39 -0
- package/dist/vessels/hopper/hopper.stories.d.ts.map +1 -0
- package/dist/vessels/hopper/index.d.ts +3 -0
- package/dist/vessels/hopper/index.d.ts.map +1 -0
- package/dist/vessels/index.d.ts +10 -0
- package/dist/vessels/index.d.ts.map +1 -0
- package/dist/vessels/silo/index.d.ts +3 -0
- package/dist/vessels/silo/index.d.ts.map +1 -0
- package/dist/vessels/silo/silo.stories.d.ts +33 -0
- package/dist/vessels/silo/silo.stories.d.ts.map +1 -0
- package/dist/vessels/story-kit.d.ts +83 -0
- package/dist/vessels/story-kit.d.ts.map +1 -0
- package/dist/vessels/tank-horizontal/index.d.ts +3 -0
- package/dist/vessels/tank-horizontal/index.d.ts.map +1 -0
- package/dist/vessels/tank-horizontal/tank-horizontal.stories.d.ts +33 -0
- package/dist/vessels/tank-horizontal/tank-horizontal.stories.d.ts.map +1 -0
- package/dist/vessels/tank-spherical/index.d.ts +3 -0
- package/dist/vessels/tank-spherical/index.d.ts.map +1 -0
- package/dist/vessels/tank-spherical/tank-spherical.stories.d.ts +33 -0
- package/dist/vessels/tank-spherical/tank-spherical.stories.d.ts.map +1 -0
- package/dist/vessels/tank-vertical/index.d.ts +3 -0
- package/dist/vessels/tank-vertical/index.d.ts.map +1 -0
- package/dist/vessels/tank-vertical/tank-vertical.stories.d.ts +47 -0
- package/dist/vessels/tank-vertical/tank-vertical.stories.d.ts.map +1 -0
- package/dist/vessels.js +198 -0
- package/package.json +76 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { AnimationControl, DefaultTransition, HandleMap, Renderer, SceneElement, TransitionSpec, ValueWarningDetail } from '@vscada/core';
|
|
2
|
+
/** One state's visual — lamp color ALWAYS paired with a text label (AD-3: color never stands alone). */
|
|
3
|
+
export interface RotatingStateVisual {
|
|
4
|
+
lampColor: string;
|
|
5
|
+
blink: boolean;
|
|
6
|
+
label: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Minimal structural shape `buildRotationDrive` needs from a primitive's
|
|
10
|
+
* own token namespace (`PumpTokens`, `DrivenEquipmentTokens`, `FanTokens`,
|
|
11
|
+
* ...). Every one of those interfaces satisfies this structurally — no
|
|
12
|
+
* primitive needs to cast or adapt its real tokens object to call in here.
|
|
13
|
+
*/
|
|
14
|
+
export interface RotatingTokensLike {
|
|
15
|
+
states: Record<string, RotatingStateVisual>;
|
|
16
|
+
bodyEnergizedColor: string;
|
|
17
|
+
bodyDeenergizedColor: string;
|
|
18
|
+
}
|
|
19
|
+
/** The SVG elements a state change writes into. `body` is optional — some primitives (e.g. a bare rotor icon) may not have a distinct energized-highlight surface. */
|
|
20
|
+
export interface RotatingVisualRefs {
|
|
21
|
+
body?: Element;
|
|
22
|
+
lamp: Element;
|
|
23
|
+
label: Element;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* §6.2's lamp+label+body-highlight state pairing, generic over any state
|
|
27
|
+
* set (the pump's 5-state `stopped/starting/running/tripped/unavailable`,
|
|
28
|
+
* a fan's 3-state `off/running/fault`, ...). Returns the resolved visual
|
|
29
|
+
* (or `undefined` for an unmapped state name absent from `tokens.states`,
|
|
30
|
+
* matching pump-centrifugal's original "nothing sensible to render, hold
|
|
31
|
+
* prior visual" behavior) so the caller can decide the blink control's
|
|
32
|
+
* pause/resume.
|
|
33
|
+
*/
|
|
34
|
+
export declare function applyRotatingStateVisual(renderer: Renderer, tokens: RotatingTokensLike, state: string, runningState: string, visuals: RotatingVisualRefs): RotatingStateVisual | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* §6.2's asymmetric ramp/coast default-transition idiom (pump: 1800ms
|
|
37
|
+
* ease-out up, 3500ms ease-in down), generalized: any primitive whose
|
|
38
|
+
* default transition depends only on "is the new state the running state"
|
|
39
|
+
* can build its `DefaultTransition` with one call instead of hand-rolling
|
|
40
|
+
* the same ternary pump-centrifugal originally wrote inline.
|
|
41
|
+
*/
|
|
42
|
+
export declare function makeAsymmetricTransition(runningState: string, up: TransitionSpec, down: TransitionSpec): DefaultTransition;
|
|
43
|
+
/**
|
|
44
|
+
* Task 3's hysteresis band, generalized (Dev Notes: "keep it in the shared
|
|
45
|
+
* base — turbines may reuse it at high RPM") — even though only the two
|
|
46
|
+
* fan primitives consume it in this story. Tracks its own on/off state
|
|
47
|
+
* internally (never recomputed from scratch each tick): once ON, `value`
|
|
48
|
+
* must fall BELOW `threshold * (1 - band)` to turn back off; once OFF, it
|
|
49
|
+
* must rise ABOVE `threshold * (1 + band)` to turn back on. A value
|
|
50
|
+
* oscillating right at `threshold` therefore never flickers.
|
|
51
|
+
*/
|
|
52
|
+
export declare class HysteresisSwitch {
|
|
53
|
+
private readonly threshold;
|
|
54
|
+
/** Fraction of `threshold` for the dead band on each side. §Task 3 decision: ±5% (0.05). */
|
|
55
|
+
private readonly band;
|
|
56
|
+
private on;
|
|
57
|
+
constructor(threshold: number,
|
|
58
|
+
/** Fraction of `threshold` for the dead band on each side. §Task 3 decision: ±5% (0.05). */
|
|
59
|
+
band?: number);
|
|
60
|
+
/** Feeds one new sample; returns the (possibly updated) on/off state. */
|
|
61
|
+
update(value: number): boolean;
|
|
62
|
+
get isOn(): boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface RotationDriveOptions {
|
|
65
|
+
element: SceneElement;
|
|
66
|
+
renderer: Renderer;
|
|
67
|
+
tokens: RotatingTokensLike;
|
|
68
|
+
/** The one state name that counts as "energized/spinning up" (pump/fan-equivalent: `'running'`). */
|
|
69
|
+
runningState: string;
|
|
70
|
+
defaultTransition: DefaultTransition;
|
|
71
|
+
visuals: RotatingVisualRefs;
|
|
72
|
+
/**
|
|
73
|
+
* Every WAAPI control whose `playbackRate` should track the tweened
|
|
74
|
+
* rotation rate — usually one (a single impeller/rotor), but a fan's
|
|
75
|
+
* blur-disc crossover (Task 3) needs BOTH its discrete-blade control and
|
|
76
|
+
* its blurred-ring control kept in sync (AD-2: both pre-built, opacity
|
|
77
|
+
* toggled, never rebuilt — so both must keep spinning even while hidden).
|
|
78
|
+
*/
|
|
79
|
+
rotationControls: AnimationControl[];
|
|
80
|
+
blinkControl: AnimationControl;
|
|
81
|
+
/** Ceiling for the `rotate` binding's normalized rate (pump-centrifugal's `MAX_IMPELLER_RATE` convention). Defaults to 4. */
|
|
82
|
+
maxRate?: number;
|
|
83
|
+
/** Live in-flight speed-tag retarget smoothing window while running (pump-centrifugal's 300ms). Defaults to 300. */
|
|
84
|
+
liveSmoothingMs?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Optional hook invoked with the RAW (un-normalized) speed-tag value on
|
|
87
|
+
* every `rotate`-binding write, before rate normalization — this is the
|
|
88
|
+
* seam a fan primitive uses to drive its `HysteresisSwitch` against the
|
|
89
|
+
* true RPM value (the normalized 0..1 rate fraction is the wrong unit
|
|
90
|
+
* for an RPM threshold token).
|
|
91
|
+
*/
|
|
92
|
+
onSpeedRawValue?: (rawValue: number, now: number) => void;
|
|
93
|
+
onWarning?: (detail: ValueWarningDetail) => void;
|
|
94
|
+
}
|
|
95
|
+
export interface RotationDrive {
|
|
96
|
+
handles: HandleMap;
|
|
97
|
+
/** The FSM-resolved state as of the most recent `state`-binding write; `undefined` before the first write ever lands. */
|
|
98
|
+
getCurrentState(): string | undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Wires one element's full rotation drive: `state` binding -> `Fsm` ->
|
|
102
|
+
* lamp/label/body visual + tween retarget; `rotate` binding -> normalized
|
|
103
|
+
* target rate, live-retargeted while running; a `TweenHandle` that ticks
|
|
104
|
+
* every registered rotation control's `playbackRate`; and ONE bundled
|
|
105
|
+
* `AnimationHandle` (AD-5) pausing/resuming/seeking every rotation control
|
|
106
|
+
* plus the blink control together — the same shape pump-centrifugal's
|
|
107
|
+
* original single `__pump-animations-*` handle already established.
|
|
108
|
+
*/
|
|
109
|
+
export declare function buildRotationDrive(opts: RotationDriveOptions): RotationDrive;
|
|
110
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/rotation-drive/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,YAAY,EAGZ,cAAc,EAEd,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAsBtB,wGAAwG;AACxG,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,sKAAsK;AACtK,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,GAAG,SAAS,CASjC;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,iBAAiB,CAE1H;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,4FAA4F;IAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,EAAE,CAAS;gBAGA,SAAS,EAAE,MAAM;IAClC,4FAA4F;IAC3E,IAAI,SAAO;IAG9B,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAM9B,IAAI,IAAI,IAAI,OAAO,CAElB;CACF;AAUD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,oGAAoG;IACpG,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B;;;;;;OAMG;IACH,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,6HAA6H;IAC7H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oHAAoH;IACpH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAqG5E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Closed: ValveStory;
|
|
20
|
+
export declare const MidStroke: ValveStory;
|
|
21
|
+
export declare const Open: ValveStory;
|
|
22
|
+
export declare const Fault: ValveStory;
|
|
23
|
+
export declare const StaleFreeze: ValveStory;
|
|
24
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
25
|
+
export default meta;
|
|
26
|
+
//# sourceMappingURL=ball.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ball.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/ball/ball.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAA2E,CAAC;AACjG,eAAO,MAAM,SAAS,EAAE,UAAmE,CAAC;AAC5F,eAAO,MAAM,IAAI,EAAE,UAAqE,CAAC;AACzF,eAAO,MAAM,KAAK,EAAE,UAAsF,CAAC;AAC3G,eAAO,MAAM,WAAW,EAAE,UAAwF,CAAC;AAEnH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/ball/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA+GrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { AnimationControl, HandleMap, Renderer, SceneElement, ValueWarningDetail } from '@vscada/core';
|
|
2
|
+
/**
|
|
3
|
+
* Story 3.5 Task 1 — the shared machinery every valve primitive
|
|
4
|
+
* (gate/ball/butterfly/control/check/relief) builds on, mirroring
|
|
5
|
+
* `rotation-drive/base.ts`'s "extract-then-specialize" shape. Owns the GENERIC
|
|
6
|
+
* halves: the `closed/opening/open/closing/fault` state set, the
|
|
7
|
+
* position-fraction `Tween` guaranteeing the §6.2 "3-15s, never jump"
|
|
8
|
+
* stroke regardless of how sparsely a real position tag updates (core's
|
|
9
|
+
* OWN store-level interpolation caps at 2000ms and can snap on a big enough
|
|
10
|
+
* jump — see `scheduler.ts`'s `MAX_TWEEN_DURATION_MS`/`DEFAULT_SNAP_THRESHOLD`
|
|
11
|
+
* — neither guarantee is strong enough for a valve, so this module keeps
|
|
12
|
+
* its own independent `Tween` and treats every incoming raw value as a
|
|
13
|
+
* fresh TARGET, never trusting the scheduler's own smoothing/snapping for
|
|
14
|
+
* this channel), and the direction-arrow blink registration (AD-5). It does
|
|
15
|
+
* NOT own SVG structure (AD-3: stays with each primitive's own `build()`)
|
|
16
|
+
* or the type-specific disc/gate/bore geometry (Task 2) — that's wired
|
|
17
|
+
* through the `onFraction` callback below.
|
|
18
|
+
*/
|
|
19
|
+
export type ValveState = 'closed' | 'opening' | 'open' | 'closing' | 'fault';
|
|
20
|
+
/** One state's visual — indicator color ALWAYS paired with a text label (AD-3: color never stands alone). */
|
|
21
|
+
export interface ValveStateVisualLike {
|
|
22
|
+
indicatorColor: string;
|
|
23
|
+
blink: boolean;
|
|
24
|
+
label: string;
|
|
25
|
+
}
|
|
26
|
+
/** Minimal structural shape `buildValveDrive` needs from `ValveTokens`. */
|
|
27
|
+
export interface ValveTokensLike {
|
|
28
|
+
states: Record<string, ValveStateVisualLike>;
|
|
29
|
+
defaultStrokeMs: number;
|
|
30
|
+
}
|
|
31
|
+
/** The SVG elements a valve's state/fraction writes touch. */
|
|
32
|
+
export interface ValveVisualRefs {
|
|
33
|
+
/** The element whose `scaleX` (transform-origin left edge) reads the fill fraction 0..1 — the "grey closed / medium color open" body-fill read (AC2). */
|
|
34
|
+
fill: Element;
|
|
35
|
+
/** AD-3: state color always paired with this text label. */
|
|
36
|
+
indicator: Element;
|
|
37
|
+
label: Element;
|
|
38
|
+
}
|
|
39
|
+
export interface ValveDriveOptions {
|
|
40
|
+
element: SceneElement;
|
|
41
|
+
renderer: Renderer;
|
|
42
|
+
tokens: ValveTokensLike;
|
|
43
|
+
visuals: ValveVisualRefs;
|
|
44
|
+
/** Registered blink-capable control lighting the direction arrows during transit (Task 1: "direction arrows lit during motion (registered blink-capable)"), AD-5. */
|
|
45
|
+
arrowControl: AnimationControl;
|
|
46
|
+
/** The element whose opacity toggles 0/1 alongside `arrowControl`'s pause/resume — the arrow GROUP itself (built by the primitive, geometry unowned by base). */
|
|
47
|
+
arrowVisual: Element;
|
|
48
|
+
/** Per-type callback: writes the fraction (0..1) into that type's own disc/gate/bore geometry (Task 2 — base.ts deliberately owns none of this, AD-3). */
|
|
49
|
+
onFraction: (renderer: Renderer, fraction: number) => void;
|
|
50
|
+
onWarning?: (detail: ValueWarningDetail) => void;
|
|
51
|
+
}
|
|
52
|
+
export interface ValveDrive {
|
|
53
|
+
handles: HandleMap;
|
|
54
|
+
/** The resolved state as of the most recent write (explicit or derived); `undefined` before the first-ever write lands. */
|
|
55
|
+
getCurrentState(): ValveState | undefined;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Wires one valve element's full drive: an optional `position` binding
|
|
59
|
+
* (continuous, drives the fraction Tween's TARGET directly — real
|
|
60
|
+
* telemetry, when present, owns the continuous channel) and/or an optional
|
|
61
|
+
* `state` binding (FSM-resolved discrete label/indicator/arrows; ALSO
|
|
62
|
+
* drives the fraction Tween's target when no position tag exists, per Dev
|
|
63
|
+
* Notes: "position is the primary channel, states derive when no position
|
|
64
|
+
* tag exists" — read the other direction, when there's no position tag the
|
|
65
|
+
* FSM's own resolved state becomes the fraction's driver). `fault` freezes
|
|
66
|
+
* the fraction at whatever it last physically reached (Dev Notes: a stuck
|
|
67
|
+
* valve doesn't un-stick visually).
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildValveDrive(opts: ValveDriveOptions): ValveDrive;
|
|
70
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/valves/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,SAAS,EAAiB,QAAQ,EAAE,YAAY,EAA4B,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGtK;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7E,6GAA6G;AAC7G,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,yJAAyJ;IACzJ,IAAI,EAAE,OAAO,CAAC;IACd,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,qKAAqK;IACrK,YAAY,EAAE,gBAAgB,CAAC;IAC/B,iKAAiK;IACjK,WAAW,EAAE,OAAO,CAAC;IACrB,0JAA0J;IAC1J,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,2HAA2H;IAC3H,eAAe,IAAI,UAAU,GAAG,SAAS,CAAC;CAC3C;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CA4JnE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Closed: ValveStory;
|
|
20
|
+
export declare const MidStroke: ValveStory;
|
|
21
|
+
export declare const Open: ValveStory;
|
|
22
|
+
export declare const Fault: ValveStory;
|
|
23
|
+
export declare const StaleFreeze: ValveStory;
|
|
24
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
25
|
+
export default meta;
|
|
26
|
+
//# sourceMappingURL=butterfly.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"butterfly.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/butterfly/butterfly.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAAqE,CAAC;AAC3F,eAAO,MAAM,SAAS,EAAE,UAA2D,CAAC;AACpF,eAAO,MAAM,IAAI,EAAE,UAAqE,CAAC;AACzF,eAAO,MAAM,KAAK,EAAE,UAAsF,CAAC;AAC3G,eAAO,MAAM,WAAW,EAAE,UAAwF,CAAC;AAEnH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/butterfly/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA0HrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Closed: ValveStory;
|
|
20
|
+
export declare const Open: ValveStory;
|
|
21
|
+
export declare const Fault: ValveStory;
|
|
22
|
+
export declare const StaleFreeze: ValveStory;
|
|
23
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
24
|
+
export default meta;
|
|
25
|
+
//# sourceMappingURL=check.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/check/check.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAAsE,CAAC;AAC5F,eAAO,MAAM,IAAI,EAAE,UAAsF,CAAC;AAC1G,eAAO,MAAM,KAAK,EAAE,UAAkE,CAAC;AACvF,eAAO,MAAM,WAAW,EAAE,UAA6E,CAAC;AAExG,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/check/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA0HrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Closed: ValveStory;
|
|
20
|
+
export declare const MidStroke: ValveStory;
|
|
21
|
+
export declare const Open: ValveStory;
|
|
22
|
+
export declare const Fault: ValveStory;
|
|
23
|
+
export declare const StaleFreeze: ValveStory;
|
|
24
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
25
|
+
export default meta;
|
|
26
|
+
//# sourceMappingURL=control.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/control/control.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAAsD,CAAC;AAC5E,eAAO,MAAM,SAAS,EAAE,UAAiE,CAAC;AAC1F,eAAO,MAAM,IAAI,EAAE,UAAsD,CAAC;AAC1E,eAAO,MAAM,KAAK,EAAE,UAAsF,CAAC;AAC3G,eAAO,MAAM,WAAW,EAAE,UAAwF,CAAC;AAEnH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/control/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA+IrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Closed: ValveStory;
|
|
20
|
+
export declare const MidStroke: ValveStory;
|
|
21
|
+
export declare const Open: ValveStory;
|
|
22
|
+
export declare const Fault: ValveStory;
|
|
23
|
+
export declare const StaleFreeze: ValveStory;
|
|
24
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
25
|
+
export default meta;
|
|
26
|
+
//# sourceMappingURL=gate.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/gate/gate.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAAsD,CAAC;AAC5E,eAAO,MAAM,SAAS,EAAE,UAAiE,CAAC;AAC1F,eAAO,MAAM,IAAI,EAAE,UAAsD,CAAC;AAC1E,eAAO,MAAM,KAAK,EAAE,UAAsF,CAAC;AAC3G,eAAO,MAAM,WAAW,EAAE,UAAwF,CAAC;AAEnH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/gate/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AAqHrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PrimitiveGroup } from '@vscada/core';
|
|
2
|
+
/**
|
|
3
|
+
* Valve entry point (§6.1) — Story 3.5's batch of six, all built on
|
|
4
|
+
* `./base.ts`'s shared FSM/position/tween drive machinery, matching
|
|
5
|
+
* `rotating/index.ts`/`vessels/index.ts`'s established merge pattern.
|
|
6
|
+
*/
|
|
7
|
+
export declare const valves: PrimitiveGroup;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/valves/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQnD;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,cAUnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/valves/relief/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AAiJrH,eAAO,MAAM,MAAM,EAAE,cAGnB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ValveStory, type ValveStoryArgs, type ValveStoryMeta } from '../story-kit';
|
|
2
|
+
export declare const meta: ValveStoryMeta;
|
|
3
|
+
export declare const argTypes: {
|
|
4
|
+
readonly position: {
|
|
5
|
+
readonly control: {
|
|
6
|
+
readonly type: "range";
|
|
7
|
+
readonly min: 0;
|
|
8
|
+
readonly max: 100;
|
|
9
|
+
readonly step: 1;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly fault: {
|
|
13
|
+
readonly control: "boolean";
|
|
14
|
+
};
|
|
15
|
+
readonly stale: {
|
|
16
|
+
readonly control: "boolean";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const Seated: ValveStory;
|
|
20
|
+
export declare const Lifting: ValveStory;
|
|
21
|
+
export declare const FullyLifted: ValveStory;
|
|
22
|
+
export declare const Fault: ValveStory;
|
|
23
|
+
export declare const StaleFreeze: ValveStory;
|
|
24
|
+
export declare function render(container: HTMLElement, args?: Partial<ValveStoryArgs>): import("../story-kit").MountedValveStory;
|
|
25
|
+
export default meta;
|
|
26
|
+
//# sourceMappingURL=relief.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relief.stories.d.ts","sourceRoot":"","sources":["../../../src/valves/relief/relief.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjI,eAAO,MAAM,IAAI,EAAE,cAKlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAwB,CAAC;AAE9C,eAAO,MAAM,MAAM,EAAE,UAA+D,CAAC;AACrF,eAAO,MAAM,OAAO,EAAE,UAAqE,CAAC;AAC5F,eAAO,MAAM,WAAW,EAAE,UAAqE,CAAC;AAChG,eAAO,MAAM,KAAK,EAAE,UAAoF,CAAC;AACzG,eAAO,MAAM,WAAW,EAAE,UAAsF,CAAC;AAEjH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,4CAEhF;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ScadaView, type Renderer, type TimeSource } from '@vscada/core';
|
|
2
|
+
export interface ValveStoryMeta {
|
|
3
|
+
title: string;
|
|
4
|
+
/** The registered primitive `type` — must be a key in `valves.primitives`. */
|
|
5
|
+
elementType: string;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ValveStoryArgs {
|
|
10
|
+
/** 0..100 — the commanded position (AC1). */
|
|
11
|
+
position: number;
|
|
12
|
+
/** Sends the `state` tag mapped to `fault` alongside `position` (a stuck valve freezes at whatever fraction it last reached). */
|
|
13
|
+
fault: boolean;
|
|
14
|
+
/** Reuses Story 1.6's freeze mechanism (`connectionState = 'disconnected'`). */
|
|
15
|
+
stale: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function defaultValveStoryArgs(): ValveStoryArgs;
|
|
18
|
+
export declare const VALVE_STORY_ARG_TYPES: {
|
|
19
|
+
readonly position: {
|
|
20
|
+
readonly control: {
|
|
21
|
+
readonly type: "range";
|
|
22
|
+
readonly min: 0;
|
|
23
|
+
readonly max: 100;
|
|
24
|
+
readonly step: 1;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
readonly fault: {
|
|
28
|
+
readonly control: "boolean";
|
|
29
|
+
};
|
|
30
|
+
readonly stale: {
|
|
31
|
+
readonly control: "boolean";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export interface ValveStory {
|
|
35
|
+
name: string;
|
|
36
|
+
args?: Partial<ValveStoryArgs>;
|
|
37
|
+
}
|
|
38
|
+
export interface MountedValveStory {
|
|
39
|
+
element: ScadaView;
|
|
40
|
+
setArgs(next: Partial<ValveStoryArgs>): void;
|
|
41
|
+
teardown(): void;
|
|
42
|
+
}
|
|
43
|
+
export interface MountValveStoryOptions {
|
|
44
|
+
/** Real usage always gets the real WAAPI-backed `domRenderer`; tests inject a stub (jsdom/happy-dom has no `Element.animate`). */
|
|
45
|
+
renderer?: Renderer;
|
|
46
|
+
timeSource?: TimeSource;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Mounts one valve primitive as a real `<scada-view>` inside `container`,
|
|
50
|
+
* driven by `args` (position sweep / fault toggle / stale freeze). Mirrors
|
|
51
|
+
* `mountRotatingStory`/`mountVesselStory`'s shape exactly.
|
|
52
|
+
*/
|
|
53
|
+
export declare function mountValveStory(container: HTMLElement, meta: ValveStoryMeta, initialArgs?: Partial<ValveStoryArgs>, options?: MountValveStoryOptions): MountedValveStory;
|
|
54
|
+
//# sourceMappingURL=story-kit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-kit.d.ts","sourceRoot":"","sources":["../../src/valves/story-kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,KAAK,QAAQ,EAGb,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAsCtB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,iIAAiI;IACjI,KAAK,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAIxB,CAAC;AA0CX,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC7C,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,kIAAkI;IAClI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,cAAc,EACpB,WAAW,GAAE,OAAO,CAAC,cAAc,CAAM,EACzC,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CA2BnB"}
|