@record-evolution/widget-scada 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/dist/scada_symbols/3-phase-voltage-relay-hp.svg +549 -0
- package/dist/scada_symbols/apartments-hp.svg +344 -0
- package/dist/scada_symbols/battery-hp.svg +473 -0
- package/dist/scada_symbols/bottom-flow-meter.svg +933 -0
- package/dist/scada_symbols/bottom-light-bulb-hp.svg +346 -0
- package/dist/scada_symbols/bottom-right-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/bottom-right-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/bottom-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/bottom-tee-pipe.svg +857 -0
- package/dist/scada_symbols/centrifugal-pump.svg +626 -0
- package/dist/scada_symbols/conical-tank.svg +1136 -0
- package/dist/scada_symbols/consumers-hp.svg +346 -0
- package/dist/scada_symbols/control-panel-hp.svg +332 -0
- package/dist/scada_symbols/crane-hp.svg +346 -0
- package/dist/scada_symbols/cross-connector-hp.svg +586 -0
- package/dist/scada_symbols/cross-pipe.svg +1051 -0
- package/dist/scada_symbols/curcuit-breaker-hp.svg +444 -0
- package/dist/scada_symbols/cylindrical-tank.svg +1332 -0
- package/dist/scada_symbols/drawwork-hp.svg +355 -0
- package/dist/scada_symbols/drill-hp.svg +354 -0
- package/dist/scada_symbols/drilling-line-hp.svg +361 -0
- package/dist/scada_symbols/drilling-rig-hp.svg +354 -0
- package/dist/scada_symbols/dynamic-horizontal-scale-hp.svg +605 -0
- package/dist/scada_symbols/dynamic-vertical-scale-hp.svg +598 -0
- package/dist/scada_symbols/electrical-distribution-board-hp.svg +332 -0
- package/dist/scada_symbols/electrical-engine-hp.svg +360 -0
- package/dist/scada_symbols/elevated-tank.svg +1564 -0
- package/dist/scada_symbols/energy-meter-hp.svg +488 -0
- package/dist/scada_symbols/extra-long-horizontal-pipe.svg +426 -0
- package/dist/scada_symbols/extra-long-vertical-pipe.svg +438 -0
- package/dist/scada_symbols/filter-hp.svg +287 -0
- package/dist/scada_symbols/four-rate-energy-meter-hp.svg +891 -0
- package/dist/scada_symbols/fuel-generator-hp.svg +359 -0
- package/dist/scada_symbols/gas-preventer-hp.svg +361 -0
- package/dist/scada_symbols/gas-wellhead-hp.svg +363 -0
- package/dist/scada_symbols/heat-exchanger-hp.svg +363 -0
- package/dist/scada_symbols/heat-pump-hp.svg +532 -0
- package/dist/scada_symbols/high-voltage-tower-hp.svg +297 -0
- package/dist/scada_symbols/hook-hp.svg +293 -0
- package/dist/scada_symbols/horizontal-ball-valve.svg +271 -0
- package/dist/scada_symbols/horizontal-broken-pipe.svg +97 -0
- package/dist/scada_symbols/horizontal-connector-hp.svg +268 -0
- package/dist/scada_symbols/horizontal-curcuit-breaker-hp.svg +439 -0
- package/dist/scada_symbols/horizontal-energy-system-controller-hp.svg +378 -0
- package/dist/scada_symbols/horizontal-inline-flow-meter.svg +913 -0
- package/dist/scada_symbols/horizontal-pipe.svg +422 -0
- package/dist/scada_symbols/horizontal-tank-hp.svg +524 -0
- package/dist/scada_symbols/horizontal-tank.svg +1343 -0
- package/dist/scada_symbols/horizontal-valve-hp.svg +392 -0
- package/dist/scada_symbols/horizontal-wheel-valve.svg +300 -0
- package/dist/scada_symbols/house-hp.svg +349 -0
- package/dist/scada_symbols/index.json +702 -0
- package/dist/scada_symbols/industrial-fuel-generator-hp.svg +358 -0
- package/dist/scada_symbols/inverter-hp.svg +578 -0
- package/dist/scada_symbols/large-conical-tank.svg +1146 -0
- package/dist/scada_symbols/large-cylindrical-tank.svg +1323 -0
- package/dist/scada_symbols/large-horizontal-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/large-horizontal-separator-hp.svg +350 -0
- package/dist/scada_symbols/large-inverter-hp.svg +578 -0
- package/dist/scada_symbols/large-stand-cylindrical-tank.svg +1384 -0
- package/dist/scada_symbols/large-stand-vertical-tank.svg +1386 -0
- package/dist/scada_symbols/large-vertical-separator-connector-hp.svg +350 -0
- package/dist/scada_symbols/large-vertical-separator-hp.svg +350 -0
- package/dist/scada_symbols/large-vertical-tank.svg +1325 -0
- package/dist/scada_symbols/leak-sensor.svg +158 -0
- package/dist/scada_symbols/left-analog-water-level-meter.svg +748 -0
- package/dist/scada_symbols/left-bottom-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/left-bottom-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/left-drain-pipe.svg +166 -0
- package/dist/scada_symbols/left-elbow-drain-pipe.svg +181 -0
- package/dist/scada_symbols/left-flow-meter.svg +911 -0
- package/dist/scada_symbols/left-heat-pump.svg +939 -0
- package/dist/scada_symbols/left-motor-pump.svg +541 -0
- package/dist/scada_symbols/left-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/left-tee-pipe.svg +869 -0
- package/dist/scada_symbols/left-top-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/left-top-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/long-bottom-filter.svg +88 -0
- package/dist/scada_symbols/long-horizontal-broken-pipe.svg +97 -0
- package/dist/scada_symbols/long-horizontal-connector-hp.svg +269 -0
- package/dist/scada_symbols/long-horizontal-pipe.svg +488 -0
- package/dist/scada_symbols/long-top-filter.svg +88 -0
- package/dist/scada_symbols/long-vertical-broken-pipe.svg +97 -0
- package/dist/scada_symbols/long-vertical-connector-hp.svg +267 -0
- package/dist/scada_symbols/long-vertical-pipe.svg +485 -0
- package/dist/scada_symbols/low-voltage-tower-hp.svg +278 -0
- package/dist/scada_symbols/low-voltage-transformer-tower-hp.svg +334 -0
- package/dist/scada_symbols/manufacture-hp.svg +344 -0
- package/dist/scada_symbols/meter.svg +751 -0
- package/dist/scada_symbols/oil-pump-hp.svg +357 -0
- package/dist/scada_symbols/platform-hp.svg +267 -0
- package/dist/scada_symbols/pool-hp.svg +523 -0
- package/dist/scada_symbols/pool.svg +998 -0
- package/dist/scada_symbols/power-socket-hp.svg +371 -0
- package/dist/scada_symbols/power-transformer-hp.svg +359 -0
- package/dist/scada_symbols/preventer-hp.svg +343 -0
- package/dist/scada_symbols/pump-hp.svg +368 -0
- package/dist/scada_symbols/right-analog-water-level-meter.svg +748 -0
- package/dist/scada_symbols/right-drain-pipe.svg +167 -0
- package/dist/scada_symbols/right-elbow-drain-pipe.svg +178 -0
- package/dist/scada_symbols/right-flow-meter.svg +911 -0
- package/dist/scada_symbols/right-heat-pump.svg +948 -0
- package/dist/scada_symbols/right-motor-pump.svg +541 -0
- package/dist/scada_symbols/right-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/right-tee-pipe.svg +857 -0
- package/dist/scada_symbols/rotor-hp.svg +346 -0
- package/dist/scada_symbols/sand-filter-hp.svg +652 -0
- package/dist/scada_symbols/sand-filter.svg +704 -0
- package/dist/scada_symbols/short-bottom-filter.svg +88 -0
- package/dist/scada_symbols/short-left-drain-pipe.svg +160 -0
- package/dist/scada_symbols/short-right-drain-pipe.svg +160 -0
- package/dist/scada_symbols/short-top-filter.svg +88 -0
- package/dist/scada_symbols/short-vertical-tank-hp.svg +522 -0
- package/dist/scada_symbols/simple-horizontal-scale-hp.svg +509 -0
- package/dist/scada_symbols/simple-vertical-scale-hp.svg +509 -0
- package/dist/scada_symbols/single-key-switch-hp.svg +373 -0
- package/dist/scada_symbols/small-cylindrical-tank.svg +1306 -0
- package/dist/scada_symbols/small-horizontal-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/small-horizontal-separator-hp.svg +342 -0
- package/dist/scada_symbols/small-left-meter.svg +725 -0
- package/dist/scada_symbols/small-left-motor-pump.svg +443 -0
- package/dist/scada_symbols/small-meter.svg +694 -0
- package/dist/scada_symbols/small-power-transformer-hp.svg +359 -0
- package/dist/scada_symbols/small-right-center.svg +725 -0
- package/dist/scada_symbols/small-right-motor-pump.svg +443 -0
- package/dist/scada_symbols/small-spherical-tank.svg +1362 -0
- package/dist/scada_symbols/small-vertical-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/small-vertical-separator-hp.svg +342 -0
- package/dist/scada_symbols/solar-panel-hp.svg +353 -0
- package/dist/scada_symbols/spherical-tank.svg +1392 -0
- package/dist/scada_symbols/stand-cylindrical-tank.svg +1393 -0
- package/dist/scada_symbols/stand-horizontal-tank.svg +1404 -0
- package/dist/scada_symbols/stand-solar-panel-hp.svg +357 -0
- package/dist/scada_symbols/stand-vertical-short-tank.svg +1366 -0
- package/dist/scada_symbols/stand-vertical-tank.svg +1386 -0
- package/dist/scada_symbols/three-rate-energy-meter-hp.svg +759 -0
- package/dist/scada_symbols/top-flow-meter.svg +927 -0
- package/dist/scada_symbols/top-light-bulb-hp.svg +346 -0
- package/dist/scada_symbols/top-right-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/top-right-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/top-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/top-tee-pipe.svg +857 -0
- package/dist/scada_symbols/turbine-hp.svg +377 -0
- package/dist/scada_symbols/two-key-switch-hp.svg +489 -0
- package/dist/scada_symbols/two-rate-energy-meter-hp.svg +627 -0
- package/dist/scada_symbols/vertical-ball-valve.svg +271 -0
- package/dist/scada_symbols/vertical-broken-pipe.svg +97 -0
- package/dist/scada_symbols/vertical-connector-hp.svg +269 -0
- package/dist/scada_symbols/vertical-energy-system-controller-hp.svg +378 -0
- package/dist/scada_symbols/vertical-inline-flow-meter.svg +913 -0
- package/dist/scada_symbols/vertical-pipe.svg +422 -0
- package/dist/scada_symbols/vertical-short-tank.svg +1305 -0
- package/dist/scada_symbols/vertical-tank-hp.svg +524 -0
- package/dist/scada_symbols/vertical-tank.svg +1326 -0
- package/dist/scada_symbols/vertical-valve-hp.svg +392 -0
- package/dist/scada_symbols/vertical-wheel-valve.svg +300 -0
- package/dist/scada_symbols/voltage-relay-hp.svg +440 -0
- package/dist/scada_symbols/voltage-stabilizer-hp.svg +584 -0
- package/dist/scada_symbols/waterstop.svg +276 -0
- package/dist/scada_symbols/wind-turbine-cluster-hp.svg +370 -0
- package/dist/scada_symbols/wind-turbine-hp.svg +360 -0
- package/dist/widget-scada.js +1331 -0
- package/dist/widget-scada.js.map +1 -0
- package/package.json +61 -0
- package/scada_symbols/3-phase-voltage-relay-hp.svg +549 -0
- package/scada_symbols/apartments-hp.svg +344 -0
- package/scada_symbols/battery-hp.svg +473 -0
- package/scada_symbols/bottom-flow-meter.svg +933 -0
- package/scada_symbols/bottom-light-bulb-hp.svg +346 -0
- package/scada_symbols/bottom-right-elbow-connector-hp.svg +233 -0
- package/scada_symbols/bottom-right-elbow-pipe.svg +532 -0
- package/scada_symbols/bottom-tee-connector-hp.svg +470 -0
- package/scada_symbols/bottom-tee-pipe.svg +857 -0
- package/scada_symbols/centrifugal-pump.svg +626 -0
- package/scada_symbols/conical-tank.svg +1136 -0
- package/scada_symbols/consumers-hp.svg +346 -0
- package/scada_symbols/control-panel-hp.svg +332 -0
- package/scada_symbols/crane-hp.svg +346 -0
- package/scada_symbols/cross-connector-hp.svg +586 -0
- package/scada_symbols/cross-pipe.svg +1051 -0
- package/scada_symbols/curcuit-breaker-hp.svg +444 -0
- package/scada_symbols/cylindrical-tank.svg +1332 -0
- package/scada_symbols/drawwork-hp.svg +355 -0
- package/scada_symbols/drill-hp.svg +354 -0
- package/scada_symbols/drilling-line-hp.svg +361 -0
- package/scada_symbols/drilling-rig-hp.svg +354 -0
- package/scada_symbols/dynamic-horizontal-scale-hp.svg +605 -0
- package/scada_symbols/dynamic-vertical-scale-hp.svg +598 -0
- package/scada_symbols/electrical-distribution-board-hp.svg +332 -0
- package/scada_symbols/electrical-engine-hp.svg +360 -0
- package/scada_symbols/elevated-tank.svg +1564 -0
- package/scada_symbols/energy-meter-hp.svg +488 -0
- package/scada_symbols/extra-long-horizontal-pipe.svg +426 -0
- package/scada_symbols/extra-long-vertical-pipe.svg +438 -0
- package/scada_symbols/filter-hp.svg +287 -0
- package/scada_symbols/four-rate-energy-meter-hp.svg +891 -0
- package/scada_symbols/fuel-generator-hp.svg +359 -0
- package/scada_symbols/gas-preventer-hp.svg +361 -0
- package/scada_symbols/gas-wellhead-hp.svg +363 -0
- package/scada_symbols/heat-exchanger-hp.svg +363 -0
- package/scada_symbols/heat-pump-hp.svg +532 -0
- package/scada_symbols/high-voltage-tower-hp.svg +297 -0
- package/scada_symbols/hook-hp.svg +293 -0
- package/scada_symbols/horizontal-ball-valve.svg +271 -0
- package/scada_symbols/horizontal-broken-pipe.svg +97 -0
- package/scada_symbols/horizontal-connector-hp.svg +268 -0
- package/scada_symbols/horizontal-curcuit-breaker-hp.svg +439 -0
- package/scada_symbols/horizontal-energy-system-controller-hp.svg +378 -0
- package/scada_symbols/horizontal-inline-flow-meter.svg +913 -0
- package/scada_symbols/horizontal-pipe.svg +422 -0
- package/scada_symbols/horizontal-tank-hp.svg +524 -0
- package/scada_symbols/horizontal-tank.svg +1343 -0
- package/scada_symbols/horizontal-valve-hp.svg +392 -0
- package/scada_symbols/horizontal-wheel-valve.svg +300 -0
- package/scada_symbols/house-hp.svg +349 -0
- package/scada_symbols/index.json +702 -0
- package/scada_symbols/industrial-fuel-generator-hp.svg +358 -0
- package/scada_symbols/inverter-hp.svg +578 -0
- package/scada_symbols/large-conical-tank.svg +1146 -0
- package/scada_symbols/large-cylindrical-tank.svg +1323 -0
- package/scada_symbols/large-horizontal-separator-connector-hp.svg +342 -0
- package/scada_symbols/large-horizontal-separator-hp.svg +350 -0
- package/scada_symbols/large-inverter-hp.svg +578 -0
- package/scada_symbols/large-stand-cylindrical-tank.svg +1384 -0
- package/scada_symbols/large-stand-vertical-tank.svg +1386 -0
- package/scada_symbols/large-vertical-separator-connector-hp.svg +350 -0
- package/scada_symbols/large-vertical-separator-hp.svg +350 -0
- package/scada_symbols/large-vertical-tank.svg +1325 -0
- package/scada_symbols/leak-sensor.svg +158 -0
- package/scada_symbols/left-analog-water-level-meter.svg +748 -0
- package/scada_symbols/left-bottom-elbow-connector-hp.svg +233 -0
- package/scada_symbols/left-bottom-elbow-pipe.svg +532 -0
- package/scada_symbols/left-drain-pipe.svg +166 -0
- package/scada_symbols/left-elbow-drain-pipe.svg +181 -0
- package/scada_symbols/left-flow-meter.svg +911 -0
- package/scada_symbols/left-heat-pump.svg +939 -0
- package/scada_symbols/left-motor-pump.svg +541 -0
- package/scada_symbols/left-tee-connector-hp.svg +470 -0
- package/scada_symbols/left-tee-pipe.svg +869 -0
- package/scada_symbols/left-top-elbow-connector-hp.svg +233 -0
- package/scada_symbols/left-top-elbow-pipe.svg +532 -0
- package/scada_symbols/long-bottom-filter.svg +88 -0
- package/scada_symbols/long-horizontal-broken-pipe.svg +97 -0
- package/scada_symbols/long-horizontal-connector-hp.svg +269 -0
- package/scada_symbols/long-horizontal-pipe.svg +488 -0
- package/scada_symbols/long-top-filter.svg +88 -0
- package/scada_symbols/long-vertical-broken-pipe.svg +97 -0
- package/scada_symbols/long-vertical-connector-hp.svg +267 -0
- package/scada_symbols/long-vertical-pipe.svg +485 -0
- package/scada_symbols/low-voltage-tower-hp.svg +278 -0
- package/scada_symbols/low-voltage-transformer-tower-hp.svg +334 -0
- package/scada_symbols/manufacture-hp.svg +344 -0
- package/scada_symbols/meter.svg +751 -0
- package/scada_symbols/oil-pump-hp.svg +357 -0
- package/scada_symbols/platform-hp.svg +267 -0
- package/scada_symbols/pool-hp.svg +523 -0
- package/scada_symbols/pool.svg +998 -0
- package/scada_symbols/power-socket-hp.svg +371 -0
- package/scada_symbols/power-transformer-hp.svg +359 -0
- package/scada_symbols/preventer-hp.svg +343 -0
- package/scada_symbols/pump-hp.svg +368 -0
- package/scada_symbols/right-analog-water-level-meter.svg +748 -0
- package/scada_symbols/right-drain-pipe.svg +167 -0
- package/scada_symbols/right-elbow-drain-pipe.svg +178 -0
- package/scada_symbols/right-flow-meter.svg +911 -0
- package/scada_symbols/right-heat-pump.svg +948 -0
- package/scada_symbols/right-motor-pump.svg +541 -0
- package/scada_symbols/right-tee-connector-hp.svg +470 -0
- package/scada_symbols/right-tee-pipe.svg +857 -0
- package/scada_symbols/rotor-hp.svg +346 -0
- package/scada_symbols/sand-filter-hp.svg +652 -0
- package/scada_symbols/sand-filter.svg +704 -0
- package/scada_symbols/short-bottom-filter.svg +88 -0
- package/scada_symbols/short-left-drain-pipe.svg +160 -0
- package/scada_symbols/short-right-drain-pipe.svg +160 -0
- package/scada_symbols/short-top-filter.svg +88 -0
- package/scada_symbols/short-vertical-tank-hp.svg +522 -0
- package/scada_symbols/simple-horizontal-scale-hp.svg +509 -0
- package/scada_symbols/simple-vertical-scale-hp.svg +509 -0
- package/scada_symbols/single-key-switch-hp.svg +373 -0
- package/scada_symbols/small-cylindrical-tank.svg +1306 -0
- package/scada_symbols/small-horizontal-separator-connector-hp.svg +342 -0
- package/scada_symbols/small-horizontal-separator-hp.svg +342 -0
- package/scada_symbols/small-left-meter.svg +725 -0
- package/scada_symbols/small-left-motor-pump.svg +443 -0
- package/scada_symbols/small-meter.svg +694 -0
- package/scada_symbols/small-power-transformer-hp.svg +359 -0
- package/scada_symbols/small-right-center.svg +725 -0
- package/scada_symbols/small-right-motor-pump.svg +443 -0
- package/scada_symbols/small-spherical-tank.svg +1362 -0
- package/scada_symbols/small-vertical-separator-connector-hp.svg +342 -0
- package/scada_symbols/small-vertical-separator-hp.svg +342 -0
- package/scada_symbols/solar-panel-hp.svg +353 -0
- package/scada_symbols/spherical-tank.svg +1392 -0
- package/scada_symbols/stand-cylindrical-tank.svg +1393 -0
- package/scada_symbols/stand-horizontal-tank.svg +1404 -0
- package/scada_symbols/stand-solar-panel-hp.svg +357 -0
- package/scada_symbols/stand-vertical-short-tank.svg +1366 -0
- package/scada_symbols/stand-vertical-tank.svg +1386 -0
- package/scada_symbols/three-rate-energy-meter-hp.svg +759 -0
- package/scada_symbols/top-flow-meter.svg +927 -0
- package/scada_symbols/top-light-bulb-hp.svg +346 -0
- package/scada_symbols/top-right-elbow-connector-hp.svg +233 -0
- package/scada_symbols/top-right-elbow-pipe.svg +532 -0
- package/scada_symbols/top-tee-connector-hp.svg +470 -0
- package/scada_symbols/top-tee-pipe.svg +857 -0
- package/scada_symbols/turbine-hp.svg +377 -0
- package/scada_symbols/two-key-switch-hp.svg +489 -0
- package/scada_symbols/two-rate-energy-meter-hp.svg +627 -0
- package/scada_symbols/vertical-ball-valve.svg +271 -0
- package/scada_symbols/vertical-broken-pipe.svg +97 -0
- package/scada_symbols/vertical-connector-hp.svg +269 -0
- package/scada_symbols/vertical-energy-system-controller-hp.svg +378 -0
- package/scada_symbols/vertical-inline-flow-meter.svg +913 -0
- package/scada_symbols/vertical-pipe.svg +422 -0
- package/scada_symbols/vertical-short-tank.svg +1305 -0
- package/scada_symbols/vertical-tank-hp.svg +524 -0
- package/scada_symbols/vertical-tank.svg +1326 -0
- package/scada_symbols/vertical-valve-hp.svg +392 -0
- package/scada_symbols/vertical-wheel-valve.svg +300 -0
- package/scada_symbols/voltage-relay-hp.svg +440 -0
- package/scada_symbols/voltage-stabilizer-hp.svg +584 -0
- package/scada_symbols/waterstop.svg +276 -0
- package/scada_symbols/wind-turbine-cluster-hp.svg +370 -0
- package/scada_symbols/wind-turbine-hp.svg +360 -0
- package/src/default-data.json +18 -0
- package/src/definition-schema.d.ts +1521 -0
- package/src/definition-schema.json +5228 -0
- package/src/scada-runtime.ts +1290 -0
- package/src/widget-scada.ts +269 -0
- package/thumbnail.png +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-scada.js","sources":["../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/unsafe-html.js","../node_modules/lit-html/directives/unsafe-svg.js","../src/scada-runtime.ts","../src/widget-scada.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","/**\n * SCADA Runtime Engine\n *\n * Implements a ThingsBoard-compatible SVG runtime that executes\n * stateRenderFunction / actionFunction JS strings from SCADA SVG metadata.\n *\n * Provides: ScadaElement (SVG.js-like wrapper), ctx API (animations,\n * text/value formatting, color processors, actions), and the execution engine.\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SymbolMetadata {\n title: string\n description: string\n stateRenderFunction?: string | null\n tags: TagDef[]\n behavior: BehaviorDef[]\n properties: PropertyDef[]\n}\n\nexport interface TagDef {\n tag: string\n stateRenderFunction: string | null\n actions: Record<string, { actionFunction: string }> | null\n}\n\nexport interface BehaviorDef {\n id: string\n name: string\n type: 'value' | 'action' | 'widgetAction'\n valueType: string\n}\n\nexport interface PropertyDef {\n id: string\n name: string\n type: string\n default: any\n disableOnProperty?: string\n}\n\nexport interface FontDef {\n size: number\n sizeUnit: string\n family: string\n weight: string\n style: string\n}\n\nexport interface ColorSettings {\n type: 'constant' | 'gradient' | 'range' | 'function'\n color: string\n gradient?: {\n advancedMode: boolean\n gradient: string[]\n minValue: number\n maxValue: number\n }\n rangeList?: {\n advancedMode: boolean\n range: Array<{ from: number; to: number; color: string }>\n }\n}\n\n// ---------------------------------------------------------------------------\n// Per-element state storage (WeakMap so GC can reclaim)\n// ---------------------------------------------------------------------------\n\nconst elementMemory = new WeakMap<Element, Map<string, any>>()\n\nfunction getMemory(el: Element): Map<string, any> {\n let m = elementMemory.get(el)\n if (!m) {\n m = new Map()\n elementMemory.set(el, m)\n }\n return m\n}\n\n// ---------------------------------------------------------------------------\n// Animation tracking\n// ---------------------------------------------------------------------------\n\nconst elementAnimations = new WeakMap<Element, AnimationRunner>()\nconst connectorAnimations = new WeakMap<Element, ConnectorAnimationRunner>()\n\n/**\n * Connector flow animation — animates dashes along an SVG path to simulate\n * fluid flow in pipe/connector symbols.\n */\nclass ConnectorAnimationRunner {\n private container: Element\n private forwardPath: string\n private reversedPath: string\n private pathEl: SVGPathElement | null = null\n private lineWidth: number = 2\n private lineColor: string = '#fff'\n private dashCap: string = 'round'\n private dashWidth: number = 10\n private dashGap: number = 10\n private dur: number = 1 // seconds\n private dir: string = 'forward'\n private rafId: number = 0\n private rafActive: boolean = false\n private rafLastTime: number = 0\n private offset: number = 0\n\n constructor(container: Element, forwardPath: string, reversedPath: string) {\n this.container = container\n this.forwardPath = forwardPath\n this.reversedPath = reversedPath\n }\n\n flowAppearance(\n lineWidth: number,\n lineColor: string,\n dashCap: string,\n dashWidth: number,\n dashGap: number\n ): ConnectorAnimationRunner {\n this.lineWidth = lineWidth ?? 2\n this.lineColor = lineColor ?? '#fff'\n this.dashCap = dashCap ?? 'round'\n this.dashWidth = dashWidth ?? 10\n this.dashGap = dashGap ?? 10\n this.updatePathStyle()\n return this\n }\n\n duration(d: number): ConnectorAnimationRunner {\n this.dur = typeof d === 'number' && isFinite(d) && d > 0 ? d : 1\n return this\n }\n\n direction(dir: string): ConnectorAnimationRunner {\n this.dir = dir\n this.updatePathD()\n return this\n }\n\n play(): ConnectorAnimationRunner {\n this.ensurePath()\n if (!this.rafActive) {\n this.rafActive = true\n this.rafLastTime = 0\n this.rafId = requestAnimationFrame(this.tick)\n }\n return this\n }\n\n finish(): void {\n this.cancelRaf()\n if (this.pathEl && this.pathEl.parentNode) {\n this.pathEl.parentNode.removeChild(this.pathEl)\n }\n this.pathEl = null\n connectorAnimations.delete(this.container)\n }\n\n private tick = (now: number): void => {\n if (!this.rafActive) return\n if (!this.rafLastTime) this.rafLastTime = now\n const dt = (now - this.rafLastTime) / 1000\n this.rafLastTime = now\n\n const cycleLength = this.dashWidth + this.dashGap\n // Speed: traverse one dash+gap cycle per `this.dur` seconds\n this.offset += (cycleLength / this.dur) * dt\n if (this.offset > cycleLength) this.offset -= cycleLength\n\n if (this.pathEl) {\n this.pathEl.style.strokeDashoffset = String(-this.offset)\n }\n this.rafId = requestAnimationFrame(this.tick)\n }\n\n private ensurePath(): void {\n if (this.pathEl) return\n const ns = 'http://www.w3.org/2000/svg'\n this.pathEl = document.createElementNS(ns, 'path')\n this.updatePathD()\n this.updatePathStyle()\n this.container.appendChild(this.pathEl)\n }\n\n private updatePathD(): void {\n if (!this.pathEl) return\n const d = this.dir === 'reverse' ? this.reversedPath : this.forwardPath\n this.pathEl.setAttribute('d', d)\n }\n\n private updatePathStyle(): void {\n if (!this.pathEl) return\n this.pathEl.setAttribute('fill', 'none')\n this.pathEl.setAttribute('stroke', this.lineColor)\n this.pathEl.setAttribute('stroke-width', String(this.lineWidth))\n this.pathEl.setAttribute('stroke-linecap', this.dashCap)\n this.pathEl.style.strokeDasharray = `${this.dashWidth} ${this.dashGap}`\n }\n\n private cancelRaf(): void {\n if (this.rafId) {\n cancelAnimationFrame(this.rafId)\n this.rafId = 0\n }\n this.rafActive = false\n }\n}\n\n// ---------------------------------------------------------------------------\n// Material Symbols font loader (injected once into document)\n// ---------------------------------------------------------------------------\nlet materialFontLoaded = false\nfunction ensureMaterialSymbolsFont(): void {\n if (materialFontLoaded) return\n materialFontLoaded = true\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href =\n 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'\n document.head.appendChild(link)\n}\n\nclass AnimationRunner {\n private el: Element\n private duration: number\n private anim: Animation | null = null\n private keyframes: Keyframe[] = []\n private loopCount: number = 1\n private loopBounce: boolean = false\n private playbackSpeed: number = 1\n private easingType: string = 'ease'\n\n // rAF-based animation for SVG transforms (pattern flow & rotation)\n private rafId: number = 0\n private rafActive: boolean = false\n private rafPaused: boolean = false\n private rafLastTime: number = 0\n private rafElapsed: number = 0\n private rafTick: ((now: number) => void) | null = null\n private rafPatternEl: Element | null = null\n private rafOriginalTransform: string = ''\n\n constructor(el: Element, duration: number) {\n this.el = el\n this.duration = duration\n }\n\n /** Animate element by a relative offset (dx, dy). Used by pipe flow animations. */\n relative(dx: number, dy: number): AnimationRunner {\n const safeDx = typeof dx === 'number' && isFinite(dx) ? dx : 0\n const safeDy = typeof dy === 'number' && isFinite(dy) ? dy : 0\n\n // For elements inside SVG <pattern>, CSS transforms shift the entire\n // tile (including pipe borders). Use patternTransform via rAF instead.\n const parent = this.el.parentElement\n if (parent?.nodeName?.toLowerCase() === 'pattern') {\n this.cancelRaf()\n this.rafPatternEl = parent\n this.rafOriginalTransform = parent.getAttribute('patternTransform') || ''\n this.rafActive = true\n this.rafPaused = false\n this.rafElapsed = 0\n this.rafLastTime = 0\n\n const baseTransform = this.rafOriginalTransform ? `${this.rafOriginalTransform} ` : ''\n this.rafTick = (now: number) => {\n if (!this.rafActive || this.rafPaused) return\n if (!this.rafLastTime) this.rafLastTime = now\n this.rafElapsed += (now - this.rafLastTime) * this.playbackSpeed\n this.rafLastTime = now\n\n const progress = (this.rafElapsed % this.duration) / this.duration\n this.rafPatternEl!.setAttribute(\n 'patternTransform',\n `${baseTransform}translate(${safeDx * progress}, ${safeDy * progress})`\n )\n this.rafId = requestAnimationFrame(this.rafTick!)\n }\n this.rafId = requestAnimationFrame(this.rafTick)\n } else {\n // Non-pattern element: use CSS keyframe animation\n this.keyframes = [\n { transform: 'translate(0, 0)' },\n { transform: `translate(${safeDx}px, ${safeDy}px)` }\n ]\n this.easingType = 'linear'\n this.commit()\n }\n return this\n }\n\n attr(attrs: Record<string, any>): AnimationRunner {\n // SVG geometric attributes (height, width, x, y, cx, cy, r, rx, ry)\n // cannot be animated via Web Animations API keyframes reliably.\n // Set them directly with a CSS transition for smooth animation.\n // CSS-animatable properties (opacity, fill, stroke, etc.) use keyframes.\n const SVG_GEOM = new Set(['height', 'width', 'x', 'y', 'cx', 'cy', 'r', 'rx', 'ry'])\n const startFrame: Keyframe = {}\n const endFrame: Keyframe = {}\n let hasKeyframes = false\n\n for (const [key, val] of Object.entries(attrs)) {\n const safeVal = typeof val === 'number' && !isFinite(val) ? 0 : val\n if (SVG_GEOM.has(key)) {\n ;(this.el as SVGElement).style.transition = `all ${this.duration}ms ease`\n this.el.setAttribute(key, String(safeVal))\n } else {\n const computed = getComputedStyle(this.el as HTMLElement)\n const current = computed.getPropertyValue(key) || this.el.getAttribute(key) || ''\n startFrame[key] = current\n endFrame[key] = safeVal\n hasKeyframes = true\n }\n }\n if (hasKeyframes) {\n this.keyframes = [startFrame, endFrame]\n this.easingType = 'linear'\n }\n return this\n }\n\n transform(t: Record<string, any>): AnimationRunner {\n const parts: string[] = []\n const n = (v: any) => (typeof v === 'number' && !isFinite(v) ? 0 : (v ?? 0))\n if (t.translateX !== undefined || t.translateY !== undefined) {\n parts.push(`translate(${n(t.translateX)}, ${n(t.translateY)})`)\n }\n if (t.rotate !== undefined) {\n // Default unspecified origin axes to element bbox center (SVG.js compat)\n const bbox = (this.el as SVGGraphicsElement).getBBox?.()\n const ox = t.originX !== undefined ? n(t.originX) : bbox ? bbox.x + bbox.width / 2 : 0\n const oy = t.originY !== undefined ? n(t.originY) : bbox ? bbox.y + bbox.height / 2 : 0\n parts.push(`rotate(${n(t.rotate)}, ${ox}, ${oy})`)\n }\n if (t.scale !== undefined) {\n parts.push(`scale(${n(t.scale)})`)\n }\n if (parts.length > 0) {\n // For pattern elements, set patternTransform; otherwise set transform attribute\n const tagName = this.el.nodeName?.toLowerCase()\n if (tagName === 'pattern') {\n this.el.setAttribute('patternTransform', parts.join(' '))\n } else {\n this.el.setAttribute('transform', parts.join(' '))\n }\n }\n return this\n }\n\n rotate(deg: number): AnimationRunner {\n // Use rAF-based animation that composes rotation into the existing\n // SVG transform attribute. CSS animations would override the SVG\n // transform (e.g. translate) causing the element to shift position.\n const existingTransform = this.el.getAttribute('transform') || ''\n this.cancelRaf()\n this.rafOriginalTransform = existingTransform\n\n // Calculate rotation center from the element's bounding box\n const bbox = (this.el as SVGGraphicsElement).getBBox?.()\n const cx = bbox ? bbox.x + bbox.width / 2 : 0\n const cy = bbox ? bbox.y + bbox.height / 2 : 0\n\n this.rafActive = true\n this.rafPaused = false\n this.rafElapsed = 0\n this.rafLastTime = 0\n\n this.rafTick = (now: number) => {\n if (!this.rafActive || this.rafPaused) return\n if (!this.rafLastTime) this.rafLastTime = now\n this.rafElapsed += (now - this.rafLastTime) * this.playbackSpeed\n this.rafLastTime = now\n\n const progress = (this.rafElapsed % this.duration) / this.duration\n const currentDeg = deg * progress\n this.el.setAttribute('transform', `${existingTransform} rotate(${currentDeg}, ${cx}, ${cy})`)\n this.rafId = requestAnimationFrame(this.rafTick!)\n }\n this.rafId = requestAnimationFrame(this.rafTick)\n return this\n }\n\n ease(easing: string): AnimationRunner {\n this.easingType = easing\n return this\n }\n\n loop(count?: number, bounce?: boolean): AnimationRunner {\n this.loopCount = count === 0 ? Infinity : (count ?? Infinity)\n this.loopBounce = bounce ?? false\n // In rAF mode the animation already loops; only commit for CSS animations\n if (!this.rafActive) this.commit()\n return this\n }\n\n speed(s: number): AnimationRunner {\n this.playbackSpeed = s\n if (this.anim) this.anim.playbackRate = s\n // rAF mode reads playbackSpeed each frame automatically\n return this\n }\n\n play(): AnimationRunner {\n if (this.rafActive && this.rafPaused) {\n this.rafPaused = false\n this.rafLastTime = 0\n if (this.rafTick) this.rafId = requestAnimationFrame(this.rafTick)\n }\n if (this.anim) this.anim.play()\n return this\n }\n\n pause(): AnimationRunner {\n if (this.rafActive) {\n this.rafPaused = true\n if (this.rafId) {\n cancelAnimationFrame(this.rafId)\n this.rafId = 0\n }\n }\n if (this.anim) this.anim.pause()\n return this\n }\n\n cancel(): void {\n if (this.anim) {\n this.anim.cancel()\n this.anim = null\n }\n this.cancelRaf()\n ;(this.el as SVGElement).style.transition = ''\n }\n\n finish(): void {\n if (this.anim) {\n this.anim.finish()\n this.anim = null\n }\n this.cancelRaf()\n }\n\n private cancelRaf() {\n if (this.rafId) {\n cancelAnimationFrame(this.rafId)\n this.rafId = 0\n }\n this.rafActive = false\n this.rafTick = null\n if (this.rafPatternEl) {\n if (this.rafOriginalTransform) {\n this.rafPatternEl.setAttribute('patternTransform', this.rafOriginalTransform)\n } else {\n this.rafPatternEl.removeAttribute('patternTransform')\n }\n this.rafPatternEl = null\n this.rafOriginalTransform = ''\n } else if (this.rafOriginalTransform) {\n // Restore original SVG transform for rotation animations\n this.el.setAttribute('transform', this.rafOriginalTransform)\n this.rafOriginalTransform = ''\n }\n }\n\n private commit() {\n if (this.keyframes.length === 0) return\n\n // Cancel previous animation if any\n if (this.anim) this.anim.cancel()\n\n try {\n this.anim = this.el.animate(this.keyframes, {\n duration: this.duration,\n iterations: this.loopCount,\n direction: this.loopBounce ? 'alternate' : 'normal',\n fill: 'forwards',\n easing: this.easingType\n })\n this.anim.playbackRate = this.playbackSpeed\n } catch {\n // Some SVG elements don't support Web Animations\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// ScadaElement — SVG.js-compatible wrapper for SVGElement\n// ---------------------------------------------------------------------------\n\nexport class ScadaElement {\n private el: Element\n\n constructor(el: Element) {\n this.el = el\n }\n\n /** Sanitize a value for SVG attributes: coerce NaN/Infinity to 0 */\n private safe(v: any): any {\n return typeof v === 'number' && !isFinite(v) ? 0 : v\n }\n\n /** Get or set attributes. With object: set multiple. With string: get one. */\n attr(attrsOrKey?: Record<string, any> | string, val?: any): any {\n if (typeof attrsOrKey === 'string') {\n if (val !== undefined) {\n this.el.setAttribute(attrsOrKey, String(this.safe(val)))\n return this\n }\n return this.el.getAttribute(attrsOrKey)\n }\n if (attrsOrKey) {\n for (const [k, v] of Object.entries(attrsOrKey)) {\n this.el.setAttribute(k, String(this.safe(v)))\n }\n }\n return this\n }\n\n fill(color: string): ScadaElement {\n this.el.setAttribute('fill', color)\n return this\n }\n\n stroke(opts: Record<string, any> | string): ScadaElement {\n if (typeof opts === 'string') {\n this.el.setAttribute('stroke', opts)\n } else {\n if (opts.color) this.el.setAttribute('stroke', opts.color)\n if (opts.width !== undefined) this.el.setAttribute('stroke-width', String(this.safe(opts.width)))\n if (opts.dasharray) this.el.setAttribute('stroke-dasharray', opts.dasharray)\n }\n return this\n }\n\n show(): ScadaElement {\n ;(this.el as SVGElement).style.display = ''\n ;(this.el as SVGElement).style.visibility = 'visible'\n return this\n }\n\n hide(): ScadaElement {\n ;(this.el as SVGElement).style.display = 'none'\n return this\n }\n\n transform(t: Record<string, any>): ScadaElement {\n const n = (v: any) => (typeof v === 'number' && !isFinite(v) ? 0 : (v ?? 0))\n const parts: string[] = []\n if (t.translateX !== undefined || t.translateY !== undefined) {\n parts.push(`translate(${n(t.translateX)}, ${n(t.translateY)})`)\n }\n if (t.rotate !== undefined) {\n // Default unspecified origin axes to element bbox center (SVG.js compat)\n const bbox = (this.el as SVGGraphicsElement).getBBox?.()\n const ox = t.originX !== undefined ? n(t.originX) : bbox ? bbox.x + bbox.width / 2 : 0\n const oy = t.originY !== undefined ? n(t.originY) : bbox ? bbox.y + bbox.height / 2 : 0\n parts.push(`rotate(${n(t.rotate)}, ${ox}, ${oy})`)\n }\n if (t.scale !== undefined) {\n parts.push(`scale(${n(t.scale)})`)\n }\n if (parts.length > 0) {\n const tagName = this.el.nodeName?.toLowerCase()\n if (tagName === 'pattern') {\n this.el.setAttribute('patternTransform', parts.join(' '))\n } else {\n this.el.setAttribute('transform', parts.join(' '))\n }\n }\n return this\n }\n\n /** Store or retrieve per-element state */\n remember(key: string, value?: any): any {\n const mem = getMemory(this.el)\n if (value !== undefined) {\n mem.set(key, value)\n return this\n }\n return mem.get(key)\n }\n\n /** Query children */\n find(selector: string): ScadaElement[] {\n return Array.from(this.el.querySelectorAll(selector)).map((e) => new ScadaElement(e))\n }\n\n /** Query first matching child */\n findOne(selector: string): ScadaElement | null {\n const el = this.el.querySelector(selector)\n return el ? new ScadaElement(el) : null\n }\n\n /** First child element */\n first(): ScadaElement {\n const fc = this.el.firstElementChild\n return fc ? new ScadaElement(fc) : this\n }\n\n /** Remove all children */\n clear(): ScadaElement {\n while (this.el.firstChild) this.el.removeChild(this.el.firstChild)\n return this\n }\n\n /** Append child (accepts ScadaElement or raw Element) */\n add(child: ScadaElement | Element): ScadaElement {\n const node = child instanceof ScadaElement ? child.native : child\n this.el.appendChild(node)\n return this\n }\n\n /** Get referenced element from an attribute (e.g., fill url(#id)) */\n reference(attrName: string): ScadaElement {\n const val = this.el.getAttribute(attrName)\n if (val) {\n const idMatch = val.match(/url\\(#([^)]+)\\)/)\n if (idMatch) {\n // Use getRootNode() so IDs inside shadow DOM (Lit) are found\n const root = this.el.getRootNode() as Document | ShadowRoot\n const ref = root.getElementById(idMatch[1])\n if (ref) return new ScadaElement(ref)\n }\n }\n return this\n }\n\n /** ForEach for SVG.js compatibility when used on collections */\n forEach(fn: (el: ScadaElement, i: number) => void): void {\n fn(this, 0)\n }\n\n /** Get bounding box width */\n width(): number {\n return (this.el as SVGGraphicsElement).getBBox?.()?.width ?? 0\n }\n\n /** Get bounding box height */\n height(): number {\n return (this.el as SVGGraphicsElement).getBBox?.()?.height ?? 0\n }\n\n /** Get child elements as ScadaElement array */\n children(): ScadaElement[] {\n return Array.from(this.el.children).map((e) => new ScadaElement(e))\n }\n\n /** Get underlying DOM element */\n get native(): Element {\n return this.el\n }\n}\n\n// ---------------------------------------------------------------------------\n// Color Processor — handles color_settings type properties\n// ---------------------------------------------------------------------------\n\nexport class ColorProcessor {\n private settings: ColorSettings\n color: string\n\n constructor(settings: ColorSettings | string) {\n if (typeof settings === 'string') {\n this.settings = { type: 'constant', color: settings }\n this.color = settings\n } else {\n this.settings = settings\n this.color = settings.color ?? '#000000'\n }\n }\n\n update(value: number): void {\n switch (this.settings.type) {\n case 'constant':\n // color stays the same\n break\n case 'gradient': {\n const g = this.settings.gradient\n if (g && g.gradient.length >= 2) {\n const min = g.minValue ?? 0\n const max = g.maxValue ?? 100\n const ratio = Math.max(0, Math.min(1, (value - min) / (max - min || 1)))\n this.color = interpolateColor(g.gradient[0], g.gradient[g.gradient.length - 1], ratio)\n }\n break\n }\n case 'range': {\n const rl = this.settings.rangeList\n if (rl?.range) {\n for (const r of rl.range) {\n if (value >= r.from && value <= r.to) {\n this.color = r.color\n return\n }\n }\n }\n break\n }\n // 'function' mode: skip — requires tinycolor2 + eval\n }\n }\n}\n\nfunction interpolateColor(c1: string, c2: string, ratio: number): string {\n const parse = (c: string) => {\n // Handle rgba(r,g,b,a) or hex\n const rgbaMatch = c.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/)\n if (rgbaMatch) return [+rgbaMatch[1], +rgbaMatch[2], +rgbaMatch[3]]\n // hex\n const hex = c.replace('#', '')\n const h =\n hex.length === 3\n ? [\n parseInt(hex[0] + hex[0], 16),\n parseInt(hex[1] + hex[1], 16),\n parseInt(hex[2] + hex[2], 16)\n ]\n : [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16)\n ]\n return h\n }\n const [r1, g1, b1] = parse(c1)\n const [r2, g2, b2] = parse(c2)\n const r = Math.round(r1 + (r2 - r1) * ratio)\n const g = Math.round(g1 + (g2 - g1) * ratio)\n const b = Math.round(b1 + (b2 - b1) * ratio)\n return `rgb(${r},${g},${b})`\n}\n\n// ---------------------------------------------------------------------------\n// SVG Factory — ctx.svg.line(), ctx.svg.text()\n// ---------------------------------------------------------------------------\n\nfunction createSvgFactory(svgEl: SVGSVGElement) {\n const ns = 'http://www.w3.org/2000/svg'\n\n return {\n line(x1: number, y1: number, x2: number, y2: number): ScadaElement {\n const line = document.createElementNS(ns, 'line')\n line.setAttribute('x1', String(x1))\n line.setAttribute('y1', String(y1))\n line.setAttribute('x2', String(x2))\n line.setAttribute('y2', String(y2))\n return new ScadaElement(line)\n },\n\n text(content: string): ScadaElement {\n const text = document.createElementNS(ns, 'text')\n const tspan = document.createElementNS(ns, 'tspan')\n tspan.textContent = content\n text.appendChild(tspan)\n return new ScadaElement(text)\n },\n\n rect(x?: number, y?: number, w?: number, h?: number): ScadaElement {\n const rect = document.createElementNS(ns, 'rect')\n if (x !== undefined) rect.setAttribute('x', String(x))\n if (y !== undefined) rect.setAttribute('y', String(y))\n if (w !== undefined) rect.setAttribute('width', String(w))\n if (h !== undefined) rect.setAttribute('height', String(h))\n return new ScadaElement(rect)\n },\n\n circle(cx?: number, cy?: number, r?: number): ScadaElement {\n const circle = document.createElementNS(ns, 'circle')\n if (cx !== undefined) circle.setAttribute('cx', String(cx))\n if (cy !== undefined) circle.setAttribute('cy', String(cy))\n if (r !== undefined) circle.setAttribute('r', String(r))\n return new ScadaElement(circle)\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Unit helpers\n// ---------------------------------------------------------------------------\n\nconst UNIT_SYMBOLS: Record<string, string> = {\n celsius: '°C',\n fahrenheit: '°F',\n kelvin: 'K',\n liters: 'L',\n gallons: 'gal',\n cubicMeters: 'm³',\n cubicFeet: 'ft³',\n milliliters: 'mL',\n barrels: 'bbl',\n watts: 'W',\n kilowatts: 'kW',\n megawatts: 'MW',\n horsepower: 'hp',\n wattHours: 'Wh',\n kilowattHours: 'kWh',\n megawattHours: 'MWh',\n volts: 'V',\n millivolts: 'mV',\n kilovolts: 'kV',\n amperes: 'A',\n milliamperes: 'mA',\n hertz: 'Hz',\n kilohertz: 'kHz',\n psi: 'psi',\n bar: 'bar',\n pascal: 'Pa',\n kilopascal: 'kPa',\n atm: 'atm',\n meters: 'm',\n centimeters: 'cm',\n millimeters: 'mm',\n kilometers: 'km',\n feet: 'ft',\n inches: 'in',\n yards: 'yd',\n metersPerSecond: 'm/s',\n kilometersPerHour: 'km/h',\n milesPerHour: 'mph',\n kilograms: 'kg',\n grams: 'g',\n pounds: 'lb',\n tonnes: 't',\n percent: '%',\n rpm: 'rpm',\n decibels: 'dB',\n lux: 'lx',\n lumens: 'lm',\n ohms: 'Ω',\n kilohms: 'kΩ'\n}\n\nfunction unitSymbol(units: string): string {\n return UNIT_SYMBOLS[units] ?? units ?? ''\n}\n\nfunction formatValue(\n value: any,\n optsOrDecimals?: number | { units?: string; decimals?: number; ignoreUnitSymbol?: boolean },\n units?: string,\n ignoreUnitSymbol?: boolean\n): string {\n if (value == null || value === '') return ''\n const num = Number(value)\n if (isNaN(num)) return String(value)\n\n let decimals = 0\n let unitStr = ''\n let ignoreSymbol = false\n\n if (typeof optsOrDecimals === 'object' && optsOrDecimals !== null) {\n decimals = optsOrDecimals.decimals ?? 0\n unitStr = optsOrDecimals.units ?? ''\n ignoreSymbol = optsOrDecimals.ignoreUnitSymbol ?? false\n } else {\n decimals = optsOrDecimals ?? 0\n unitStr = units ?? ''\n ignoreSymbol = ignoreUnitSymbol === true\n }\n\n let result = num.toFixed(decimals)\n if (!ignoreSymbol && unitStr) {\n result += ' ' + unitSymbol(unitStr)\n }\n return result\n}\n\nfunction convertUnitValue(value: number, _units: string): number {\n // In our context, values are already in the target unit — pass through\n return value\n}\n\n// ---------------------------------------------------------------------------\n// API Object builder — creates ctx.api for stateRenderFunction execution\n// ---------------------------------------------------------------------------\n\nexport interface ScadaCallbacks {\n onAction: (event: Event | null, actionName: string, args?: any, opts?: any) => void\n onSetValue: (key: string, value: any) => void\n}\n\nfunction createApi(callbacks: ScadaCallbacks) {\n return {\n cssAnimate(element: ScadaElement | any, duration: number): AnimationRunner {\n const el = element instanceof ScadaElement ? element.native : element\n // Cancel existing\n const existing = elementAnimations.get(el as Element)\n if (existing) existing.cancel()\n const runner = new AnimationRunner(el as Element, duration)\n elementAnimations.set(el as Element, runner)\n return runner\n },\n\n cssAnimation(element: ScadaElement | any): AnimationRunner | null {\n const el = element instanceof ScadaElement ? element.native : element\n return elementAnimations.get(el as Element) ?? null\n },\n\n resetCssAnimation(element: ScadaElement | any): void {\n const el = element instanceof ScadaElement ? element.native : element\n const runner = elementAnimations.get(el as Element)\n if (runner) {\n runner.cancel()\n elementAnimations.delete(el as Element)\n }\n },\n\n finishCssAnimation(element: ScadaElement | any): void {\n const el = element instanceof ScadaElement ? element.native : element\n const runner = elementAnimations.get(el as Element)\n if (runner) {\n runner.finish()\n elementAnimations.delete(el as Element)\n }\n },\n\n font(\n element: ScadaElement | ScadaElement[] | any,\n fontDef: FontDef | any,\n color?: string | any\n ): void {\n // Handle arrays (e.g. from element.find())\n if (Array.isArray(element)) {\n for (const item of element) this.font(item, fontDef, color)\n return\n }\n const el = element instanceof ScadaElement ? element.native : (element as Element)\n if (fontDef && typeof fontDef === 'object' && fontDef.size) {\n const family = fontDef.family || 'Roboto'\n // Ensure a generic fallback so missing fonts don't fall through to serif\n const hasFallback = /\\b(sans-serif|serif|monospace|cursive|fantasy)\\b/.test(family)\n ;(el as SVGElement).style.fontSize = fontDef.size + (fontDef.sizeUnit || 'px')\n ;(el as SVGElement).style.fontFamily = hasFallback ? family : family + ', sans-serif'\n ;(el as SVGElement).style.fontWeight = fontDef.weight || '400'\n ;(el as SVGElement).style.fontStyle = fontDef.style || 'normal'\n }\n if (color) {\n const c = color instanceof ColorProcessor ? color.color : String(color)\n el.setAttribute('fill', c)\n }\n },\n\n text(element: ScadaElement | any, text: string): void {\n const el = element instanceof ScadaElement ? element.native : (element as Element)\n // SVG text elements use tspan children or direct textContent\n const tspan = el.querySelector('tspan')\n if (tspan) {\n tspan.textContent = text\n } else {\n el.textContent = text\n }\n },\n\n formatValue,\n unitSymbol,\n convertUnitValue,\n\n callAction(event: Event | null, actionName: string, args?: any, opts?: any): void {\n // Execute the opts.next callback if provided (for toggle patterns)\n if (opts?.next) {\n try {\n opts.next()\n } catch {\n /* skip */\n }\n }\n callbacks.onAction(event, actionName, args, opts)\n },\n\n setValue(key: string, value: any): void {\n callbacks.onSetValue(key, value)\n },\n\n disable(element: ScadaElement | ScadaElement[] | any): void {\n const items = Array.isArray(element) ? element : [element]\n for (const item of items) {\n const el = item instanceof ScadaElement ? item.native : (item as Element)\n ;(el as SVGElement).style.pointerEvents = 'none'\n ;(el as SVGElement).style.opacity = '0.5'\n }\n },\n\n enable(element: ScadaElement | ScadaElement[] | any): void {\n const items = Array.isArray(element) ? element : [element]\n for (const item of items) {\n const el = item instanceof ScadaElement ? item.native : (item as Element)\n ;(el as SVGElement).style.pointerEvents = ''\n ;(el as SVGElement).style.opacity = ''\n }\n },\n\n icon(\n element: ScadaElement | any,\n iconName: string,\n size?: number,\n color?: string | ColorProcessor | any,\n _useSymbols?: boolean\n ): void {\n const el = element instanceof ScadaElement ? element.native : (element as Element)\n ensureMaterialSymbolsFont()\n const fontSize = size ?? 14\n const fill =\n color instanceof ColorProcessor ? color.color : typeof color === 'string' ? color : '#000000'\n\n // Reuse existing <text> if already injected, otherwise replace content\n let textEl = el.querySelector('text.__scada-icon') as SVGTextElement | null\n if (!textEl) {\n // Clear original SVG path content\n el.textContent = ''\n const NS = 'http://www.w3.org/2000/svg'\n textEl = document.createElementNS(NS, 'text') as SVGTextElement\n textEl.classList.add('__scada-icon')\n textEl.setAttribute('dominant-baseline', 'central')\n textEl.setAttribute('text-anchor', 'middle')\n el.appendChild(textEl)\n }\n textEl.setAttribute('font-family', 'Material Symbols Outlined')\n textEl.setAttribute('font-size', String(fontSize))\n textEl.setAttribute('fill', fill)\n textEl.textContent = iconName\n },\n\n transform(element: ScadaElement | any, t: Record<string, any>): void {\n if (element instanceof ScadaElement) {\n element.transform(t)\n } else {\n new ScadaElement(element as Element).transform(t)\n }\n },\n\n connectorAnimate(\n element: ScadaElement | any,\n forwardPath: string,\n reversedPath: string\n ): ConnectorAnimationRunner {\n const el = element instanceof ScadaElement ? element.native : (element as Element)\n // Cancel existing connector animation on this element\n const existing = connectorAnimations.get(el)\n if (existing) existing.finish()\n const runner = new ConnectorAnimationRunner(el, forwardPath, reversedPath)\n connectorAnimations.set(el, runner)\n return runner\n },\n\n connectorAnimation(element: ScadaElement | any): ConnectorAnimationRunner | null {\n const el = element instanceof ScadaElement ? element.native : (element as Element)\n return connectorAnimations.get(el) ?? null\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context builder + execution engine\n// ---------------------------------------------------------------------------\n\nexport interface ScadaContext {\n values: Record<string, any>\n properties: Record<string, any>\n tags: Record<string, ScadaElement[]>\n svg: ReturnType<typeof createSvgFactory>\n api: ReturnType<typeof createApi>\n}\n\n/**\n * Build the full ctx object for stateRenderFunction execution\n */\nexport function buildContext(\n svgEl: SVGSVGElement,\n metadata: SymbolMetadata,\n values: Record<string, any>,\n rawProperties: Record<string, any>,\n callbacks: ScadaCallbacks\n): ScadaContext {\n // Wrap color_settings properties in ColorProcessor\n const properties: Record<string, any> = {}\n for (const [key, val] of Object.entries(rawProperties)) {\n if (\n val &&\n typeof val === 'object' &&\n val.type &&\n (val.type === 'constant' ||\n val.type === 'gradient' ||\n val.type === 'range' ||\n val.type === 'function') &&\n 'color' in val\n ) {\n properties[key] = new ColorProcessor(val as ColorSettings)\n } else {\n properties[key] = val\n }\n }\n\n // Merge metadata property defaults (inputData wins)\n for (const propDef of metadata.properties) {\n if (properties[propDef.id] === undefined && propDef.default !== undefined) {\n const def = propDef.default\n if (propDef.type === 'color_settings' && def && typeof def === 'object') {\n properties[propDef.id] = new ColorProcessor(def as ColorSettings)\n } else {\n properties[propDef.id] = def\n }\n }\n }\n\n // Merge metadata behavior defaults for values\n for (const beh of metadata.behavior) {\n if (beh.type === 'value' && values[beh.id] === undefined) {\n // Set sensible defaults for unbound values\n if (beh.valueType === 'BOOLEAN') values[beh.id] = false\n else if (beh.valueType === 'DOUBLE' || beh.valueType === 'INTEGER') values[beh.id] = 0\n }\n }\n\n const api = createApi(callbacks)\n const svgFactory = createSvgFactory(svgEl)\n\n // Build tags map — lazy proxy that resolves on access\n const tagsCache: Record<string, ScadaElement[]> = {}\n const tags = new Proxy(tagsCache, {\n get(_target, prop: string) {\n if (!(prop in tagsCache)) {\n const els = svgEl.querySelectorAll(`[tb\\\\:tag=\"${prop}\"]`)\n tagsCache[prop] = Array.from(els).map((e) => new ScadaElement(e))\n }\n return tagsCache[prop]\n }\n })\n\n return { values, properties, tags, svg: svgFactory, api }\n}\n\n/**\n * Execute a stateRenderFunction for a given element and context\n */\nexport function executeStateRender(fnString: string, element: ScadaElement, ctx: ScadaContext): void {\n try {\n // The stateRenderFunction has access to: element, ctx\n // It may also define local functions (e.g., drawMinorTicks)\n const fn = new Function('element', 'ctx', 'console', fnString)\n fn(element, ctx, console)\n } catch (e) {\n console.warn('[scada-runtime] stateRenderFunction error:', e)\n }\n}\n\n/**\n * Execute an actionFunction for a given element and context\n */\nexport function executeAction(\n fnString: string,\n element: ScadaElement,\n ctx: ScadaContext,\n event: Event\n): void {\n try {\n const fn = new Function('element', 'ctx', 'event', fnString)\n fn(element, ctx, event)\n } catch (e) {\n if (import.meta.env?.DEV) {\n console.warn('[scada-runtime] actionFunction error:', e)\n }\n }\n}\n\n/**\n * Run all stateRenderFunctions for all tags in the metadata\n */\nexport function renderAllTags(svgEl: SVGSVGElement, metadata: SymbolMetadata, ctx: ScadaContext): void {\n // Execute top-level stateRenderFunction (e.g. pipe fluid flow setup).\n // Run twice: ThingsBoard stateRenderFunctions capture a `cssAnimation()`\n // reference before `animateFlow()` creates the animation, then call\n // `speed()` on the captured (null) ref. The second pass sees the animation\n // created by the first pass and applies speed/play/pause correctly.\n if (metadata.stateRenderFunction) {\n try {\n const fn = new Function('ctx', 'svg', 'console', metadata.stateRenderFunction)\n fn(ctx, ctx.svg, console)\n fn(ctx, ctx.svg, console)\n } catch (e) {\n console.warn('[scada-runtime] top-level stateRenderFunction error:', e)\n }\n }\n\n for (const tagDef of metadata.tags) {\n const elements = svgEl.querySelectorAll(`[tb\\\\:tag=\"${tagDef.tag}\"]`)\n if (!elements.length) continue\n\n if (tagDef.stateRenderFunction) {\n for (const el of elements) {\n const wrapped = new ScadaElement(el)\n // Save original SVG display on first render, restore before each re-render.\n // Many ThingsBoard stateRenderFunctions only call show() conditionally\n // without a corresponding hide(), relying on the SVG's initial hidden state.\n const mem = getMemory(el)\n if (!mem.has('__origDisplay')) {\n mem.set('__origDisplay', (el as SVGElement).style.display)\n mem.set('__origVisibility', (el as SVGElement).style.visibility)\n mem.set('__origTransform', el.getAttribute('transform') ?? '')\n } else {\n ;(el as SVGElement).style.display = mem.get('__origDisplay')\n ;(el as SVGElement).style.visibility = mem.get('__origVisibility')\n const origT = mem.get('__origTransform')\n if (origT) {\n el.setAttribute('transform', origT)\n } else {\n el.removeAttribute('transform')\n }\n }\n // Clear application-level cached state so that changes in\n // properties/values trigger a full redraw. Internal keys\n // prefixed with '__' are preserved.\n for (const key of mem.keys()) {\n if (!key.startsWith('__')) mem.delete(key)\n }\n executeStateRender(tagDef.stateRenderFunction, wrapped, ctx)\n }\n }\n }\n}\n\n/**\n * Attach click event listeners for all action tags\n */\nexport function attachActions(\n svgEl: SVGSVGElement,\n metadata: SymbolMetadata,\n ctx: ScadaContext\n): Array<() => void> {\n const cleanups: Array<() => void> = []\n\n for (const tagDef of metadata.tags) {\n if (!tagDef.actions) continue\n\n const elements = svgEl.querySelectorAll(`[tb\\\\:tag=\"${tagDef.tag}\"]`)\n for (const el of elements) {\n ;(el as SVGElement).style.cursor = 'pointer'\n\n for (const [actionName, actionDef] of Object.entries(tagDef.actions)) {\n if (actionName === 'click' && actionDef.actionFunction) {\n const handler = (event: Event) => {\n const wrapped = new ScadaElement(el)\n executeAction(actionDef.actionFunction, wrapped, ctx, event)\n }\n el.addEventListener('click', handler)\n cleanups.push(() => el.removeEventListener('click', handler))\n }\n }\n }\n }\n\n return cleanups\n}\n\n/**\n * Extract defaults from SVG metadata, structured to match the inputData shape.\n * Properties with type color/color_settings/font go into `styling`,\n * everything else is top-level. Behavior values go into `bindings`.\n */\nexport function getSymbolDefaults(metadata: SymbolMetadata): Record<string, any> {\n const defaults: Record<string, any> = {}\n const styling: Record<string, any> = {}\n const bindings: Record<string, any> = {}\n\n const STYLING_TYPES = new Set(['color', 'color_settings', 'font'])\n\n for (const prop of metadata.properties) {\n if (prop.default === undefined) continue\n if (STYLING_TYPES.has(prop.type)) {\n styling[prop.id] = prop.default\n } else {\n defaults[prop.id] = prop.default\n }\n }\n\n for (const beh of metadata.behavior) {\n if (beh.type === 'value') {\n if (beh.valueType === 'BOOLEAN') bindings[beh.id] = false\n else if (beh.valueType === 'DOUBLE' || beh.valueType === 'INTEGER') bindings[beh.id] = 0\n else bindings[beh.id] = ''\n }\n }\n\n if (Object.keys(styling).length > 0) defaults.styling = styling\n if (Object.keys(bindings).length > 0) defaults.bindings = bindings\n\n return defaults\n}\n","import { html, css, LitElement, PropertyValues, nothing } from 'lit'\nimport { customElement, property, state, query } from 'lit/decorators.js'\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js'\nimport { InputData } from './definition-schema.js'\nimport {\n SymbolMetadata,\n ScadaContext,\n ScadaCallbacks,\n buildContext,\n renderAllTags,\n attachActions,\n getSymbolDefaults\n} from './scada-runtime.js'\n\ntype Theme = {\n theme_name: string\n theme_object: any\n}\n\n@customElement('widget-scada-versionplaceholder')\nexport class WidgetScada extends LitElement {\n @property({ type: Object })\n inputData?: InputData\n\n @property({ type: Object })\n theme?: Theme\n\n @state() private svgContent: string = ''\n @state() private metadata?: SymbolMetadata\n @state() private themeBgColor?: string\n\n @query('.svg-container')\n svgContainer?: HTMLDivElement\n\n version: string = 'versionplaceholder'\n private currentSymbol?: string\n private resizeObserver: ResizeObserver\n private svgModules = new Map<string, { svg: string; metadata: SymbolMetadata }>()\n private actionCleanups: Array<() => void> = []\n private ctx?: ScadaContext\n\n constructor() {\n super()\n this.resizeObserver = new ResizeObserver(() => this.requestUpdate())\n this.resizeObserver.observe(this)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.resizeObserver?.disconnect()\n this.cleanupActions()\n }\n\n private cleanupActions() {\n for (const cleanup of this.actionCleanups) cleanup()\n this.actionCleanups = []\n }\n\n /**\n * Returns the default property values from the currently loaded SVG metadata.\n */\n getDefaults(): Record<string, any> | undefined {\n if (!this.metadata) return undefined\n return getSymbolDefaults(this.metadata)\n }\n\n private dispatchDefaults() {\n if (!this.metadata) return\n this.dispatchEvent(\n new CustomEvent('widget-defaults', {\n detail: getSymbolDefaults(this.metadata),\n bubbles: true,\n composed: true\n })\n )\n }\n\n protected updated(changedProperties: PropertyValues) {\n if (changedProperties.has('inputData')) {\n const newSymbol = this.inputData?.symbol\n if (newSymbol && newSymbol !== this.currentSymbol) {\n this.currentSymbol = newSymbol\n this.loadSymbol(newSymbol)\n } else if (newSymbol === this.currentSymbol) {\n this.applyState()\n }\n }\n if (changedProperties.has('theme')) {\n this.registerTheme()\n }\n }\n\n private registerTheme() {\n const cssBgColor = getComputedStyle(this).getPropertyValue('--re-tile-background-color').trim()\n this.themeBgColor = cssBgColor || this.theme?.theme_object?.backgroundColor\n }\n\n private getSymbolUrl(symbolId: string): string {\n // Build URL at runtime without triggering Vite's static asset analysis\n // import.meta.url points to the module's own URL\n const base = import.meta.url\n const segments = base.split('/')\n segments.pop() // remove current filename\n segments.pop() // go up from src/\n return segments.join('/') + '/scada_symbols/' + symbolId + '.svg'\n }\n\n private async loadSymbol(symbolId: string) {\n const cached = this.svgModules.get(symbolId)\n if (cached) {\n this.svgContent = cached.svg\n this.metadata = cached.metadata\n await this.updateComplete\n this.applyState()\n this.dispatchDefaults()\n return\n }\n\n try {\n const url = this.getSymbolUrl(symbolId)\n const resp = await fetch(url)\n if (!resp.ok) {\n this.svgContent = ''\n this.metadata = undefined\n return\n }\n const text = await resp.text()\n\n const metaMatch = text.match(/<tb:metadata[^>]*><!\\[CDATA\\[([\\s\\S]*?)\\]\\]>/)\n let metadata: SymbolMetadata | undefined\n if (metaMatch) {\n try {\n metadata = JSON.parse(metaMatch[1])\n } catch {\n /* skip */\n }\n }\n\n const cleanSvg = text.replace(/<tb:metadata[\\s\\S]*?<\\/tb:metadata>/, '')\n this.svgModules.set(symbolId, { svg: cleanSvg, metadata: metadata! })\n this.svgContent = cleanSvg\n this.metadata = metadata\n await this.updateComplete\n this.applyState()\n } catch {\n this.svgContent = ''\n this.metadata = undefined\n }\n this.dispatchDefaults()\n }\n\n private applyState() {\n if (!this.metadata || !this.inputData || !this.svgContainer) return\n\n requestAnimationFrame(() => {\n const svgEl = this.svgContainer?.querySelector('svg')\n if (!svgEl) return\n\n // Build values from bindings\n const values: Record<string, any> = {}\n const bindings = (this.inputData as any)?.bindings ?? {}\n for (const [key, val] of Object.entries(bindings)) {\n values[key] = val\n }\n\n // Build properties: symbol defaults → top-level props → flattened styling\n const data = this.inputData as any\n const symbolDefaults = getSymbolDefaults(this.metadata!)\n const { styling: defaultStyling, bindings: _defaultBindings, ...defaultProps } = symbolDefaults\n const properties: Record<string, any> = { ...defaultProps, ...data }\n delete properties.symbol\n delete properties.bindings\n delete properties.actions\n delete properties.styling\n Object.assign(properties, defaultStyling ?? {}, data?.styling ?? {})\n\n // Action callbacks\n const callbacks: ScadaCallbacks = {\n onAction: (event, actionName, args, _opts) => {\n this.dispatchEvent(\n new CustomEvent('action-submit', {\n detail: {\n actionName,\n args,\n actionApp: data?.actions?.actionApp,\n actionDevice: data?.actions?.actionDevice,\n actionTopic: data?.actions?.actionTopic\n },\n bubbles: false,\n composed: false\n })\n )\n },\n onSetValue: (key, value) => {\n // Update the binding value and re-render\n if (this.ctx) this.ctx.values[key] = value\n this.applyState()\n }\n }\n\n // Build context and execute all stateRenderFunctions\n this.ctx = buildContext(svgEl, this.metadata!, values, properties, callbacks)\n\n // Cleanup old action handlers and attach new ones\n this.cleanupActions()\n renderAllTags(svgEl, this.metadata!, this.ctx)\n this.actionCleanups = attachActions(svgEl, this.metadata!, this.ctx)\n })\n }\n\n static styles = css`\n :host {\n display: block;\n box-sizing: border-box;\n position: relative;\n margin: auto;\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n .wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n }\n\n .svg-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n }\n\n .svg-container svg {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n }\n\n .no-symbol {\n font-size: 16px;\n color: #999;\n display: flex;\n height: 100%;\n width: 100%;\n text-align: center;\n align-items: center;\n justify-content: center;\n font-family: sans-serif;\n }\n `\n\n render() {\n return html`\n <div class=\"wrapper\" style=\"background-color: ${this.themeBgColor ?? ''}\">\n ${this.svgContent\n ? html`<div class=\"svg-container\">${unsafeSVG(this.svgContent)}</div>`\n : html`<div class=\"no-symbol\">\n ${this.inputData?.symbol ? 'Loading...' : 'Select a SCADA symbol'}\n </div>`}\n </div>\n `\n }\n}\n"],"names":["t","e","s","o","n$3","r","n","i","S","c","h","a","l","p","d","u","f","b","y$1","y","v","_","m","g","$","x","E","A","C","P","V","N","I","L","z","H","M","R","k","Z","B","D","elementMemory","getMemory","el","elementAnimations","connectorAnimations","ConnectorAnimationRunner","container","forwardPath","reversedPath","now","dt","cycleLength","lineWidth","lineColor","dashCap","dashWidth","dashGap","dir","ns","materialFontLoaded","ensureMaterialSymbolsFont","link","AnimationRunner","duration","dx","dy","safeDx","safeDy","parent","baseTransform","progress","attrs","SVG_GEOM","startFrame","endFrame","hasKeyframes","key","val","safeVal","current","parts","bbox","ox","oy","deg","existingTransform","cx","cy","currentDeg","easing","count","bounce","ScadaElement","attrsOrKey","color","opts","value","mem","selector","fc","child","node","attrName","idMatch","ref","fn","ColorProcessor","settings","min","max","ratio","interpolateColor","rl","c1","c2","parse","rgbaMatch","hex","r1","g1","b1","r2","g2","b2","createSvgFactory","svgEl","x1","y1","x2","y2","line","content","text","tspan","w","rect","circle","UNIT_SYMBOLS","unitSymbol","units","formatValue","optsOrDecimals","ignoreUnitSymbol","num","decimals","unitStr","ignoreSymbol","result","convertUnitValue","_units","createApi","callbacks","element","existing","runner","fontDef","item","family","hasFallback","event","actionName","args","items","iconName","size","_useSymbols","fontSize","fill","textEl","buildContext","metadata","values","rawProperties","properties","propDef","def","beh","api","svgFactory","tagsCache","tags","_target","prop","els","executeStateRender","fnString","ctx","executeAction","renderAllTags","tagDef","elements","wrapped","origT","attachActions","cleanups","actionDef","handler","getSymbolDefaults","defaults","styling","bindings","STYLING_TYPES","WidgetScada","LitElement","cleanup","changedProperties","newSymbol","cssBgColor","symbolId","segments","cached","url","resp","metaMatch","cleanSvg","data","symbolDefaults","defaultStyling","_defaultBindings","defaultProps","_opts","html","unsafeSVG","css","__decorateClass","property","state","query","customElement"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@record-evolution/widget-scada",
|
|
3
|
+
"description": "REWidget widget-SCADA",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"author": "widget-SCADA",
|
|
6
|
+
"version": "1.0.2",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=24.9.0",
|
|
9
|
+
"npm": ">=10.0.2"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "dist/widget-scada.js",
|
|
13
|
+
"types": "dist/src/widget-scada.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"src",
|
|
17
|
+
"scada_symbols",
|
|
18
|
+
"thumbnail.png"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"analyze": "cem analyze --litelement",
|
|
22
|
+
"start": "vite build --watch & vite",
|
|
23
|
+
"build": "vite build",
|
|
24
|
+
"watch": "vite build --watch",
|
|
25
|
+
"link": "npm run build && npm link && cd ../RESWARM/frontend && npm link @record-evolution/widget-scada",
|
|
26
|
+
"unlink": "npm unlink --global && cd ../RESWARM/frontend && npm unlink @record-evolution/widget-scada && npm i @record-evolution/widget-scada",
|
|
27
|
+
"types": "cat src/definition-schema.json | json2ts --style.tabWidth=4 > src/definition-schema.d.ts",
|
|
28
|
+
"release": "npm run build && npm run types && npm version patch --tag-version-prefix='' && git push && git push --tag && npm run build"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"lit": "^3.3.1",
|
|
32
|
+
"tslib": "^2.8.1"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@custom-elements-manifest/analyzer": "^0.10.4",
|
|
36
|
+
"@rollup/plugin-replace": "^6.0.2",
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^8.34.1",
|
|
38
|
+
"@typescript-eslint/parser": "^8.34.1",
|
|
39
|
+
"eslint": "^9.29.0",
|
|
40
|
+
"eslint-config-prettier": "^10.1.5",
|
|
41
|
+
"husky": "^9.1.7",
|
|
42
|
+
"json-schema-to-typescript": "^15.0.4",
|
|
43
|
+
"lint-staged": "^16.1.2",
|
|
44
|
+
"prettier": "^3.5.3",
|
|
45
|
+
"rimraf": "^6.0.1",
|
|
46
|
+
"typescript": "^5.8.3",
|
|
47
|
+
"vite": "^7.3.0"
|
|
48
|
+
},
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/RecordEvolution/widget-SCADA.git"
|
|
52
|
+
},
|
|
53
|
+
"keywords": [
|
|
54
|
+
"widget",
|
|
55
|
+
"scada"
|
|
56
|
+
],
|
|
57
|
+
"bugs": {
|
|
58
|
+
"url": "https://github.com/RecordEvolution/widget-SCADA/issues"
|
|
59
|
+
},
|
|
60
|
+
"homepage": "https://github.com/RecordEvolution/widget-SCADA#readme"
|
|
61
|
+
}
|