UNPKG

@eva-ics/webengine-react

Version:

React components for EVA ICS HMI Web Engine

1,551 lines (1,548 loc) 99.1 kB
import { StateProp as Se, EvaError as pt, EvaErrorKind as xe, EventKind as Pe } from "@eva-ics/webengine"; import ye, { useState as _e, useEffect as ne, useRef as ve, useCallback as fe, useId as er, useMemo as Xe } from "react"; import { set_engine as tr, EvaLivePlayer as rr, EvaPlayerAutoSize as nr } from "@eva-ics/webengine-multimedia"; import { cookies as de } from "bmat/dom"; import ar from "react-qr-code"; import mt from "react-hot-toast"; import { calculateFormula as Te } from "bmat/numbers"; import { Doughnut as sr, Radar as ir, Bar as lr, Line as or } from "react-chartjs-2"; import { deepMerge as cr } from "bmat/tools"; import { DashTableColType as ur, generateDashTableRichCSV as dr } from "bmat/dashtable"; const fr = new Error("request for lock canceled"); var hr = function(e, n, s, a) { function l(o) { return o instanceof s ? o : new s(function(i) { i(o); }); } return new (s || (s = Promise))(function(o, i) { function d(h) { try { g(a.next(h)); } catch (u) { i(u); } } function c(h) { try { g(a.throw(h)); } catch (u) { i(u); } } function g(h) { h.done ? o(h.value) : l(h.value).then(d, c); } g((a = a.apply(e, n || [])).next()); }); }; class gr { constructor(n, s = fr) { this._value = n, this._cancelError = s, this._weightedQueues = [], this._weightedWaiters = []; } acquire(n = 1) { if (n <= 0) throw new Error(`invalid weight ${n}: must be positive`); return new Promise((s, a) => { this._weightedQueues[n - 1] || (this._weightedQueues[n - 1] = []), this._weightedQueues[n - 1].push({ resolve: s, reject: a }), this._dispatch(); }); } runExclusive(n, s = 1) { return hr(this, void 0, void 0, function* () { const [a, l] = yield this.acquire(s); try { return yield n(a); } finally { l(); } }); } waitForUnlock(n = 1) { if (n <= 0) throw new Error(`invalid weight ${n}: must be positive`); return new Promise((s) => { this._weightedWaiters[n - 1] || (this._weightedWaiters[n - 1] = []), this._weightedWaiters[n - 1].push(s), this._dispatch(); }); } isLocked() { return this._value <= 0; } getValue() { return this._value; } setValue(n) { this._value = n, this._dispatch(); } release(n = 1) { if (n <= 0) throw new Error(`invalid weight ${n}: must be positive`); this._value += n, this._dispatch(); } cancel() { this._weightedQueues.forEach((n) => n.forEach((s) => s.reject(this._cancelError))), this._weightedQueues = []; } _dispatch() { var n; for (let s = this._value; s > 0; s--) { const a = (n = this._weightedQueues[s - 1]) === null || n === void 0 ? void 0 : n.shift(); if (!a) continue; const l = this._value, o = s; this._value -= s, s = this._value + 1, a.resolve([l, this._newReleaser(o)]); } this._drainUnlockWaiters(); } _newReleaser(n) { let s = !1; return () => { s || (s = !0, this.release(n)); }; } _drainUnlockWaiters() { for (let n = this._value; n > 0; n--) this._weightedWaiters[n - 1] && (this._weightedWaiters[n - 1].forEach((s) => s()), this._weightedWaiters[n - 1] = []); } } var vr = function(e, n, s, a) { function l(o) { return o instanceof s ? o : new s(function(i) { i(o); }); } return new (s || (s = Promise))(function(o, i) { function d(h) { try { g(a.next(h)); } catch (u) { i(u); } } function c(h) { try { g(a.throw(h)); } catch (u) { i(u); } } function g(h) { h.done ? o(h.value) : l(h.value).then(d, c); } g((a = a.apply(e, n || [])).next()); }); }; class mr { constructor(n) { this._semaphore = new gr(1, n); } acquire() { return vr(this, void 0, void 0, function* () { const [, n] = yield this._semaphore.acquire(); return n; }); } runExclusive(n) { return this._semaphore.runExclusive(() => n()); } isLocked() { return this._semaphore.isLocked(); } waitForUnlock() { return this._semaphore.waitForUnlock(); } release() { this._semaphore.isLocked() && this._semaphore.release(); } cancel() { return this._semaphore.cancel(); } } const xr = "0.5.21"; let me = null, xt = new mr(); const qe = () => me, Xr = (e) => { me = e, me.wer_version = xr, tr(me); }, Ne = (e, n) => { const [s, a] = _e({}), l = e.engine || me; return ne(() => { const o = (i) => { a(i); }; if (e.oid) if (l) l.watch(e.oid, o, !1, !0); else throw new Error("EVA ICS WebEngine not set"); else a({}); return () => { l && e.oid && l.unwatch(e.oid, o), a({}); }; }, n), s; }, Zr = (e, n) => { const [s, a] = _e({}), l = e.engine || me; return ne(() => { const o = (i) => { i.oid && a((d) => ({ ...d, [i.oid]: i })); }; if (e.oid && e.oid.length > 0) if (l) e.oid.forEach((i) => { l.watch(i, o, !1, !0); }); else throw new Error("EVA ICS WebEngine not set"); else a({}); return () => { l && e.oid && e.oid.length > 0 && e.oid.forEach((i) => { l.unwatch(i, o); }), a({}); }; }, n), s; }, Kr = (e, n) => { const s = e.engine || me; if (!s) throw new Error("EVA ICS WebEngine not set"); return ne(() => (s.register_state_block(e.name, e.state_updates), () => { s.unregister_state_block(e.name); }), n); }, _r = (e, n) => { const [s, a] = _e({ data: null }), l = ve(!1), o = ve(null), i = ve({ enabled: !0 }), d = e.engine || me; let c = e.update ? e.update * 1e3 : 1e3; isNaN(c) ? c = 1e3 : c < 100 && (c = 100); const g = fe(() => { if (!l.current) { o.current = null, i.current.enabled = !1, i.current = { enabled: !1 }, a({ data: null }); return; } i.current = { enabled: !0 }; const h = i.current; if (d && d.logged_in) { let u = e.timeframe || "1H"; Array.isArray(u) || (u = [u]); let m = 0, y = u.map((x, N) => { let T = x.split(":"), w = T[0]; w.startsWith("t") && (w = w.substr(1), m = N); let _ = T[1] || null, b = e.args, j = e.prop === void 0 ? Se.Value : e.prop == Se.Any ? null : e.prop, k = { s: w, e: _, x: j, w: e.fill + (e.digits === void 0 ? "" : `:${e.digits}`), ...b }; return d.call( "item.state_history", e.oid, k ); }); Promise.all(y).then((x) => { x.t = x[m].t, h.enabled && (a({ data: x }), o.current = setTimeout(g, c)); }).catch((x) => { h.enabled && (a({ data: null, error: x }), o.current = setTimeout(g, c)); }); } else a({ data: null }), o.current = setTimeout( g, e.update_uninit ? e.update_uninit * 1e3 : c ); }, n); return ne(() => { if (l.current = !0, !o.current) if (d) typeof e.oid == "string" || Array.isArray(e.oid) && e.oid.length > 0 ? g() : a({ data: null, error: Array.isArray(e.oid) ? void 0 : new pt(xe.INVALID_PARAMS, "OID not specified") }); else throw new Error("EVA ICS WebEngine not set"); return () => { l.current = !1, clearTimeout(o.current), a({ data: null }), o.current = null, i.current.enabled = !1, i.current = { enabled: !1 }; }; }, [g]), s; }, en = (e, n) => { const [s, a] = _e({ data: null }), l = ve(!1), o = ve(null), i = ve({ enabled: !0 }), d = e.engine || me; let c = e.update ? e.update * 1e3 : 1e3; isNaN(c) ? c = 1e3 : c < 100 && (c = 100); const g = fe(() => { if (!l.current) { o.current = null, i.current.enabled = !1, i.current = { enabled: !1 }, a({ data: null }); return; } i.current = { enabled: !0 }; const h = i.current; d && d.logged_in && e.method ? d.call(e.method, e.params).then((u) => { h.enabled && (a({ data: u }), o.current = setTimeout(g, c)); }).catch((u) => { h.enabled && (a({ data: null, error: u }), o.current = setTimeout(g, c)); }) : (a({ data: null }), o.current = setTimeout( g, e.update_uninit ? e.update_uninit * 1e3 : c )); }, [e.method, e.params, c, e.update_uninit]); return ne(() => { if (l.current = !0, !o.current) if (d) e.method ? g() : a({ data: null }); else throw new Error("EVA ICS WebEngine not set"); return () => { l.current = !1, clearTimeout(o.current), a({ data: null }), o.current = null, i.current.enabled = !1, i.current = { enabled: !1 }; }; }, n), s; }; var br = /* @__PURE__ */ ((e) => (e[e.Working = 0] = "Working", e[e.Active = 1] = "Active", e[e.Failed = 2] = "Failed", e))(br || {}); const tn = (e, n) => { const [s, a] = _e( 0 /* Working */ ), l = e.engine || me; return ne(() => { let o = !1; if (l) a( 0 /* Working */ ), xt.acquire().then((i) => { e.keep && (o = l.state_updates); let d = e.state_updates; e.append && (l.state_updates === !0 ? d = !0 : Array.isArray(l.state_updates) && Array.isArray(d) && (d = [].concat(l.state_updates).concat(d))), l.state_updates === d ? (i(), a( 1 /* Active */ )) : l.set_state_updates(d, e.clear_existing).then(() => a( 1 /* Active */ )).catch((c) => { l.log.error(c), a( 2 /* Failed */ ); }).finally(() => i()); }); else throw new Error("EVA ICS WebEngine not set"); return () => { l && xt.acquire().then((i) => { o === l.state_updates ? i() : l.set_state_updates(o, e.clear_existing).catch((d) => l.log.error(d)).finally(() => i()); }); }; }, n), s; }, _t = "progress-color", bt = "warning-progress-color", jt = "critical-progress-color", Ke = (e, n, s, a, l, o) => n === void 0 || isNaN(n) ? `${e}-${_t}` : o !== void 0 && n <= o ? `${e}-${jt}` : l !== void 0 && n <= l ? `${e}-${bt}` : a !== void 0 && n >= a ? `${e}-${jt}` : s !== void 0 && n >= s ? `${e}-${bt}` : `${e}-${_t}`; var Ze = { exports: {} }, $e = {}; /** * @license React * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var yt; function jr() { if (yt) return $e; yt = 1; var e = ye, n = Symbol.for("react.element"), s = Symbol.for("react.fragment"), a = Object.prototype.hasOwnProperty, l = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, o = { key: !0, ref: !0, __self: !0, __source: !0 }; function i(d, c, g) { var h, u = {}, m = null, y = null; g !== void 0 && (m = "" + g), c.key !== void 0 && (m = "" + c.key), c.ref !== void 0 && (y = c.ref); for (h in c) a.call(c, h) && !o.hasOwnProperty(h) && (u[h] = c[h]); if (d && d.defaultProps) for (h in c = d.defaultProps, c) u[h] === void 0 && (u[h] = c[h]); return { $$typeof: n, type: d, key: m, ref: y, props: u, _owner: l.current }; } return $e.Fragment = s, $e.jsx = i, $e.jsxs = i, $e; } var Fe = {}; /** * @license React * react-jsx-runtime.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var Nt; function yr() { return Nt || (Nt = 1, process.env.NODE_ENV !== "production" && function() { var e = ye, n = Symbol.for("react.element"), s = Symbol.for("react.portal"), a = Symbol.for("react.fragment"), l = Symbol.for("react.strict_mode"), o = Symbol.for("react.profiler"), i = Symbol.for("react.provider"), d = Symbol.for("react.context"), c = Symbol.for("react.forward_ref"), g = Symbol.for("react.suspense"), h = Symbol.for("react.suspense_list"), u = Symbol.for("react.memo"), m = Symbol.for("react.lazy"), y = Symbol.for("react.offscreen"), x = Symbol.iterator, N = "@@iterator"; function T(r) { if (r === null || typeof r != "object") return null; var f = x && r[x] || r[N]; return typeof f == "function" ? f : null; } var w = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function _(r) { { for (var f = arguments.length, v = new Array(f > 1 ? f - 1 : 0), R = 1; R < f; R++) v[R - 1] = arguments[R]; b("error", r, v); } } function b(r, f, v) { { var R = w.ReactDebugCurrentFrame, O = R.getStackAddendum(); O !== "" && (f += "%s", v = v.concat([O])); var W = v.map(function(F) { return String(F); }); W.unshift("Warning: " + f), Function.prototype.apply.call(console[r], console, W); } } var j = !1, k = !1, E = !1, A = !1, S = !1, C; C = Symbol.for("react.module.reference"); function D(r) { return !!(typeof r == "string" || typeof r == "function" || r === a || r === o || S || r === l || r === g || r === h || A || r === y || j || k || E || typeof r == "object" && r !== null && (r.$$typeof === m || r.$$typeof === u || r.$$typeof === i || r.$$typeof === d || r.$$typeof === c || // This needs to include all possible module reference object // types supported by any Flight configuration anywhere since // we don't know which Flight build this will end up being used // with. r.$$typeof === C || r.getModuleId !== void 0)); } function L(r, f, v) { var R = r.displayName; if (R) return R; var O = f.displayName || f.name || ""; return O !== "" ? v + "(" + O + ")" : v; } function I(r) { return r.displayName || "Context"; } function P(r) { if (r == null) return null; if (typeof r.tag == "number" && _("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof r == "function") return r.displayName || r.name || null; if (typeof r == "string") return r; switch (r) { case a: return "Fragment"; case s: return "Portal"; case o: return "Profiler"; case l: return "StrictMode"; case g: return "Suspense"; case h: return "SuspenseList"; } if (typeof r == "object") switch (r.$$typeof) { case d: var f = r; return I(f) + ".Consumer"; case i: var v = r; return I(v._context) + ".Provider"; case c: return L(r, r.render, "ForwardRef"); case u: var R = r.displayName || null; return R !== null ? R : P(r.type) || "Memo"; case m: { var O = r, W = O._payload, F = O._init; try { return P(F(W)); } catch { return null; } } } return null; } var p = Object.assign, U = 0, M, Y, J, V, B, Q, ee; function te() { } te.__reactDisabledLog = !0; function ae() { { if (U === 0) { M = console.log, Y = console.info, J = console.warn, V = console.error, B = console.group, Q = console.groupCollapsed, ee = console.groupEnd; var r = { configurable: !0, enumerable: !0, value: te, writable: !0 }; Object.defineProperties(console, { info: r, log: r, warn: r, error: r, group: r, groupCollapsed: r, groupEnd: r }); } U++; } } function z() { { if (U--, U === 0) { var r = { configurable: !0, enumerable: !0, writable: !0 }; Object.defineProperties(console, { log: p({}, r, { value: M }), info: p({}, r, { value: Y }), warn: p({}, r, { value: J }), error: p({}, r, { value: V }), group: p({}, r, { value: B }), groupCollapsed: p({}, r, { value: Q }), groupEnd: p({}, r, { value: ee }) }); } U < 0 && _("disabledDepth fell below zero. This is a bug in React. Please file an issue."); } } var ie = w.ReactCurrentDispatcher, q; function Ee(r, f, v) { { if (q === void 0) try { throw Error(); } catch (O) { var R = O.stack.trim().match(/\n( *(at )?)/); q = R && R[1] || ""; } return ` ` + q + r; } } var Be = !1, Ie; { var Tt = typeof WeakMap == "function" ? WeakMap : Map; Ie = new Tt(); } function rt(r, f) { if (!r || Be) return ""; { var v = Ie.get(r); if (v !== void 0) return v; } var R; Be = !0; var O = Error.prepareStackTrace; Error.prepareStackTrace = void 0; var W; W = ie.current, ie.current = null, ae(); try { if (f) { var F = function() { throw Error(); }; if (Object.defineProperty(F.prototype, "props", { set: function() { throw Error(); } }), typeof Reflect == "object" && Reflect.construct) { try { Reflect.construct(F, []); } catch (re) { R = re; } Reflect.construct(r, [], F); } else { try { F.call(); } catch (re) { R = re; } r.call(F.prototype); } } else { try { throw Error(); } catch (re) { R = re; } r(); } } catch (re) { if (re && R && typeof re.stack == "string") { for (var $ = re.stack.split(` `), K = R.stack.split(` `), G = $.length - 1, H = K.length - 1; G >= 1 && H >= 0 && $[G] !== K[H]; ) H--; for (; G >= 1 && H >= 0; G--, H--) if ($[G] !== K[H]) { if (G !== 1 || H !== 1) do if (G--, H--, H < 0 || $[G] !== K[H]) { var se = ` ` + $[G].replace(" at new ", " at "); return r.displayName && se.includes("<anonymous>") && (se = se.replace("<anonymous>", r.displayName)), typeof r == "function" && Ie.set(r, se), se; } while (G >= 1 && H >= 0); break; } } } finally { Be = !1, ie.current = W, z(), Error.prepareStackTrace = O; } var ke = r ? r.displayName || r.name : "", je = ke ? Ee(ke) : ""; return typeof r == "function" && Ie.set(r, je), je; } function At(r, f, v) { return rt(r, !1); } function Ct(r) { var f = r.prototype; return !!(f && f.isReactComponent); } function We(r, f, v) { if (r == null) return ""; if (typeof r == "function") return rt(r, Ct(r)); if (typeof r == "string") return Ee(r); switch (r) { case g: return Ee("Suspense"); case h: return Ee("SuspenseList"); } if (typeof r == "object") switch (r.$$typeof) { case c: return At(r.render); case u: return We(r.type, f, v); case m: { var R = r, O = R._payload, W = R._init; try { return We(W(O), f, v); } catch { } } } return ""; } var Ae = Object.prototype.hasOwnProperty, nt = {}, at = w.ReactDebugCurrentFrame; function Me(r) { if (r) { var f = r._owner, v = We(r.type, r._source, f ? f.type : null); at.setExtraStackFrame(v); } else at.setExtraStackFrame(null); } function Pt(r, f, v, R, O) { { var W = Function.call.bind(Ae); for (var F in r) if (W(r, F)) { var $ = void 0; try { if (typeof r[F] != "function") { var K = Error((R || "React class") + ": " + v + " type `" + F + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof r[F] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); throw K.name = "Invariant Violation", K; } $ = r[F](f, F, R, v, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); } catch (G) { $ = G; } $ && !($ instanceof Error) && (Me(O), _("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", R || "React class", v, F, typeof $), Me(null)), $ instanceof Error && !($.message in nt) && (nt[$.message] = !0, Me(O), _("Failed %s type: %s", v, $.message), Me(null)); } } } var $t = Array.isArray; function ze(r) { return $t(r); } function Ft(r) { { var f = typeof Symbol == "function" && Symbol.toStringTag, v = f && r[Symbol.toStringTag] || r.constructor.name || "Object"; return v; } } function Ot(r) { try { return st(r), !1; } catch { return !0; } } function st(r) { return "" + r; } function it(r) { if (Ot(r)) return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ft(r)), st(r); } var Ce = w.ReactCurrentOwner, Dt = { key: !0, ref: !0, __self: !0, __source: !0 }, lt, ot, Ge; Ge = {}; function Lt(r) { if (Ae.call(r, "ref")) { var f = Object.getOwnPropertyDescriptor(r, "ref").get; if (f && f.isReactWarning) return !1; } return r.ref !== void 0; } function It(r) { if (Ae.call(r, "key")) { var f = Object.getOwnPropertyDescriptor(r, "key").get; if (f && f.isReactWarning) return !1; } return r.key !== void 0; } function Wt(r, f) { if (typeof r.ref == "string" && Ce.current && f && Ce.current.stateNode !== f) { var v = P(Ce.current.type); Ge[v] || (_('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', P(Ce.current.type), r.ref), Ge[v] = !0); } } function Mt(r, f) { { var v = function() { lt || (lt = !0, _("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", f)); }; v.isReactWarning = !0, Object.defineProperty(r, "key", { get: v, configurable: !0 }); } } function Ut(r, f) { { var v = function() { ot || (ot = !0, _("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", f)); }; v.isReactWarning = !0, Object.defineProperty(r, "ref", { get: v, configurable: !0 }); } } var Yt = function(r, f, v, R, O, W, F) { var $ = { // This tag allows us to uniquely identify this as a React Element $$typeof: n, // Built-in properties that belong on the element type: r, key: f, ref: v, props: F, // Record the component responsible for creating this element. _owner: W }; return $._store = {}, Object.defineProperty($._store, "validated", { configurable: !1, enumerable: !1, writable: !0, value: !1 }), Object.defineProperty($, "_self", { configurable: !1, enumerable: !1, writable: !1, value: R }), Object.defineProperty($, "_source", { configurable: !1, enumerable: !1, writable: !1, value: O }), Object.freeze && (Object.freeze($.props), Object.freeze($)), $; }; function qt(r, f, v, R, O) { { var W, F = {}, $ = null, K = null; v !== void 0 && (it(v), $ = "" + v), It(f) && (it(f.key), $ = "" + f.key), Lt(f) && (K = f.ref, Wt(f, O)); for (W in f) Ae.call(f, W) && !Dt.hasOwnProperty(W) && (F[W] = f[W]); if (r && r.defaultProps) { var G = r.defaultProps; for (W in G) F[W] === void 0 && (F[W] = G[W]); } if ($ || K) { var H = typeof r == "function" ? r.displayName || r.name || "Unknown" : r; $ && Mt(F, H), K && Ut(F, H); } return Yt(r, $, K, O, R, Ce.current, F); } } var He = w.ReactCurrentOwner, ct = w.ReactDebugCurrentFrame; function pe(r) { if (r) { var f = r._owner, v = We(r.type, r._source, f ? f.type : null); ct.setExtraStackFrame(v); } else ct.setExtraStackFrame(null); } var Je; Je = !1; function Qe(r) { return typeof r == "object" && r !== null && r.$$typeof === n; } function ut() { { if (He.current) { var r = P(He.current.type); if (r) return ` Check the render method of \`` + r + "`."; } return ""; } } function Bt(r) { { if (r !== void 0) { var f = r.fileName.replace(/^.*[\\\/]/, ""), v = r.lineNumber; return ` Check your code at ` + f + ":" + v + "."; } return ""; } } var dt = {}; function zt(r) { { var f = ut(); if (!f) { var v = typeof r == "string" ? r : r.displayName || r.name; v && (f = ` Check the top-level render call using <` + v + ">."); } return f; } } function ft(r, f) { { if (!r._store || r._store.validated || r.key != null) return; r._store.validated = !0; var v = zt(f); if (dt[v]) return; dt[v] = !0; var R = ""; r && r._owner && r._owner !== He.current && (R = " It was passed a child from " + P(r._owner.type) + "."), pe(r), _('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', v, R), pe(null); } } function ht(r, f) { { if (typeof r != "object") return; if (ze(r)) for (var v = 0; v < r.length; v++) { var R = r[v]; Qe(R) && ft(R, f); } else if (Qe(r)) r._store && (r._store.validated = !0); else if (r) { var O = T(r); if (typeof O == "function" && O !== r.entries) for (var W = O.call(r), F; !(F = W.next()).done; ) Qe(F.value) && ft(F.value, f); } } } function Gt(r) { { var f = r.type; if (f == null || typeof f == "string") return; var v; if (typeof f == "function") v = f.propTypes; else if (typeof f == "object" && (f.$$typeof === c || // Note: Memo only checks outer props here. // Inner props are checked in the reconciler. f.$$typeof === u)) v = f.propTypes; else return; if (v) { var R = P(f); Pt(v, r.props, "prop", R, r); } else if (f.PropTypes !== void 0 && !Je) { Je = !0; var O = P(f); _("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", O || "Unknown"); } typeof f.getDefaultProps == "function" && !f.getDefaultProps.isReactClassApproved && _("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); } } function Ht(r) { { for (var f = Object.keys(r.props), v = 0; v < f.length; v++) { var R = f[v]; if (R !== "children" && R !== "key") { pe(r), _("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", R), pe(null); break; } } r.ref !== null && (pe(r), _("Invalid attribute `ref` supplied to `React.Fragment`."), pe(null)); } } var gt = {}; function vt(r, f, v, R, O, W) { { var F = D(r); if (!F) { var $ = ""; (r === void 0 || typeof r == "object" && r !== null && Object.keys(r).length === 0) && ($ += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."); var K = Bt(O); K ? $ += K : $ += ut(); var G; r === null ? G = "null" : ze(r) ? G = "array" : r !== void 0 && r.$$typeof === n ? (G = "<" + (P(r.type) || "Unknown") + " />", $ = " Did you accidentally export a JSX literal instead of a component?") : G = typeof r, _("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", G, $); } var H = qt(r, f, v, O, W); if (H == null) return H; if (F) { var se = f.children; if (se !== void 0) if (R) if (ze(se)) { for (var ke = 0; ke < se.length; ke++) ht(se[ke], r); Object.freeze && Object.freeze(se); } else _("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); else ht(se, r); } if (Ae.call(f, "key")) { var je = P(r), re = Object.keys(f).filter(function(Kt) { return Kt !== "key"; }), Ve = re.length > 0 ? "{key: someKey, " + re.join(": ..., ") + ": ...}" : "{key: someKey}"; if (!gt[je + Ve]) { var Zt = re.length > 0 ? "{" + re.join(": ..., ") + ": ...}" : "{}"; _(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`, Ve, je, Zt, je), gt[je + Ve] = !0; } } return r === a ? Ht(H) : Gt(H), H; } } function Jt(r, f, v) { return vt(r, f, v, !0); } function Qt(r, f, v) { return vt(r, f, v, !1); } var Vt = Qt, Xt = Jt; Fe.Fragment = a, Fe.jsx = Vt, Fe.jsxs = Xt; }()), Fe; } process.env.NODE_ENV === "production" ? Ze.exports = jr() : Ze.exports = yr(); var t = Ze.exports, Nr = /* @__PURE__ */ ((e) => (e.LoginSession = "login_session", e.LoginAuto = "login_auto", e.Login = "login", e.OtpSetup = "otp_setup", e.OtpAuth = "otp_auth", e.LoginForm = "login_form", e.Active = "active", e))(Nr || {}), Er = /* @__PURE__ */ ((e) => (e.Default = "default", e.Retry = "retry", e.Abort = "abort", e))(Er || {}); const pr = (e, n, s) => { let a; n === "warning" || n === "error" ? a = mt.error : a = mt.success; let l = s; l === void 0 && (l = 5), a(e, { duration: l * 1e3 }); }, rn = ({ engine: e, Dashboard: n, login_props: s }) => { var h; const [a, l] = _e({ state: "login_session" /* LoginSession */ }), o = fe( (u) => { s != null && s.state_announce && s.state_announce({ ...u }), l(u); }, [s == null ? void 0 : s.state_announce] ), i = e || qe(); if (!i) throw new Error("EVA ICS WebEngine not set"); const [d, c] = _e({ login: "", password: "", remember: !0 }), g = fe(async () => { try { try { de.erase( "auth_password" /* Password */ ); } catch { } await i.stop(), i.clear_auth(); } catch { } o({ state: "login_form" /* LoginForm */ }); }, [i]); if (ne(() => { if (s != null && s.register_globals) { i.register_globals(); const u = window; u.$eva.hmi == null && (u.$eva.hmi = {}); const m = u.$eva.hmi; m.logout = g, m.login = (y, x) => { o({ state: "login" /* Login */ }), i.stop().finally(() => { i.set_login_password(y, x), c({ login: "", password: "", remember: !1 }), i.start(); }); }, m.display_alert = pr; } }, [s, g, i]), ne(() => { i.on(Pe.LoginSuccess, () => { i.login_xopts = null, o({ state: "active" /* Active */ }); }); }, [d.remember, s, a, i]), ne(() => { i.on(Pe.LoginOTPSetup, (u) => { o({ state: "otp_setup", svc_msg: u }), i.login_xopts = null; }), i.on(Pe.LoginOTPRequired, () => { o({ state: "otp_auth" /* OtpAuth */ }), i.login_xopts = null; }), i.on(Pe.LoginOTPInvalid, () => { o({ state: "otp_auth", err: { code: xe.ACCESS_DENIED } }), i.login_xopts = null; }); }, [i]), ne(() => { switch (i.on(Pe.LoginFailed, (u) => { let m; if (s != null && s.on_login_failed ? m = s.on_login_failed(u) : m = "default", m == "retry") { i.restart(); return; } if (m != "abort") { if (u.code == xe.ACCESS_DENIED && (u.message == "invalid token" || u.message == "No token/API key specified") && i.is_auth_set()) { i.erase_token_cookie(), i.restart(); return; } if (u.code == xe.CORE_ERROR && u.message == "Server error") { o({ state: "login" /* Login */ }), i.restart(); return; } } if (u.code == xe.ACCESS_DENIED && a.state == "login_auto") try { de.erase( "auth_password" /* Password */ ); } catch { } o({ state: a.state == "login_session" && u.code == xe.ACCESS_DENIED ? "login_auto" : "login_form", err: u }); }), a.state) { case "login_session": s != null && s.cache_auth && !i.is_auth_set() && (i.ignore_password_set_on_next_login = !0, i.set_login_password( de.read( "auth_login" /* Login */ ) || "", de.read( "auth_password" /* Password */ ) || "" )), i.start(); break; case "login_auto": s != null && s.cache_auth && i.set_login_password( de.read( "auth_login" /* Login */ ) || "", de.read( "auth_password" /* Password */ ) || "" ), i.is_auth_set() ? i.start() : o({ state: "login_form" /* LoginForm */ }); break; } }, [a, s, i]), a.state == "login_session" && i.logged_in) return o({ state: "active" /* Active */ }), /* @__PURE__ */ t.jsx(t.Fragment, {}); switch (a.state) { case "active": return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(n, { engine: i, logout: g }) }); case "login_session": case "login_auto": case "login": return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx("div", { className: "eva login progress", children: (s == null ? void 0 : s.label_logging_in) || "Logging in..." }) }); case "otp_auth": case "otp_setup": return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx( kr, { engine: i, app_state: a, setAppState: o, props: s, logout: g } ) }); default: let u = (h = a.err) == null ? void 0 : h.message; return u == "No authentication data provided" && (i.log.debug( "suppressing error message, strict mode & development on?" ), u = void 0), /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx( wr, { engine: i, form: d, setForm: c, setAppState: o, props: s, error_msg: u } ) }); } }, kr = ({ engine: e, app_state: n, setAppState: s, props: a, logout: l }) => { var y, x; const o = ve(null), [i, d] = _e({ otp: "" }), c = (N) => { const T = { ...i, [N.target.name]: N.target.value }; d(T); }, g = (N) => { N.preventDefault(), s({ state: "login" /* Login */ }), e.login_xopts = { otp: i.otp }; const T = { ...i, otp: "" }; d(T), e.start(); }, h = (N) => { N.preventDefault(), l(); }; ne(() => { o.current.focus(); }, []); let u; switch (n.state) { case "otp_setup": let N = `otpauth://totp/${e.login}?secret=${(y = n == null ? void 0 : n.svc_msg) == null ? void 0 : y.value}`; a != null && a.otp_issuer_name && (N += `&issuer=${a.otp_issuer_name}`), u = /* @__PURE__ */ t.jsxs(t.Fragment, { children: [ /* @__PURE__ */ t.jsx("div", { className: "eva login widerow", children: (a == null ? void 0 : a.label_otp_setup) || "OTP authentication setup" }), /* @__PURE__ */ t.jsx("div", { className: "eva login widerow", children: (a == null ? void 0 : a.label_otp_setup_scan) || "scan this code with an authenticator app then enter the response" }), /* @__PURE__ */ t.jsx("div", { className: "eva login qr", children: /* @__PURE__ */ t.jsx("div", { style: { background: "white", padding: "10px" }, children: /* @__PURE__ */ t.jsx( ar, { size: ((a == null ? void 0 : a.otp_qr_size) || 170) - 20, value: N } ) }) }) ] }); break; default: u = /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs("div", { className: "eva login widerow", children: [ (a == null ? void 0 : a.label_otp_required) || "OTP required", " (", e.login, ")" ] }) }); } let m = /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs("form", { className: "eva login", onSubmit: g, children: [ u, /* @__PURE__ */ t.jsx("div", { className: "eva login error", children: ((x = n.err) == null ? void 0 : x.code) == xe.ACCESS_DENIED ? (a == null ? void 0 : a.label_otp_invalid) || "Invalid OTP code" : "" }), /* @__PURE__ */ t.jsxs("div", { className: "eva login row text", children: [ /* @__PURE__ */ t.jsx("label", { htmlFor: "eva_input_otp", children: (a == null ? void 0 : a.label_otp_code) || "Code" }), /* @__PURE__ */ t.jsx( "input", { className: "eva login", ref: o, id: "eva_input_otp", type: "text", name: "otp", onChange: c } ) ] }), /* @__PURE__ */ t.jsx("button", { className: "eva login", children: (a == null ? void 0 : a.label_enter) || "Enter" }), /* @__PURE__ */ t.jsx("button", { className: "eva login", onClick: h, children: (a == null ? void 0 : a.label_cancel) || "Abort" }) ] }) }); return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(kt, { content: m }) }); }, wr = ({ engine: e, form: n, setForm: s, setAppState: a, error_msg: l, props: o }) => { const i = ve(null); ne(() => { if (i.current.focus(), o != null && o.cache_login || o != null && o.cache_auth) { let u = de.read( "auth_login" /* Login */ ) || ""; if (u) { const m = { ...n, login: u }; s(m); } } }, [o, s]); const d = fe( (u) => { const m = { ...n, [u.target.name]: u.target.name == "remember" ? u.target.checked : u.target.value }; s(m); }, [n] ), c = fe( (u) => { u.preventDefault(); const m = () => { if (a({ state: "login" /* Login */ }), e.set_login_password(n.login, n.password), o != null && o.cache_login || o != null && o.cache_auth) de.create("auth_login", n.login, 365); else try { de.erase( "auth_login" /* Login */ ); } catch { } if (o != null && o.cache_auth) de.create("auth_password", n.password, 365); else try { de.erase( "auth_password" /* Password */ ); } catch { } const y = { ...n, password: "" }; s(y), e.start(); }; o != null && o.prelogin_hook ? o.prelogin_hook().then((y) => { e.login_xopts = { data: y }, m(); }).catch((y) => { a({ state: "login_form", err: { code: xe.FUNC_FAILED, message: y.toString() } }); }) : m(); }, [e, o, n] ); let g; o != null && o.cache_auth && (g = /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs("div", { className: "eva login row remember", children: [ /* @__PURE__ */ t.jsx( "input", { className: "eva login checkbox", type: "checkbox", name: "remember", id: "eva_input_remember", checked: n.remember, onChange: d } ), /* @__PURE__ */ t.jsx("label", { htmlFor: "eva_input_remember", children: o.label_remember || "remember credentials" }) ] }) })); let h = /* @__PURE__ */ t.jsxs(t.Fragment, { children: [ (o == null ? void 0 : o.form_header) && o.form_header(), /* @__PURE__ */ t.jsxs("form", { className: "eva login", onSubmit: c, children: [ /* @__PURE__ */ t.jsx("div", { className: "eva login error", children: l }), /* @__PURE__ */ t.jsxs("div", { className: "eva login row text", children: [ /* @__PURE__ */ t.jsx("label", { htmlFor: "eva_input_login", children: (o == null ? void 0 : o.label_login) || "Login" }), /* @__PURE__ */ t.jsx( "input", { className: "eva login", id: "eva_input_login", ref: i, type: "text", name: "login", value: n.login, onChange: d } ) ] }), /* @__PURE__ */ t.jsxs("div", { className: "eva login row text", children: [ /* @__PURE__ */ t.jsx("label", { htmlFor: "eva_input_password", children: (o == null ? void 0 : o.label_password) || "Password" }), /* @__PURE__ */ t.jsx( "input", { className: "eva login", id: "eva_input_password", type: "password", name: "password", value: n.password, onChange: d } ) ] }), g, /* @__PURE__ */ t.jsx("button", { className: "eva login", children: (o == null ? void 0 : o.label_enter) || "Enter" }) ] }), (o == null ? void 0 : o.form_footer) && o.form_footer() ] }); return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(kt, { content: h }) }); }, kt = ({ content: e }) => /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs("div", { className: "eva login container", children: [ /* @__PURE__ */ t.jsx("div", { className: "eva login logo" }), /* @__PURE__ */ t.jsx("div", { className: "eva login header" }), /* @__PURE__ */ t.jsx("div", { className: "eva login form-container", children: e }) ] }) }), nn = ({ items: e, title: n, engine: s }) => { const a = n ? /* @__PURE__ */ t.jsx("tr", { className: "eva state valuetable header", children: /* @__PURE__ */ t.jsx("th", { className: "eva state valuetable", colSpan: 2, children: n }) }) : ""; return /* @__PURE__ */ t.jsx("table", { className: "eva state valuetable", children: /* @__PURE__ */ t.jsxs("tbody", { className: "eva state valuetable", children: [ a, e.map((l) => /* @__PURE__ */ t.jsxs("tr", { className: "eva state valuetable", children: [ /* @__PURE__ */ t.jsx("td", { className: "eva state valuetable label", children: l.label || l.oid || "" }), /* @__PURE__ */ t.jsx("td", { className: "eva state valuetable value", children: /* @__PURE__ */ t.jsx( be, { oid: l.oid, formula: l.formula, state: l.state, digits: l.digits, units: l.units, className: l.className, threshold: l.threshold, format_with: l.format_with, set_color_with: l.set_color_with, set_class_name_with: l.set_class_name_with, engine: s } ) }) ] }, l.oid)) ] }) }); }, be = ({ oid: e, formula: n, state: s, digits: a, units: l, className: o, threshold: i, format_with: d, set_color_with: c, set_class_name_with: g, set_style_with: h, engine: u }) => { const m = Ne({ oid: e, engine: u }, [e, u]), y = s || m; let x = y.value; if (n && typeof x == "number") try { x = Te(n, x); } catch { x = NaN; } a !== void 0 && (x = parseFloat(x).toFixed(a)); let N; switch (g ? N = g(x) || "" : N = o || "", y.status) { case -1: N += " error"; break; default: N += " ok"; break; } if (y.connected == !1 && (N += " disconnected"), i) { let _ = parseFloat(x); for (const b of i) if (_ >= b.value) { N += ` ${b.class}`; break; } } let T; c && (T = c(x)), d && (x = d(x)); const w = h ? h(x) : {}; return T && (w.color = T), /* @__PURE__ */ t.jsxs("span", { className: `eva state ${N}`, style: w, children: [ x, l ] }); }, et = (e, n, s) => { e.exitcode === 0 ? n && n(e) : s && s(new pt(xe.FUNC_FAILED, e.err || void 0)); }, tt = (e, n) => { n && n(e); }; var Ye = /* @__PURE__ */ ((e) => (e.Toggle = "toggle", e.Value = "value", e.Run = "run", e))(Ye || {}); const an = ({ buttons: e, title: n, engine: s, on_success: a, on_fail: l }) => { let o; return n && (o = /* @__PURE__ */ t.jsx("div", { className: "eva button block_title", children: n })), /* @__PURE__ */ t.jsxs("div", { className: "eva button block", children: [ o, /* @__PURE__ */ t.jsx("div", { className: "eva button block_container", children: e.map((i) => { let d = i.kind; switch (i.oid.startsWith("lmacro:") && (d = "run"), d) { case "value": return /* @__PURE__ */ t.jsx( Rt, { oid: i.oid, label: i.label, css_class: i.css_class, input_size: i.input_size, engine: s, on_success: a, on_fail: l }, i.oid ); case "run": return /* @__PURE__ */ t.jsx( St, { oid: i.oid, params: i.params, busy: i.busy, label: i.label, css_class: i.css_class, engine: s, on_success: a, on_fail: l }, i.oid ); default: return /* @__PURE__ */ t.jsx( wt, { oid: i.oid, label: i.label, css_class: i.css_class, engine: s, on_success: a, on_fail: l }, i.oid ); } }) }) ] }); }, wt = ({ oid: e, label: n, css_class: s, engine: a, on_success: l, on_fail: o, disabled_actions: i }) => { const d = Ne({ oid: e, engine: a }, [e, a]), c = (g) => { if (g.preventDefault(), i) return; (a || qe()).action.toggle(e, !0).then((u) => et(u, l, o)).catch((u) => tt(u, o)); }; return /* @__PURE__ */ t.jsx("div", { className: `eva button container toggle ${s || ""}`, children: /* @__PURE__ */ t.jsxs("label", { className: "eva button switch", children: [ /* @__PURE__ */ t.jsx( "input", { type: "checkbox", onChange: c, checked: d && d.value > 0, disabled: d && d.act !== void 0 && d.act > 0 } ), /* @__PURE__ */ t.jsx("span", { className: `eva button slider ${s || ""}` }), /* @__PURE__ */ t.jsx("div", { className: `eva button label slider ${s || ""}`, children: n }) ] }) }); }, Rt = ({ oid: e, label: n, css_class: s, input_size: a, engine: l, on_success: o, on_fail: i, disabled_actions: d }) => { const c = Ne({ oid: e, engine: l }, [e, l]), [g, h] = _e(c.value), u = er(), m = ve(null), y = (N) => { if (N.preventDefault(), d) return; const T = l || qe(); if (g === void 0) return; let w = parseFloat(g); isNaN(w) && (w = g), T.action.exec(e, { v: w }, !0).then((_) => { h(void 0), et(_, o, i); })