@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,214 @@
1
+ import { n as e, r as t } from "./base-CByO_2mM.js";
2
+ import { Fsm as n, formatDisplayValue as r, resolveMediumStyle as i } from "@vscada/core";
3
+ //#region src/electrical/base.ts
4
+ var a = {
5
+ duration: 1,
6
+ easing: "linear"
7
+ };
8
+ function o(e) {}
9
+ function s(e, t, n, r) {
10
+ let i = t.states[n];
11
+ if (i) return e.setAttr(r.glow, "fill", i.glowColor), e.setAttr(r.glow, "fill-opacity", String(i.glowOpacity)), e.setText(r.label, i.label), i;
12
+ }
13
+ function c(e) {
14
+ let { element: t, tokens: r, visuals: i, onWarning: c = o } = e, l = {}, u, d = t.bindings.find((e) => e.type === "state");
15
+ if (d) {
16
+ let e = new n(d.map, t.transitions, a, c), o = {
17
+ kind: "state",
18
+ write(t, n) {
19
+ let a = e.resolve(n, d.tag);
20
+ u = a.state, s(t, r, a.state, i);
21
+ }
22
+ };
23
+ l[d.tag] = o;
24
+ }
25
+ return {
26
+ handles: l,
27
+ getCurrentState: () => u
28
+ };
29
+ }
30
+ function l(e, t, r, i = o) {
31
+ let s = {}, c, l = e.bindings.find((e) => e.type === "state");
32
+ if (l) {
33
+ let o = new n(l.map, e.transitions, a, i), u = {
34
+ kind: "state",
35
+ write(e, n) {
36
+ let i = o.resolve(n, l.tag);
37
+ c = i.state;
38
+ let a = t.states[i.state];
39
+ a && (e.setAttr(r.indicator, "fill", a.indicatorColor), e.setText(r.label, a.label), e.setAttr(r.bridge, "opacity", i.state === "energized" ? "1" : "0"));
40
+ }
41
+ };
42
+ s[l.tag] = u;
43
+ }
44
+ return {
45
+ handles: s,
46
+ getCurrentState: () => c
47
+ };
48
+ }
49
+ //#endregion
50
+ //#region src/electrical/breaker/index.ts
51
+ var u = "http://www.w3.org/2000/svg", d = .4, f = .6, p = 1.5;
52
+ function m(e, t, n) {
53
+ let r = document.createElementNS(u, "g");
54
+ r.setAttribute("data-element-id", e.id), r.setAttribute("class", "vscada-electrical-breaker");
55
+ let a = t.tokens.electrical?.breaker;
56
+ if (!a) return {
57
+ svg: r,
58
+ handles: {}
59
+ };
60
+ let { w: o, h: s } = e, c = i(t.tokens.medium, e.medium ?? "electrical")?.color ?? a.bodyOutlineColor, m = s / 2, h = o * d, g = o * f, _ = document.createElementNS(u, "line");
61
+ _.setAttribute("class", "vscada-breaker-lead"), _.setAttribute("x1", "0"), _.setAttribute("y1", String(m)), _.setAttribute("x2", String(h)), _.setAttribute("y2", String(m)), _.setAttribute("stroke", c), _.setAttribute("stroke-width", String((a.strokeWidth ?? 2) * p)), r.appendChild(_);
62
+ let v = document.createElementNS(u, "line");
63
+ v.setAttribute("class", "vscada-breaker-lead"), v.setAttribute("x1", String(g)), v.setAttribute("y1", String(m)), v.setAttribute("x2", String(o)), v.setAttribute("y2", String(m)), v.setAttribute("stroke", c), v.setAttribute("stroke-width", String((a.strokeWidth ?? 2) * p)), r.appendChild(v);
64
+ let y = document.createElementNS(u, "line");
65
+ y.setAttribute("class", "vscada-breaker-bridge"), y.setAttribute("x1", String(h)), y.setAttribute("y1", String(m)), y.setAttribute("x2", String(g)), y.setAttribute("y2", String(m)), y.setAttribute("stroke", c), y.setAttribute("stroke-width", String((a.strokeWidth ?? 2) * p)), y.setAttribute("opacity", "0"), r.appendChild(y);
66
+ let b = document.createElementNS(u, "rect");
67
+ b.setAttribute("class", "vscada-breaker-body"), b.setAttribute("x", String(o / 2 - o * .12)), b.setAttribute("y", String(m - s * .3)), b.setAttribute("width", String(o * .24)), b.setAttribute("height", String(s * .6)), b.setAttribute("fill", a.bodyColor), b.setAttribute("stroke", a.bodyOutlineColor), b.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), r.appendChild(b);
68
+ let x = document.createElementNS(u, "circle");
69
+ x.setAttribute("class", "vscada-breaker-indicator"), x.setAttribute("cx", String(o / 2)), x.setAttribute("cy", "-10"), x.setAttribute("r", "5"), r.appendChild(x);
70
+ let S = document.createElementNS(u, "text");
71
+ return S.setAttribute("class", "vscada-breaker-label"), S.setAttribute("x", String(o / 2)), S.setAttribute("y", String(s + 14)), S.setAttribute("font-size", "9"), S.setAttribute("text-anchor", "middle"), r.appendChild(S), {
72
+ svg: r,
73
+ handles: l(e, a, {
74
+ indicator: x,
75
+ label: S,
76
+ bridge: y
77
+ }).handles
78
+ };
79
+ }
80
+ var h = { build: m }, g = "http://www.w3.org/2000/svg", _ = 1.5;
81
+ function v(e, t, n) {
82
+ let r = document.createElementNS(g, "g");
83
+ r.setAttribute("data-element-id", e.id), r.setAttribute("class", "vscada-electrical-transformer");
84
+ let a = t.tokens.electrical?.transformer;
85
+ if (!a) return {
86
+ svg: r,
87
+ handles: {}
88
+ };
89
+ let { w: o, h: s } = e, l = s / 2, u = s * .28, d = o * .4, f = o * .6, p = document.createElementNS(g, "ellipse");
90
+ p.setAttribute("class", "vscada-transformer-glow"), p.setAttribute("cx", String(o / 2)), p.setAttribute("cy", String(l)), p.setAttribute("rx", String(o * .42)), p.setAttribute("ry", String(s * .48)), p.setAttribute("fill", "none"), p.setAttribute("fill-opacity", "0"), r.appendChild(p);
91
+ let m = i(t.tokens.medium, e.medium ?? "electrical")?.color ?? a.outlineColor, h = document.createElementNS(g, "line");
92
+ h.setAttribute("x1", "0"), h.setAttribute("y1", String(l)), h.setAttribute("x2", String(d - u)), h.setAttribute("y2", String(l)), h.setAttribute("stroke", m), h.setAttribute("stroke-width", String((a.strokeWidth ?? 2) * _)), r.appendChild(h);
93
+ let v = document.createElementNS(g, "line");
94
+ v.setAttribute("x1", String(f + u)), v.setAttribute("y1", String(l)), v.setAttribute("x2", String(o)), v.setAttribute("y2", String(l)), v.setAttribute("stroke", m), v.setAttribute("stroke-width", String((a.strokeWidth ?? 2) * _)), r.appendChild(v);
95
+ let y = document.createElementNS(g, "circle");
96
+ y.setAttribute("class", "vscada-transformer-coil"), y.setAttribute("cx", String(d)), y.setAttribute("cy", String(l)), y.setAttribute("r", String(u)), y.setAttribute("fill", a.coilColor), y.setAttribute("stroke", a.outlineColor), y.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), r.appendChild(y);
97
+ let b = document.createElementNS(g, "circle");
98
+ b.setAttribute("class", "vscada-transformer-coil"), b.setAttribute("cx", String(f)), b.setAttribute("cy", String(l)), b.setAttribute("r", String(u)), b.setAttribute("fill", a.coilColor), b.setAttribute("stroke", a.outlineColor), b.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), r.appendChild(b);
99
+ let x = document.createElementNS(g, "text");
100
+ return x.setAttribute("class", "vscada-transformer-label"), x.setAttribute("x", String(o / 2)), x.setAttribute("y", String(s + 14)), x.setAttribute("font-size", "9"), x.setAttribute("text-anchor", "middle"), r.appendChild(x), {
101
+ svg: r,
102
+ handles: c({
103
+ element: e,
104
+ tokens: a,
105
+ visuals: {
106
+ glow: p,
107
+ label: x
108
+ }
109
+ }).handles
110
+ };
111
+ }
112
+ var y = { build: v }, b = "http://www.w3.org/2000/svg";
113
+ function x(e, t, n) {
114
+ let r = document.createElementNS(b, "g");
115
+ r.setAttribute("data-element-id", e.id), r.setAttribute("class", "vscada-electrical-busbar");
116
+ let i = t.tokens.electrical?.busbar;
117
+ if (!i) return {
118
+ svg: r,
119
+ handles: {}
120
+ };
121
+ let { w: a, h: o } = e, s = document.createElementNS(b, "rect");
122
+ s.setAttribute("class", "vscada-busbar-bar"), s.setAttribute("width", String(a)), s.setAttribute("height", String(o)), s.setAttribute("fill", i.deenergizedColor), s.setAttribute("fill-opacity", "1"), s.setAttribute("stroke", i.outlineColor), s.setAttribute("stroke-width", String(i.strokeWidth ?? 1)), r.appendChild(s);
123
+ let l = document.createElementNS(b, "text");
124
+ return l.setAttribute("class", "vscada-busbar-label"), l.setAttribute("x", String(a / 2)), l.setAttribute("y", String(o + 14)), l.setAttribute("font-size", "9"), l.setAttribute("text-anchor", "middle"), r.appendChild(l), {
125
+ svg: r,
126
+ handles: c({
127
+ element: e,
128
+ tokens: i,
129
+ visuals: {
130
+ glow: s,
131
+ label: l
132
+ }
133
+ }).handles
134
+ };
135
+ }
136
+ var S = { build: x }, C = "http://www.w3.org/2000/svg", w = 1e3, T = 800, E = 4, D = "running", O = t(D, {
137
+ duration: 1800,
138
+ easing: "ease-out"
139
+ }, {
140
+ duration: 3500,
141
+ easing: "ease-in"
142
+ });
143
+ function k(t, n, i) {
144
+ let a = document.createElementNS(C, "g");
145
+ a.setAttribute("data-element-id", t.id), a.setAttribute("class", "vscada-electrical-generator");
146
+ let o = n.tokens.electrical?.generator;
147
+ if (!o) return {
148
+ svg: a,
149
+ handles: {}
150
+ };
151
+ let { w: s, h: c } = t, l = s / 2, u = c / 2, d = Math.min(s, c) * .4, f = document.createElementNS(C, "circle");
152
+ f.setAttribute("class", "vscada-generator-body"), f.setAttribute("cx", String(l)), f.setAttribute("cy", String(u)), f.setAttribute("r", String(d)), f.setAttribute("fill", o.bodyDeenergizedColor), f.setAttribute("stroke", o.rotorColor), f.setAttribute("stroke-width", String(o.strokeWidth ?? 2)), a.appendChild(f);
153
+ let p = document.createElementNS(C, "text");
154
+ p.setAttribute("class", "vscada-generator-g"), p.setAttribute("x", String(l)), p.setAttribute("y", String(u + 4)), p.setAttribute("font-size", String(d)), p.setAttribute("text-anchor", "middle"), p.setAttribute("fill", o.rotorColor), p.textContent = "G", a.appendChild(p);
155
+ let m = document.createElementNS(C, "g");
156
+ m.setAttribute("class", "vscada-generator-rotor"), m.style.transformOrigin = `${l}px ${u}px`;
157
+ let h = document.createElementNS(C, "rect");
158
+ h.setAttribute("x", String(l - 1.5)), h.setAttribute("y", String(u - d)), h.setAttribute("width", "3"), h.setAttribute("height", String(d * .35)), h.setAttribute("fill", o.rotorColor), m.appendChild(h), a.appendChild(m);
159
+ let g = i.animateTransform(m, ["rotate(0deg)", "rotate(360deg)"], w), _ = l + d * .8, v = u - d * .8, y = document.createElementNS(C, "circle");
160
+ y.setAttribute("class", "vscada-generator-lamp"), y.setAttribute("cx", String(_)), y.setAttribute("cy", String(v)), y.setAttribute("r", "5"), y.style.transformOrigin = `${_}px ${v}px`, a.appendChild(y);
161
+ let b = i.animateTransform(y, [
162
+ "scale(1)",
163
+ "scale(0.35)",
164
+ "scale(1)"
165
+ ], T);
166
+ b.pause();
167
+ let x = document.createElementNS(C, "text");
168
+ x.setAttribute("class", "vscada-generator-label"), x.setAttribute("x", String(l)), x.setAttribute("y", String(c + 14)), x.setAttribute("font-size", "9"), x.setAttribute("text-anchor", "middle"), a.appendChild(x);
169
+ let S = { ...e({
170
+ element: t,
171
+ renderer: i,
172
+ tokens: o,
173
+ runningState: D,
174
+ defaultTransition: O,
175
+ visuals: {
176
+ body: f,
177
+ lamp: y,
178
+ label: x
179
+ },
180
+ rotationControls: [g],
181
+ blinkControl: b,
182
+ maxRate: E
183
+ }).handles }, k = t.bindings.find((e) => e.type === "readout");
184
+ if (k) {
185
+ let e = document.createElementNS(C, "text");
186
+ e.setAttribute("class", "vscada-generator-readout"), e.setAttribute("x", String(l)), e.setAttribute("y", "-8"), e.setAttribute("font-size", "9"), e.setAttribute("text-anchor", "middle"), e.setAttribute("fill", n.tokens.electrical?.readoutColor ?? o.rotorColor), a.appendChild(e), S[k.tag] = {
187
+ kind: "text",
188
+ write(t, n) {
189
+ t.setText(e, r(n, {
190
+ unit: k.unit,
191
+ displayUnit: k.displayUnit,
192
+ decimals: k.decimals
193
+ }));
194
+ }
195
+ };
196
+ }
197
+ return {
198
+ svg: a,
199
+ handles: S
200
+ };
201
+ }
202
+ //#endregion
203
+ //#region src/electrical/index.ts
204
+ var A = Object.freeze({
205
+ group: "electrical",
206
+ primitives: Object.freeze({
207
+ breaker: h,
208
+ transformer: y,
209
+ busbar: S,
210
+ generator: { build: k }
211
+ })
212
+ });
213
+ //#endregion
214
+ export { A as electrical };
@@ -0,0 +1,6 @@
1
+ import { type FiltrationStory, type FiltrationStoryMeta } from '../story-kit';
2
+ export declare const meta: FiltrationStoryMeta;
3
+ export declare const Default: FiltrationStory;
4
+ export declare function render(container: HTMLElement, story?: FiltrationStory): import("../story-kit").MountedFiltrationStory;
5
+ export default meta;
6
+ //# sourceMappingURL=bag-filter.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bag-filter.stories.d.ts","sourceRoot":"","sources":["../../../src/filtration/bag-filter/bag-filter.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpG,eAAO,MAAM,IAAI,EAAE,mBAMlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAAgG,CAAC;AAEvH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,eAAyB,iDAE9E;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const filtration: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filtration/bag-filter/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AAsErH,eAAO,MAAM,UAAU,EAAE,cAGvB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { HandleMap, SceneElement, ThemeContext } from '@vscada/core';
2
+ /**
3
+ * Story 3.7 Task 3 — the differential-pressure/temperature `readout`
4
+ * binding site shared by bag-filter/cyclone/scrubber/stack (Task 2's own
5
+ * bullets: "differential-pressure readout sites on filters", "temperature
6
+ * readout site" on stack). Extracted rather than copy-pasted four times,
7
+ * mirroring `heat/base.ts`'s "extract-then-specialize" precedent. Reuses
8
+ * the SAME core `formatDisplayValue` (AD-11) every other readout consumer
9
+ * (`readout`, `readout-panel`) already uses — never a locally re-derived
10
+ * formatter.
11
+ */
12
+ export interface ReadoutSiteOptions {
13
+ element: SceneElement;
14
+ theme: ThemeContext;
15
+ /** Local-space position (element's own coordinate space, AD-2) for the readout text. */
16
+ x: number;
17
+ y: number;
18
+ }
19
+ export interface ReadoutSite {
20
+ /** `undefined` when the element declares no `readout` binding — nothing to append/wire. */
21
+ text: SVGTextElement | undefined;
22
+ handles: HandleMap;
23
+ }
24
+ export declare function buildReadoutSite(opts: ReadoutSiteOptions): ReadoutSite;
25
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/filtration/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAc,YAAY,EAAE,MAAM,cAAc,CAAC;AAKtF;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,wFAAwF;IACxF,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CA2BtE"}
@@ -0,0 +1,6 @@
1
+ import { type FiltrationStory, type FiltrationStoryMeta } from '../story-kit';
2
+ export declare const meta: FiltrationStoryMeta;
3
+ export declare const Default: FiltrationStory;
4
+ export declare function render(container: HTMLElement, story?: FiltrationStory): import("../story-kit").MountedFiltrationStory;
5
+ export default meta;
6
+ //# sourceMappingURL=cyclone.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclone.stories.d.ts","sourceRoot":"","sources":["../../../src/filtration/cyclone/cyclone.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpG,eAAO,MAAM,IAAI,EAAE,mBAMlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAAgG,CAAC;AAEvH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,eAAyB,iDAE9E;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const filtration: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filtration/cyclone/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AAyDrH,eAAO,MAAM,UAAU,EAAE,cAGvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ /**
3
+ * Filtration entry point (§6.1, Story 3.7's batch) — merges every
4
+ * registered filtration primitive's `primitives` record into one
5
+ * `PrimitiveGroup`, matching `heat/index.ts`/`vessels/index.ts`'s
6
+ * established merge pattern.
7
+ */
8
+ export declare const filtration: PrimitiveGroup;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filtration/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,cAQvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const filtration: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filtration/scrubber/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AAmErH,eAAO,MAAM,UAAU,EAAE,cAGvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type FiltrationStory, type FiltrationStoryMeta } from '../story-kit';
2
+ export declare const meta: FiltrationStoryMeta;
3
+ export declare const Default: FiltrationStory;
4
+ export declare function render(container: HTMLElement, story?: FiltrationStory): import("../story-kit").MountedFiltrationStory;
5
+ export default meta;
6
+ //# sourceMappingURL=scrubber.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrubber.stories.d.ts","sourceRoot":"","sources":["../../../src/filtration/scrubber/scrubber.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpG,eAAO,MAAM,IAAI,EAAE,mBAMlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAA+F,CAAC;AAEtH,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,eAAyB,iDAE9E;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const filtration: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filtration/stack/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA2CrH,eAAO,MAAM,UAAU,EAAE,cAGvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type FiltrationStory, type FiltrationStoryMeta } from '../story-kit';
2
+ export declare const meta: FiltrationStoryMeta;
3
+ export declare const Default: FiltrationStory;
4
+ export declare function render(container: HTMLElement, story?: FiltrationStory): import("../story-kit").MountedFiltrationStory;
5
+ export default meta;
6
+ //# sourceMappingURL=stack.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.stories.d.ts","sourceRoot":"","sources":["../../../src/filtration/stack/stack.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpG,eAAO,MAAM,IAAI,EAAE,mBAMlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAAmG,CAAC;AAE1H,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,eAAyB,iDAE9E;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { ScadaView, type Binding, type Renderer, type TagValue, type TimeSource } from '@vscada/core';
2
+ export interface FiltrationStoryMeta {
3
+ title: string;
4
+ /** The registered primitive `type` — must be a key in `filtration.primitives`. */
5
+ elementType: string;
6
+ width: number;
7
+ height: number;
8
+ bindings: Binding[];
9
+ }
10
+ export interface FiltrationStory {
11
+ name: string;
12
+ values: TagValue[];
13
+ /** Reuses Story 1.6's freeze mechanism (`connectionState = 'disconnected'`). */
14
+ stale?: boolean;
15
+ }
16
+ export interface MountedFiltrationStory {
17
+ element: ScadaView;
18
+ setValues(values: TagValue[]): void;
19
+ teardown(): void;
20
+ }
21
+ export interface MountFiltrationStoryOptions {
22
+ /** Real usage always gets the real WAAPI-backed `domRenderer`; tests inject a stub (jsdom/happy-dom has no `Element.animate`). */
23
+ renderer?: Renderer;
24
+ timeSource?: TimeSource;
25
+ }
26
+ export declare function mountFiltrationStory(container: HTMLElement, meta: FiltrationStoryMeta, story: FiltrationStory, options?: MountFiltrationStoryOptions): MountedFiltrationStory;
27
+ //# sourceMappingURL=story-kit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-kit.d.ts","sourceRoot":"","sources":["../../src/filtration/story-kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAEb,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAwBtB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuCD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACpC,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,kIAAkI;IAClI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,2BAAgC,GACxC,sBAAsB,CAkBxB"}
@@ -0,0 +1,163 @@
1
+ import { formatDisplayValue as e } from "@vscada/core";
2
+ //#region src/filtration/base.ts
3
+ var t = "http://www.w3.org/2000/svg";
4
+ function n(n) {
5
+ let { element: r, theme: i, x: a, y: o } = n, s = i.tokens.filtration, c = r.bindings.find((e) => e.type === "readout");
6
+ if (!s || !c) return {
7
+ text: void 0,
8
+ handles: {}
9
+ };
10
+ let l = document.createElementNS(t, "text");
11
+ l.setAttribute("class", "vscada-filtration-readout"), l.setAttribute("x", String(a)), l.setAttribute("y", String(o)), l.setAttribute("text-anchor", "middle"), l.setAttribute("font-size", "9"), l.setAttribute("fill", s.readoutColor);
12
+ let u = {
13
+ kind: "text",
14
+ write(t, n) {
15
+ t.setText(l, e(n, {
16
+ unit: c.unit,
17
+ displayUnit: c.displayUnit,
18
+ decimals: c.decimals
19
+ }));
20
+ }
21
+ };
22
+ return {
23
+ text: l,
24
+ handles: { [c.tag]: u }
25
+ };
26
+ }
27
+ //#endregion
28
+ //#region src/filtration/bag-filter/index.ts
29
+ var r = "http://www.w3.org/2000/svg", i = .7, a = .22, o = 4, s = 1.5;
30
+ function c(e, t) {
31
+ let n = t * i, r = e * a, o = (e - r) / 2;
32
+ return `M0,0 H${e} V${n} L${o + r},${t} L${o},${t} Z`;
33
+ }
34
+ function l(e, t, a) {
35
+ let l = document.createElementNS(r, "g");
36
+ l.setAttribute("data-element-id", e.id), l.setAttribute("class", "vscada-filtration-bag-filter");
37
+ let u = t.tokens.filtration;
38
+ if (!u) return {
39
+ svg: l,
40
+ handles: {}
41
+ };
42
+ let { w: d, h: f } = e, p = document.createElementNS(r, "path");
43
+ p.setAttribute("class", "vscada-filtration-housing"), p.setAttribute("d", c(d, f)), p.setAttribute("fill", u.hopperColor), p.setAttribute("stroke", u.outlineColor), p.setAttribute("stroke-width", String(u.strokeWidth ?? 2)), l.appendChild(p);
44
+ let m = d / 5;
45
+ for (let e = 1; e <= o; e++) {
46
+ let t = document.createElementNS(r, "line");
47
+ t.setAttribute("class", "vscada-filtration-bag"), t.setAttribute("x1", String(m * e)), t.setAttribute("x2", String(m * e)), t.setAttribute("y1", String(f * .08)), t.setAttribute("y2", String(f * i * .85)), t.setAttribute("stroke", u.bodyColor), t.setAttribute("stroke-width", String((u.strokeWidth ?? 2) * s)), l.appendChild(t);
48
+ }
49
+ let h = n({
50
+ element: e,
51
+ theme: t,
52
+ x: d / 2,
53
+ y: -6
54
+ });
55
+ return h.text && l.appendChild(h.text), {
56
+ svg: l,
57
+ handles: h.handles
58
+ };
59
+ }
60
+ var u = Object.freeze({
61
+ group: "filtration",
62
+ primitives: Object.freeze({ "bag-filter": { build: l } })
63
+ }), d = "http://www.w3.org/2000/svg", f = .55, p = .1;
64
+ function m(e, t) {
65
+ let n = t * f, r = e * p;
66
+ return `M0,0 H${e} V${n} L${e / 2 + r / 2},${t} H${e / 2 - r / 2} Z`;
67
+ }
68
+ function h(e, t, r) {
69
+ let i = document.createElementNS(d, "g");
70
+ i.setAttribute("data-element-id", e.id), i.setAttribute("class", "vscada-filtration-cyclone");
71
+ let a = t.tokens.filtration;
72
+ if (!a) return {
73
+ svg: i,
74
+ handles: {}
75
+ };
76
+ let { w: o, h: s } = e, c = document.createElementNS(d, "path");
77
+ c.setAttribute("class", "vscada-filtration-body"), c.setAttribute("d", m(o, s)), c.setAttribute("fill", a.bodyColor), c.setAttribute("stroke", a.outlineColor), c.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(c);
78
+ let l = document.createElementNS(d, "rect");
79
+ l.setAttribute("class", "vscada-filtration-inlet"), l.setAttribute("x", String(-o * .18)), l.setAttribute("y", String(s * .04)), l.setAttribute("width", String(o * .18)), l.setAttribute("height", String(s * .12)), l.setAttribute("fill", a.bodyColor), l.setAttribute("stroke", a.outlineColor), l.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(l);
80
+ let u = n({
81
+ element: e,
82
+ theme: t,
83
+ x: o / 2,
84
+ y: -6
85
+ });
86
+ return u.text && i.appendChild(u.text), {
87
+ svg: i,
88
+ handles: u.handles
89
+ };
90
+ }
91
+ var g = Object.freeze({
92
+ group: "filtration",
93
+ primitives: Object.freeze({ cyclone: { build: h } })
94
+ }), _ = "http://www.w3.org/2000/svg", v = .2, y = 5;
95
+ function b(e, t, r) {
96
+ let i = document.createElementNS(_, "g");
97
+ i.setAttribute("data-element-id", e.id), i.setAttribute("class", "vscada-filtration-scrubber");
98
+ let a = t.tokens.filtration;
99
+ if (!a) return {
100
+ svg: i,
101
+ handles: {}
102
+ };
103
+ let { w: o, h: s } = e, c = document.createElementNS(_, "rect");
104
+ c.setAttribute("class", "vscada-filtration-body"), c.setAttribute("width", String(o)), c.setAttribute("height", String(s)), c.setAttribute("fill", a.bodyColor), c.setAttribute("stroke", a.outlineColor), c.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(c);
105
+ let l = s * v, u = document.createElementNS(_, "line");
106
+ u.setAttribute("class", "vscada-filtration-distributor-bar"), u.setAttribute("x1", String(o * .1)), u.setAttribute("x2", String(o * .9)), u.setAttribute("y1", String(l)), u.setAttribute("y2", String(l)), u.setAttribute("stroke", a.distributorColor), u.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(u);
107
+ let d = o * .8 / 6;
108
+ for (let e = 1; e <= y; e++) {
109
+ let t = document.createElementNS(_, "line");
110
+ t.setAttribute("class", "vscada-filtration-distributor-nozzle");
111
+ let n = o * .1 + d * e;
112
+ t.setAttribute("x1", String(n)), t.setAttribute("x2", String(n)), t.setAttribute("y1", String(l)), t.setAttribute("y2", String(l + s * .05)), t.setAttribute("stroke", a.distributorColor), t.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(t);
113
+ }
114
+ let f = n({
115
+ element: e,
116
+ theme: t,
117
+ x: o / 2,
118
+ y: -6
119
+ });
120
+ return f.text && i.appendChild(f.text), {
121
+ svg: i,
122
+ handles: f.handles
123
+ };
124
+ }
125
+ var x = Object.freeze({
126
+ group: "filtration",
127
+ primitives: Object.freeze({ scrubber: { build: b } })
128
+ }), S = "http://www.w3.org/2000/svg";
129
+ function C(e, t, r) {
130
+ let i = document.createElementNS(S, "g");
131
+ i.setAttribute("data-element-id", e.id), i.setAttribute("class", "vscada-filtration-stack");
132
+ let a = t.tokens.filtration;
133
+ if (!a) return {
134
+ svg: i,
135
+ handles: {}
136
+ };
137
+ let { w: o, h: s } = e, c = document.createElementNS(S, "rect");
138
+ c.setAttribute("class", "vscada-filtration-body"), c.setAttribute("width", String(o)), c.setAttribute("height", String(s)), c.setAttribute("fill", a.bodyColor), c.setAttribute("stroke", a.outlineColor), c.setAttribute("stroke-width", String(a.strokeWidth ?? 2)), i.appendChild(c);
139
+ let l = n({
140
+ element: e,
141
+ theme: t,
142
+ x: o / 2,
143
+ y: -6
144
+ });
145
+ return l.text && i.appendChild(l.text), {
146
+ svg: i,
147
+ handles: l.handles
148
+ };
149
+ }
150
+ var w = Object.freeze({
151
+ group: "filtration",
152
+ primitives: Object.freeze({ stack: { build: C } })
153
+ }), T = Object.freeze({
154
+ group: "filtration",
155
+ primitives: Object.freeze({
156
+ ...u.primitives,
157
+ ...g.primitives,
158
+ ...x.primitives,
159
+ ...w.primitives
160
+ })
161
+ });
162
+ //#endregion
163
+ export { T as filtration };
@@ -0,0 +1,35 @@
1
+ import type { GradientStop } from '@vscada/core';
2
+ /**
3
+ * One base linearGradient in the scene's shared `<defs>` (§7.1) — created
4
+ * once regardless of how many pipes reference it, guarded by id lookup.
5
+ * `objectBoundingBox` (the SVG default) with a vertical 0→1 span: a
6
+ * horizontal segment's cross-section is already vertical (no rotation
7
+ * needed); other angles get a per-segment `gradientTransform` rotation
8
+ * (see `createSegmentGradient`) so the band stays perpendicular to the run.
9
+ */
10
+ export declare function ensureBaseGradient(defs: SVGDefsElement, stops: readonly GradientStop[]): string;
11
+ /**
12
+ * A lightweight gradient that inherits the base's stops via `href` and sets
13
+ * its own explicit `userSpaceOnUse` vector — this is what "one shared defs,
14
+ * per-segment coordinates" (§7.1, Task 3) means: the six stops are declared
15
+ * exactly once; every segment gets its own tiny coordinate-only override,
16
+ * not a duplicated stop set.
17
+ *
18
+ * Deliberately `userSpaceOnUse` with explicit `(x1,y1)->(x2,y2)`, NOT the
19
+ * original `objectBoundingBox` + `gradientTransform: rotate(...)` scheme:
20
+ * `objectBoundingBox` maps its gradient vector through the ELEMENT'S OWN
21
+ * geometry bounding box, and a straight single-segment stroke that runs
22
+ * perfectly horizontally or perfectly vertically has a bounding box with
23
+ * zero height or zero width respectively — a degenerate mapping that
24
+ * renders the stroke fully invisible (reproduced directly: a bare
25
+ * `objectBoundingBox` gradient stroke on `M 20 40 L 200 40` paints
26
+ * nothing in Chromium, while the identical gradient on a slightly angled
27
+ * line paints fine). Orthogonal pipe routing produces exactly this
28
+ * shape — axis-aligned segments — as the COMMON case, not an edge case,
29
+ * so every previously-shipped pipe/duct run with a horizontal or vertical
30
+ * leg was silently invisible-body (dashes only). `userSpaceOnUse` with a
31
+ * caller-supplied vector sidesteps the bounding-box mapping entirely, so
32
+ * it can't degenerate regardless of segment orientation.
33
+ */
34
+ export declare function createSegmentGradient(defs: SVGDefsElement, id: string, x1: number, y1: number, x2: number, y2: number): string;
35
+ //# sourceMappingURL=pipe-gradient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipe-gradient.d.ts","sourceRoot":"","sources":["../../src/gradients/pipe-gradient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAiB/F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAY9H"}
@@ -0,0 +1,28 @@
1
+ import type { HandleMap, HeatStateVisual, Renderer, SceneElement, ValueWarningDetail } from '@vscada/core';
2
+ /** Minimal structural shape `buildFiringStateDrive` needs from `HeatTokens`. */
3
+ export interface HeatTokensLike {
4
+ states: Record<string, HeatStateVisual>;
5
+ }
6
+ /** The SVG elements a firing-state write touches. */
7
+ export interface HeatVisualRefs {
8
+ /** Fill + fill-opacity read the resolved state's glow (layered opacity per Dev Notes — NEVER filters, C7). */
9
+ glow: Element;
10
+ /** AD-3: glow color always paired with this text label. */
11
+ label: Element;
12
+ }
13
+ /** AD-3 pairing, exposed standalone so furnace can re-invoke it (with the SAME glow element) after separately recoloring the glow from its `color-ramp` firing-rate binding. */
14
+ export declare function applyHeatStateVisual(renderer: Renderer, tokens: HeatTokensLike, state: string, visuals: HeatVisualRefs): HeatStateVisual | undefined;
15
+ export interface FiringStateDriveOptions {
16
+ element: SceneElement;
17
+ tokens: HeatTokensLike;
18
+ visuals: HeatVisualRefs;
19
+ onWarning?: (detail: ValueWarningDetail) => void;
20
+ }
21
+ export interface FiringStateDrive {
22
+ handles: HandleMap;
23
+ /** The FSM-resolved state as of the most recent `state`-binding write; `undefined` before the first write ever lands. */
24
+ getCurrentState(): string | undefined;
25
+ }
26
+ /** Wires one element's `state` binding (off/firing) to the shared glow+label visual. A no-op (empty handles) when the element declares no `state` binding — matches every other optional-channel primitive's degrade-gracefully convention. */
27
+ export declare function buildFiringStateDrive(opts: FiringStateDriveOptions): FiringStateDrive;
28
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/heat/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAe,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAkBxH,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACzC;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,8GAA8G;IAC9G,IAAI,EAAE,OAAO,CAAC;IACd,2DAA2D;IAC3D,KAAK,EAAE,OAAO,CAAC;CAChB;AASD,gLAAgL;AAChL,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,CAOpJ;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,+OAA+O;AAC/O,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,gBAAgB,CAuBrF"}
@@ -0,0 +1,8 @@
1
+ import { type HeatStory, type HeatStoryMeta } from '../story-kit';
2
+ export declare const meta: HeatStoryMeta;
3
+ export declare const Off: HeatStory;
4
+ export declare const Firing: HeatStory;
5
+ export declare const StaleFreeze: HeatStory;
6
+ export declare function render(container: HTMLElement, story?: HeatStory): import("../story-kit").MountedHeatStory;
7
+ export default meta;
8
+ //# sourceMappingURL=boiler.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boiler.stories.d.ts","sourceRoot":"","sources":["../../../src/heat/boiler/boiler.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAElF,eAAO,MAAM,IAAI,EAAE,aAMlB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,SAAyF,CAAC;AAC5G,eAAO,MAAM,MAAM,EAAE,SAA4F,CAAC;AAClH,eAAO,MAAM,WAAW,EAAE,SAAyH,CAAC;AAEpJ,wBAAgB,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,GAAE,SAAe,2CAEpE;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrimitiveGroup } from '@vscada/core';
2
+ export declare const heat: PrimitiveGroup;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/heat/boiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAyD,MAAM,cAAc,CAAC;AA+DrH,eAAO,MAAM,IAAI,EAAE,cAGjB,CAAC"}