@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.
Files changed (311) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/annotation/index.d.ts +9 -0
  3. package/dist/annotation/index.d.ts.map +1 -0
  4. package/dist/annotation/off-page/index.d.ts +3 -0
  5. package/dist/annotation/off-page/index.d.ts.map +1 -0
  6. package/dist/annotation/off-page/off-page.stories.d.ts +7 -0
  7. package/dist/annotation/off-page/off-page.stories.d.ts.map +1 -0
  8. package/dist/annotation/story-kit.d.ts +28 -0
  9. package/dist/annotation/story-kit.d.ts.map +1 -0
  10. package/dist/annotation.js +44 -0
  11. package/dist/base-CByO_2mM.js +87 -0
  12. package/dist/bevel-DnmDNvyc.js +14 -0
  13. package/dist/chrome/bevel.d.ts +21 -0
  14. package/dist/chrome/bevel.d.ts.map +1 -0
  15. package/dist/controls/index.d.ts +4 -0
  16. package/dist/controls/index.d.ts.map +1 -0
  17. package/dist/controls/motor-starter-panel/index.d.ts +4 -0
  18. package/dist/controls/motor-starter-panel/index.d.ts.map +1 -0
  19. package/dist/controls/motor-starter-panel/motor-starter-panel.stories.d.ts +10 -0
  20. package/dist/controls/motor-starter-panel/motor-starter-panel.stories.d.ts.map +1 -0
  21. package/dist/controls/pushbutton/index.d.ts +4 -0
  22. package/dist/controls/pushbutton/index.d.ts.map +1 -0
  23. package/dist/controls/pushbutton/pushbutton.stories.d.ts +7 -0
  24. package/dist/controls/pushbutton/pushbutton.stories.d.ts.map +1 -0
  25. package/dist/controls/selector-switch/index.d.ts +4 -0
  26. package/dist/controls/selector-switch/index.d.ts.map +1 -0
  27. package/dist/controls/selector-switch/selector-switch.stories.d.ts +8 -0
  28. package/dist/controls/selector-switch/selector-switch.stories.d.ts.map +1 -0
  29. package/dist/controls/story-kit.d.ts +31 -0
  30. package/dist/controls/story-kit.d.ts.map +1 -0
  31. package/dist/controls.js +149 -0
  32. package/dist/conveyance/conveyor/conveyor.stories.d.ts +9 -0
  33. package/dist/conveyance/conveyor/conveyor.stories.d.ts.map +1 -0
  34. package/dist/conveyance/conveyor/index.d.ts +4 -0
  35. package/dist/conveyance/conveyor/index.d.ts.map +1 -0
  36. package/dist/conveyance/duct/duct.stories.d.ts +7 -0
  37. package/dist/conveyance/duct/duct.stories.d.ts.map +1 -0
  38. package/dist/conveyance/duct/index.d.ts +4 -0
  39. package/dist/conveyance/duct/index.d.ts.map +1 -0
  40. package/dist/conveyance/index.d.ts +5 -0
  41. package/dist/conveyance/index.d.ts.map +1 -0
  42. package/dist/conveyance/pipe/dash.d.ts +28 -0
  43. package/dist/conveyance/pipe/dash.d.ts.map +1 -0
  44. package/dist/conveyance/pipe/flange.d.ts +9 -0
  45. package/dist/conveyance/pipe/flange.d.ts.map +1 -0
  46. package/dist/conveyance/pipe/index.d.ts +3 -0
  47. package/dist/conveyance/pipe/index.d.ts.map +1 -0
  48. package/dist/conveyance/pipe/wave.d.ts +29 -0
  49. package/dist/conveyance/pipe/wave.d.ts.map +1 -0
  50. package/dist/conveyance/screw-feeder/index.d.ts +4 -0
  51. package/dist/conveyance/screw-feeder/index.d.ts.map +1 -0
  52. package/dist/conveyance/screw-feeder/screw-feeder.stories.d.ts +7 -0
  53. package/dist/conveyance/screw-feeder/screw-feeder.stories.d.ts.map +1 -0
  54. package/dist/conveyance/story-kit.d.ts +28 -0
  55. package/dist/conveyance/story-kit.d.ts.map +1 -0
  56. package/dist/conveyance.js +345 -0
  57. package/dist/electrical/base.d.ts +54 -0
  58. package/dist/electrical/base.d.ts.map +1 -0
  59. package/dist/electrical/breaker/breaker.stories.d.ts +9 -0
  60. package/dist/electrical/breaker/breaker.stories.d.ts.map +1 -0
  61. package/dist/electrical/breaker/index.d.ts +4 -0
  62. package/dist/electrical/breaker/index.d.ts.map +1 -0
  63. package/dist/electrical/busbar/busbar.stories.d.ts +8 -0
  64. package/dist/electrical/busbar/busbar.stories.d.ts.map +1 -0
  65. package/dist/electrical/busbar/index.d.ts +4 -0
  66. package/dist/electrical/busbar/index.d.ts.map +1 -0
  67. package/dist/electrical/generator/generator.stories.d.ts +9 -0
  68. package/dist/electrical/generator/generator.stories.d.ts.map +1 -0
  69. package/dist/electrical/generator/index.d.ts +4 -0
  70. package/dist/electrical/generator/index.d.ts.map +1 -0
  71. package/dist/electrical/index.d.ts +4 -0
  72. package/dist/electrical/index.d.ts.map +1 -0
  73. package/dist/electrical/single-line.stories.d.ts +15 -0
  74. package/dist/electrical/single-line.stories.d.ts.map +1 -0
  75. package/dist/electrical/story-kit.d.ts +34 -0
  76. package/dist/electrical/story-kit.d.ts.map +1 -0
  77. package/dist/electrical/transformer/index.d.ts +4 -0
  78. package/dist/electrical/transformer/index.d.ts.map +1 -0
  79. package/dist/electrical/transformer/transformer.stories.d.ts +8 -0
  80. package/dist/electrical/transformer/transformer.stories.d.ts.map +1 -0
  81. package/dist/electrical.js +214 -0
  82. package/dist/filtration/bag-filter/bag-filter.stories.d.ts +6 -0
  83. package/dist/filtration/bag-filter/bag-filter.stories.d.ts.map +1 -0
  84. package/dist/filtration/bag-filter/index.d.ts +3 -0
  85. package/dist/filtration/bag-filter/index.d.ts.map +1 -0
  86. package/dist/filtration/base.d.ts +25 -0
  87. package/dist/filtration/base.d.ts.map +1 -0
  88. package/dist/filtration/cyclone/cyclone.stories.d.ts +6 -0
  89. package/dist/filtration/cyclone/cyclone.stories.d.ts.map +1 -0
  90. package/dist/filtration/cyclone/index.d.ts +3 -0
  91. package/dist/filtration/cyclone/index.d.ts.map +1 -0
  92. package/dist/filtration/index.d.ts +9 -0
  93. package/dist/filtration/index.d.ts.map +1 -0
  94. package/dist/filtration/scrubber/index.d.ts +3 -0
  95. package/dist/filtration/scrubber/index.d.ts.map +1 -0
  96. package/dist/filtration/scrubber/scrubber.stories.d.ts +6 -0
  97. package/dist/filtration/scrubber/scrubber.stories.d.ts.map +1 -0
  98. package/dist/filtration/stack/index.d.ts +3 -0
  99. package/dist/filtration/stack/index.d.ts.map +1 -0
  100. package/dist/filtration/stack/stack.stories.d.ts +6 -0
  101. package/dist/filtration/stack/stack.stories.d.ts.map +1 -0
  102. package/dist/filtration/story-kit.d.ts +27 -0
  103. package/dist/filtration/story-kit.d.ts.map +1 -0
  104. package/dist/filtration.js +163 -0
  105. package/dist/gradients/pipe-gradient.d.ts +35 -0
  106. package/dist/gradients/pipe-gradient.d.ts.map +1 -0
  107. package/dist/heat/base.d.ts +28 -0
  108. package/dist/heat/base.d.ts.map +1 -0
  109. package/dist/heat/boiler/boiler.stories.d.ts +8 -0
  110. package/dist/heat/boiler/boiler.stories.d.ts.map +1 -0
  111. package/dist/heat/boiler/index.d.ts +3 -0
  112. package/dist/heat/boiler/index.d.ts.map +1 -0
  113. package/dist/heat/coil/coil.stories.d.ts +6 -0
  114. package/dist/heat/coil/coil.stories.d.ts.map +1 -0
  115. package/dist/heat/coil/index.d.ts +3 -0
  116. package/dist/heat/coil/index.d.ts.map +1 -0
  117. package/dist/heat/condenser/condenser.stories.d.ts +6 -0
  118. package/dist/heat/condenser/condenser.stories.d.ts.map +1 -0
  119. package/dist/heat/condenser/index.d.ts +3 -0
  120. package/dist/heat/condenser/index.d.ts.map +1 -0
  121. package/dist/heat/cooling-tower/cooling-tower.stories.d.ts +6 -0
  122. package/dist/heat/cooling-tower/cooling-tower.stories.d.ts.map +1 -0
  123. package/dist/heat/cooling-tower/index.d.ts +3 -0
  124. package/dist/heat/cooling-tower/index.d.ts.map +1 -0
  125. package/dist/heat/furnace/furnace.stories.d.ts +8 -0
  126. package/dist/heat/furnace/furnace.stories.d.ts.map +1 -0
  127. package/dist/heat/furnace/index.d.ts +3 -0
  128. package/dist/heat/furnace/index.d.ts.map +1 -0
  129. package/dist/heat/index.d.ts +9 -0
  130. package/dist/heat/index.d.ts.map +1 -0
  131. package/dist/heat/shell-tube/index.d.ts +3 -0
  132. package/dist/heat/shell-tube/index.d.ts.map +1 -0
  133. package/dist/heat/shell-tube/shell-tube.stories.d.ts +6 -0
  134. package/dist/heat/shell-tube/shell-tube.stories.d.ts.map +1 -0
  135. package/dist/heat/story-kit.d.ts +27 -0
  136. package/dist/heat/story-kit.d.ts.map +1 -0
  137. package/dist/heat.js +290 -0
  138. package/dist/index.d.ts +2 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +4 -0
  141. package/dist/instruments/bargraph/bargraph.stories.d.ts +8 -0
  142. package/dist/instruments/bargraph/bargraph.stories.d.ts.map +1 -0
  143. package/dist/instruments/bargraph/index.d.ts +3 -0
  144. package/dist/instruments/bargraph/index.d.ts.map +1 -0
  145. package/dist/instruments/face.d.ts +15 -0
  146. package/dist/instruments/face.d.ts.map +1 -0
  147. package/dist/instruments/gauge-analog/gauge-analog.stories.d.ts +11 -0
  148. package/dist/instruments/gauge-analog/gauge-analog.stories.d.ts.map +1 -0
  149. package/dist/instruments/gauge-analog/index.d.ts +3 -0
  150. package/dist/instruments/gauge-analog/index.d.ts.map +1 -0
  151. package/dist/instruments/gauge-digital/gauge-digital.stories.d.ts +7 -0
  152. package/dist/instruments/gauge-digital/gauge-digital.stories.d.ts.map +1 -0
  153. package/dist/instruments/gauge-digital/index.d.ts +3 -0
  154. package/dist/instruments/gauge-digital/index.d.ts.map +1 -0
  155. package/dist/instruments/index.d.ts +10 -0
  156. package/dist/instruments/index.d.ts.map +1 -0
  157. package/dist/instruments/indicator-lamp/index.d.ts +3 -0
  158. package/dist/instruments/indicator-lamp/index.d.ts.map +1 -0
  159. package/dist/instruments/indicator-lamp/indicator-lamp.stories.d.ts +9 -0
  160. package/dist/instruments/indicator-lamp/indicator-lamp.stories.d.ts.map +1 -0
  161. package/dist/instruments/readout-panel/index.d.ts +3 -0
  162. package/dist/instruments/readout-panel/index.d.ts.map +1 -0
  163. package/dist/instruments/readout-panel/readout-panel.stories.d.ts +6 -0
  164. package/dist/instruments/readout-panel/readout-panel.stories.d.ts.map +1 -0
  165. package/dist/instruments/story-kit.d.ts +29 -0
  166. package/dist/instruments/story-kit.d.ts.map +1 -0
  167. package/dist/instruments/trend-mini/index.d.ts +3 -0
  168. package/dist/instruments/trend-mini/index.d.ts.map +1 -0
  169. package/dist/instruments/trend-mini/trend-mini.stories.d.ts +6 -0
  170. package/dist/instruments/trend-mini/trend-mini.stories.d.ts.map +1 -0
  171. package/dist/instruments.js +347 -0
  172. package/dist/motion/seamless-loop.d.ts +14 -0
  173. package/dist/motion/seamless-loop.d.ts.map +1 -0
  174. package/dist/pipe-gradient-B538FEvi.js +18 -0
  175. package/dist/readout/index.d.ts +3 -0
  176. package/dist/readout/index.d.ts.map +1 -0
  177. package/dist/readout/readout.stories.d.ts +8 -0
  178. package/dist/readout/readout.stories.d.ts.map +1 -0
  179. package/dist/readout/story-kit.d.ts +27 -0
  180. package/dist/readout/story-kit.d.ts.map +1 -0
  181. package/dist/readout.js +33 -0
  182. package/dist/recipe-BxxL1vV1.js +383 -0
  183. package/dist/rotating/compressor/compressor.stories.d.ts +28 -0
  184. package/dist/rotating/compressor/compressor.stories.d.ts.map +1 -0
  185. package/dist/rotating/compressor/index.d.ts +3 -0
  186. package/dist/rotating/compressor/index.d.ts.map +1 -0
  187. package/dist/rotating/fan-axial/fan-axial.stories.d.ts +31 -0
  188. package/dist/rotating/fan-axial/fan-axial.stories.d.ts.map +1 -0
  189. package/dist/rotating/fan-axial/index.d.ts +3 -0
  190. package/dist/rotating/fan-axial/index.d.ts.map +1 -0
  191. package/dist/rotating/fan-centrifugal/fan-centrifugal.stories.d.ts +31 -0
  192. package/dist/rotating/fan-centrifugal/fan-centrifugal.stories.d.ts.map +1 -0
  193. package/dist/rotating/fan-centrifugal/index.d.ts +3 -0
  194. package/dist/rotating/fan-centrifugal/index.d.ts.map +1 -0
  195. package/dist/rotating/index.d.ts +12 -0
  196. package/dist/rotating/index.d.ts.map +1 -0
  197. package/dist/rotating/motor/index.d.ts +3 -0
  198. package/dist/rotating/motor/index.d.ts.map +1 -0
  199. package/dist/rotating/motor/motor.stories.d.ts +28 -0
  200. package/dist/rotating/motor/motor.stories.d.ts.map +1 -0
  201. package/dist/rotating/pump-centrifugal/index.d.ts +3 -0
  202. package/dist/rotating/pump-centrifugal/index.d.ts.map +1 -0
  203. package/dist/rotating/pump-centrifugal/pump-centrifugal.stories.d.ts +29 -0
  204. package/dist/rotating/pump-centrifugal/pump-centrifugal.stories.d.ts.map +1 -0
  205. package/dist/rotating/pump-positive-displacement/index.d.ts +3 -0
  206. package/dist/rotating/pump-positive-displacement/index.d.ts.map +1 -0
  207. package/dist/rotating/pump-positive-displacement/pump-positive-displacement.stories.d.ts +28 -0
  208. package/dist/rotating/pump-positive-displacement/pump-positive-displacement.stories.d.ts.map +1 -0
  209. package/dist/rotating/story-kit.d.ts +65 -0
  210. package/dist/rotating/story-kit.d.ts.map +1 -0
  211. package/dist/rotating/turbine/index.d.ts +3 -0
  212. package/dist/rotating/turbine/index.d.ts.map +1 -0
  213. package/dist/rotating/turbine/turbine.stories.d.ts +29 -0
  214. package/dist/rotating/turbine/turbine.stories.d.ts.map +1 -0
  215. package/dist/rotating.js +513 -0
  216. package/dist/rotation-drive/base.d.ts +110 -0
  217. package/dist/rotation-drive/base.d.ts.map +1 -0
  218. package/dist/valves/ball/ball.stories.d.ts +26 -0
  219. package/dist/valves/ball/ball.stories.d.ts.map +1 -0
  220. package/dist/valves/ball/index.d.ts +3 -0
  221. package/dist/valves/ball/index.d.ts.map +1 -0
  222. package/dist/valves/base.d.ts +70 -0
  223. package/dist/valves/base.d.ts.map +1 -0
  224. package/dist/valves/butterfly/butterfly.stories.d.ts +26 -0
  225. package/dist/valves/butterfly/butterfly.stories.d.ts.map +1 -0
  226. package/dist/valves/butterfly/index.d.ts +3 -0
  227. package/dist/valves/butterfly/index.d.ts.map +1 -0
  228. package/dist/valves/check/check.stories.d.ts +25 -0
  229. package/dist/valves/check/check.stories.d.ts.map +1 -0
  230. package/dist/valves/check/index.d.ts +3 -0
  231. package/dist/valves/check/index.d.ts.map +1 -0
  232. package/dist/valves/control/control.stories.d.ts +26 -0
  233. package/dist/valves/control/control.stories.d.ts.map +1 -0
  234. package/dist/valves/control/index.d.ts +3 -0
  235. package/dist/valves/control/index.d.ts.map +1 -0
  236. package/dist/valves/gate/gate.stories.d.ts +26 -0
  237. package/dist/valves/gate/gate.stories.d.ts.map +1 -0
  238. package/dist/valves/gate/index.d.ts +3 -0
  239. package/dist/valves/gate/index.d.ts.map +1 -0
  240. package/dist/valves/index.d.ts +8 -0
  241. package/dist/valves/index.d.ts.map +1 -0
  242. package/dist/valves/relief/index.d.ts +3 -0
  243. package/dist/valves/relief/index.d.ts.map +1 -0
  244. package/dist/valves/relief/relief.stories.d.ts +26 -0
  245. package/dist/valves/relief/relief.stories.d.ts.map +1 -0
  246. package/dist/valves/story-kit.d.ts +54 -0
  247. package/dist/valves/story-kit.d.ts.map +1 -0
  248. package/dist/valves.js +424 -0
  249. package/dist/vapor/base.d.ts +42 -0
  250. package/dist/vapor/base.d.ts.map +1 -0
  251. package/dist/vapor/billow-layer.d.ts +33 -0
  252. package/dist/vapor/billow-layer.d.ts.map +1 -0
  253. package/dist/vapor/billow-path.d.ts +36 -0
  254. package/dist/vapor/billow-path.d.ts.map +1 -0
  255. package/dist/vapor/index.d.ts +8 -0
  256. package/dist/vapor/index.d.ts.map +1 -0
  257. package/dist/vapor/plume/index.d.ts +3 -0
  258. package/dist/vapor/plume/index.d.ts.map +1 -0
  259. package/dist/vapor/plume/plume.stories.d.ts +9 -0
  260. package/dist/vapor/plume/plume.stories.d.ts.map +1 -0
  261. package/dist/vapor/steam-vent/index.d.ts +3 -0
  262. package/dist/vapor/steam-vent/index.d.ts.map +1 -0
  263. package/dist/vapor/steam-vent/steam-vent.stories.d.ts +9 -0
  264. package/dist/vapor/steam-vent/steam-vent.stories.d.ts.map +1 -0
  265. package/dist/vapor/story-kit.d.ts +28 -0
  266. package/dist/vapor/story-kit.d.ts.map +1 -0
  267. package/dist/vapor.js +194 -0
  268. package/dist/vessel-body/hardware.d.ts +13 -0
  269. package/dist/vessel-body/hardware.d.ts.map +1 -0
  270. package/dist/vessel-body/liquid/dished-bottom.d.ts +33 -0
  271. package/dist/vessel-body/liquid/dished-bottom.d.ts.map +1 -0
  272. package/dist/vessel-body/liquid/index.d.ts +11 -0
  273. package/dist/vessel-body/liquid/index.d.ts.map +1 -0
  274. package/dist/vessel-body/liquid/wave-layer.d.ts +57 -0
  275. package/dist/vessel-body/liquid/wave-layer.d.ts.map +1 -0
  276. package/dist/vessel-body/liquid/wave-path.d.ts +45 -0
  277. package/dist/vessel-body/liquid/wave-path.d.ts.map +1 -0
  278. package/dist/vessel-body/recipe.d.ts +85 -0
  279. package/dist/vessel-body/recipe.d.ts.map +1 -0
  280. package/dist/vessel-body/shapes.d.ts +78 -0
  281. package/dist/vessel-body/shapes.d.ts.map +1 -0
  282. package/dist/vessels/drum/drum.stories.d.ts +33 -0
  283. package/dist/vessels/drum/drum.stories.d.ts.map +1 -0
  284. package/dist/vessels/drum/index.d.ts +3 -0
  285. package/dist/vessels/drum/index.d.ts.map +1 -0
  286. package/dist/vessels/hopper/hopper.stories.d.ts +39 -0
  287. package/dist/vessels/hopper/hopper.stories.d.ts.map +1 -0
  288. package/dist/vessels/hopper/index.d.ts +3 -0
  289. package/dist/vessels/hopper/index.d.ts.map +1 -0
  290. package/dist/vessels/index.d.ts +10 -0
  291. package/dist/vessels/index.d.ts.map +1 -0
  292. package/dist/vessels/silo/index.d.ts +3 -0
  293. package/dist/vessels/silo/index.d.ts.map +1 -0
  294. package/dist/vessels/silo/silo.stories.d.ts +33 -0
  295. package/dist/vessels/silo/silo.stories.d.ts.map +1 -0
  296. package/dist/vessels/story-kit.d.ts +83 -0
  297. package/dist/vessels/story-kit.d.ts.map +1 -0
  298. package/dist/vessels/tank-horizontal/index.d.ts +3 -0
  299. package/dist/vessels/tank-horizontal/index.d.ts.map +1 -0
  300. package/dist/vessels/tank-horizontal/tank-horizontal.stories.d.ts +33 -0
  301. package/dist/vessels/tank-horizontal/tank-horizontal.stories.d.ts.map +1 -0
  302. package/dist/vessels/tank-spherical/index.d.ts +3 -0
  303. package/dist/vessels/tank-spherical/index.d.ts.map +1 -0
  304. package/dist/vessels/tank-spherical/tank-spherical.stories.d.ts +33 -0
  305. package/dist/vessels/tank-spherical/tank-spherical.stories.d.ts.map +1 -0
  306. package/dist/vessels/tank-vertical/index.d.ts +3 -0
  307. package/dist/vessels/tank-vertical/index.d.ts.map +1 -0
  308. package/dist/vessels/tank-vertical/tank-vertical.stories.d.ts +47 -0
  309. package/dist/vessels/tank-vertical/tank-vertical.stories.d.ts.map +1 -0
  310. package/dist/vessels.js +198 -0
  311. 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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const valves: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}