@mxtommy/kip 3.1.3 → 3.1.5
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/CHANGELOG.md +8 -0
- package/package.json +13 -13
- package/public/assets/help-docs/datainspector.md +49 -2
- package/public/assets/help-docs/datasets.md +95 -20
- package/public/assets/help-docs/embedwidget.md +95 -0
- package/public/assets/help-docs/menu.json +4 -2
- package/public/assets/help-docs/putcontrols.md +60 -0
- package/public/{chunk-AGPPRVTP.js → chunk-2L4BJEEQ.js} +1 -1
- package/public/{chunk-6NIOBZZL.js → chunk-2QUOTZ6A.js} +1 -1
- package/public/{chunk-MCACXEYY.js → chunk-4K4AXXSU.js} +1 -1
- package/public/{chunk-VIHODUV4.js → chunk-6QHCHGTT.js} +3 -3
- package/public/{chunk-FFCTE2U5.js → chunk-77C4Q6FL.js} +1 -1
- package/public/{chunk-RCSPPHLA.js → chunk-7TWI6ZJI.js} +1 -1
- package/public/{chunk-FCC7GNHD.js → chunk-CD375FDG.js} +1 -1
- package/public/{chunk-YQQFIIO5.js → chunk-CEBDBQUK.js} +1 -1
- package/public/{chunk-AHFD2AA5.js → chunk-D3QHJ7S5.js} +1 -1
- package/public/{chunk-7OTNT2GF.js → chunk-GQFDVLM2.js} +1 -1
- package/public/{chunk-IIVUAHLC.js → chunk-GUZX3LWH.js} +1 -1
- package/public/{chunk-LMRTNYJV.js → chunk-JSBINEAH.js} +1 -1
- package/public/{chunk-WJMKCVFQ.js → chunk-JZUG3W7P.js} +1 -1
- package/public/{chunk-7WCRIBH3.js → chunk-LDD3DUAE.js} +1 -1
- package/public/{chunk-OG77M7OV.js → chunk-MR7RUNKP.js} +1 -1
- package/public/{chunk-NGZ4CXLB.js → chunk-NGNSVXS2.js} +1 -1
- package/public/{chunk-66LZQV4J.js → chunk-NPOJFRE3.js} +6 -6
- package/public/{chunk-5BPL4ALQ.js → chunk-OTD7HT32.js} +1 -1
- package/public/{chunk-B3M2VHRA.js → chunk-PFVH4UT3.js} +1 -1
- package/public/{chunk-G7AGGO3N.js → chunk-S7S3UOGN.js} +1 -1
- package/public/{chunk-A2OM6FWE.js → chunk-SM7W6ABR.js} +1 -1
- package/public/{chunk-62KBSBLZ.js → chunk-SZD5Q3AW.js} +1 -1
- package/public/{chunk-FMVUDX5R.js → chunk-TMDXXJWO.js} +1 -1
- package/public/{chunk-RNM4H3MR.js → chunk-UH5I5JPF.js} +1 -1
- package/public/{chunk-LTMJXHF3.js → chunk-WRDOUMT5.js} +1 -1
- package/public/chunk-Y7X77HSW.js +18 -0
- package/public/index.html +1 -1
- package/public/{main-44TXCUJL.js → main-FGQDDG5X.js} +13 -13
- package/public/chunk-JIJMSRKJ.js +0 -18
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$a as Ni,$b as ce,$c as Er,$e as Xi,A as vi,Bc as $i,Ca as Tr,Cc as Ar,Da as Fi,Db as Li,Dc as Bi,Ea as Oi,Ec as Wi,Ed as Ke,Fa as Ii,H as _i,Hb as bt,Ib as We,J as yi,Jb as ae,K as $e,Ka as Cr,L as Nt,Lc as Hi,M as Si,Ma as ye,Nb as W,Nd as Gi,Oc as qe,Od as Ge,Pa as G,Sd as Mr,T as wi,Ta as Se,U as Ti,Ua as Ri,Va as ht,Vc as Vi,Vd as Qi,Xc as qi,Yb as xt,Z as Ci,Zb as He,Ze as Yi,_ as ki,_d as Ji,bd as yt,cd as Dr,d as gs,da as Ai,db as Ui,dc as H,de as Qe,e as bs,ef as eo,f as ie,fa as Ei,g as It,ga as Di,h as pi,ha as Ue,ia as Mi,ic as V,j as Re,jc as Q,kc as Pe,ke as Zi,la as wr,le as Je,lf as to,m as T,me as Fr,n as hi,ne as Ze,o as D,oa as I,oc as ji,p as Ne,pa as Be,pc as vt,qc as _t,r as gi,ra as oe,rc as we,sc as kr,t as Rt,tc as ne,td as Ki,u as bi,ua as g,ub as L,vc as Ve,wc as fe,x as de,xb as Pi,xc as z,y as xi,yb as gt,yc as $,z as ze,zc as zi}from"./chunk-JIJMSRKJ.js";var yn=gs((Vr,qr)=>{(function(t,i){typeof Vr=="object"&&typeof qr<"u"?qr.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self,t.Qty=i())})(Vr,function(){"use strict";function t(a){return typeof a=="string"||a instanceof String}var i=Number.isFinite||window.isFinite;function e(a){return i(a)}function r(a){return a}function o(a){var l={};return a.filter(function(d){return l.hasOwnProperty(d)?!1:l[d]=!0})}function n(a,l){if(l.length!==a.length)return!1;for(var d=0;d<a.length;d++)if(l[d].compareArray&&!l[d].compareArray(a[d])||l[d]!==a[d])return!1;return!0}function s(a,l){Object.keys(l).forEach(function(d){a[d]=l[d]})}function c(){for(var a=1,l=0,d=0;d<arguments.length;d++){var f=arguments[d];l=l+_(f),a*=f}return l!==0?b(a,l):a}function m(a,l){if(l===0)throw new Error("Divide by zero");var d=Math.pow(10,_(l)),f=d/(d*l);return c(a,f)}function b(a,l){return Math.round(a*Math.pow(10,l))/Math.pow(10,l)}function _(a){if(!isFinite(a))return 0;for(var l=0;a%1!==0;)a*=10,l++;return l}function u(){var a;if(!this)return a=Object.create(u.prototype),u.apply(a,arguments),a;a=Error.apply(this,arguments),this.name="QtyError",this.message=a.message,this.stack=a.stack}u.prototype=Object.create(Error.prototype,{constructor:{value:u}});function v(a,l){throw new u("Incompatible units: "+a+" and "+l)}var y={"<googol>":[["googol"],1e100,"prefix"],"<kibi>":[["Ki","Kibi","kibi"],Math.pow(2,10),"prefix"],"<mebi>":[["Mi","Mebi","mebi"],Math.pow(2,20),"prefix"],"<gibi>":[["Gi","Gibi","gibi"],Math.pow(2,30),"prefix"],"<tebi>":[["Ti","Tebi","tebi"],Math.pow(2,40),"prefix"],"<pebi>":[["Pi","Pebi","pebi"],Math.pow(2,50),"prefix"],"<exi>":[["Ei","Exi","exi"],Math.pow(2,60),"prefix"],"<zebi>":[["Zi","Zebi","zebi"],Math.pow(2,70),"prefix"],"<yebi>":[["Yi","Yebi","yebi"],Math.pow(2,80),"prefix"],"<yotta>":[["Y","Yotta","yotta"],1e24,"prefix"],"<zetta>":[["Z","Zetta","zetta"],1e21,"prefix"],"<exa>":[["E","Exa","exa"],1e18,"prefix"],"<peta>":[["P","Peta","peta"],1e15,"prefix"],"<tera>":[["T","Tera","tera"],1e12,"prefix"],"<giga>":[["G","Giga","giga"],1e9,"prefix"],"<mega>":[["M","Mega","mega"],1e6,"prefix"],"<kilo>":[["k","kilo"],1e3,"prefix"],"<hecto>":[["h","Hecto","hecto"],100,"prefix"],"<deca>":[["da","Deca","deca","deka"],10,"prefix"],"<deci>":[["d","Deci","deci"],.1,"prefix"],"<centi>":[["c","Centi","centi"],.01,"prefix"],"<milli>":[["m","Milli","milli"],.001,"prefix"],"<micro>":[["u","\u03BC","\xB5","Micro","mc","micro"],1e-6,"prefix"],"<nano>":[["n","Nano","nano"],1e-9,"prefix"],"<pico>":[["p","Pico","pico"],1e-12,"prefix"],"<femto>":[["f","Femto","femto"],1e-15,"prefix"],"<atto>":[["a","Atto","atto"],1e-18,"prefix"],"<zepto>":[["z","Zepto","zepto"],1e-21,"prefix"],"<yocto>":[["y","Yocto","yocto"],1e-24,"prefix"],"<1>":[["1","<1>"],1,""],"<meter>":[["m","meter","meters","metre","metres"],1,"length",["<meter>"]],"<inch>":[["in","inch","inches",'"'],.0254,"length",["<meter>"]],"<foot>":[["ft","foot","feet","'"],.3048,"length",["<meter>"]],"<yard>":[["yd","yard","yards"],.9144,"length",["<meter>"]],"<mile>":[["mi","mile","miles"],1609.344,"length",["<meter>"]],"<naut-mile>":[["nmi","naut-mile"],1852,"length",["<meter>"]],"<league>":[["league","leagues"],4828,"length",["<meter>"]],"<furlong>":[["furlong","furlongs"],201.2,"length",["<meter>"]],"<rod>":[["rd","rod","rods"],5.029,"length",["<meter>"]],"<mil>":[["mil","mils"],254e-7,"length",["<meter>"]],"<angstrom>":[["ang","angstrom","angstroms"],1e-10,"length",["<meter>"]],"<fathom>":[["fathom","fathoms"],1.829,"length",["<meter>"]],"<pica>":[["pica","picas"],.00423333333,"length",["<meter>"]],"<point>":[["pt","point","points"],.000352777778,"length",["<meter>"]],"<redshift>":[["z","red-shift","redshift"],1302773e20,"length",["<meter>"]],"<AU>":[["AU","astronomical-unit"],1495979e5,"length",["<meter>"]],"<light-second>":[["ls","light-second"],299792500,"length",["<meter>"]],"<light-minute>":[["lmin","light-minute"],1798755e4,"length",["<meter>"]],"<light-year>":[["ly","light-year"],9460528e9,"length",["<meter>"]],"<parsec>":[["pc","parsec","parsecs"],3085678e10,"length",["<meter>"]],"<datamile>":[["DM","datamile"],1828.8,"length",["<meter>"]],"<kilogram>":[["kg","kilogram","kilograms"],1,"mass",["<kilogram>"]],"<AMU>":[["u","AMU","amu"],1660538921e-36,"mass",["<kilogram>"]],"<dalton>":[["Da","Dalton","Daltons","dalton","daltons"],1660538921e-36,"mass",["<kilogram>"]],"<slug>":[["slug","slugs"],14.5939029,"mass",["<kilogram>"]],"<short-ton>":[["tn","ton","short-ton"],907.18474,"mass",["<kilogram>"]],"<metric-ton>":[["t","tonne","metric-ton"],1e3,"mass",["<kilogram>"]],"<carat>":[["ct","carat","carats"],2e-4,"mass",["<kilogram>"]],"<pound>":[["lbs","lb","pound","pounds","#"],.45359237,"mass",["<kilogram>"]],"<ounce>":[["oz","ounce","ounces"],.0283495231,"mass",["<kilogram>"]],"<gram>":[["g","gram","grams","gramme","grammes"],.001,"mass",["<kilogram>"]],"<grain>":[["grain","grains","gr"],6479891e-11,"mass",["<kilogram>"]],"<dram>":[["dram","drams","dr"],.0017718452,"mass",["<kilogram>"]],"<stone>":[["stone","stones","st"],6.35029318,"mass",["<kilogram>"]],"<hectare>":[["hectare"],1e4,"area",["<meter>","<meter>"]],"<acre>":[["acre","acres"],4046.85642,"area",["<meter>","<meter>"]],"<sqft>":[["sqft"],1,"area",["<foot>","<foot>"]],"<liter>":[["l","L","liter","liters","litre","litres"],.001,"volume",["<meter>","<meter>","<meter>"]],"<gallon>":[["gal","gallon","gallons"],.0037854118,"volume",["<meter>","<meter>","<meter>"]],"<gallon-imp>":[["galimp","gallon-imp","gallons-imp"],.00454609,"volume",["<meter>","<meter>","<meter>"]],"<quart>":[["qt","quart","quarts"],.00094635295,"volume",["<meter>","<meter>","<meter>"]],"<pint>":[["pt","pint","pints"],.000473176475,"volume",["<meter>","<meter>","<meter>"]],"<pint-imp>":[["ptimp","pint-imp","pints-imp"],.00056826125,"volume",["<meter>","<meter>","<meter>"]],"<cup>":[["cu","cup","cups"],.000236588238,"volume",["<meter>","<meter>","<meter>"]],"<fluid-ounce>":[["floz","fluid-ounce","fluid-ounces"],295735297e-13,"volume",["<meter>","<meter>","<meter>"]],"<fluid-ounce-imp>":[["flozimp","floz-imp","fluid-ounce-imp","fluid-ounces-imp"],284130625e-13,"volume",["<meter>","<meter>","<meter>"]],"<tablespoon>":[["tb","tbsp","tbs","tablespoon","tablespoons"],147867648e-13,"volume",["<meter>","<meter>","<meter>"]],"<teaspoon>":[["tsp","teaspoon","teaspoons"],492892161e-14,"volume",["<meter>","<meter>","<meter>"]],"<bushel>":[["bu","bsh","bushel","bushels"],.035239072,"volume",["<meter>","<meter>","<meter>"]],"<oilbarrel>":[["bbl","oilbarrel","oilbarrels","oil-barrel","oil-barrels"],.158987294928,"volume",["<meter>","<meter>","<meter>"]],"<beerbarrel>":[["bl","bl-us","beerbarrel","beerbarrels","beer-barrel","beer-barrels"],.1173477658,"volume",["<meter>","<meter>","<meter>"]],"<beerbarrel-imp>":[["blimp","bl-imp","beerbarrel-imp","beerbarrels-imp","beer-barrel-imp","beer-barrels-imp"],.16365924,"volume",["<meter>","<meter>","<meter>"]],"<kph>":[["kph"],.277777778,"speed",["<meter>"],["<second>"]],"<mph>":[["mph"],.44704,"speed",["<meter>"],["<second>"]],"<knot>":[["kt","kn","kts","knot","knots"],.514444444,"speed",["<meter>"],["<second>"]],"<fps>":[["fps"],.3048,"speed",["<meter>"],["<second>"]],"<gee>":[["gee"],9.80665,"acceleration",["<meter>"],["<second>","<second>"]],"<Gal>":[["Gal"],.01,"acceleration",["<meter>"],["<second>","<second>"]],"<kelvin>":[["degK","kelvin"],1,"temperature",["<kelvin>"]],"<celsius>":[["degC","celsius","celsius","centigrade"],1,"temperature",["<kelvin>"]],"<fahrenheit>":[["degF","fahrenheit"],5/9,"temperature",["<kelvin>"]],"<rankine>":[["degR","rankine"],5/9,"temperature",["<kelvin>"]],"<temp-K>":[["tempK","temp-K"],1,"temperature",["<temp-K>"]],"<temp-C>":[["tempC","temp-C"],1,"temperature",["<temp-K>"]],"<temp-F>":[["tempF","temp-F"],5/9,"temperature",["<temp-K>"]],"<temp-R>":[["tempR","temp-R"],5/9,"temperature",["<temp-K>"]],"<second>":[["s","sec","secs","second","seconds"],1,"time",["<second>"]],"<minute>":[["min","mins","minute","minutes"],60,"time",["<second>"]],"<hour>":[["h","hr","hrs","hour","hours"],3600,"time",["<second>"]],"<day>":[["d","day","days"],3600*24,"time",["<second>"]],"<week>":[["wk","week","weeks"],7*3600*24,"time",["<second>"]],"<fortnight>":[["fortnight","fortnights"],1209600,"time",["<second>"]],"<year>":[["y","yr","year","years","annum"],31556926,"time",["<second>"]],"<decade>":[["decade","decades"],315569260,"time",["<second>"]],"<century>":[["century","centuries"],3155692600,"time",["<second>"]],"<pascal>":[["Pa","pascal","Pascal"],1,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<bar>":[["bar","bars"],1e5,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<mmHg>":[["mmHg"],133.322368,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<inHg>":[["inHg"],3386.3881472,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<torr>":[["torr"],133.322368,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<atm>":[["atm","ATM","atmosphere","atmospheres"],101325,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<psi>":[["psi"],6894.76,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<cmh2o>":[["cmH2O","cmh2o"],98.0638,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<inh2o>":[["inH2O","inh2o"],249.082052,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<poise>":[["P","poise"],.1,"viscosity",["<kilogram>"],["<meter>","<second>"]],"<stokes>":[["St","stokes"],1e-4,"viscosity",["<meter>","<meter>"],["<second>"]],"<mole>":[["mol","mole"],1,"substance",["<mole>"]],"<molar>":[["M","molar"],1e3,"molar_concentration",["<mole>"],["<meter>","<meter>","<meter>"]],"<wtpercent>":[["wt%","wtpercent"],10,"molar_concentration",["<kilogram>"],["<meter>","<meter>","<meter>"]],"<katal>":[["kat","katal","Katal"],1,"activity",["<mole>"],["<second>"]],"<unit>":[["U","enzUnit","unit"],16667e-19,"activity",["<mole>"],["<second>"]],"<farad>":[["F","farad","Farad"],1,"capacitance",["<second>","<second>","<second>","<second>","<ampere>","<ampere>"],["<meter>","<meter>","<kilogram>"]],"<coulomb>":[["C","coulomb","Coulomb"],1,"charge",["<ampere>","<second>"]],"<Ah>":[["Ah"],3600,"charge",["<ampere>","<second>"]],"<ampere>":[["A","Ampere","ampere","amp","amps"],1,"current",["<ampere>"]],"<siemens>":[["S","Siemens","siemens"],1,"conductance",["<second>","<second>","<second>","<ampere>","<ampere>"],["<kilogram>","<meter>","<meter>"]],"<henry>":[["H","Henry","henry"],1,"inductance",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>","<ampere>"]],"<volt>":[["V","Volt","volt","volts"],1,"potential",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<second>","<ampere>"]],"<ohm>":[["Ohm","ohm","\u03A9","\u2126"],1,"resistance",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<second>","<ampere>","<ampere>"]],"<weber>":[["Wb","weber","webers"],1,"magnetism",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>"]],"<tesla>":[["T","tesla","teslas"],1,"magnetism",["<kilogram>"],["<second>","<second>","<ampere>"]],"<gauss>":[["G","gauss"],1e-4,"magnetism",["<kilogram>"],["<second>","<second>","<ampere>"]],"<maxwell>":[["Mx","maxwell","maxwells"],1e-8,"magnetism",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>"]],"<oersted>":[["Oe","oersted","oersteds"],250/Math.PI,"magnetism",["<ampere>"],["<meter>"]],"<joule>":[["J","joule","Joule","joules","Joules"],1,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<erg>":[["erg","ergs"],1e-7,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<btu>":[["BTU","btu","BTUs"],1055.056,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<calorie>":[["cal","calorie","calories"],4.184,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<Calorie>":[["Cal","Calorie","Calories"],4184,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<therm-US>":[["th","therm","therms","Therm","therm-US"],105480400,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<Wh>":[["Wh"],3600,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<electronvolt>":[["eV","electronvolt","electronvolts"],1602176634e-28,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<newton>":[["N","Newton","newton"],1,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<dyne>":[["dyn","dyne"],1e-5,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<pound-force>":[["lbf","pound-force"],4.448222,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<hertz>":[["Hz","hertz","Hertz"],1,"frequency",["<1>"],["<second>"]],"<radian>":[["rad","radian","radians"],1,"angle",["<radian>"]],"<degree>":[["deg","degree","degrees"],Math.PI/180,"angle",["<radian>"]],"<arcminute>":[["arcmin","arcminute","arcminutes"],Math.PI/10800,"angle",["<radian>"]],"<arcsecond>":[["arcsec","arcsecond","arcseconds"],Math.PI/648e3,"angle",["<radian>"]],"<gradian>":[["gon","grad","gradian","grads"],Math.PI/200,"angle",["<radian>"]],"<steradian>":[["sr","steradian","steradians"],1,"solid_angle",["<steradian>"]],"<rotation>":[["rotation"],2*Math.PI,"angle",["<radian>"]],"<rpm>":[["rpm"],2*Math.PI/60,"angular_velocity",["<radian>"],["<second>"]],"<byte>":[["B","byte","bytes"],1,"information",["<byte>"]],"<bit>":[["b","bit","bits"],.125,"information",["<byte>"]],"<Bps>":[["Bps"],1,"information_rate",["<byte>"],["<second>"]],"<bps>":[["bps"],.125,"information_rate",["<byte>"],["<second>"]],"<dollar>":[["USD","dollar"],1,"currency",["<dollar>"]],"<cents>":[["cents"],.01,"currency",["<dollar>"]],"<candela>":[["cd","candela"],1,"luminosity",["<candela>"]],"<lumen>":[["lm","lumen"],1,"luminous_power",["<candela>","<steradian>"]],"<lux>":[["lux"],1,"illuminance",["<candela>","<steradian>"],["<meter>","<meter>"]],"<watt>":[["W","watt","watts"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<volt-ampere>":[["VA","volt-ampere"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<volt-ampere-reactive>":[["var","Var","VAr","VAR","volt-ampere-reactive"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<horsepower>":[["hp","horsepower"],745.699872,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<gray>":[["Gy","gray","grays"],1,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<roentgen>":[["R","roentgen"],.00933,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<sievert>":[["Sv","sievert","sieverts"],1,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<becquerel>":[["Bq","becquerel","becquerels"],1,"radiation",["<1>"],["<second>"]],"<curie>":[["Ci","curie","curies"],37e9,"radiation",["<1>"],["<second>"]],"<cpm>":[["cpm"],1/60,"rate",["<count>"],["<second>"]],"<dpm>":[["dpm"],1/60,"rate",["<count>"],["<second>"]],"<bpm>":[["bpm"],1/60,"rate",["<count>"],["<second>"]],"<dot>":[["dot","dots"],1,"resolution",["<each>"]],"<pixel>":[["pixel","px"],1,"resolution",["<each>"]],"<ppi>":[["ppi"],1,"resolution",["<pixel>"],["<inch>"]],"<dpi>":[["dpi"],1,"typography",["<dot>"],["<inch>"]],"<cell>":[["cells","cell"],1,"counting",["<each>"]],"<each>":[["each"],1,"counting",["<each>"]],"<count>":[["count"],1,"counting",["<each>"]],"<base-pair>":[["bp","base-pair"],1,"counting",["<each>"]],"<nucleotide>":[["nt","nucleotide"],1,"counting",["<each>"]],"<molecule>":[["molecule","molecules"],1,"counting",["<1>"]],"<dozen>":[["doz","dz","dozen"],12,"prefix_only",["<each>"]],"<percent>":[["%","percent"],.01,"prefix_only",["<1>"]],"<ppm>":[["ppm"],1e-6,"prefix_only",["<1>"]],"<ppb>":[["ppb"],1e-9,"prefix_only",["<1>"]],"<ppt>":[["ppt"],1e-12,"prefix_only",["<1>"]],"<ppq>":[["ppq"],1e-15,"prefix_only",["<1>"]],"<gross>":[["gr","gross"],144,"prefix_only",["<dozen>","<dozen>"]],"<decibel>":[["dB","decibel","decibels"],1,"logarithmic",["<decibel>"]]},w=["<meter>","<kilogram>","<second>","<mole>","<ampere>","<radian>","<kelvin>","<temp-K>","<byte>","<dollar>","<candela>","<each>","<steradian>","<decibel>"],E="<1>",S=[E];function R(a,l){var d=l[1],f=l[3]||[],p=l[4]||[];if(!e(d))throw new u(a+": Invalid unit definition. 'scalar' must be a number");f.forEach(function(h){if(y[h]===void 0)throw new u(a+": Invalid unit definition. Unit "+h+" in 'numerator' is not recognized")}),p.forEach(function(h){if(y[h]===void 0)throw new u(a+": Invalid unit definition. Unit "+h+" in 'denominator' is not recognized")})}var N={},Fe={},F={},X={},Mt={};for(var _e in y)if(y.hasOwnProperty(_e)){var ee=y[_e];if(ee[2]==="prefix"){N[_e]=ee[1];for(var pr=0;pr<ee[0].length;pr++)Fe[ee[0][pr]]=_e}else{R(_e,ee),F[_e]={scalar:ee[1],numerator:ee[3],denominator:ee[4]};for(var hr=0;hr<ee[0].length;hr++)X[ee[0][hr]]=_e}Mt[_e]=ee[0][0]}function Ln(a){var l,d=[],f=Object.keys(y);if(typeof a>"u")for(l=0;l<f.length;l++)["","prefix"].indexOf(y[f[l]][2])===-1&&d.push(f[l].substr(1,f[l].length-2));else{if(this.getKinds().indexOf(a)===-1)throw new u("Kind not recognized");for(l=0;l<f.length;l++)y[f[l]][2]===a&&d.push(f[l].substr(1,f[l].length-2))}return d.sort(function(p,h){return p.toLowerCase()<h.toLowerCase()?-1:p.toLowerCase()>h.toLowerCase()?1:0})}function jn(a){if(!X[a])throw new u("Unit not recognized");return y[X[a]][0]}var gr=["length","time","temperature","mass","current","substance","luminosity","currency","information","angle"];function zn(){if(this.signature)return this.signature;for(var a=Yr.call(this),l=0;l<a.length;l++)a[l]*=Math.pow(20,l);return a.reduce(function(d,f){return d+f},0)}function Yr(){if(!this.isBase())return Yr.call(this.toBase());for(var a=new Array(gr.length),l=0;l<a.length;l++)a[l]=0;for(var d,f,p=0;p<this.numerator.length;p++)(d=y[this.numerator[p]])&&(f=gr.indexOf(d[2]),f>=0&&(a[f]=a[f]+1));for(var h=0;h<this.denominator.length;h++)(d=y[this.denominator[h]])&&(f=gr.indexOf(d[2]),f>=0&&(a[f]=a[f]-1));return a}var Xr="[+-]",br="\\d+",$n=Xr+"?"+br,ei="\\."+br,Bn="(?:"+br+"(?:"+ei+")?)|(?:"+ei+")",Wn="[Ee]"+$n,Hn="(?:"+Bn+")(?:"+Wn+")?",Vn=Xr+"?\\s*"+Hn,qn="("+Vn+")?\\s*([^/]*)(?:/(.+))?",Kn=new RegExp("^"+qn+"$"),ti="\\^|\\*{2}",ri="[01234]",Gn=new RegExp("([^ \\*\\d]+?)(?:"+ti+")?(-?"+ri+"(?![a-zA-Z]))"),Qn=new RegExp("([^ \\*\\d]+?)(?:"+ti+")?("+ri+"(?![a-zA-Z]))");function ii(a){t(a)||(a=a.toString()),a=a.trim();var l=Kn.exec(a);if(!l)throw new u(a+": Quantity not recognized");var d=l[1];d?(d=d.replace(/\s/g,""),this.scalar=parseFloat(d)):this.scalar=1;for(var f=l[2],p=l[3],h,O,A;l=Gn.exec(f);){if(h=parseFloat(l[2]),isNaN(h))throw new u("Unit exponent is not a number");if(h===0&&!xr.test(l[1]))throw new u("Unit not recognized");O=l[1]+" ",A="";for(var P=0;P<Math.abs(h);P++)A+=O;h>=0?f=f.replace(l[0],A):(p=p?p+A:A,f=f.replace(l[0],""))}for(;l=Qn.exec(p);){if(h=parseFloat(l[2]),isNaN(h))throw new u("Unit exponent is not a number");if(h===0&&!xr.test(l[1]))throw new u("Unit not recognized");O=l[1]+" ",A="";for(var K=0;K<h;K++)A+=O;p=p.replace(l[0],A)}f&&(this.numerator=ni(f.trim())),p&&(this.denominator=ni(p.trim()))}var Jn=Object.keys(Fe).sort(function(a,l){return l.length-a.length}).join("|"),Zn=Object.keys(X).sort(function(a,l){return l.length-a.length}).join("|"),Yn="\\b|$",oi="("+Jn+")??("+Zn+")(?:"+Yn+")",xr=new RegExp("^\\s*("+oi+"[\\s\\*]*)+$"),Xn=new RegExp(oi,"g"),ai={};function ni(a){var l=ai[a];if(l)return l;var d,f=[];if(!xr.test(a))throw new u("Unit not recognized");for(;d=Xn.exec(a);)f.push(d.slice(1));return f=f.map(function(p){return Fe[p[0]]?[Fe[p[0]],X[p[1]]]:[X[p[1]]]}),f=f.reduce(function(p,h){return p.concat(h)},[]),f=f.filter(function(p){return p}),ai[a]=f,f}function es(a){if(!t(a))throw new u("Argument should be a string");try{return this(a)}catch{return null}}function Ft(a){return a instanceof x}function x(a,l){if(ts.apply(null,arguments),!Ft(this))return new x(a,l);if(this.scalar=null,this.baseScalar=null,this.signature=null,this._conversionCache={},this.numerator=S,this.denominator=S,si(a)?(this.scalar=a.scalar,this.numerator=a.numerator&&a.numerator.length!==0?a.numerator:S,this.denominator=a.denominator&&a.denominator.length!==0?a.denominator:S):l?(ii.call(this,l),this.scalar=a):ii.call(this,a),this.denominator.join("*").indexOf("temp")>=0)throw new u("Cannot divide with temperatures");if(this.numerator.join("*").indexOf("temp")>=0){if(this.numerator.length>1)throw new u("Cannot multiply by temperatures");if(!n(this.denominator,S))throw new u("Cannot divide with temperatures")}if(this.initValue=a,rs.call(this),this.isTemperature()&&this.baseScalar<0)throw new u("Temperatures must not be less than absolute zero")}x.prototype={constructor:x};function ts(a,l){if(l){if(!(e(a)&&t(l)))throw new u("Only number accepted as initialization value when units are explicitly provided")}else if(!(t(a)||e(a)||Ft(a)||si(a)))throw new u("Only string, number or quantity accepted as single initialization value")}function si(a){return a&&typeof a=="object"&&a.hasOwnProperty("scalar")}function rs(){if(this.baseScalar)return this.baseScalar;if(this.isBase())this.baseScalar=this.scalar,this.signature=zn.call(this);else{var a=this.toBase();this.baseScalar=a.scalar,this.signature=a.signature}}var vr={"-312078":"elastance","-312058":"resistance","-312038":"inductance","-152058":"potential","-152040":"magnetism","-152038":"magnetism","-7997":"specific_volume","-79":"snap","-59":"jolt","-39":"acceleration","-38":"radiation","-20":"frequency","-19":"speed","-18":"viscosity","-17":"volumetric_flow","-1":"wavenumber",0:"unitless",1:"length",2:"area",3:"volume",20:"time",400:"temperature",7941:"yank",7942:"power",7959:"pressure",7961:"force",7962:"energy",7979:"viscosity",7981:"momentum",7982:"angular_momentum",7997:"density",7998:"area_density",8e3:"mass",152020:"radiation_exposure",159999:"magnetism",16e4:"current",160020:"charge",312058:"conductance",312078:"capacitance",3199980:"activity",3199997:"molar_concentration",32e5:"substance",63999998:"illuminance",64e6:"luminous_power",128e7:"currency","25599999980":"information_rate","25600000000":"information","511999999980":"angular_velocity","512000000000":"angle"};function is(){return o(Object.keys(vr).map(function(a){return vr[a]}))}x.prototype.kind=function(){return vr[this.signature.toString()]},s(x.prototype,{isDegrees:function(){return(this.signature===null||this.signature===400)&&this.numerator.length===1&&n(this.denominator,S)&&(this.numerator[0].match(/<temp-[CFRK]>/)||this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/))},isTemperature:function(){return this.isDegrees()&&this.numerator[0].match(/<temp-[CFRK]>/)}});function os(a,l){var d=a.units(),f=l.to(d),p=x(_r(d));return x({scalar:a.scalar-f.scalar,numerator:p.numerator,denominator:p.denominator})}function as(a,l){var d=l.to(_r(a.units()));return x({scalar:a.scalar-d.scalar,numerator:a.numerator,denominator:a.denominator})}function li(a,l){var d=l.to(_r(a.units()));return x({scalar:a.scalar+d.scalar,numerator:a.numerator,denominator:a.denominator})}function _r(a){if(a==="tempK")return"degK";if(a==="tempC")return"degC";if(a==="tempF")return"degF";if(a==="tempR")return"degR";throw new u("Unknown type for temp conversion from: "+a)}function ns(a,l){var d=ss(a),f=l.units(),p;if(f==="degK")p=d.scalar;else if(f==="degC")p=d.scalar;else if(f==="degF")p=d.scalar*9/5;else if(f==="degR")p=d.scalar*9/5;else throw new u("Unknown type for degree conversion to: "+f);return x({scalar:p,numerator:l.numerator,denominator:l.denominator})}function ss(a){var l=a.units(),d;if(l.match(/(deg)[CFRK]/))d=a.baseScalar;else if(l==="tempK")d=a.scalar;else if(l==="tempC")d=a.scalar;else if(l==="tempF")d=a.scalar*5/9;else if(l==="tempR")d=a.scalar*5/9;else throw new u("Unknown type for temp conversion from: "+l);return x({scalar:d,numerator:["<kelvin>"],denominator:S})}function ls(a,l){var d=l.units(),f;if(d==="tempK")f=a.baseScalar;else if(d==="tempC")f=a.baseScalar-273.15;else if(d==="tempF")f=a.baseScalar*9/5-459.67;else if(d==="tempR")f=a.baseScalar*9/5;else throw new u("Unknown type for temp conversion to: "+d);return x({scalar:f,numerator:l.numerator,denominator:l.denominator})}function ds(a){var l=a.units(),d;if(l.match(/(deg)[CFRK]/))d=a.baseScalar;else if(l==="tempK")d=a.scalar;else if(l==="tempC")d=a.scalar+273.15;else if(l==="tempF")d=(a.scalar+459.67)*5/9;else if(l==="tempR")d=a.scalar*5/9;else throw new u("Unknown type for temp conversion from: "+l);return x({scalar:d,numerator:["<temp-K>"],denominator:S})}s(x.prototype,{to:function(a){var l,d;if(a==null)return this;if(!t(a))return this.to(a.units());if(l=this._conversionCache[a],l)return l;if(d=x(a),d.units()===this.units())return this;if(!this.isCompatible(d))this.isInverse(d)?d=this.inverse().to(a):v(this.units(),d.units());else if(d.isTemperature())d=ls(this,d);else if(d.isDegrees())d=ns(this,d);else{var f=m(this.baseScalar,d.baseScalar);d=x({scalar:f,numerator:d.numerator,denominator:d.denominator})}return this._conversionCache[a]=d,d},toBase:function(){if(this.isBase())return this;if(this.isTemperature())return ds(this);var a=di[this.units()];return a||(a=fs(this.numerator,this.denominator),di[this.units()]=a),a.mul(this.scalar)},toFloat:function(){if(this.isUnitless())return this.scalar;throw new u("Can't convert to Float unless unitless. Use Unit#scalar")},toPrec:function(a){if(t(a)&&(a=x(a)),e(a)&&(a=x(a+" "+this.units())),this.isUnitless()?a.isUnitless()||v(this.units(),a.units()):a=a.to(this.units()),a.scalar===0)throw new u("Divide by zero");var l=c(Math.round(this.scalar/a.scalar),a.scalar);return x(l+this.units())}});function cs(a,l){var d=x(a),f=x(l);if(d.eq(f))return r;var p;return d.isTemperature()?p=function(h){return d.mul(h).to(f).scalar}:p=function(h){return h*d.baseScalar/f.baseScalar},function(O){var A,P,K;if(Array.isArray(O)){for(P=O.length,K=[],A=0;A<P;A++)K.push(p(O[A]));return K}else return p(O)}}var di={};function fs(a,l){for(var d=[],f=[],p=1,h,O=0;O<a.length;O++)h=a[O],N[h]?p=c(p,N[h]):F[h]&&(p*=F[h].scalar,F[h].numerator&&d.push(F[h].numerator),F[h].denominator&&f.push(F[h].denominator));for(var A=0;A<l.length;A++)h=l[A],N[h]?p/=N[h]:F[h]&&(p/=F[h].scalar,F[h].numerator&&f.push(F[h].numerator),F[h].denominator&&d.push(F[h].denominator));return d=d.reduce(function(P,K){return P.concat(K)},[]),f=f.reduce(function(P,K){return P.concat(K)},[]),x({scalar:p,numerator:d,denominator:f})}x.parse=es,x.getUnits=Ln,x.getAliases=jn,x.mulSafe=c,x.divSafe=m,x.getKinds=is,x.swiftConverter=cs,x.Error=u,s(x.prototype,{add:function(a){if(t(a)&&(a=x(a)),this.isCompatible(a)||v(this.units(),a.units()),this.isTemperature()&&a.isTemperature())throw new u("Cannot add two temperatures");return this.isTemperature()?li(this,a):a.isTemperature()?li(a,this):x({scalar:this.scalar+a.to(this).scalar,numerator:this.numerator,denominator:this.denominator})},sub:function(a){if(t(a)&&(a=x(a)),this.isCompatible(a)||v(this.units(),a.units()),this.isTemperature()&&a.isTemperature())return os(this,a);if(this.isTemperature())return as(this,a);if(a.isTemperature())throw new u("Cannot subtract a temperature from a differential degree unit");return x({scalar:this.scalar-a.to(this).scalar,numerator:this.numerator,denominator:this.denominator})},mul:function(a){if(e(a))return x({scalar:c(this.scalar,a),numerator:this.numerator,denominator:this.denominator});if(t(a)&&(a=x(a)),(this.isTemperature()||a.isTemperature())&&!(this.isUnitless()||a.isUnitless()))throw new u("Cannot multiply by temperatures");var l=this,d=a;l.isCompatible(d)&&l.signature!==400&&(d=d.to(l));var f=ci(l.numerator,l.denominator,d.numerator,d.denominator);return x({scalar:c(l.scalar,d.scalar,f[2]),numerator:f[0],denominator:f[1]})},div:function(a){if(e(a)){if(a===0)throw new u("Divide by zero");return x({scalar:this.scalar/a,numerator:this.numerator,denominator:this.denominator})}else t(a)&&(a=x(a));if(a.scalar===0)throw new u("Divide by zero");if(a.isTemperature())throw new u("Cannot divide with temperatures");if(this.isTemperature()&&!a.isUnitless())throw new u("Cannot divide with temperatures");var l=this,d=a;l.isCompatible(d)&&l.signature!==400&&(d=d.to(l));var f=ci(l.numerator,l.denominator,d.denominator,d.numerator);return x({scalar:c(l.scalar,f[2])/d.scalar,numerator:f[0],denominator:f[1]})},inverse:function(){if(this.isTemperature())throw new u("Cannot divide with temperatures");if(this.scalar===0)throw new u("Divide by zero");return x({scalar:1/this.scalar,numerator:this.denominator,denominator:this.numerator})}});function ci(a,l,d,f){function p(te){return te!==E}a=a.filter(p),d=d.filter(p),l=l.filter(p),f=f.filter(p);var h={};function O(te,Oe){for(var re,Ot,Sr,Ie=0;Ie<te.length;Ie++)if(N[te[Ie]]?(re=te[Ie+1],Ot=te[Ie],Sr=N[Ot],Ie++):(re=te[Ie],Ot=null,Sr=1),re&&re!==E)if(h[re]){h[re][0]+=Oe;var hs=h[re][2]?N[h[re][2]]:1;h[re][Oe===1?3:4]*=m(Sr,hs)}else h[re]=[Oe,re,Ot,1,1]}O(a,1),O(l,-1),O(d,1),O(f,-1);var A=[],P=[],K=1;for(var ui in h)if(h.hasOwnProperty(ui)){var B=h[ui],je;if(B[0]>0)for(je=0;je<B[0];je++)A.push(B[2]===null?B[1]:[B[2],B[1]]);else if(B[0]<0)for(je=0;je<-B[0];je++)P.push(B[2]===null?B[1]:[B[2],B[1]]);K*=m(B[3],B[4])}return A.length===0&&(A=S),P.length===0&&(P=S),A=A.reduce(function(te,Oe){return te.concat(Oe)},[]),P=P.reduce(function(te,Oe){return te.concat(Oe)},[]),[A,P,K]}s(x.prototype,{eq:function(a){return this.compareTo(a)===0},lt:function(a){return this.compareTo(a)===-1},lte:function(a){return this.eq(a)||this.lt(a)},gt:function(a){return this.compareTo(a)===1},gte:function(a){return this.eq(a)||this.gt(a)},compareTo:function(a){if(t(a))return this.compareTo(x(a));if(this.isCompatible(a)||v(this.units(),a.units()),this.baseScalar<a.baseScalar)return-1;if(this.baseScalar===a.baseScalar)return 0;if(this.baseScalar>a.baseScalar)return 1},same:function(a){return this.scalar===a.scalar&&this.units()===a.units()}}),s(x.prototype,{isUnitless:function(){return[this.numerator,this.denominator].every(function(a){return n(a,S)})},isCompatible:function(a){return t(a)?this.isCompatible(x(a)):Ft(a)&&a.signature!==void 0?this.signature===a.signature:!1},isInverse:function(a){return this.inverse().isCompatible(a)},isBase:function(){return this._isBase!==void 0?this._isBase:this.isDegrees()&&this.numerator[0].match(/<(kelvin|temp-K)>/)?(this._isBase=!0,this._isBase):(this.numerator.concat(this.denominator).forEach(function(a){a!==E&&w.indexOf(a)===-1&&(this._isBase=!1)},this),this._isBase===!1?this._isBase:(this._isBase=!0,this._isBase))}});function yr(){}yr.prototype.get=function(a){return arguments.length>1&&(a=Array.apply(null,arguments)),a.reduce(function(l,d,f){if(l){var p=l[d];return f===a.length-1?p?p.data:void 0:p}},this)},yr.prototype.set=function(a,l){return arguments.length>2&&(a=Array.prototype.slice.call(arguments,0,-1),l=arguments[arguments.length-1]),a.reduce(function(d,f,p){var h=d[f];return h===void 0&&(h=d[f]={}),p===a.length-1?(h.data=l,l):h},this)};function ms(a,l){return(a+" "+l).trim()}x.formatter=ms,s(x.prototype,{units:function(){if(this._units!==void 0)return this._units;var a=n(this.numerator,S),l=n(this.denominator,S);if(a&&l)return this._units="",this._units;var d=mi(this.numerator),f=mi(this.denominator);return this._units=d+(l?"":"/"+f),this._units},toString:function(a,l){var d;if(e(a))d=this.units(),l=a;else if(t(a))d=a;else if(Ft(a))return this.toPrec(a).toString(l);var f=this.to(d),p=l!==void 0?b(f.scalar,l):f.scalar;return f=(p+" "+f.units()).trim(),f},format:function(a,l){arguments.length===1&&typeof a=="function"&&(l=a,a=void 0),l=l||x.formatter;var d=this.to(a);return l.call(this,d.scalar,d.units())}});var fi=new yr;function mi(a){var l=fi.get(a);if(l)return l;var d=n(a,S);return d?l="1":l=ps(us(a)).join("*"),fi.set(a,l),l}function us(a){for(var l=[],d,f,p=0;p<a.length;p++)d=a[p],f=a[p+1],N[d]?(l.push(Mt[d]+Mt[f]),p++):l.push(Mt[d]);return l}function ps(a){var l=a.reduce(function(d,f){var p=d[f];return p||d.push(p=d[f]=[f,0]),p[1]++,d},[]);return l.map(function(d){return d[0]+(d[1]>1?d[1]:"")})}return x.version="1.8.0",x})});var Ye=(()=>{class t{TIMEOUT_DURATION=1e4;serverServiceEndpoint$=new D({operation:0,message:"Not connected",serverDescription:null,httpServiceUrl:null,WsServiceUrl:null});signalKURL;serverName;serverVersion$=new D(null);serverRoles=[];http=g(Ke);resetSignalK(e,r,o){return ie(this,null,function*(){if(!e.url){console.log("[Connection Service] Connection reset called with null or empty URL value");return}let n={operation:1,message:"Connecting...",serverDescription:null,httpServiceUrl:null,WsServiceUrl:null};this.signalKURL=e,this.serverServiceEndpoint$.next(n);let s=this.signalKURL.url;s.endsWith("signalk/")||(s+="/signalk/");try{console.log("[Connection Service] Connecting to: "+this.signalKURL.url);let c=yield de(this.http.get(s,{observe:"response"}).pipe(xi(this.TIMEOUT_DURATION),Nt(_=>(_.name==="TimeoutError"&&console.error("[Connection Service] Connection request timed out after "+this.TIMEOUT_DURATION+"ms"),bi(_)))));console.debug("[Connection Service] Signal K HTTP Endpoints retrieved"),this.serverVersion$.next(c.body.server.version);let m=c.body.endpoints.v1["signalk-http"],b=c.body.endpoints.v1["signalk-ws"];r?(console.debug("[Connection Service] Proxy Mode Enabled"),n.httpServiceUrl=window.location.origin+new URL(m).pathname,n.WsServiceUrl=(window.location.protocol=="https:"?"wss://":"ws://")+window.location.host+new URL(b).pathname):(n.httpServiceUrl=m,n.WsServiceUrl=b),console.debug("[Connection Service] HTTP URI: "+n.httpServiceUrl),console.debug("[Connection Service] WebSocket URI: "+n.WsServiceUrl),n.operation=2,n.message=c.status.toString(),n.serverDescription=`${c.body.server.id} ${c.body.server.version}`}catch(c){n.operation=3,n.message=c.message,this.handleError(c)}finally{o?n.subscribeAll=!0:n.subscribeAll=!1,this.serverServiceEndpoint$.next(n)}})}handleError(e){let r=e.status===0?`[Connection Service] ${e.name}: ${e.message}`:`[Connection Service] Backend returned code ${e.status}, body was: ${e.error}`;throw console.error(r),e}getServiceEndpointStatusAsO(){return this.serverServiceEndpoint$.asObservable()}setServerInfo(e,r,o){this.serverName=e,this.serverRoles=o,console.log(`[Connection Service] Server Name: ${e}, Version: ${r}, Roles: ${JSON.stringify(o)}`)}get skServerName(){return this.serverName}get skServerVersion(){return this.serverVersion$.getValue()}get skServerRoles(){return this.serverRoles}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var xs=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Or=t=>{if(typeof t!="string")throw new TypeError("Invalid argument expected string");let i=t.match(xs);if(!i)throw new Error(`Invalid argument not valid semver ('${t}' received)`);return i.shift(),i},ro=t=>t==="*"||t==="x"||t==="X",io=t=>{let i=parseInt(t,10);return isNaN(i)?t:i},vs=(t,i)=>typeof t!=typeof i?[String(t),String(i)]:[t,i],_s=(t,i)=>{if(ro(t)||ro(i))return 0;let[e,r]=vs(io(t),io(i));return e>r?1:e<r?-1:0},Ir=(t,i)=>{for(let e=0;e<Math.max(t.length,i.length);e++){let r=_s(t[e]||"0",i[e]||"0");if(r!==0)return r}return 0};var oo=(t,i)=>{let e=Or(t),r=Or(i),o=e.pop(),n=r.pop(),s=Ir(e,r);return s!==0?s:o&&n?Ir(o.split("."),n.split(".")):o||n?o?-1:1:0};var Rr=(t,i,e)=>{ys(e);let r=oo(t,i);return no[e].includes(r)},no={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},ao=Object.keys(no),ys=t=>{if(typeof t!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof t}`);if(ao.indexOf(t)===-1)throw new Error(`Invalid operator, expected one of ${ao.join("|")}`)};var so=(()=>{class t{server=g(Ye);http=g(Ke);serverEndpoint=null;isAppDataSupported=!1;configFileVersion=null;sharedConfigName;InitConfig=null;storageServiceReady$=new T;patchQueue$=new T;patch=function(e){return this.http.post(e.url,e.document).pipe(Mi(r=>console.log("[Storage Service] Remote config patch request completed successfully")),Nt(r=>this.handleError(r)))};constructor(){let e=this.server;e.serverServiceEndpoint$.subscribe(r=>{r.httpServiceUrl!==null&&(this.serverEndpoint=r.httpServiceUrl.substring(0,r.httpServiceUrl.length-4)+"applicationData/",console.log("[Storage Service] Service startup. AppData API set to: "+this.serverEndpoint)),r.operation===2?this.storageServiceReady$.next(!0):this.storageServiceReady$.next(!1)}),e.serverVersion$.subscribe(r=>{r&&(this.isAppDataSupported=Rr(r,"1.27.0",">="))}),this.patchQueue$.pipe(Si(r=>this.patch(r))).subscribe(r=>{})}listConfigs(e){return ie(this,null,function*(){let r=[];if(!this.serverEndpoint)return console.warn("[Storage Service] No server endpoint set. Cannot retrieve config list"),null;let o=this.serverEndpoint,n=o+"global/kip/"+this.configFileVersion+"/?keys=true",s=o+"user/kip/"+this.configFileVersion+"/?keys=true";return e&&(n=o+"global/kip/"+e+"/?keys=true",s=o+"user/kip/"+e+"/?keys=true"),yield de(this.http.get(n)).then(c=>{for(let m of c)r.push({scope:"global",name:m});console.log("[Storage Service] Retrieved Global config list")}).catch(c=>{this.handleError(c)}),yield de(this.http.get(s)).then(c=>{for(let m of c)r.push({scope:"user",name:m});console.log("[Storage Service] Retrieved User config list")}).catch(c=>{this.handleError(c)}),r})}getConfig(e,r,o,n){return ie(this,null,function*(){let s=null,c=this.serverEndpoint+e+"/kip/"+this.configFileVersion+"/"+r;return o&&(c=this.serverEndpoint+e+"/kip/"+o+"/"+r),yield de(this.http.get(c)).then(m=>{s=m,console.log(`[Storage Service] Retrieved config [${r}] from [${e}] scope`),n&&(this.InitConfig=m)}).catch(m=>{this.handleError(m)}),s})}setConfig(e,r,o,n){return ie(this,null,function*(){let s=this.serverEndpoint+e+"/kip/"+this.configFileVersion+"/"+r,c;return n&&(s=this.serverEndpoint+e+"/kip/"+n+"/"+r),yield de(this.http.post(s,o)).then(m=>{console.log(`[Storage Service] Saved config [${r}] to [${e}] scope`),c=m}).catch(m=>{this.handleError(m)}),c})}patchConfig(e,r,o){let n=this.serverEndpoint+"user/kip/"+this.configFileVersion,s;switch(o&&(n=this.serverEndpoint+"user/kip/"+o),e){case"IAppConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/app`,value:r}];break;case"IThemeConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/theme/themeName`,value:r.themeName}];break;case"IWidgetConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/widget`,value:r}];break;case"ILayoutConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/layout`,value:r}];break;case"Dashboards":s=[{op:"replace",path:`/${this.sharedConfigName}/dashboards`,value:r}];break;case"Array<IUnitDefaults>":s=[{op:"replace",path:`/${this.sharedConfigName}/app/unitDefaults`,value:r}];break;case"Array<IDatasetDef>":s=[{op:"replace",path:`/${this.sharedConfigName}/app/dataSets`,value:r}];break;case"INotificationConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/app/notificationConfig`,value:r}];break;default:console.warn("[Storage Service] JSON Patch request type unknown");break}let c={url:n,document:s};this.patchQueue$.next(c)}patchGlobal(e,r,o,n,s){let c=this.serverEndpoint+r+"/kip/"+this.configFileVersion;s&&(c=this.serverEndpoint+r+"/kip/"+s);let m;switch(n){case"add":m=[{op:"add",path:`/${e}`,value:o}];break;case"replace":m=[{op:"replace",path:`/${e}`,value:o}];break;case"remove":m=[{op:"remove",path:`/${e}`,value:o}];break;default:console.warn("[Storage Service] JSON Patch operation request type unknown");break}let b={url:c,document:m};this.patchQueue$.next(b)}removeItem(e,r,o){let n=this.serverEndpoint+e+"/kip/"+this.configFileVersion;o&&(n=this.serverEndpoint+e+"/kip/"+o);let s=[{op:"remove",path:`/${r}`}],c={url:n,document:s};this.patchQueue$.next(c)}clear(){}set activeConfigFileVersion(e){this.configFileVersion=e}handleError(e){throw e.status===0?console.error("[Storage Service] An error occurred:",e.error):console.error("[Storage Service] Backend returned error: ",e.message),e}get initConfig(){return this.InitConfig}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Te=class{static create(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(i){let e=Math.random()*16|0;return(i=="x"?e:e&3|8).toString(16)})}};var St={disableNotifications:!1,menuGrouping:!0,security:{disableSecurity:!0},devices:{disableDevices:!1,showNormalState:!1,showNominalState:!1},sound:{disableSound:!1,muteNormal:!0,muteNominal:!0,muteWarn:!0,muteAlert:!1,muteAlarm:!1,muteEmergency:!1}};var Ut={Unitless:"unitless",Speed:"knots",Flow:"l/h",Temperature:"celsius",Length:"m",Volume:"liter",Current:"A",Potential:"V",Charge:"C",Power:"W",Energy:"J",Pressure:"mmHg","Fuel Distance":"nm/l","Energy Distance":"nm/kWh",Density:"kg/m3",Time:"Hours","Angular Velocity":"deg/min",Angle:"deg",Frequency:"Hz",Ratio:"ratio",Resistance:"ohm"};var lo={configVersion:11,autoNightMode:!1,redNightMode:!1,nightModeBrightness:.27,dataSets:[],unitDefaults:Ut,notificationConfig:St},co={themeName:""};var fo={configVersion:11,kipUUID:Te.create(),signalKUrl:null,proxyEnabled:!1,signalKSubscribeAll:!1,useDeviceToken:!1,loginName:null,loginPassword:null,useSharedConfig:!1,sharedConfigName:"default"};var Nr={configVersion:11,autoNightMode:!1,redNightMode:!1,nightModeBrightness:.27,dataSets:[{uuid:"afbe4e41-26f5-404f-a55d-9f7b9b76fbd1",path:"self.environment.wind.speedApparent",pathSource:"default",period:1,baseUnit:"m/s",label:"self.environment.wind.speedApparent, Source: default, Scale: minute, Period: 1",timeScaleFormat:"minute"}],unitDefaults:{Unitless:"unitless",Speed:"knots",Flow:"l/h",Temperature:"celsius",Length:"m",Volume:"liter",Current:"A",Potential:"V",Charge:"C",Power:"W",Energy:"J",Pressure:"mmHg","Fuel Distance":"nm/l","Energy Distance":"nm/kWh",Density:"kg/m3",Time:"Hours","Angular Velocity":"deg/min",Angle:"deg",Frequency:"Hz",Ratio:"ratio",Resistance:"ohm"},notificationConfig:{disableNotifications:!1,menuGrouping:!0,security:{disableSecurity:!0},devices:{disableDevices:!1,showNormalState:!1,showNominalState:!1},sound:{disableSound:!1,muteNormal:!0,muteNominal:!0,muteWarn:!0,muteAlert:!1,muteAlarm:!1,muteEmergency:!1}}},Ur=[{id:"3e0825ee-95fd-4ad4-8802-e0507845b668",name:"Sailing",configuration:[{w:3,h:4,id:"339698a7-2cff-4ab9-9b50-d8056f971471",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"339698a7-2cff-4ab9-9b50-d8056f971471",config:{displayName:"Depth",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.environment.depth.belowTransducer",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,color:"yellow",enableTimeout:!1,dataTimeout:5}}},x:0,y:0},{w:5,h:10,id:"a44028e0-dfee-4492-895b-2b03a60f3a69",selector:"widget-wind-steer",input:{widgetProperties:{type:"widget-wind-steer",uuid:"a44028e0-dfee-4492-895b-2b03a60f3a69",config:{filterSelfPaths:!0,paths:{headingPath:{description:"Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},courseOverGround:{description:"Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}},x:3,y:0},{w:4,h:6,id:"24406c15-7738-4dc1-a206-7a4862c2931d",selector:"widget-gauge-ng-radial",input:{widgetProperties:{type:"widget-gauge-ng-radial",uuid:"24406c15-7738-4dc1-a206-7a4862c2931d",config:{displayName:"SOG",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.navigation.speedOverGround",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"knots",sampleTime:500}},displayScale:{lower:0,upper:10,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1},numInt:1,numDecimal:1,enableTimeout:!1,color:"yellow",dataTimeout:5}}},x:8,y:0},{w:3,h:4,id:"c6bcaa53-afa1-42c7-ad92-d5f7dba14734",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"c6bcaa53-afa1-42c7-ad92-d5f7dba14734",config:{displayName:"STW",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.navigation.speedThroughWater",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"knots",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!0,showMin:!0,numDecimal:1,numInt:1,color:"contrast",enableTimeout:!1,dataTimeout:5}}},x:0,y:4},{w:4,h:6,id:"973c8804-be09-4923-bb5d-48c13b65db69",selector:"widget-data-chart",input:{widgetProperties:{type:"widget-data-chart",uuid:"973c8804-be09-4923-bb5d-48c13b65db69",config:{displayName:"Chart Label",filterSelfPaths:!0,convertUnitTo:"knots",datasetUUID:"afbe4e41-26f5-404f-a55d-9f7b9b76fbd1",invertData:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!1,showTimeScale:!0,startScaleAtZero:!1,verticalGraph:!1,showYScale:!0,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null,numDecimal:1,color:"green"}}},x:8,y:6},{w:3,h:4,id:"05414722-733a-4483-89b0-07f3945ffd97",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"05414722-733a-4483-89b0-07f3945ffd97",config:{displayName:"Engine Room",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.environment.inside.engineRoom.temperature",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"celsius",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,color:"blue",enableTimeout:!1,dataTimeout:5}}},x:0,y:8},{w:5,h:2,id:"1a7a3f79-2eb4-4092-a0c3-9a61db8a8586",selector:"widget-simple-linear",input:{widgetProperties:{type:"widget-simple-linear",uuid:"1a7a3f79-2eb4-4092-a0c3-9a61db8a8586",config:{displayName:"House Bank",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.electrical.batteries.0.voltage",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,color:"green",enableTimeout:!1,dataTimeout:5}}},x:3,y:10}]},{id:"7c67c8c5-dc55-4e1d-9fc5-3dd95fd41bea",name:"Charting",configuration:[{x:0,y:0,w:8,h:12,id:"488d620a-37d4-4b98-849d-304cd18003e9",selector:"widget-freeboardsk",input:{widgetProperties:{type:"widget-freeboardsk",uuid:"488d620a-37d4-4b98-849d-304cd18003e9"}}},{x:8,y:0,w:2,h:3,id:"26a2a150-5af8-4f1d-aaab-0cb2a406fc17",selector:"widget-gauge-ng-compass",input:{widgetProperties:{type:"widget-gauge-ng-compass",uuid:"26a2a150-5af8-4f1d-aaab-0cb2a406fc17",config:{displayName:"COG (T)",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",isConvertUnitToConfigurable:!1,convertUnitTo:"deg",sampleTime:500}},gauge:{type:"ngRadial",subType:"marineCompass",enableTicks:!0,compassUseNumbers:!0,showValueBox:!1},enableTimeout:!1,color:"purple",dataTimeout:5}}}},{x:10,y:0,w:2,h:3,id:"caf9ca47-fcf6-4736-a314-2b5210edaf03",selector:"widget-datetime",input:{widgetProperties:{type:"widget-datetime",uuid:"caf9ca47-fcf6-4736-a314-2b5210edaf03",config:{displayName:"Next WP Arrival",filterSelfPaths:!0,paths:{gaugePath:{description:"String Data",path:"self.navigation.datetime",source:"default",pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"dd/MM HH:mm",dateTimezone:"America/Toronto",color:"contrast",enableTimeout:!1,dataTimeout:5}}}},{x:8,y:3,w:4,h:9,id:"daa21350-009e-4d99-8209-364f9b99caee",selector:"widget-autopilot",input:{widgetProperties:{type:"widget-autopilot",uuid:"daa21350-009e-4d99-8209-364f9b99caee",config:{displayName:"N2k Autopilot",filterSelfPaths:!0,paths:{apState:{description:"Autopilot State",path:"self.steering.autopilot.state",source:"default",pathType:"string",isPathConfigurable:!0,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},apTargetHeadingMag:{description:"Autopilot Target Heading Mag",path:"self.steering.autopilot.target.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},apTargetWindAngleApp:{description:"Autopilot Target Wind Angle Apparent",path:"self.steering.autopilot.target.windAngleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},headingMag:{description:"Heading Magnetic",path:"self.navigation.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},headingTrue:{description:"Heading True",path:"self.navigation.headingTrue",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},windAngleApparent:{description:"Wind Angle Apparent",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},windAngleTrueWater:{description:"Wind Angle True Water",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},rudderAngle:{description:"Rudder Angle",path:"self.steering.rudderAngle",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500}},usage:{headingMag:["wind","route","auto","standby"],headingTrue:["wind","route","auto","standby"],windAngleApparent:["wind"],windAngleTrueWater:["wind"]},typeVal:{headingMag:"Mag",headingTrue:"True",windAngleApparent:"AWA",windAngleTrueWater:"TWA"},barColor:"accent",autoStart:!1,enableTimeout:!1,dataTimeout:5}}}}]}],Pr={themeName:""};var vp={configVersion:11,kipUUID:Te.create(),signalKUrl:"https://demo.signalk.org",proxyEnabled:!1,signalKSubscribeAll:!1,useDeviceToken:!1,loginName:null,loginPassword:null,useSharedConfig:!1,sharedConfigName:"default"};var Ss="",ws=11,wt=11,Mp=(()=>{class t{storage=g(so);unitDefaults=new D({});themeName=new D(Ss);kipKNotificationConfig=new D(St);autoNightMode=new D(!1);redNightMode=new D(!1);nightModeBrightness=new D(1);proxyEnabled=!1;signalKSubscribeAll=!1;useDeviceToken=!1;loginName;loginPassword;useSharedConfig;sharedConfigName;activeConfig={app:null,theme:null,dashboards:null};kipUUID;signalkUrl;widgets;_dashboards=[];dataSets=[];configUpgrade=ht(!1);constructor(){if(console.log("[AppSettings Service] Service startup..."),this.storage.activeConfigFileVersion=ws,!window.localStorage)console.error(`[AppSettings Service] LocalStorage NOT SUPPORTED by browser
|
|
1
|
+
import{$a as Ni,$b as ce,$c as Er,$e as Xi,A as vi,Bc as $i,Ca as Tr,Cc as Ar,Da as Fi,Db as Li,Dc as Bi,Ea as Oi,Ec as Wi,Ed as Ke,Fa as Ii,H as _i,Hb as bt,Ib as We,J as yi,Jb as ae,K as $e,Ka as Cr,L as Nt,Lc as Hi,M as Si,Ma as ye,Nb as W,Nd as Gi,Oc as qe,Od as Ge,Pa as G,Sd as Mr,T as wi,Ta as Se,U as Ti,Ua as Ri,Va as ht,Vc as Vi,Vd as Qi,Xc as qi,Yb as xt,Z as Ci,Zb as He,Ze as Yi,_ as ki,_d as Ji,bd as yt,cd as Dr,d as gs,da as Ai,db as Ui,dc as H,de as Qe,e as bs,ef as eo,f as ie,fa as Ei,g as It,ga as Di,h as pi,ha as Ue,ia as Mi,ic as V,j as Re,jc as Q,kc as Pe,ke as Zi,la as wr,le as Je,lf as to,m as T,me as Fr,n as hi,ne as Ze,o as D,oa as I,oc as ji,p as Ne,pa as Be,pc as vt,qc as _t,r as gi,ra as oe,rc as we,sc as kr,t as Rt,tc as ne,td as Ki,u as bi,ua as g,ub as L,vc as Ve,wc as fe,x as de,xb as Pi,xc as z,y as xi,yb as gt,yc as $,z as ze,zc as zi}from"./chunk-Y7X77HSW.js";var yn=gs((Vr,qr)=>{(function(t,i){typeof Vr=="object"&&typeof qr<"u"?qr.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self,t.Qty=i())})(Vr,function(){"use strict";function t(a){return typeof a=="string"||a instanceof String}var i=Number.isFinite||window.isFinite;function e(a){return i(a)}function r(a){return a}function o(a){var l={};return a.filter(function(d){return l.hasOwnProperty(d)?!1:l[d]=!0})}function n(a,l){if(l.length!==a.length)return!1;for(var d=0;d<a.length;d++)if(l[d].compareArray&&!l[d].compareArray(a[d])||l[d]!==a[d])return!1;return!0}function s(a,l){Object.keys(l).forEach(function(d){a[d]=l[d]})}function c(){for(var a=1,l=0,d=0;d<arguments.length;d++){var f=arguments[d];l=l+_(f),a*=f}return l!==0?b(a,l):a}function m(a,l){if(l===0)throw new Error("Divide by zero");var d=Math.pow(10,_(l)),f=d/(d*l);return c(a,f)}function b(a,l){return Math.round(a*Math.pow(10,l))/Math.pow(10,l)}function _(a){if(!isFinite(a))return 0;for(var l=0;a%1!==0;)a*=10,l++;return l}function u(){var a;if(!this)return a=Object.create(u.prototype),u.apply(a,arguments),a;a=Error.apply(this,arguments),this.name="QtyError",this.message=a.message,this.stack=a.stack}u.prototype=Object.create(Error.prototype,{constructor:{value:u}});function v(a,l){throw new u("Incompatible units: "+a+" and "+l)}var y={"<googol>":[["googol"],1e100,"prefix"],"<kibi>":[["Ki","Kibi","kibi"],Math.pow(2,10),"prefix"],"<mebi>":[["Mi","Mebi","mebi"],Math.pow(2,20),"prefix"],"<gibi>":[["Gi","Gibi","gibi"],Math.pow(2,30),"prefix"],"<tebi>":[["Ti","Tebi","tebi"],Math.pow(2,40),"prefix"],"<pebi>":[["Pi","Pebi","pebi"],Math.pow(2,50),"prefix"],"<exi>":[["Ei","Exi","exi"],Math.pow(2,60),"prefix"],"<zebi>":[["Zi","Zebi","zebi"],Math.pow(2,70),"prefix"],"<yebi>":[["Yi","Yebi","yebi"],Math.pow(2,80),"prefix"],"<yotta>":[["Y","Yotta","yotta"],1e24,"prefix"],"<zetta>":[["Z","Zetta","zetta"],1e21,"prefix"],"<exa>":[["E","Exa","exa"],1e18,"prefix"],"<peta>":[["P","Peta","peta"],1e15,"prefix"],"<tera>":[["T","Tera","tera"],1e12,"prefix"],"<giga>":[["G","Giga","giga"],1e9,"prefix"],"<mega>":[["M","Mega","mega"],1e6,"prefix"],"<kilo>":[["k","kilo"],1e3,"prefix"],"<hecto>":[["h","Hecto","hecto"],100,"prefix"],"<deca>":[["da","Deca","deca","deka"],10,"prefix"],"<deci>":[["d","Deci","deci"],.1,"prefix"],"<centi>":[["c","Centi","centi"],.01,"prefix"],"<milli>":[["m","Milli","milli"],.001,"prefix"],"<micro>":[["u","\u03BC","\xB5","Micro","mc","micro"],1e-6,"prefix"],"<nano>":[["n","Nano","nano"],1e-9,"prefix"],"<pico>":[["p","Pico","pico"],1e-12,"prefix"],"<femto>":[["f","Femto","femto"],1e-15,"prefix"],"<atto>":[["a","Atto","atto"],1e-18,"prefix"],"<zepto>":[["z","Zepto","zepto"],1e-21,"prefix"],"<yocto>":[["y","Yocto","yocto"],1e-24,"prefix"],"<1>":[["1","<1>"],1,""],"<meter>":[["m","meter","meters","metre","metres"],1,"length",["<meter>"]],"<inch>":[["in","inch","inches",'"'],.0254,"length",["<meter>"]],"<foot>":[["ft","foot","feet","'"],.3048,"length",["<meter>"]],"<yard>":[["yd","yard","yards"],.9144,"length",["<meter>"]],"<mile>":[["mi","mile","miles"],1609.344,"length",["<meter>"]],"<naut-mile>":[["nmi","naut-mile"],1852,"length",["<meter>"]],"<league>":[["league","leagues"],4828,"length",["<meter>"]],"<furlong>":[["furlong","furlongs"],201.2,"length",["<meter>"]],"<rod>":[["rd","rod","rods"],5.029,"length",["<meter>"]],"<mil>":[["mil","mils"],254e-7,"length",["<meter>"]],"<angstrom>":[["ang","angstrom","angstroms"],1e-10,"length",["<meter>"]],"<fathom>":[["fathom","fathoms"],1.829,"length",["<meter>"]],"<pica>":[["pica","picas"],.00423333333,"length",["<meter>"]],"<point>":[["pt","point","points"],.000352777778,"length",["<meter>"]],"<redshift>":[["z","red-shift","redshift"],1302773e20,"length",["<meter>"]],"<AU>":[["AU","astronomical-unit"],1495979e5,"length",["<meter>"]],"<light-second>":[["ls","light-second"],299792500,"length",["<meter>"]],"<light-minute>":[["lmin","light-minute"],1798755e4,"length",["<meter>"]],"<light-year>":[["ly","light-year"],9460528e9,"length",["<meter>"]],"<parsec>":[["pc","parsec","parsecs"],3085678e10,"length",["<meter>"]],"<datamile>":[["DM","datamile"],1828.8,"length",["<meter>"]],"<kilogram>":[["kg","kilogram","kilograms"],1,"mass",["<kilogram>"]],"<AMU>":[["u","AMU","amu"],1660538921e-36,"mass",["<kilogram>"]],"<dalton>":[["Da","Dalton","Daltons","dalton","daltons"],1660538921e-36,"mass",["<kilogram>"]],"<slug>":[["slug","slugs"],14.5939029,"mass",["<kilogram>"]],"<short-ton>":[["tn","ton","short-ton"],907.18474,"mass",["<kilogram>"]],"<metric-ton>":[["t","tonne","metric-ton"],1e3,"mass",["<kilogram>"]],"<carat>":[["ct","carat","carats"],2e-4,"mass",["<kilogram>"]],"<pound>":[["lbs","lb","pound","pounds","#"],.45359237,"mass",["<kilogram>"]],"<ounce>":[["oz","ounce","ounces"],.0283495231,"mass",["<kilogram>"]],"<gram>":[["g","gram","grams","gramme","grammes"],.001,"mass",["<kilogram>"]],"<grain>":[["grain","grains","gr"],6479891e-11,"mass",["<kilogram>"]],"<dram>":[["dram","drams","dr"],.0017718452,"mass",["<kilogram>"]],"<stone>":[["stone","stones","st"],6.35029318,"mass",["<kilogram>"]],"<hectare>":[["hectare"],1e4,"area",["<meter>","<meter>"]],"<acre>":[["acre","acres"],4046.85642,"area",["<meter>","<meter>"]],"<sqft>":[["sqft"],1,"area",["<foot>","<foot>"]],"<liter>":[["l","L","liter","liters","litre","litres"],.001,"volume",["<meter>","<meter>","<meter>"]],"<gallon>":[["gal","gallon","gallons"],.0037854118,"volume",["<meter>","<meter>","<meter>"]],"<gallon-imp>":[["galimp","gallon-imp","gallons-imp"],.00454609,"volume",["<meter>","<meter>","<meter>"]],"<quart>":[["qt","quart","quarts"],.00094635295,"volume",["<meter>","<meter>","<meter>"]],"<pint>":[["pt","pint","pints"],.000473176475,"volume",["<meter>","<meter>","<meter>"]],"<pint-imp>":[["ptimp","pint-imp","pints-imp"],.00056826125,"volume",["<meter>","<meter>","<meter>"]],"<cup>":[["cu","cup","cups"],.000236588238,"volume",["<meter>","<meter>","<meter>"]],"<fluid-ounce>":[["floz","fluid-ounce","fluid-ounces"],295735297e-13,"volume",["<meter>","<meter>","<meter>"]],"<fluid-ounce-imp>":[["flozimp","floz-imp","fluid-ounce-imp","fluid-ounces-imp"],284130625e-13,"volume",["<meter>","<meter>","<meter>"]],"<tablespoon>":[["tb","tbsp","tbs","tablespoon","tablespoons"],147867648e-13,"volume",["<meter>","<meter>","<meter>"]],"<teaspoon>":[["tsp","teaspoon","teaspoons"],492892161e-14,"volume",["<meter>","<meter>","<meter>"]],"<bushel>":[["bu","bsh","bushel","bushels"],.035239072,"volume",["<meter>","<meter>","<meter>"]],"<oilbarrel>":[["bbl","oilbarrel","oilbarrels","oil-barrel","oil-barrels"],.158987294928,"volume",["<meter>","<meter>","<meter>"]],"<beerbarrel>":[["bl","bl-us","beerbarrel","beerbarrels","beer-barrel","beer-barrels"],.1173477658,"volume",["<meter>","<meter>","<meter>"]],"<beerbarrel-imp>":[["blimp","bl-imp","beerbarrel-imp","beerbarrels-imp","beer-barrel-imp","beer-barrels-imp"],.16365924,"volume",["<meter>","<meter>","<meter>"]],"<kph>":[["kph"],.277777778,"speed",["<meter>"],["<second>"]],"<mph>":[["mph"],.44704,"speed",["<meter>"],["<second>"]],"<knot>":[["kt","kn","kts","knot","knots"],.514444444,"speed",["<meter>"],["<second>"]],"<fps>":[["fps"],.3048,"speed",["<meter>"],["<second>"]],"<gee>":[["gee"],9.80665,"acceleration",["<meter>"],["<second>","<second>"]],"<Gal>":[["Gal"],.01,"acceleration",["<meter>"],["<second>","<second>"]],"<kelvin>":[["degK","kelvin"],1,"temperature",["<kelvin>"]],"<celsius>":[["degC","celsius","celsius","centigrade"],1,"temperature",["<kelvin>"]],"<fahrenheit>":[["degF","fahrenheit"],5/9,"temperature",["<kelvin>"]],"<rankine>":[["degR","rankine"],5/9,"temperature",["<kelvin>"]],"<temp-K>":[["tempK","temp-K"],1,"temperature",["<temp-K>"]],"<temp-C>":[["tempC","temp-C"],1,"temperature",["<temp-K>"]],"<temp-F>":[["tempF","temp-F"],5/9,"temperature",["<temp-K>"]],"<temp-R>":[["tempR","temp-R"],5/9,"temperature",["<temp-K>"]],"<second>":[["s","sec","secs","second","seconds"],1,"time",["<second>"]],"<minute>":[["min","mins","minute","minutes"],60,"time",["<second>"]],"<hour>":[["h","hr","hrs","hour","hours"],3600,"time",["<second>"]],"<day>":[["d","day","days"],3600*24,"time",["<second>"]],"<week>":[["wk","week","weeks"],7*3600*24,"time",["<second>"]],"<fortnight>":[["fortnight","fortnights"],1209600,"time",["<second>"]],"<year>":[["y","yr","year","years","annum"],31556926,"time",["<second>"]],"<decade>":[["decade","decades"],315569260,"time",["<second>"]],"<century>":[["century","centuries"],3155692600,"time",["<second>"]],"<pascal>":[["Pa","pascal","Pascal"],1,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<bar>":[["bar","bars"],1e5,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<mmHg>":[["mmHg"],133.322368,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<inHg>":[["inHg"],3386.3881472,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<torr>":[["torr"],133.322368,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<atm>":[["atm","ATM","atmosphere","atmospheres"],101325,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<psi>":[["psi"],6894.76,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<cmh2o>":[["cmH2O","cmh2o"],98.0638,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<inh2o>":[["inH2O","inh2o"],249.082052,"pressure",["<kilogram>"],["<meter>","<second>","<second>"]],"<poise>":[["P","poise"],.1,"viscosity",["<kilogram>"],["<meter>","<second>"]],"<stokes>":[["St","stokes"],1e-4,"viscosity",["<meter>","<meter>"],["<second>"]],"<mole>":[["mol","mole"],1,"substance",["<mole>"]],"<molar>":[["M","molar"],1e3,"molar_concentration",["<mole>"],["<meter>","<meter>","<meter>"]],"<wtpercent>":[["wt%","wtpercent"],10,"molar_concentration",["<kilogram>"],["<meter>","<meter>","<meter>"]],"<katal>":[["kat","katal","Katal"],1,"activity",["<mole>"],["<second>"]],"<unit>":[["U","enzUnit","unit"],16667e-19,"activity",["<mole>"],["<second>"]],"<farad>":[["F","farad","Farad"],1,"capacitance",["<second>","<second>","<second>","<second>","<ampere>","<ampere>"],["<meter>","<meter>","<kilogram>"]],"<coulomb>":[["C","coulomb","Coulomb"],1,"charge",["<ampere>","<second>"]],"<Ah>":[["Ah"],3600,"charge",["<ampere>","<second>"]],"<ampere>":[["A","Ampere","ampere","amp","amps"],1,"current",["<ampere>"]],"<siemens>":[["S","Siemens","siemens"],1,"conductance",["<second>","<second>","<second>","<ampere>","<ampere>"],["<kilogram>","<meter>","<meter>"]],"<henry>":[["H","Henry","henry"],1,"inductance",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>","<ampere>"]],"<volt>":[["V","Volt","volt","volts"],1,"potential",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<second>","<ampere>"]],"<ohm>":[["Ohm","ohm","\u03A9","\u2126"],1,"resistance",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<second>","<ampere>","<ampere>"]],"<weber>":[["Wb","weber","webers"],1,"magnetism",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>"]],"<tesla>":[["T","tesla","teslas"],1,"magnetism",["<kilogram>"],["<second>","<second>","<ampere>"]],"<gauss>":[["G","gauss"],1e-4,"magnetism",["<kilogram>"],["<second>","<second>","<ampere>"]],"<maxwell>":[["Mx","maxwell","maxwells"],1e-8,"magnetism",["<meter>","<meter>","<kilogram>"],["<second>","<second>","<ampere>"]],"<oersted>":[["Oe","oersted","oersteds"],250/Math.PI,"magnetism",["<ampere>"],["<meter>"]],"<joule>":[["J","joule","Joule","joules","Joules"],1,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<erg>":[["erg","ergs"],1e-7,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<btu>":[["BTU","btu","BTUs"],1055.056,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<calorie>":[["cal","calorie","calories"],4.184,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<Calorie>":[["Cal","Calorie","Calories"],4184,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<therm-US>":[["th","therm","therms","Therm","therm-US"],105480400,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<Wh>":[["Wh"],3600,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<electronvolt>":[["eV","electronvolt","electronvolts"],1602176634e-28,"energy",["<meter>","<meter>","<kilogram>"],["<second>","<second>"]],"<newton>":[["N","Newton","newton"],1,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<dyne>":[["dyn","dyne"],1e-5,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<pound-force>":[["lbf","pound-force"],4.448222,"force",["<kilogram>","<meter>"],["<second>","<second>"]],"<hertz>":[["Hz","hertz","Hertz"],1,"frequency",["<1>"],["<second>"]],"<radian>":[["rad","radian","radians"],1,"angle",["<radian>"]],"<degree>":[["deg","degree","degrees"],Math.PI/180,"angle",["<radian>"]],"<arcminute>":[["arcmin","arcminute","arcminutes"],Math.PI/10800,"angle",["<radian>"]],"<arcsecond>":[["arcsec","arcsecond","arcseconds"],Math.PI/648e3,"angle",["<radian>"]],"<gradian>":[["gon","grad","gradian","grads"],Math.PI/200,"angle",["<radian>"]],"<steradian>":[["sr","steradian","steradians"],1,"solid_angle",["<steradian>"]],"<rotation>":[["rotation"],2*Math.PI,"angle",["<radian>"]],"<rpm>":[["rpm"],2*Math.PI/60,"angular_velocity",["<radian>"],["<second>"]],"<byte>":[["B","byte","bytes"],1,"information",["<byte>"]],"<bit>":[["b","bit","bits"],.125,"information",["<byte>"]],"<Bps>":[["Bps"],1,"information_rate",["<byte>"],["<second>"]],"<bps>":[["bps"],.125,"information_rate",["<byte>"],["<second>"]],"<dollar>":[["USD","dollar"],1,"currency",["<dollar>"]],"<cents>":[["cents"],.01,"currency",["<dollar>"]],"<candela>":[["cd","candela"],1,"luminosity",["<candela>"]],"<lumen>":[["lm","lumen"],1,"luminous_power",["<candela>","<steradian>"]],"<lux>":[["lux"],1,"illuminance",["<candela>","<steradian>"],["<meter>","<meter>"]],"<watt>":[["W","watt","watts"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<volt-ampere>":[["VA","volt-ampere"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<volt-ampere-reactive>":[["var","Var","VAr","VAR","volt-ampere-reactive"],1,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<horsepower>":[["hp","horsepower"],745.699872,"power",["<kilogram>","<meter>","<meter>"],["<second>","<second>","<second>"]],"<gray>":[["Gy","gray","grays"],1,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<roentgen>":[["R","roentgen"],.00933,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<sievert>":[["Sv","sievert","sieverts"],1,"radiation",["<meter>","<meter>"],["<second>","<second>"]],"<becquerel>":[["Bq","becquerel","becquerels"],1,"radiation",["<1>"],["<second>"]],"<curie>":[["Ci","curie","curies"],37e9,"radiation",["<1>"],["<second>"]],"<cpm>":[["cpm"],1/60,"rate",["<count>"],["<second>"]],"<dpm>":[["dpm"],1/60,"rate",["<count>"],["<second>"]],"<bpm>":[["bpm"],1/60,"rate",["<count>"],["<second>"]],"<dot>":[["dot","dots"],1,"resolution",["<each>"]],"<pixel>":[["pixel","px"],1,"resolution",["<each>"]],"<ppi>":[["ppi"],1,"resolution",["<pixel>"],["<inch>"]],"<dpi>":[["dpi"],1,"typography",["<dot>"],["<inch>"]],"<cell>":[["cells","cell"],1,"counting",["<each>"]],"<each>":[["each"],1,"counting",["<each>"]],"<count>":[["count"],1,"counting",["<each>"]],"<base-pair>":[["bp","base-pair"],1,"counting",["<each>"]],"<nucleotide>":[["nt","nucleotide"],1,"counting",["<each>"]],"<molecule>":[["molecule","molecules"],1,"counting",["<1>"]],"<dozen>":[["doz","dz","dozen"],12,"prefix_only",["<each>"]],"<percent>":[["%","percent"],.01,"prefix_only",["<1>"]],"<ppm>":[["ppm"],1e-6,"prefix_only",["<1>"]],"<ppb>":[["ppb"],1e-9,"prefix_only",["<1>"]],"<ppt>":[["ppt"],1e-12,"prefix_only",["<1>"]],"<ppq>":[["ppq"],1e-15,"prefix_only",["<1>"]],"<gross>":[["gr","gross"],144,"prefix_only",["<dozen>","<dozen>"]],"<decibel>":[["dB","decibel","decibels"],1,"logarithmic",["<decibel>"]]},w=["<meter>","<kilogram>","<second>","<mole>","<ampere>","<radian>","<kelvin>","<temp-K>","<byte>","<dollar>","<candela>","<each>","<steradian>","<decibel>"],E="<1>",S=[E];function R(a,l){var d=l[1],f=l[3]||[],p=l[4]||[];if(!e(d))throw new u(a+": Invalid unit definition. 'scalar' must be a number");f.forEach(function(h){if(y[h]===void 0)throw new u(a+": Invalid unit definition. Unit "+h+" in 'numerator' is not recognized")}),p.forEach(function(h){if(y[h]===void 0)throw new u(a+": Invalid unit definition. Unit "+h+" in 'denominator' is not recognized")})}var N={},Fe={},F={},X={},Mt={};for(var _e in y)if(y.hasOwnProperty(_e)){var ee=y[_e];if(ee[2]==="prefix"){N[_e]=ee[1];for(var pr=0;pr<ee[0].length;pr++)Fe[ee[0][pr]]=_e}else{R(_e,ee),F[_e]={scalar:ee[1],numerator:ee[3],denominator:ee[4]};for(var hr=0;hr<ee[0].length;hr++)X[ee[0][hr]]=_e}Mt[_e]=ee[0][0]}function Ln(a){var l,d=[],f=Object.keys(y);if(typeof a>"u")for(l=0;l<f.length;l++)["","prefix"].indexOf(y[f[l]][2])===-1&&d.push(f[l].substr(1,f[l].length-2));else{if(this.getKinds().indexOf(a)===-1)throw new u("Kind not recognized");for(l=0;l<f.length;l++)y[f[l]][2]===a&&d.push(f[l].substr(1,f[l].length-2))}return d.sort(function(p,h){return p.toLowerCase()<h.toLowerCase()?-1:p.toLowerCase()>h.toLowerCase()?1:0})}function jn(a){if(!X[a])throw new u("Unit not recognized");return y[X[a]][0]}var gr=["length","time","temperature","mass","current","substance","luminosity","currency","information","angle"];function zn(){if(this.signature)return this.signature;for(var a=Yr.call(this),l=0;l<a.length;l++)a[l]*=Math.pow(20,l);return a.reduce(function(d,f){return d+f},0)}function Yr(){if(!this.isBase())return Yr.call(this.toBase());for(var a=new Array(gr.length),l=0;l<a.length;l++)a[l]=0;for(var d,f,p=0;p<this.numerator.length;p++)(d=y[this.numerator[p]])&&(f=gr.indexOf(d[2]),f>=0&&(a[f]=a[f]+1));for(var h=0;h<this.denominator.length;h++)(d=y[this.denominator[h]])&&(f=gr.indexOf(d[2]),f>=0&&(a[f]=a[f]-1));return a}var Xr="[+-]",br="\\d+",$n=Xr+"?"+br,ei="\\."+br,Bn="(?:"+br+"(?:"+ei+")?)|(?:"+ei+")",Wn="[Ee]"+$n,Hn="(?:"+Bn+")(?:"+Wn+")?",Vn=Xr+"?\\s*"+Hn,qn="("+Vn+")?\\s*([^/]*)(?:/(.+))?",Kn=new RegExp("^"+qn+"$"),ti="\\^|\\*{2}",ri="[01234]",Gn=new RegExp("([^ \\*\\d]+?)(?:"+ti+")?(-?"+ri+"(?![a-zA-Z]))"),Qn=new RegExp("([^ \\*\\d]+?)(?:"+ti+")?("+ri+"(?![a-zA-Z]))");function ii(a){t(a)||(a=a.toString()),a=a.trim();var l=Kn.exec(a);if(!l)throw new u(a+": Quantity not recognized");var d=l[1];d?(d=d.replace(/\s/g,""),this.scalar=parseFloat(d)):this.scalar=1;for(var f=l[2],p=l[3],h,O,A;l=Gn.exec(f);){if(h=parseFloat(l[2]),isNaN(h))throw new u("Unit exponent is not a number");if(h===0&&!xr.test(l[1]))throw new u("Unit not recognized");O=l[1]+" ",A="";for(var P=0;P<Math.abs(h);P++)A+=O;h>=0?f=f.replace(l[0],A):(p=p?p+A:A,f=f.replace(l[0],""))}for(;l=Qn.exec(p);){if(h=parseFloat(l[2]),isNaN(h))throw new u("Unit exponent is not a number");if(h===0&&!xr.test(l[1]))throw new u("Unit not recognized");O=l[1]+" ",A="";for(var K=0;K<h;K++)A+=O;p=p.replace(l[0],A)}f&&(this.numerator=ni(f.trim())),p&&(this.denominator=ni(p.trim()))}var Jn=Object.keys(Fe).sort(function(a,l){return l.length-a.length}).join("|"),Zn=Object.keys(X).sort(function(a,l){return l.length-a.length}).join("|"),Yn="\\b|$",oi="("+Jn+")??("+Zn+")(?:"+Yn+")",xr=new RegExp("^\\s*("+oi+"[\\s\\*]*)+$"),Xn=new RegExp(oi,"g"),ai={};function ni(a){var l=ai[a];if(l)return l;var d,f=[];if(!xr.test(a))throw new u("Unit not recognized");for(;d=Xn.exec(a);)f.push(d.slice(1));return f=f.map(function(p){return Fe[p[0]]?[Fe[p[0]],X[p[1]]]:[X[p[1]]]}),f=f.reduce(function(p,h){return p.concat(h)},[]),f=f.filter(function(p){return p}),ai[a]=f,f}function es(a){if(!t(a))throw new u("Argument should be a string");try{return this(a)}catch{return null}}function Ft(a){return a instanceof x}function x(a,l){if(ts.apply(null,arguments),!Ft(this))return new x(a,l);if(this.scalar=null,this.baseScalar=null,this.signature=null,this._conversionCache={},this.numerator=S,this.denominator=S,si(a)?(this.scalar=a.scalar,this.numerator=a.numerator&&a.numerator.length!==0?a.numerator:S,this.denominator=a.denominator&&a.denominator.length!==0?a.denominator:S):l?(ii.call(this,l),this.scalar=a):ii.call(this,a),this.denominator.join("*").indexOf("temp")>=0)throw new u("Cannot divide with temperatures");if(this.numerator.join("*").indexOf("temp")>=0){if(this.numerator.length>1)throw new u("Cannot multiply by temperatures");if(!n(this.denominator,S))throw new u("Cannot divide with temperatures")}if(this.initValue=a,rs.call(this),this.isTemperature()&&this.baseScalar<0)throw new u("Temperatures must not be less than absolute zero")}x.prototype={constructor:x};function ts(a,l){if(l){if(!(e(a)&&t(l)))throw new u("Only number accepted as initialization value when units are explicitly provided")}else if(!(t(a)||e(a)||Ft(a)||si(a)))throw new u("Only string, number or quantity accepted as single initialization value")}function si(a){return a&&typeof a=="object"&&a.hasOwnProperty("scalar")}function rs(){if(this.baseScalar)return this.baseScalar;if(this.isBase())this.baseScalar=this.scalar,this.signature=zn.call(this);else{var a=this.toBase();this.baseScalar=a.scalar,this.signature=a.signature}}var vr={"-312078":"elastance","-312058":"resistance","-312038":"inductance","-152058":"potential","-152040":"magnetism","-152038":"magnetism","-7997":"specific_volume","-79":"snap","-59":"jolt","-39":"acceleration","-38":"radiation","-20":"frequency","-19":"speed","-18":"viscosity","-17":"volumetric_flow","-1":"wavenumber",0:"unitless",1:"length",2:"area",3:"volume",20:"time",400:"temperature",7941:"yank",7942:"power",7959:"pressure",7961:"force",7962:"energy",7979:"viscosity",7981:"momentum",7982:"angular_momentum",7997:"density",7998:"area_density",8e3:"mass",152020:"radiation_exposure",159999:"magnetism",16e4:"current",160020:"charge",312058:"conductance",312078:"capacitance",3199980:"activity",3199997:"molar_concentration",32e5:"substance",63999998:"illuminance",64e6:"luminous_power",128e7:"currency","25599999980":"information_rate","25600000000":"information","511999999980":"angular_velocity","512000000000":"angle"};function is(){return o(Object.keys(vr).map(function(a){return vr[a]}))}x.prototype.kind=function(){return vr[this.signature.toString()]},s(x.prototype,{isDegrees:function(){return(this.signature===null||this.signature===400)&&this.numerator.length===1&&n(this.denominator,S)&&(this.numerator[0].match(/<temp-[CFRK]>/)||this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/))},isTemperature:function(){return this.isDegrees()&&this.numerator[0].match(/<temp-[CFRK]>/)}});function os(a,l){var d=a.units(),f=l.to(d),p=x(_r(d));return x({scalar:a.scalar-f.scalar,numerator:p.numerator,denominator:p.denominator})}function as(a,l){var d=l.to(_r(a.units()));return x({scalar:a.scalar-d.scalar,numerator:a.numerator,denominator:a.denominator})}function li(a,l){var d=l.to(_r(a.units()));return x({scalar:a.scalar+d.scalar,numerator:a.numerator,denominator:a.denominator})}function _r(a){if(a==="tempK")return"degK";if(a==="tempC")return"degC";if(a==="tempF")return"degF";if(a==="tempR")return"degR";throw new u("Unknown type for temp conversion from: "+a)}function ns(a,l){var d=ss(a),f=l.units(),p;if(f==="degK")p=d.scalar;else if(f==="degC")p=d.scalar;else if(f==="degF")p=d.scalar*9/5;else if(f==="degR")p=d.scalar*9/5;else throw new u("Unknown type for degree conversion to: "+f);return x({scalar:p,numerator:l.numerator,denominator:l.denominator})}function ss(a){var l=a.units(),d;if(l.match(/(deg)[CFRK]/))d=a.baseScalar;else if(l==="tempK")d=a.scalar;else if(l==="tempC")d=a.scalar;else if(l==="tempF")d=a.scalar*5/9;else if(l==="tempR")d=a.scalar*5/9;else throw new u("Unknown type for temp conversion from: "+l);return x({scalar:d,numerator:["<kelvin>"],denominator:S})}function ls(a,l){var d=l.units(),f;if(d==="tempK")f=a.baseScalar;else if(d==="tempC")f=a.baseScalar-273.15;else if(d==="tempF")f=a.baseScalar*9/5-459.67;else if(d==="tempR")f=a.baseScalar*9/5;else throw new u("Unknown type for temp conversion to: "+d);return x({scalar:f,numerator:l.numerator,denominator:l.denominator})}function ds(a){var l=a.units(),d;if(l.match(/(deg)[CFRK]/))d=a.baseScalar;else if(l==="tempK")d=a.scalar;else if(l==="tempC")d=a.scalar+273.15;else if(l==="tempF")d=(a.scalar+459.67)*5/9;else if(l==="tempR")d=a.scalar*5/9;else throw new u("Unknown type for temp conversion from: "+l);return x({scalar:d,numerator:["<temp-K>"],denominator:S})}s(x.prototype,{to:function(a){var l,d;if(a==null)return this;if(!t(a))return this.to(a.units());if(l=this._conversionCache[a],l)return l;if(d=x(a),d.units()===this.units())return this;if(!this.isCompatible(d))this.isInverse(d)?d=this.inverse().to(a):v(this.units(),d.units());else if(d.isTemperature())d=ls(this,d);else if(d.isDegrees())d=ns(this,d);else{var f=m(this.baseScalar,d.baseScalar);d=x({scalar:f,numerator:d.numerator,denominator:d.denominator})}return this._conversionCache[a]=d,d},toBase:function(){if(this.isBase())return this;if(this.isTemperature())return ds(this);var a=di[this.units()];return a||(a=fs(this.numerator,this.denominator),di[this.units()]=a),a.mul(this.scalar)},toFloat:function(){if(this.isUnitless())return this.scalar;throw new u("Can't convert to Float unless unitless. Use Unit#scalar")},toPrec:function(a){if(t(a)&&(a=x(a)),e(a)&&(a=x(a+" "+this.units())),this.isUnitless()?a.isUnitless()||v(this.units(),a.units()):a=a.to(this.units()),a.scalar===0)throw new u("Divide by zero");var l=c(Math.round(this.scalar/a.scalar),a.scalar);return x(l+this.units())}});function cs(a,l){var d=x(a),f=x(l);if(d.eq(f))return r;var p;return d.isTemperature()?p=function(h){return d.mul(h).to(f).scalar}:p=function(h){return h*d.baseScalar/f.baseScalar},function(O){var A,P,K;if(Array.isArray(O)){for(P=O.length,K=[],A=0;A<P;A++)K.push(p(O[A]));return K}else return p(O)}}var di={};function fs(a,l){for(var d=[],f=[],p=1,h,O=0;O<a.length;O++)h=a[O],N[h]?p=c(p,N[h]):F[h]&&(p*=F[h].scalar,F[h].numerator&&d.push(F[h].numerator),F[h].denominator&&f.push(F[h].denominator));for(var A=0;A<l.length;A++)h=l[A],N[h]?p/=N[h]:F[h]&&(p/=F[h].scalar,F[h].numerator&&f.push(F[h].numerator),F[h].denominator&&d.push(F[h].denominator));return d=d.reduce(function(P,K){return P.concat(K)},[]),f=f.reduce(function(P,K){return P.concat(K)},[]),x({scalar:p,numerator:d,denominator:f})}x.parse=es,x.getUnits=Ln,x.getAliases=jn,x.mulSafe=c,x.divSafe=m,x.getKinds=is,x.swiftConverter=cs,x.Error=u,s(x.prototype,{add:function(a){if(t(a)&&(a=x(a)),this.isCompatible(a)||v(this.units(),a.units()),this.isTemperature()&&a.isTemperature())throw new u("Cannot add two temperatures");return this.isTemperature()?li(this,a):a.isTemperature()?li(a,this):x({scalar:this.scalar+a.to(this).scalar,numerator:this.numerator,denominator:this.denominator})},sub:function(a){if(t(a)&&(a=x(a)),this.isCompatible(a)||v(this.units(),a.units()),this.isTemperature()&&a.isTemperature())return os(this,a);if(this.isTemperature())return as(this,a);if(a.isTemperature())throw new u("Cannot subtract a temperature from a differential degree unit");return x({scalar:this.scalar-a.to(this).scalar,numerator:this.numerator,denominator:this.denominator})},mul:function(a){if(e(a))return x({scalar:c(this.scalar,a),numerator:this.numerator,denominator:this.denominator});if(t(a)&&(a=x(a)),(this.isTemperature()||a.isTemperature())&&!(this.isUnitless()||a.isUnitless()))throw new u("Cannot multiply by temperatures");var l=this,d=a;l.isCompatible(d)&&l.signature!==400&&(d=d.to(l));var f=ci(l.numerator,l.denominator,d.numerator,d.denominator);return x({scalar:c(l.scalar,d.scalar,f[2]),numerator:f[0],denominator:f[1]})},div:function(a){if(e(a)){if(a===0)throw new u("Divide by zero");return x({scalar:this.scalar/a,numerator:this.numerator,denominator:this.denominator})}else t(a)&&(a=x(a));if(a.scalar===0)throw new u("Divide by zero");if(a.isTemperature())throw new u("Cannot divide with temperatures");if(this.isTemperature()&&!a.isUnitless())throw new u("Cannot divide with temperatures");var l=this,d=a;l.isCompatible(d)&&l.signature!==400&&(d=d.to(l));var f=ci(l.numerator,l.denominator,d.denominator,d.numerator);return x({scalar:c(l.scalar,f[2])/d.scalar,numerator:f[0],denominator:f[1]})},inverse:function(){if(this.isTemperature())throw new u("Cannot divide with temperatures");if(this.scalar===0)throw new u("Divide by zero");return x({scalar:1/this.scalar,numerator:this.denominator,denominator:this.numerator})}});function ci(a,l,d,f){function p(te){return te!==E}a=a.filter(p),d=d.filter(p),l=l.filter(p),f=f.filter(p);var h={};function O(te,Oe){for(var re,Ot,Sr,Ie=0;Ie<te.length;Ie++)if(N[te[Ie]]?(re=te[Ie+1],Ot=te[Ie],Sr=N[Ot],Ie++):(re=te[Ie],Ot=null,Sr=1),re&&re!==E)if(h[re]){h[re][0]+=Oe;var hs=h[re][2]?N[h[re][2]]:1;h[re][Oe===1?3:4]*=m(Sr,hs)}else h[re]=[Oe,re,Ot,1,1]}O(a,1),O(l,-1),O(d,1),O(f,-1);var A=[],P=[],K=1;for(var ui in h)if(h.hasOwnProperty(ui)){var B=h[ui],je;if(B[0]>0)for(je=0;je<B[0];je++)A.push(B[2]===null?B[1]:[B[2],B[1]]);else if(B[0]<0)for(je=0;je<-B[0];je++)P.push(B[2]===null?B[1]:[B[2],B[1]]);K*=m(B[3],B[4])}return A.length===0&&(A=S),P.length===0&&(P=S),A=A.reduce(function(te,Oe){return te.concat(Oe)},[]),P=P.reduce(function(te,Oe){return te.concat(Oe)},[]),[A,P,K]}s(x.prototype,{eq:function(a){return this.compareTo(a)===0},lt:function(a){return this.compareTo(a)===-1},lte:function(a){return this.eq(a)||this.lt(a)},gt:function(a){return this.compareTo(a)===1},gte:function(a){return this.eq(a)||this.gt(a)},compareTo:function(a){if(t(a))return this.compareTo(x(a));if(this.isCompatible(a)||v(this.units(),a.units()),this.baseScalar<a.baseScalar)return-1;if(this.baseScalar===a.baseScalar)return 0;if(this.baseScalar>a.baseScalar)return 1},same:function(a){return this.scalar===a.scalar&&this.units()===a.units()}}),s(x.prototype,{isUnitless:function(){return[this.numerator,this.denominator].every(function(a){return n(a,S)})},isCompatible:function(a){return t(a)?this.isCompatible(x(a)):Ft(a)&&a.signature!==void 0?this.signature===a.signature:!1},isInverse:function(a){return this.inverse().isCompatible(a)},isBase:function(){return this._isBase!==void 0?this._isBase:this.isDegrees()&&this.numerator[0].match(/<(kelvin|temp-K)>/)?(this._isBase=!0,this._isBase):(this.numerator.concat(this.denominator).forEach(function(a){a!==E&&w.indexOf(a)===-1&&(this._isBase=!1)},this),this._isBase===!1?this._isBase:(this._isBase=!0,this._isBase))}});function yr(){}yr.prototype.get=function(a){return arguments.length>1&&(a=Array.apply(null,arguments)),a.reduce(function(l,d,f){if(l){var p=l[d];return f===a.length-1?p?p.data:void 0:p}},this)},yr.prototype.set=function(a,l){return arguments.length>2&&(a=Array.prototype.slice.call(arguments,0,-1),l=arguments[arguments.length-1]),a.reduce(function(d,f,p){var h=d[f];return h===void 0&&(h=d[f]={}),p===a.length-1?(h.data=l,l):h},this)};function ms(a,l){return(a+" "+l).trim()}x.formatter=ms,s(x.prototype,{units:function(){if(this._units!==void 0)return this._units;var a=n(this.numerator,S),l=n(this.denominator,S);if(a&&l)return this._units="",this._units;var d=mi(this.numerator),f=mi(this.denominator);return this._units=d+(l?"":"/"+f),this._units},toString:function(a,l){var d;if(e(a))d=this.units(),l=a;else if(t(a))d=a;else if(Ft(a))return this.toPrec(a).toString(l);var f=this.to(d),p=l!==void 0?b(f.scalar,l):f.scalar;return f=(p+" "+f.units()).trim(),f},format:function(a,l){arguments.length===1&&typeof a=="function"&&(l=a,a=void 0),l=l||x.formatter;var d=this.to(a);return l.call(this,d.scalar,d.units())}});var fi=new yr;function mi(a){var l=fi.get(a);if(l)return l;var d=n(a,S);return d?l="1":l=ps(us(a)).join("*"),fi.set(a,l),l}function us(a){for(var l=[],d,f,p=0;p<a.length;p++)d=a[p],f=a[p+1],N[d]?(l.push(Mt[d]+Mt[f]),p++):l.push(Mt[d]);return l}function ps(a){var l=a.reduce(function(d,f){var p=d[f];return p||d.push(p=d[f]=[f,0]),p[1]++,d},[]);return l.map(function(d){return d[0]+(d[1]>1?d[1]:"")})}return x.version="1.8.0",x})});var Ye=(()=>{class t{TIMEOUT_DURATION=1e4;serverServiceEndpoint$=new D({operation:0,message:"Not connected",serverDescription:null,httpServiceUrl:null,WsServiceUrl:null});signalKURL;serverName;serverVersion$=new D(null);serverRoles=[];http=g(Ke);resetSignalK(e,r,o){return ie(this,null,function*(){if(!e.url){console.log("[Connection Service] Connection reset called with null or empty URL value");return}let n={operation:1,message:"Connecting...",serverDescription:null,httpServiceUrl:null,WsServiceUrl:null};this.signalKURL=e,this.serverServiceEndpoint$.next(n);let s=this.signalKURL.url;s.endsWith("signalk/")||(s+="/signalk/");try{console.log("[Connection Service] Connecting to: "+this.signalKURL.url);let c=yield de(this.http.get(s,{observe:"response"}).pipe(xi(this.TIMEOUT_DURATION),Nt(_=>(_.name==="TimeoutError"&&console.error("[Connection Service] Connection request timed out after "+this.TIMEOUT_DURATION+"ms"),bi(_)))));console.debug("[Connection Service] Signal K HTTP Endpoints retrieved"),this.serverVersion$.next(c.body.server.version);let m=c.body.endpoints.v1["signalk-http"],b=c.body.endpoints.v1["signalk-ws"];r?(console.debug("[Connection Service] Proxy Mode Enabled"),n.httpServiceUrl=window.location.origin+new URL(m).pathname,n.WsServiceUrl=(window.location.protocol=="https:"?"wss://":"ws://")+window.location.host+new URL(b).pathname):(n.httpServiceUrl=m,n.WsServiceUrl=b),console.debug("[Connection Service] HTTP URI: "+n.httpServiceUrl),console.debug("[Connection Service] WebSocket URI: "+n.WsServiceUrl),n.operation=2,n.message=c.status.toString(),n.serverDescription=`${c.body.server.id} ${c.body.server.version}`}catch(c){n.operation=3,n.message=c.message,this.handleError(c)}finally{o?n.subscribeAll=!0:n.subscribeAll=!1,this.serverServiceEndpoint$.next(n)}})}handleError(e){let r=e.status===0?`[Connection Service] ${e.name}: ${e.message}`:`[Connection Service] Backend returned code ${e.status}, body was: ${e.error}`;throw console.error(r),e}getServiceEndpointStatusAsO(){return this.serverServiceEndpoint$.asObservable()}setServerInfo(e,r,o){this.serverName=e,this.serverRoles=o,console.log(`[Connection Service] Server Name: ${e}, Version: ${r}, Roles: ${JSON.stringify(o)}`)}get skServerName(){return this.serverName}get skServerVersion(){return this.serverVersion$.getValue()}get skServerRoles(){return this.serverRoles}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var xs=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Or=t=>{if(typeof t!="string")throw new TypeError("Invalid argument expected string");let i=t.match(xs);if(!i)throw new Error(`Invalid argument not valid semver ('${t}' received)`);return i.shift(),i},ro=t=>t==="*"||t==="x"||t==="X",io=t=>{let i=parseInt(t,10);return isNaN(i)?t:i},vs=(t,i)=>typeof t!=typeof i?[String(t),String(i)]:[t,i],_s=(t,i)=>{if(ro(t)||ro(i))return 0;let[e,r]=vs(io(t),io(i));return e>r?1:e<r?-1:0},Ir=(t,i)=>{for(let e=0;e<Math.max(t.length,i.length);e++){let r=_s(t[e]||"0",i[e]||"0");if(r!==0)return r}return 0};var oo=(t,i)=>{let e=Or(t),r=Or(i),o=e.pop(),n=r.pop(),s=Ir(e,r);return s!==0?s:o&&n?Ir(o.split("."),n.split(".")):o||n?o?-1:1:0};var Rr=(t,i,e)=>{ys(e);let r=oo(t,i);return no[e].includes(r)},no={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},ao=Object.keys(no),ys=t=>{if(typeof t!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof t}`);if(ao.indexOf(t)===-1)throw new Error(`Invalid operator, expected one of ${ao.join("|")}`)};var so=(()=>{class t{server=g(Ye);http=g(Ke);serverEndpoint=null;isAppDataSupported=!1;configFileVersion=null;sharedConfigName;InitConfig=null;storageServiceReady$=new T;patchQueue$=new T;patch=function(e){return this.http.post(e.url,e.document).pipe(Mi(r=>console.log("[Storage Service] Remote config patch request completed successfully")),Nt(r=>this.handleError(r)))};constructor(){let e=this.server;e.serverServiceEndpoint$.subscribe(r=>{r.httpServiceUrl!==null&&(this.serverEndpoint=r.httpServiceUrl.substring(0,r.httpServiceUrl.length-4)+"applicationData/",console.log("[Storage Service] Service startup. AppData API set to: "+this.serverEndpoint)),r.operation===2?this.storageServiceReady$.next(!0):this.storageServiceReady$.next(!1)}),e.serverVersion$.subscribe(r=>{r&&(this.isAppDataSupported=Rr(r,"1.27.0",">="))}),this.patchQueue$.pipe(Si(r=>this.patch(r))).subscribe(r=>{})}listConfigs(e){return ie(this,null,function*(){let r=[];if(!this.serverEndpoint)return console.warn("[Storage Service] No server endpoint set. Cannot retrieve config list"),null;let o=this.serverEndpoint,n=o+"global/kip/"+this.configFileVersion+"/?keys=true",s=o+"user/kip/"+this.configFileVersion+"/?keys=true";return e&&(n=o+"global/kip/"+e+"/?keys=true",s=o+"user/kip/"+e+"/?keys=true"),yield de(this.http.get(n)).then(c=>{for(let m of c)r.push({scope:"global",name:m});console.log("[Storage Service] Retrieved Global config list")}).catch(c=>{this.handleError(c)}),yield de(this.http.get(s)).then(c=>{for(let m of c)r.push({scope:"user",name:m});console.log("[Storage Service] Retrieved User config list")}).catch(c=>{this.handleError(c)}),r})}getConfig(e,r,o,n){return ie(this,null,function*(){let s=null,c=this.serverEndpoint+e+"/kip/"+this.configFileVersion+"/"+r;return o&&(c=this.serverEndpoint+e+"/kip/"+o+"/"+r),yield de(this.http.get(c)).then(m=>{s=m,console.log(`[Storage Service] Retrieved config [${r}] from [${e}] scope`),n&&(this.InitConfig=m)}).catch(m=>{this.handleError(m)}),s})}setConfig(e,r,o,n){return ie(this,null,function*(){let s=this.serverEndpoint+e+"/kip/"+this.configFileVersion+"/"+r,c;return n&&(s=this.serverEndpoint+e+"/kip/"+n+"/"+r),yield de(this.http.post(s,o)).then(m=>{console.log(`[Storage Service] Saved config [${r}] to [${e}] scope`),c=m}).catch(m=>{this.handleError(m)}),c})}patchConfig(e,r,o){let n=this.serverEndpoint+"user/kip/"+this.configFileVersion,s;switch(o&&(n=this.serverEndpoint+"user/kip/"+o),e){case"IAppConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/app`,value:r}];break;case"IThemeConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/theme/themeName`,value:r.themeName}];break;case"IWidgetConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/widget`,value:r}];break;case"ILayoutConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/layout`,value:r}];break;case"Dashboards":s=[{op:"replace",path:`/${this.sharedConfigName}/dashboards`,value:r}];break;case"Array<IUnitDefaults>":s=[{op:"replace",path:`/${this.sharedConfigName}/app/unitDefaults`,value:r}];break;case"Array<IDatasetDef>":s=[{op:"replace",path:`/${this.sharedConfigName}/app/dataSets`,value:r}];break;case"INotificationConfig":s=[{op:"replace",path:`/${this.sharedConfigName}/app/notificationConfig`,value:r}];break;default:console.warn("[Storage Service] JSON Patch request type unknown");break}let c={url:n,document:s};this.patchQueue$.next(c)}patchGlobal(e,r,o,n,s){let c=this.serverEndpoint+r+"/kip/"+this.configFileVersion;s&&(c=this.serverEndpoint+r+"/kip/"+s);let m;switch(n){case"add":m=[{op:"add",path:`/${e}`,value:o}];break;case"replace":m=[{op:"replace",path:`/${e}`,value:o}];break;case"remove":m=[{op:"remove",path:`/${e}`,value:o}];break;default:console.warn("[Storage Service] JSON Patch operation request type unknown");break}let b={url:c,document:m};this.patchQueue$.next(b)}removeItem(e,r,o){let n=this.serverEndpoint+e+"/kip/"+this.configFileVersion;o&&(n=this.serverEndpoint+e+"/kip/"+o);let s=[{op:"remove",path:`/${r}`}],c={url:n,document:s};this.patchQueue$.next(c)}clear(){}set activeConfigFileVersion(e){this.configFileVersion=e}handleError(e){throw e.status===0?console.error("[Storage Service] An error occurred:",e.error):console.error("[Storage Service] Backend returned error: ",e.message),e}get initConfig(){return this.InitConfig}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Te=class{static create(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(i){let e=Math.random()*16|0;return(i=="x"?e:e&3|8).toString(16)})}};var St={disableNotifications:!1,menuGrouping:!0,security:{disableSecurity:!0},devices:{disableDevices:!1,showNormalState:!1,showNominalState:!1},sound:{disableSound:!1,muteNormal:!0,muteNominal:!0,muteWarn:!0,muteAlert:!1,muteAlarm:!1,muteEmergency:!1}};var Ut={Unitless:"unitless",Speed:"knots",Flow:"l/h",Temperature:"celsius",Length:"m",Volume:"liter",Current:"A",Potential:"V",Charge:"C",Power:"W",Energy:"J",Pressure:"mmHg","Fuel Distance":"nm/l","Energy Distance":"nm/kWh",Density:"kg/m3",Time:"Hours","Angular Velocity":"deg/min",Angle:"deg",Frequency:"Hz",Ratio:"ratio",Resistance:"ohm"};var lo={configVersion:11,autoNightMode:!1,redNightMode:!1,nightModeBrightness:.27,dataSets:[],unitDefaults:Ut,notificationConfig:St},co={themeName:""};var fo={configVersion:11,kipUUID:Te.create(),signalKUrl:null,proxyEnabled:!1,signalKSubscribeAll:!1,useDeviceToken:!1,loginName:null,loginPassword:null,useSharedConfig:!1,sharedConfigName:"default"};var Nr={configVersion:11,autoNightMode:!1,redNightMode:!1,nightModeBrightness:.27,dataSets:[{uuid:"afbe4e41-26f5-404f-a55d-9f7b9b76fbd1",path:"self.environment.wind.speedApparent",pathSource:"default",period:1,baseUnit:"m/s",label:"self.environment.wind.speedApparent, Source: default, Scale: minute, Period: 1",timeScaleFormat:"minute"}],unitDefaults:{Unitless:"unitless",Speed:"knots",Flow:"l/h",Temperature:"celsius",Length:"m",Volume:"liter",Current:"A",Potential:"V",Charge:"C",Power:"W",Energy:"J",Pressure:"mmHg","Fuel Distance":"nm/l","Energy Distance":"nm/kWh",Density:"kg/m3",Time:"Hours","Angular Velocity":"deg/min",Angle:"deg",Frequency:"Hz",Ratio:"ratio",Resistance:"ohm"},notificationConfig:{disableNotifications:!1,menuGrouping:!0,security:{disableSecurity:!0},devices:{disableDevices:!1,showNormalState:!1,showNominalState:!1},sound:{disableSound:!1,muteNormal:!0,muteNominal:!0,muteWarn:!0,muteAlert:!1,muteAlarm:!1,muteEmergency:!1}}},Ur=[{id:"3e0825ee-95fd-4ad4-8802-e0507845b668",name:"Sailing",configuration:[{w:3,h:4,id:"339698a7-2cff-4ab9-9b50-d8056f971471",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"339698a7-2cff-4ab9-9b50-d8056f971471",config:{displayName:"Depth",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.environment.depth.belowTransducer",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,color:"yellow",enableTimeout:!1,dataTimeout:5}}},x:0,y:0},{w:5,h:10,id:"a44028e0-dfee-4492-895b-2b03a60f3a69",selector:"widget-wind-steer",input:{widgetProperties:{type:"widget-wind-steer",uuid:"a44028e0-dfee-4492-895b-2b03a60f3a69",config:{filterSelfPaths:!0,paths:{headingPath:{description:"Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},courseOverGround:{description:"Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}},x:3,y:0},{w:4,h:6,id:"24406c15-7738-4dc1-a206-7a4862c2931d",selector:"widget-gauge-ng-radial",input:{widgetProperties:{type:"widget-gauge-ng-radial",uuid:"24406c15-7738-4dc1-a206-7a4862c2931d",config:{displayName:"SOG",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.navigation.speedOverGround",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"knots",sampleTime:500}},displayScale:{lower:0,upper:10,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1},numInt:1,numDecimal:1,enableTimeout:!1,color:"yellow",dataTimeout:5}}},x:8,y:0},{w:3,h:4,id:"c6bcaa53-afa1-42c7-ad92-d5f7dba14734",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"c6bcaa53-afa1-42c7-ad92-d5f7dba14734",config:{displayName:"STW",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.navigation.speedThroughWater",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"knots",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!0,showMin:!0,numDecimal:1,numInt:1,color:"contrast",enableTimeout:!1,dataTimeout:5}}},x:0,y:4},{w:4,h:6,id:"973c8804-be09-4923-bb5d-48c13b65db69",selector:"widget-data-chart",input:{widgetProperties:{type:"widget-data-chart",uuid:"973c8804-be09-4923-bb5d-48c13b65db69",config:{displayName:"Chart Label",filterSelfPaths:!0,convertUnitTo:"knots",datasetUUID:"afbe4e41-26f5-404f-a55d-9f7b9b76fbd1",invertData:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!1,showTimeScale:!0,startScaleAtZero:!1,verticalGraph:!1,showYScale:!0,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null,numDecimal:1,color:"green"}}},x:8,y:6},{w:3,h:4,id:"05414722-733a-4483-89b0-07f3945ffd97",selector:"widget-numeric",input:{widgetProperties:{type:"widget-numeric",uuid:"05414722-733a-4483-89b0-07f3945ffd97",config:{displayName:"Engine Room",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:"self.environment.inside.engineRoom.temperature",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"celsius",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,color:"blue",enableTimeout:!1,dataTimeout:5}}},x:0,y:8},{w:5,h:2,id:"1a7a3f79-2eb4-4092-a0c3-9a61db8a8586",selector:"widget-simple-linear",input:{widgetProperties:{type:"widget-simple-linear",uuid:"1a7a3f79-2eb4-4092-a0c3-9a61db8a8586",config:{displayName:"House Bank",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.electrical.batteries.0.voltage",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,color:"green",enableTimeout:!1,dataTimeout:5}}},x:3,y:10}]},{id:"7c67c8c5-dc55-4e1d-9fc5-3dd95fd41bea",name:"Charting",configuration:[{x:0,y:0,w:8,h:12,id:"488d620a-37d4-4b98-849d-304cd18003e9",selector:"widget-freeboardsk",input:{widgetProperties:{type:"widget-freeboardsk",uuid:"488d620a-37d4-4b98-849d-304cd18003e9"}}},{x:8,y:0,w:2,h:3,id:"26a2a150-5af8-4f1d-aaab-0cb2a406fc17",selector:"widget-gauge-ng-compass",input:{widgetProperties:{type:"widget-gauge-ng-compass",uuid:"26a2a150-5af8-4f1d-aaab-0cb2a406fc17",config:{displayName:"COG (T)",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",isConvertUnitToConfigurable:!1,convertUnitTo:"deg",sampleTime:500}},gauge:{type:"ngRadial",subType:"marineCompass",enableTicks:!0,compassUseNumbers:!0,showValueBox:!1},enableTimeout:!1,color:"purple",dataTimeout:5}}}},{x:10,y:0,w:2,h:3,id:"caf9ca47-fcf6-4736-a314-2b5210edaf03",selector:"widget-datetime",input:{widgetProperties:{type:"widget-datetime",uuid:"caf9ca47-fcf6-4736-a314-2b5210edaf03",config:{displayName:"Next WP Arrival",filterSelfPaths:!0,paths:{gaugePath:{description:"String Data",path:"self.navigation.datetime",source:"default",pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"dd/MM HH:mm",dateTimezone:"America/Toronto",color:"contrast",enableTimeout:!1,dataTimeout:5}}}},{x:8,y:3,w:4,h:9,id:"daa21350-009e-4d99-8209-364f9b99caee",selector:"widget-autopilot",input:{widgetProperties:{type:"widget-autopilot",uuid:"daa21350-009e-4d99-8209-364f9b99caee",config:{displayName:"N2k Autopilot",filterSelfPaths:!0,paths:{apState:{description:"Autopilot State",path:"self.steering.autopilot.state",source:"default",pathType:"string",isPathConfigurable:!0,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},apTargetHeadingMag:{description:"Autopilot Target Heading Mag",path:"self.steering.autopilot.target.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},apTargetWindAngleApp:{description:"Autopilot Target Wind Angle Apparent",path:"self.steering.autopilot.target.windAngleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},headingMag:{description:"Heading Magnetic",path:"self.navigation.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},headingTrue:{description:"Heading True",path:"self.navigation.headingTrue",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},windAngleApparent:{description:"Wind Angle Apparent",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},windAngleTrueWater:{description:"Wind Angle True Water",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},rudderAngle:{description:"Rudder Angle",path:"self.steering.rudderAngle",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500}},usage:{headingMag:["wind","route","auto","standby"],headingTrue:["wind","route","auto","standby"],windAngleApparent:["wind"],windAngleTrueWater:["wind"]},typeVal:{headingMag:"Mag",headingTrue:"True",windAngleApparent:"AWA",windAngleTrueWater:"TWA"},barColor:"accent",autoStart:!1,enableTimeout:!1,dataTimeout:5}}}}]}],Pr={themeName:""};var vp={configVersion:11,kipUUID:Te.create(),signalKUrl:"https://demo.signalk.org",proxyEnabled:!1,signalKSubscribeAll:!1,useDeviceToken:!1,loginName:null,loginPassword:null,useSharedConfig:!1,sharedConfigName:"default"};var Ss="",ws=11,wt=11,Mp=(()=>{class t{storage=g(so);unitDefaults=new D({});themeName=new D(Ss);kipKNotificationConfig=new D(St);autoNightMode=new D(!1);redNightMode=new D(!1);nightModeBrightness=new D(1);proxyEnabled=!1;signalKSubscribeAll=!1;useDeviceToken=!1;loginName;loginPassword;useSharedConfig;sharedConfigName;activeConfig={app:null,theme:null,dashboards:null};kipUUID;signalkUrl;widgets;_dashboards=[];dataSets=[];configUpgrade=ht(!1);constructor(){if(console.log("[AppSettings Service] Service startup..."),this.storage.activeConfigFileVersion=ws,!window.localStorage)console.error(`[AppSettings Service] LocalStorage NOT SUPPORTED by browser
|
|
2
2
|
This is a requirement to run Kip. See browser documentation to enable this feature.`);else{this.loadConnectionConfig();let e;if(this.storage.initConfig===null&&this.useSharedConfig&&this.loginName!==null&&this.loginPassword!==null&&this.signalkUrl.url!==null?this.resetSettings():e=this.storage.initConfig,e)console.log("[AppSettings Service] Remote configuration storage enabled"),this.checkConfigUpgradeRequired(!1),this.activeConfig=e,this.pushSettings();else{console.log("[AppSettings Service] LocalStorage enabled");let r={app:null,theme:null,dashboards:null};r.app=this.loadConfigFromLocalStorage("appConfig"),r.app.configVersion!==wt&&this.checkConfigUpgradeRequired(!0),r.dashboards=this.loadConfigFromLocalStorage("dashboardsConfig"),r.theme=this.loadConfigFromLocalStorage("themeConfig"),this.activeConfig=r,this.pushSettings()}}}loadConnectionConfig(){let e=this.loadConfigFromLocalStorage("connectionConfig");switch(e.configVersion){case 11:break;default:console.error(`[AppSettings Service] Invalid connectionConfig version ${e.configVersion}. Resetting and loading connection configuration default`),this.resetConnection();break}this.signalkUrl={url:e.signalKUrl,new:!1},this.proxyEnabled=e.proxyEnabled,this.signalKSubscribeAll=e.signalKSubscribeAll,this.useDeviceToken=e.useDeviceToken,this.loginName=e.loginName,this.loginPassword=e.loginPassword,this.useSharedConfig=e.useSharedConfig,this.sharedConfigName=e.sharedConfigName,this.kipUUID=e.kipUUID}resetConnection(){localStorage.setItem("connectionConfig",JSON.stringify(this.getDefaultConnectionConfig())),this.reloadApp()}checkConfigUpgradeRequired(e){e?this.configUpgrade.set(!0):this.storage.listConfigs(9).then(r=>ie(this,null,function*(){for(let o of r)try{if((yield this.storage.getConfig(o.scope,o.name,9)).app?.configVersion===10){this.configUpgrade.set(!0),console.log("[AppSettings Service] Configuration upgrade required for version 10.");break}}catch(n){console.error(`[AppSettings Service] Error fetching configuration for ${o.name}:`,n)}})).catch(r=>{console.error("[AppSettings Service] Error fetching configuration data:",r)})}loadConfigFromLocalStorage(e){let r=JSON.parse(localStorage.getItem(e));if(r===null)switch(console.log(`[AppSettings Service] Error loading ${e} config. Force loading ${e} defaults`),e){case"appConfig":r=this.getDefaultAppConfig();break;case"connectionConfig":r=this.getDefaultConnectionConfig();break;case"dashboardsConfig":r=this.getDefaultDashboardsConfig();break;case"themeConfig":r=this.getDefaultThemeConfig();break;default:console.error(`[AppSettings Service] Invalid ${e} default config requested`);break}if(e==="connectionConfig"&&r.configVersion!==wt)switch(console.log(`[AppSettings Service] Invalid ${e} version. Force loading defaults`),e){case"connectionConfig":r=this.getDefaultConnectionConfig();break}return r}pushSettings(){this.themeName.next(this.activeConfig.theme.themeName),this.dataSets=this.activeConfig.app.dataSets,this.unitDefaults.next(this.activeConfig.app.unitDefaults),this.kipKNotificationConfig.next(this.activeConfig.app.notificationConfig),this.activeConfig.app.autoNightMode===void 0?this.setAutoNightMode(!1):this.autoNightMode.next(this.activeConfig.app.autoNightMode),this.activeConfig.app.redNightMode===void 0?this.setRedNightMode(!1):this.redNightMode.next(this.activeConfig.app.redNightMode),this.activeConfig.app.nightModeBrightness===void 0?this.setNightModeBrightness(.2):this.nightModeBrightness.next(this.activeConfig.app.nightModeBrightness),this.activeConfig.dashboards===void 0?this._dashboards=[]:this._dashboards=this.activeConfig.dashboards}getDefaultUnitsAsO(){return this.unitDefaults.asObservable()}getDefaultUnits(){return this.unitDefaults.getValue()}setDefaultUnits(e){this.unitDefaults.next(e),this.useSharedConfig?this.storage.patchConfig("Array<IUnitDefaults>",e):this.saveAppConfigToLocalStorage()}getAppConfig(){return this.buildAppStorageObject()}getConnectionConfig(){return this.buildConnectionStorageObject()}setConnectionConfig(e){this.loginName=e.loginName,this.loginPassword=e.loginPassword,this.useSharedConfig=e.useSharedConfig,this.proxyEnabled=e.proxyEnabled,this.signalKSubscribeAll=e.signalKSubscribeAll,this.signalkUrl.url=e.signalKUrl,e.useSharedConfig?this.useDeviceToken=!1:this.useDeviceToken=!0,this.saveConnectionConfigToLocalStorage()}setUseDeviceToken(e){this.useDeviceToken=e,this.saveConnectionConfigToLocalStorage()}getDashboardConfig(){return this.buildDashboardStorageObject()}getThemeConfig(){return this.buildThemeStorageObject()}get KipUUID(){return this.kipUUID}getThemeNameAsO(){return this.themeName.asObservable()}setThemeName(e){if(this.themeName.next(e),this.useSharedConfig){let r={themeName:e};this.storage.patchConfig("IThemeConfig",r)}else this.saveThemeConfigToLocalStorage()}getThemeName(){return this.themeName.getValue()}getAutoNightModeAsO(){return this.autoNightMode.asObservable()}setAutoNightMode(e){this.autoNightMode.next(e);let r=this.buildAppStorageObject();this.useSharedConfig?this.storage.patchConfig("IAppConfig",r):this.saveAppConfigToLocalStorage()}getAutoNightMode(){return this.autoNightMode.getValue()}getRedNightModeAsO(){return this.redNightMode.asObservable()}getRedNightMode(){return this.redNightMode.getValue()}setRedNightMode(e){this.redNightMode.next(e);let r=this.buildAppStorageObject();this.useSharedConfig?this.storage.patchConfig("IAppConfig",r):this.saveAppConfigToLocalStorage()}getNightModeBrightness(){return this.nightModeBrightness.getValue()}setNightModeBrightness(e){this.nightModeBrightness.next(e);let r=this.buildAppStorageObject();this.useSharedConfig?this.storage.patchConfig("IAppConfig",r):this.saveAppConfigToLocalStorage()}getWidgets(){return this.widgets}saveDashboards(e){this.useSharedConfig?this.storage.patchConfig("Dashboards",e):this.saveLDashboardsConfigToLocalStorage(e),this._dashboards=e}saveDataSets(e){this.dataSets=e,this.useSharedConfig?this.storage.patchConfig("Array<IDatasetDef>",e):this.saveAppConfigToLocalStorage()}getDataSets(){return this.dataSets}getNotificationServiceConfigAsO(){return this.kipKNotificationConfig.asObservable()}getNotificationConfig(){return this.kipKNotificationConfig.getValue()}setNotificationConfig(e){this.kipKNotificationConfig.next(e),this.useSharedConfig?this.storage.patchConfig("INotificationConfig",e):this.saveAppConfigToLocalStorage()}resetSettings(){let e={app:null,theme:null,dashboards:null};e.app=this.getDefaultAppConfig(),e.theme=this.getDefaultThemeConfig(),e.dashboards=this.getDefaultDashboardsConfig(),this.useSharedConfig?this.storage.setConfig("user",this.sharedConfigName,e).then(r=>{console.log("[AppSettings Service] Replaced server config name: "+this.sharedConfigName+", with default configuration values"),this.reloadApp()}).catch(r=>{console.error("[AppSettings Service] Error replacing server config name: "+this.sharedConfigName)}):this.reloadApp()}replaceConfig(e,r,o){let n=JSON.stringify(r);localStorage.setItem(e,n),o&&this.reloadApp()}loadDemoConfig(){if(this.useSharedConfig){let e={app:Nr,dashboards:Ur,theme:Pr};console.log("[AppSettings Service] Loading Demo configuration settings as remote config: "+this.useSharedConfig+" and reloading app."),this.storage.setConfig("user",this.sharedConfigName,e),this.reloadApp()}else console.log("[AppSettings Service] Loading Demo configuration settings to LocalStorage"),this.replaceConfig("appConfig",Nr),this.replaceConfig("dashboardsConfig",Ur),this.replaceConfig("themeConfig",Pr,!0)}reloadApp(){console.log("[AppSettings Service] Reload app"),location.replace("./")}buildAppStorageObject(){return{configVersion:wt,autoNightMode:this.autoNightMode.getValue(),redNightMode:this.redNightMode.getValue(),nightModeBrightness:this.nightModeBrightness.getValue(),dataSets:this.dataSets,unitDefaults:this.unitDefaults.getValue(),notificationConfig:this.kipKNotificationConfig.getValue()}}buildConnectionStorageObject(){return{configVersion:wt,kipUUID:this.kipUUID,signalKUrl:this.signalkUrl.url,proxyEnabled:this.proxyEnabled,signalKSubscribeAll:this.signalKSubscribeAll,useDeviceToken:this.useDeviceToken,loginName:this.loginName,loginPassword:this.loginPassword,useSharedConfig:this.useSharedConfig,sharedConfigName:this.sharedConfigName}}buildDashboardStorageObject(){return this._dashboards}buildThemeStorageObject(){return{themeName:this.themeName.getValue()}}saveAppConfigToLocalStorage(){console.log("[AppSettings Service] Saving Application config to LocalStorage"),localStorage.setItem("appConfig",JSON.stringify(this.buildAppStorageObject()))}saveConnectionConfigToLocalStorage(){console.log("[AppSettings Service] Saving Connection config to LocalStorage"),localStorage.setItem("connectionConfig",JSON.stringify(this.buildConnectionStorageObject()))}saveLDashboardsConfigToLocalStorage(e){console.log("[AppSettings Service] Saving Dashboard config to LocalStorage"),localStorage.setItem("dashboardsConfig",JSON.stringify(e))}saveThemeConfigToLocalStorage(){console.log("[AppSettings Service] Saving Theme config to LocalStorage"),localStorage.setItem("themeConfig",JSON.stringify(this.buildThemeStorageObject()))}getDefaultAppConfig(){let e=lo;return e.notificationConfig=St,e.unitDefaults=Ut,e.configVersion=wt,localStorage.setItem("appConfig",JSON.stringify(e)),e}getDefaultConnectionConfig(){let e=fo;return e.kipUUID=Te.create(),e.signalKUrl=window.location.origin,localStorage.setItem("connectionConfig",JSON.stringify(e)),e}getDefaultDashboardsConfig(){let e=[];return localStorage.setItem("dashboardsConfig",JSON.stringify(e)),e}getDefaultThemeConfig(){let e=co;return localStorage.setItem("themeConfig",JSON.stringify(e)),e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ts(){this.__data__=[],this.size=0}var mo=Ts;function Cs(t,i){return t===i||t!==t&&i!==i}var me=Cs;function ks(t,i){for(var e=t.length;e--;)if(me(t[e][0],i))return e;return-1}var Ce=ks;var As=Array.prototype,Es=As.splice;function Ds(t){var i=this.__data__,e=Ce(i,t);if(e<0)return!1;var r=i.length-1;return e==r?i.pop():Es.call(i,e,1),--this.size,!0}var uo=Ds;function Ms(t){var i=this.__data__,e=Ce(i,t);return e<0?void 0:i[e][1]}var po=Ms;function Fs(t){return Ce(this.__data__,t)>-1}var ho=Fs;function Os(t,i){var e=this.__data__,r=Ce(e,t);return r<0?(++this.size,e.push([t,i])):e[r][1]=i,this}var go=Os;function Xe(t){var i=-1,e=t==null?0:t.length;for(this.clear();++i<e;){var r=t[i];this.set(r[0],r[1])}}Xe.prototype.clear=mo;Xe.prototype.delete=uo;Xe.prototype.get=po;Xe.prototype.has=ho;Xe.prototype.set=go;var ke=Xe;function Is(){this.__data__=new ke,this.size=0}var bo=Is;function Rs(t){var i=this.__data__,e=i.delete(t);return this.size=i.size,e}var xo=Rs;function Ns(t){return this.__data__.get(t)}var vo=Ns;function Us(t){return this.__data__.has(t)}var _o=Us;var Ps=typeof global=="object"&&global&&global.Object===Object&&global,Pt=Ps;var Ls=typeof self=="object"&&self&&self.Object===Object&&self,js=Pt||Ls||Function("return this")(),M=js;var zs=M.Symbol,J=zs;var yo=Object.prototype,$s=yo.hasOwnProperty,Bs=yo.toString,Tt=J?J.toStringTag:void 0;function Ws(t){var i=$s.call(t,Tt),e=t[Tt];try{t[Tt]=void 0;var r=!0}catch{}var o=Bs.call(t);return r&&(i?t[Tt]=e:delete t[Tt]),o}var So=Ws;var Hs=Object.prototype,Vs=Hs.toString;function qs(t){return Vs.call(t)}var wo=qs;var Ks="[object Null]",Gs="[object Undefined]",To=J?J.toStringTag:void 0;function Qs(t){return t==null?t===void 0?Gs:Ks:To&&To in Object(t)?So(t):wo(t)}var le=Qs;function Js(t){var i=typeof t;return t!=null&&(i=="object"||i=="function")}var j=Js;var Zs="[object AsyncFunction]",Ys="[object Function]",Xs="[object GeneratorFunction]",el="[object Proxy]";function tl(t){if(!j(t))return!1;var i=le(t);return i==Ys||i==Xs||i==Zs||i==el}var et=tl;var rl=M["__core-js_shared__"],Lt=rl;var Co=function(){var t=/[^.]+$/.exec(Lt&&Lt.keys&&Lt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function il(t){return!!Co&&Co in t}var ko=il;var ol=Function.prototype,al=ol.toString;function nl(t){if(t!=null){try{return al.call(t)}catch{}try{return t+""}catch{}}return""}var he=nl;var sl=/[\\^$.*+?()[\]{}|]/g,ll=/^\[object .+?Constructor\]$/,dl=Function.prototype,cl=Object.prototype,fl=dl.toString,ml=cl.hasOwnProperty,ul=RegExp("^"+fl.call(ml).replace(sl,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pl(t){if(!j(t)||ko(t))return!1;var i=et(t)?ul:ll;return i.test(he(t))}var Ao=pl;function hl(t,i){return t?.[i]}var Eo=hl;function gl(t,i){var e=Eo(t,i);return Ao(e)?e:void 0}var q=gl;var bl=q(M,"Map"),Ae=bl;var xl=q(Object,"create"),ge=xl;function vl(){this.__data__=ge?ge(null):{},this.size=0}var Do=vl;function _l(t){var i=this.has(t)&&delete this.__data__[t];return this.size-=i?1:0,i}var Mo=_l;var yl="__lodash_hash_undefined__",Sl=Object.prototype,wl=Sl.hasOwnProperty;function Tl(t){var i=this.__data__;if(ge){var e=i[t];return e===yl?void 0:e}return wl.call(i,t)?i[t]:void 0}var Fo=Tl;var Cl=Object.prototype,kl=Cl.hasOwnProperty;function Al(t){var i=this.__data__;return ge?i[t]!==void 0:kl.call(i,t)}var Oo=Al;var El="__lodash_hash_undefined__";function Dl(t,i){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=ge&&i===void 0?El:i,this}var Io=Dl;function tt(t){var i=-1,e=t==null?0:t.length;for(this.clear();++i<e;){var r=t[i];this.set(r[0],r[1])}}tt.prototype.clear=Do;tt.prototype.delete=Mo;tt.prototype.get=Fo;tt.prototype.has=Oo;tt.prototype.set=Io;var Lr=tt;function Ml(){this.size=0,this.__data__={hash:new Lr,map:new(Ae||ke),string:new Lr}}var Ro=Ml;function Fl(t){var i=typeof t;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?t!=="__proto__":t===null}var No=Fl;function Ol(t,i){var e=t.__data__;return No(i)?e[typeof i=="string"?"string":"hash"]:e.map}var Ee=Ol;function Il(t){var i=Ee(this,t).delete(t);return this.size-=i?1:0,i}var Uo=Il;function Rl(t){return Ee(this,t).get(t)}var Po=Rl;function Nl(t){return Ee(this,t).has(t)}var Lo=Nl;function Ul(t,i){var e=Ee(this,t),r=e.size;return e.set(t,i),this.size+=e.size==r?0:1,this}var jo=Ul;function rt(t){var i=-1,e=t==null?0:t.length;for(this.clear();++i<e;){var r=t[i];this.set(r[0],r[1])}}rt.prototype.clear=Ro;rt.prototype.delete=Uo;rt.prototype.get=Po;rt.prototype.has=Lo;rt.prototype.set=jo;var jt=rt;var Pl=200;function Ll(t,i){var e=this.__data__;if(e instanceof ke){var r=e.__data__;if(!Ae||r.length<Pl-1)return r.push([t,i]),this.size=++e.size,this;e=this.__data__=new jt(r)}return e.set(t,i),this.size=e.size,this}var zo=Ll;function it(t){var i=this.__data__=new ke(t);this.size=i.size}it.prototype.clear=bo;it.prototype.delete=xo;it.prototype.get=vo;it.prototype.has=_o;it.prototype.set=zo;var De=it;function jl(t,i){for(var e=-1,r=t==null?0:t.length;++e<r&&i(t[e],e,t)!==!1;);return t}var $o=jl;var zl=function(){try{var t=q(Object,"defineProperty");return t({},"",{}),t}catch{}}(),ot=zl;function $l(t,i,e){i=="__proto__"&&ot?ot(t,i,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[i]=e}var at=$l;var Bl=Object.prototype,Wl=Bl.hasOwnProperty;function Hl(t,i,e){var r=t[i];(!(Wl.call(t,i)&&me(r,e))||e===void 0&&!(i in t))&&at(t,i,e)}var zt=Hl;function Vl(t,i,e,r){var o=!e;e||(e={});for(var n=-1,s=i.length;++n<s;){var c=i[n],m=r?r(e[c],t[c],c,e,t):void 0;m===void 0&&(m=t[c]),o?at(e,c,m):zt(e,c,m)}return e}var ue=Vl;function ql(t,i){for(var e=-1,r=Array(t);++e<t;)r[e]=i(e);return r}var Bo=ql;function Kl(t){return t!=null&&typeof t=="object"}var U=Kl;var Gl="[object Arguments]";function Ql(t){return U(t)&&le(t)==Gl}var jr=Ql;var Wo=Object.prototype,Jl=Wo.hasOwnProperty,Zl=Wo.propertyIsEnumerable,Yl=jr(function(){return arguments}())?jr:function(t){return U(t)&&Jl.call(t,"callee")&&!Zl.call(t,"callee")},Ct=Yl;var Xl=Array.isArray,Z=Xl;function ed(){return!1}var Ho=ed;var Ko=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vo=Ko&&typeof module=="object"&&module&&!module.nodeType&&module,td=Vo&&Vo.exports===Ko,qo=td?M.Buffer:void 0,rd=qo?qo.isBuffer:void 0,id=rd||Ho,be=id;var od=9007199254740991,ad=/^(?:0|[1-9]\d*)$/;function nd(t,i){var e=typeof t;return i=i??od,!!i&&(e=="number"||e!="symbol"&&ad.test(t))&&t>-1&&t%1==0&&t<i}var $t=nd;var sd=9007199254740991;function ld(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=sd}var Bt=ld;var dd="[object Arguments]",cd="[object Array]",fd="[object Boolean]",md="[object Date]",ud="[object Error]",pd="[object Function]",hd="[object Map]",gd="[object Number]",bd="[object Object]",xd="[object RegExp]",vd="[object Set]",_d="[object String]",yd="[object WeakMap]",Sd="[object ArrayBuffer]",wd="[object DataView]",Td="[object Float32Array]",Cd="[object Float64Array]",kd="[object Int8Array]",Ad="[object Int16Array]",Ed="[object Int32Array]",Dd="[object Uint8Array]",Md="[object Uint8ClampedArray]",Fd="[object Uint16Array]",Od="[object Uint32Array]",k={};k[Td]=k[Cd]=k[kd]=k[Ad]=k[Ed]=k[Dd]=k[Md]=k[Fd]=k[Od]=!0;k[dd]=k[cd]=k[Sd]=k[fd]=k[wd]=k[md]=k[ud]=k[pd]=k[hd]=k[gd]=k[bd]=k[xd]=k[vd]=k[_d]=k[yd]=!1;function Id(t){return U(t)&&Bt(t.length)&&!!k[le(t)]}var Go=Id;function Rd(t){return function(i){return t(i)}}var nt=Rd;var Qo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kt=Qo&&typeof module=="object"&&module&&!module.nodeType&&module,Nd=kt&&kt.exports===Qo,zr=Nd&&Pt.process,Ud=function(){try{var t=kt&&kt.require&&kt.require("util").types;return t||zr&&zr.binding&&zr.binding("util")}catch{}}(),xe=Ud;var Jo=xe&&xe.isTypedArray,Pd=Jo?nt(Jo):Go,st=Pd;var Ld=Object.prototype,jd=Ld.hasOwnProperty;function zd(t,i){var e=Z(t),r=!e&&Ct(t),o=!e&&!r&&be(t),n=!e&&!r&&!o&&st(t),s=e||r||o||n,c=s?Bo(t.length,String):[],m=c.length;for(var b in t)(i||jd.call(t,b))&&!(s&&(b=="length"||o&&(b=="offset"||b=="parent")||n&&(b=="buffer"||b=="byteLength"||b=="byteOffset")||$t(b,m)))&&c.push(b);return c}var Wt=zd;var $d=Object.prototype;function Bd(t){var i=t&&t.constructor,e=typeof i=="function"&&i.prototype||$d;return t===e}var lt=Bd;function Wd(t,i){return function(e){return t(i(e))}}var Ht=Wd;var Hd=Ht(Object.keys,Object),Zo=Hd;var Vd=Object.prototype,qd=Vd.hasOwnProperty;function Kd(t){if(!lt(t))return Zo(t);var i=[];for(var e in Object(t))qd.call(t,e)&&e!="constructor"&&i.push(e);return i}var Yo=Kd;function Gd(t){return t!=null&&Bt(t.length)&&!et(t)}var Me=Gd;function Qd(t){return Me(t)?Wt(t):Yo(t)}var dt=Qd;function Jd(t,i){return t&&ue(i,dt(i),t)}var Xo=Jd;function Zd(t){var i=[];if(t!=null)for(var e in Object(t))i.push(e);return i}var ea=Zd;var Yd=Object.prototype,Xd=Yd.hasOwnProperty;function ec(t){if(!j(t))return ea(t);var i=lt(t),e=[];for(var r in t)r=="constructor"&&(i||!Xd.call(t,r))||e.push(r);return e}var ta=ec;function tc(t){return Me(t)?Wt(t,!0):ta(t)}var pe=tc;function rc(t,i){return t&&ue(i,pe(i),t)}var ra=rc;var na=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ia=na&&typeof module=="object"&&module&&!module.nodeType&&module,ic=ia&&ia.exports===na,oa=ic?M.Buffer:void 0,aa=oa?oa.allocUnsafe:void 0;function oc(t,i){if(i)return t.slice();var e=t.length,r=aa?aa(e):new t.constructor(e);return t.copy(r),r}var Vt=oc;function ac(t,i){var e=-1,r=t.length;for(i||(i=Array(r));++e<r;)i[e]=t[e];return i}var qt=ac;function nc(t,i){for(var e=-1,r=t==null?0:t.length,o=0,n=[];++e<r;){var s=t[e];i(s,e,t)&&(n[o++]=s)}return n}var sa=nc;function sc(){return[]}var Kt=sc;var lc=Object.prototype,dc=lc.propertyIsEnumerable,la=Object.getOwnPropertySymbols,cc=la?function(t){return t==null?[]:(t=Object(t),sa(la(t),function(i){return dc.call(t,i)}))}:Kt,ct=cc;function fc(t,i){return ue(t,ct(t),i)}var da=fc;function mc(t,i){for(var e=-1,r=i.length,o=t.length;++e<r;)t[o+e]=i[e];return t}var Gt=mc;var uc=Ht(Object.getPrototypeOf,Object),ft=uc;var pc=Object.getOwnPropertySymbols,hc=pc?function(t){for(var i=[];t;)Gt(i,ct(t)),t=ft(t);return i}:Kt,Qt=hc;function gc(t,i){return ue(t,Qt(t),i)}var ca=gc;function bc(t,i,e){var r=i(t);return Z(t)?r:Gt(r,e(t))}var Jt=bc;function xc(t){return Jt(t,dt,ct)}var At=xc;function vc(t){return Jt(t,pe,Qt)}var fa=vc;var _c=q(M,"DataView"),Zt=_c;var yc=q(M,"Promise"),Yt=yc;var Sc=q(M,"Set"),Xt=Sc;var wc=q(M,"WeakMap"),er=wc;var ma="[object Map]",Tc="[object Object]",ua="[object Promise]",pa="[object Set]",ha="[object WeakMap]",ga="[object DataView]",Cc=he(Zt),kc=he(Ae),Ac=he(Yt),Ec=he(Xt),Dc=he(er),Le=le;(Zt&&Le(new Zt(new ArrayBuffer(1)))!=ga||Ae&&Le(new Ae)!=ma||Yt&&Le(Yt.resolve())!=ua||Xt&&Le(new Xt)!=pa||er&&Le(new er)!=ha)&&(Le=function(t){var i=le(t),e=i==Tc?t.constructor:void 0,r=e?he(e):"";if(r)switch(r){case Cc:return ga;case kc:return ma;case Ac:return ua;case Ec:return pa;case Dc:return ha}return i});var ve=Le;var Mc=Object.prototype,Fc=Mc.hasOwnProperty;function Oc(t){var i=t.length,e=new t.constructor(i);return i&&typeof t[0]=="string"&&Fc.call(t,"index")&&(e.index=t.index,e.input=t.input),e}var ba=Oc;var Ic=M.Uint8Array,mt=Ic;function Rc(t){var i=new t.constructor(t.byteLength);return new mt(i).set(new mt(t)),i}var ut=Rc;function Nc(t,i){var e=i?ut(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}var xa=Nc;var Uc=/\w*$/;function Pc(t){var i=new t.constructor(t.source,Uc.exec(t));return i.lastIndex=t.lastIndex,i}var va=Pc;var _a=J?J.prototype:void 0,ya=_a?_a.valueOf:void 0;function Lc(t){return ya?Object(ya.call(t)):{}}var Sa=Lc;function jc(t,i){var e=i?ut(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}var tr=jc;var zc="[object Boolean]",$c="[object Date]",Bc="[object Map]",Wc="[object Number]",Hc="[object RegExp]",Vc="[object Set]",qc="[object String]",Kc="[object Symbol]",Gc="[object ArrayBuffer]",Qc="[object DataView]",Jc="[object Float32Array]",Zc="[object Float64Array]",Yc="[object Int8Array]",Xc="[object Int16Array]",ef="[object Int32Array]",tf="[object Uint8Array]",rf="[object Uint8ClampedArray]",of="[object Uint16Array]",af="[object Uint32Array]";function nf(t,i,e){var r=t.constructor;switch(i){case Gc:return ut(t);case zc:case $c:return new r(+t);case Qc:return xa(t,e);case Jc:case Zc:case Yc:case Xc:case ef:case tf:case rf:case of:case af:return tr(t,e);case Bc:return new r;case Wc:case qc:return new r(t);case Hc:return va(t);case Vc:return new r;case Kc:return Sa(t)}}var wa=nf;var Ta=Object.create,sf=function(){function t(){}return function(i){if(!j(i))return{};if(Ta)return Ta(i);t.prototype=i;var e=new t;return t.prototype=void 0,e}}(),Ca=sf;function lf(t){return typeof t.constructor=="function"&&!lt(t)?Ca(ft(t)):{}}var rr=lf;var df="[object Map]";function cf(t){return U(t)&&ve(t)==df}var ka=cf;var Aa=xe&&xe.isMap,ff=Aa?nt(Aa):ka,Ea=ff;var mf="[object Set]";function uf(t){return U(t)&&ve(t)==mf}var Da=uf;var Ma=xe&&xe.isSet,pf=Ma?nt(Ma):Da,Fa=pf;var hf=1,gf=2,bf=4,Oa="[object Arguments]",xf="[object Array]",vf="[object Boolean]",_f="[object Date]",yf="[object Error]",Ia="[object Function]",Sf="[object GeneratorFunction]",wf="[object Map]",Tf="[object Number]",Ra="[object Object]",Cf="[object RegExp]",kf="[object Set]",Af="[object String]",Ef="[object Symbol]",Df="[object WeakMap]",Mf="[object ArrayBuffer]",Ff="[object DataView]",Of="[object Float32Array]",If="[object Float64Array]",Rf="[object Int8Array]",Nf="[object Int16Array]",Uf="[object Int32Array]",Pf="[object Uint8Array]",Lf="[object Uint8ClampedArray]",jf="[object Uint16Array]",zf="[object Uint32Array]",C={};C[Oa]=C[xf]=C[Mf]=C[Ff]=C[vf]=C[_f]=C[Of]=C[If]=C[Rf]=C[Nf]=C[Uf]=C[wf]=C[Tf]=C[Ra]=C[Cf]=C[kf]=C[Af]=C[Ef]=C[Pf]=C[Lf]=C[jf]=C[zf]=!0;C[yf]=C[Ia]=C[Df]=!1;function ir(t,i,e,r,o,n){var s,c=i&hf,m=i&gf,b=i&bf;if(e&&(s=o?e(t,r,o,n):e(t)),s!==void 0)return s;if(!j(t))return t;var _=Z(t);if(_){if(s=ba(t),!c)return qt(t,s)}else{var u=ve(t),v=u==Ia||u==Sf;if(be(t))return Vt(t,c);if(u==Ra||u==Oa||v&&!o){if(s=m||v?{}:rr(t),!c)return m?ca(t,ra(s,t)):da(t,Xo(s,t))}else{if(!C[u])return o?t:{};s=wa(t,u,c)}}n||(n=new De);var y=n.get(t);if(y)return y;n.set(t,s),Fa(t)?t.forEach(function(S){s.add(ir(S,i,e,S,t,n))}):Ea(t)&&t.forEach(function(S,R){s.set(R,ir(S,i,e,R,t,n))});var w=b?m?fa:At:m?pe:dt,E=_?void 0:w(t);return $o(E||t,function(S,R){E&&(R=S,S=t[R]),zt(s,R,ir(S,i,e,R,t,n))}),s}var Na=ir;var $f=1,Bf=4;function Wf(t){return Na(t,$f|Bf)}var $r=Wf;function Y(t){t||(Tr(Y),t=g(ye));let i=new Re(e=>t.onDestroy(e.next.bind(e)));return e=>e.pipe(Ue(i))}function Hf(t,i){let e=!i?.manualCleanup;e&&!i?.injector&&Tr(Hf);let r=e?i?.injector?.get(ye)??g(ye):null,o=Vf(i?.equal),n;i?.requireSync?n=ht({kind:0},{equal:o}):n=ht({kind:1,value:i?.initialValue},{equal:o});let s=t.subscribe({next:c=>n.set({kind:1,value:c}),error:c=>{if(i?.rejectErrors)throw c;n.set({kind:2,error:c})}});if(i?.requireSync&&n().kind===0)throw new wr(601,!1);return r?.onDestroy(s.unsubscribe.bind(s)),yt(()=>{let c=n();switch(c.kind){case 1:return c.value;case 2:throw c.error;case 0:throw new wr(601,!1)}},{equal:i?.equal})}function Vf(t=Object.is){return(i,e)=>i.kind===1&&e.kind===1&&t(i.value,e.value)}var qf="/signalk/v1/",Ua="auth/login",Kf="auth/logout",Gf="auth/validate",Qf=60,Pa=(()=>{class t{http=g(Ke);conn=g(Ye);_IsLoggedIn$=new D(!1);isLoggedIn$=this._IsLoggedIn$.asObservable();_authToken$=new D(null);authToken$=this._authToken$.asObservable();connectionEndpointSubscription=null;authTokenSubscription=null;isRenewingToken=!1;loginUrl=null;logoutUrl=null;validateTokenUrl=null;constructor(){let e=JSON.parse(localStorage.getItem("authorization_token"));e&&(e.isDeviceAccessToken?e.expiry===null?(console.log("[Authentication Service] Device Access Token found with expiry: NEVER"),this._authToken$.next(e)):this.isTokenExpired(e.expiry)?(console.log("[Authentication Service] Device Access Token expired. Deleting token"),localStorage.removeItem("authorization_token")):(console.log("[Authentication Service] Device Access Token found in Local Storage"),this._authToken$.next(e)):(console.log("[Authentication Service] User session token found in Local Storage"),console.log("[Authentication Service] Deleting user session token"),localStorage.removeItem("authorization_token"))),this.authTokenSubscription=this._authToken$.pipe($e(r=>!!r&&r.expiry!==null),Ti((r,o)=>r.expiry===o.expiry),ze(r=>{let o=this.getTokenExpirationDate(r.expiry,Qf),n=o.getTime()-Date.now();return console.log(`[Authentication Service] Token refresh timer set for ${n} ms (Token Expiry: ${o.toISOString()})`),Math.max(n,0)}),Di(r=>_i(r))).subscribe(()=>{this.handleTokenRenewal()}),this.connectionEndpointSubscription=this.conn.serverServiceEndpoint$.subscribe(r=>{if(r.operation===2){let o=r.httpServiceUrl.substring(0,r.httpServiceUrl.length-4);this.loginUrl=o+Ua,this.logoutUrl=o+Kf,this.validateTokenUrl=o+Gf}})}handleTokenRenewal(){if(this.isRenewingToken){console.warn("[Authentication Service] Token renewal already in progress.");return}this.isRenewingToken=!0;let e=JSON.parse(localStorage.getItem("authorization_token"));if(!e){console.warn("[Authentication Service] No token found in local storage. Cannot renew."),this.isRenewingToken=!1;return}if(e.isDeviceAccessToken)console.warn("[Authentication Service] Device Access Token expired. Manual renewal required."),this.isRenewingToken=!1;else if(this.isTokenExpired(e.expiry))console.log("[Authentication Service] User session Token expired. Cannot renew."),this.isRenewingToken=!1;else{console.log("[Authentication Service] User session Token expires soon. Renewing token...");let r=JSON.parse(localStorage.getItem("connectionConfig"));this.login({usr:r.loginName,pwd:r.loginPassword}).then(()=>{console.log("[Authentication Service] Token successfully renewed.")}).catch(o=>{console.error("[Authentication Service] Token renewal failed. Server returned:",o.error)}).finally(()=>{this.isRenewingToken=!1})}}login(n){return ie(this,arguments,function*({usr:e,pwd:r,newUrl:o}){let s;o?s=o+qf+Ua:s=this.loginUrl,this._IsLoggedIn$.getValue()&&(yield this.logout(!0)),yield de(this.http.post(s,{username:e,password:r},{observe:"response"})).then(c=>{console.log("[Authentication Service] User "+e+" login successful"),this.setSession(c.body.token)}).catch(c=>{this.deleteToken(),this.handleError(c)})})}handleError(e){throw e.status===0?(console.error("[Authentication Service] An error occurred:",e.error),this.deleteToken()):console.error(`[Authentication Service] Backend returned code ${e.status}, body was: `,e.error),e}setSession(e){if(e){let r=JSON.parse(atob(e.split(".")[1])).exp,o={token:null,expiry:null,isDeviceAccessToken:!1};r===void 0?(o.token=e,console.log("[Authentication Service] User Session Token received. Token Expiration: NEVER"),this._IsLoggedIn$.next(!0),this._authToken$.next(o),localStorage.setItem("authorization_token",JSON.stringify(o))):this.isTokenExpired(r)?console.log("[Authentication Service] Received expired Session Token from server"):(o.token=e,o.expiry=r,console.log("[Authentication Service] Session Authorization Token received. Token Expiration: "+this.getTokenExpirationDate(o.expiry)),this._IsLoggedIn$.next(!0),this._authToken$.next(o),localStorage.setItem("authorization_token",JSON.stringify(o)))}}isTokenExpired(e){return Math.floor(new Date().getTime()/1e3)>=e}getTokenExpirationDate(e,r){let o=new Date(0);if(r){let n=new Date(0);n.setUTCSeconds(e-r),o=n}else o.setUTCSeconds(e);return o}renewToken(){return this.http.post(this.validateTokenUrl,null,{observe:"response"})}logout(e){return ie(this,null,function*(){localStorage.removeItem("authorization_token"),yield de(this.http.put(this.logoutUrl,null)).then(r=>{this._IsLoggedIn$.next(!1),e||this._authToken$.next(null),console.log("[Authentication Service] User logged out")}).catch(r=>{console.error(r)})})}deleteToken(){this._authToken$&&(console.log("[Authentication Service] Deleting Authorization token"),localStorage.removeItem("authorization_token"),this._IsLoggedIn$.next(!1),this._authToken$.next(null))}setDeviceAccessToken(e){if(e){let r=JSON.parse(atob(e.split(".")[1])).exp,o={token:null,expiry:null,isDeviceAccessToken:!0};r===void 0?(o.token=e,console.log("[Authentication Service] Device Access Token received. Token Expiration: NEVER"),this._IsLoggedIn$.next(!1),this._authToken$.next(o),localStorage.setItem("authorization_token",JSON.stringify(o))):this.isTokenExpired(r)?console.log("[Authentication Service] Received expired Device Access Token from server"):(o.token=e,o.expiry=r,console.log("[Authentication Service] Device Access Token received. Token Expiration: "+this.getTokenExpirationDate(o.expiry)),this._IsLoggedIn$.next(!1),this._authToken$.next(o),localStorage.setItem("authorization_token",JSON.stringify(o)))}}ngOnDestroy(){this.connectionEndpointSubscription?.unsubscribe(),this.authTokenSubscription?.unsubscribe()}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Jf={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)},Zf="WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }",or=class t extends hi{constructor(i,e){if(super(),this._socket=null,i instanceof Re)this.destination=e,this.source=i;else{let r=this._config=Object.assign({},Jf);if(this._output=new T,typeof i=="string")r.url=i;else for(let o in i)i.hasOwnProperty(o)&&(r[o]=i[o]);if(!r.WebSocketCtor&&WebSocket)r.WebSocketCtor=WebSocket;else if(!r.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new Ne}}lift(i){let e=new t(this._config,this.destination);return e.operator=i,e.source=this,e}_resetState(){this._socket=null,this.source||(this.destination=new Ne),this._output=new T}multiplex(i,e,r){let o=this;return new Re(n=>{try{o.next(i())}catch(c){n.error(c)}let s=o.subscribe({next:c=>{try{r(c)&&n.next(c)}catch(m){n.error(m)}},error:c=>n.error(c),complete:()=>n.complete()});return()=>{try{o.next(e())}catch(c){n.error(c)}s.unsubscribe()}})}_connectSocket(){let{WebSocketCtor:i,protocol:e,url:r,binaryType:o}=this._config,n=this._output,s=null;try{s=e?new i(r,e):new i(r),this._socket=s,o&&(this._socket.binaryType=o)}catch(m){n.error(m);return}let c=new It(()=>{this._socket=null,s&&s.readyState===1&&s.close()});s.onopen=m=>{let{_socket:b}=this;if(!b){s.close(),this._resetState();return}let{openObserver:_}=this._config;_&&_.next(m);let u=this.destination;this.destination=pi.create(v=>{if(s.readyState===1)try{let{serializer:y}=this._config;s.send(y(v))}catch(y){this.destination.error(y)}},v=>{let{closingObserver:y}=this._config;y&&y.next(void 0),v&&v.code?s.close(v.code,v.reason):n.error(new TypeError(Zf)),this._resetState()},()=>{let{closingObserver:v}=this._config;v&&v.next(void 0),s.close(),this._resetState()}),u&&u instanceof Ne&&c.add(u.subscribe(this.destination))},s.onerror=m=>{this._resetState(),n.error(m)},s.onclose=m=>{s===this._socket&&this._resetState();let{closeObserver:b}=this._config;b&&b.next(m),m.wasClean?n.complete():n.error(m)},s.onmessage=m=>{try{let{deserializer:b}=this._config;n.next(b(m))}catch(b){n.error(b)}}}_subscribe(i){let{source:e}=this;return e?e.subscribe(i):(this._socket||this._connectSocket(),this._output.subscribe(i),i.add(()=>{let{_socket:r}=this;this._output.observers.length===0&&(r&&(r.readyState===1||r.readyState===0)&&r.close(),this._resetState())}),i)}unsubscribe(){let{_socket:i}=this;i&&(i.readyState===1||i.readyState===0)&&i.close(),this._resetState(),super.unsubscribe()}};function Br(t){return new or(t)}var La=(()=>{class t{_destroyRef=g(ye);_skRequests$=new T;_skNotificationsMsg$=new T;_skValue$=new T;_skMetadata$=new T;_vesselSelfUrn$=new T;_selfUrn=void 0;streamEndpoint={operation:0,message:"Not connected",hasToken:!1};streamEndpoint$=new D(this.streamEndpoint);endpointWS=null;SubscriptionType="self";WS_RECONNECT_INTERVAL=3e3;WS_RETRY_COUNT=3;WS_CONNECTION_SUBSCRIBE="?subscribe=";WS_CONNECTION_META="&sendMeta=all";socketWS$;socketWSCloseEvent$=new T;socketWSOpenEvent$=new T;authToken=null;timeoutIds=[];server=g(Ye);auth=g(Pa);zones=g(G);constructor(){this.server.serverServiceEndpoint$.pipe(Y(this._destroyRef)).subscribe(e=>{let r=null;e.operation===2?r="New endpoint":r="Connection stopped",e.operation===2?(this.endpointWS=e.WsServiceUrl,this.socketWS$&&this.streamEndpoint.operation!==4&&this.closeWS(r),this.timeoutIds.push(setTimeout(()=>{this.connectWS(r)},250))):this.socketWS$&&e.operation!==1&&this.streamEndpoint.operation!==4&&this.closeWS(r),e.subscribeAll?this.SubscriptionType="all":this.SubscriptionType="self"}),this.auth.authToken$.pipe(Y(this._destroyRef)).subscribe(e=>{if(this.authToken!=e){this.authToken=e;let r=null;e?r="New token":r="Deleted Token",this.socketWS$&&(this.streamEndpoint.operation===2||this.streamEndpoint.operation===1)&&(this.closeWS(r),this.timeoutIds.push(setTimeout(()=>{this.connectWS(r)},250)))}}),this.socketWSOpenEvent$.pipe(Y(this._destroyRef)).subscribe(e=>{this.streamEndpoint.message="Connected",this.streamEndpoint.operation=2,this.authToken?console.log("[Delta Service] WebSocket connected with Authorization Token"):console.log("[Delta Service] WebSocket connected without Authorization Token"),this.streamEndpoint$.next(this.streamEndpoint)}),this.socketWSCloseEvent$.pipe(Y(this._destroyRef)).subscribe(e=>{e.wasClean?(this.streamEndpoint.message="WebSocket closed",this.streamEndpoint.operation=0,console.log("[Delta Service] WebSocket closed")):(console.log("[Delta Service] WebSocket terminated due to socket error"),this.streamEndpoint.message="WebSocket error",this.streamEndpoint.operation=3,console.log("[Delta Service] WebSocket closed")),this.streamEndpoint$.next(this.streamEndpoint)})}connectWS(e){this.streamEndpoint.message="Connecting",this.streamEndpoint.operation=1,console.log(`[Delta Service] ${e}: WebSocket opening...`),this.streamEndpoint$.next(this.streamEndpoint),this.socketWS$=this.getNewWebSocket(),this.zones.runOutsideAngular(()=>{this.socketWS$.pipe(ki({count:this.WS_RETRY_COUNT,delay:(r,o)=>(console.error(`[Delta Service] WebSocket error (attempt ${o}): ${JSON.stringify(r,["code","message","type"])}`),Rt(r).pipe(wi(this.WS_RECONNECT_INTERVAL)))})).pipe(Y(this._destroyRef)).subscribe({next:r=>this.processWebsocketMessage(r),error:r=>console.error("[Delta Service] WebSocket connection failed after maximum retries:",r)})})}getNewWebSocket(){let e=this.WS_CONNECTION_SUBSCRIBE+this.SubscriptionType+this.WS_CONNECTION_META;return this.authToken!=null?(e+="&token="+this.authToken.token,this.streamEndpoint.hasToken=!0):this.streamEndpoint.hasToken=!1,Br({url:this.endpointWS+e,closeObserver:this.socketWSCloseEvent$,openObserver:this.socketWSOpenEvent$})}closeWS(e){this.socketWS$&&(this.streamEndpoint.operation=4,console.log("[Delta Service] "+e+": WebSocket closing..."),this.socketWS$.complete())}publishDelta(e){this.socketWS$?(console.log("[Delta Service] WebSocket sending message"),this.socketWS$.next(e)):(this.timeoutIds.push(setTimeout(()=>{this.socketWS$&&(console.log("[Delta Service] WebSocket retry sending message"),this.socketWS$.next(e))},1e3)),console.log("[Delta Service] No WebSocket present to send message"))}processWebsocketMessage(e){if(e.updates){this.parseUpdates(e.updates,e.context);return}if(e.requestId){this._skRequests$.next(e);return}if(e.errorMessage){console.warn("[Delta Service] Service received stream error message: "+e.errorMessage);return}if(e.self){this._selfUrn=e.self,this._vesselSelfUrn$.next(e.self),this.server.setServerInfo(e.name,e.version,e.roles);return}console.warn("[Delta Service] Unknown message type. Message content:"+e)}parseUpdates(e,r){e.forEach(o=>{o.meta!==void 0&&o.meta.forEach(n=>this.parseSkMeta(n,r)),o.values!==void 0&&o.values.forEach(n=>{if(n.path.startsWith("notifications."))this._skNotificationsMsg$.next(n);else if(typeof n.value=="object"&&n.value!==null)Object.keys(n.value).forEach(s=>{let c={context:r,path:`${n.path}.${s}`,source:o.$source,timestamp:o.timestamp,value:n.value[s]};o.$source=="defaults"&&n.path==""&&(c.path=c.path.slice(1)),r!=this._selfUrn&&n.path==""&&(c.path=c.path.slice(1)),this._skValue$.next(c)});else{let s={context:r,path:n.path,source:o.$source,timestamp:o.timestamp,value:n.value};this._skValue$.next(s)}})})}parseSkMeta(e,r){e.value.properties!==void 0?Object.keys(e.value.properties).forEach(o=>{this._skMetadata$.next({context:r,path:`${e.path}.${o}`,meta:e.value.properties[o]})}):this._skMetadata$.next({context:r,path:e.path,meta:e.value})}getDataStreamStatusAsO(){return this.streamEndpoint$.asObservable()}subscribeRequestUpdates(){return this._skRequests$.asObservable()}subscribeNotificationsUpdates(){return this._skNotificationsMsg$.asObservable()}subscribeDataPathsUpdates(){return this._skValue$.asObservable()}subscribeMetadataUpdates(){return this._skMetadata$.asObservable()}subscribeSelfUpdates(){return this._vesselSelfUrn$.asObservable()}OnDestroy(){this._skRequests$.complete(),this._skNotificationsMsg$.complete(),this._skValue$.complete(),this._skMetadata$.complete(),this._vesselSelfUrn$.complete(),this.streamEndpoint$.complete(),this.socketWSOpenEvent$.complete(),this.socketWSCloseEvent$.complete(),this.socketWS$?.complete(),this.timeoutIds.forEach(e=>clearTimeout(e)),this.closeWS("App terminated")}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Yf(t){return t}var ar=Yf;function Xf(t,i,e){switch(e.length){case 0:return t.call(i);case 1:return t.call(i,e[0]);case 2:return t.call(i,e[0],e[1]);case 3:return t.call(i,e[0],e[1],e[2])}return t.apply(i,e)}var ja=Xf;var em=800,tm=16,rm=Date.now;function im(t){var i=0,e=0;return function(){var r=rm(),o=tm-(r-e);if(e=r,o>0){if(++i>=em)return arguments[0]}else i=0;return t.apply(void 0,arguments)}}var za=im;function om(t){return function(){return t}}var $a=om;var am=ot?function(t,i){return ot(t,"toString",{configurable:!0,enumerable:!1,value:$a(i),writable:!0})}:ar,Ba=am;var nm=za(Ba),Wa=nm;var Ha=Math.max;function sm(t,i,e){return i=Ha(i===void 0?t.length-1:i,0),function(){for(var r=arguments,o=-1,n=Ha(r.length-i,0),s=Array(n);++o<n;)s[o]=r[i+o];o=-1;for(var c=Array(i+1);++o<i;)c[o]=r[o];return c[i]=e(s),ja(t,this,c)}}var Va=sm;function lm(t,i){return Wa(Va(t,i,ar),t+"")}var qa=lm;function dm(t,i,e){if(!j(e))return!1;var r=typeof i;return(r=="number"?Me(e)&&$t(i,e.length):r=="string"&&i in e)?me(e[i],t):!1}var Ka=dm;function cm(t){return qa(function(i,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=t.length>3&&typeof n=="function"?(o--,n):void 0,s&&Ka(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),i=Object(i);++r<o;){var c=e[r];c&&t(i,c,r,n)}return i})}var Ga=cm;var fm="[object Object]",mm=Function.prototype,um=Object.prototype,Qa=mm.toString,pm=um.hasOwnProperty,hm=Qa.call(Object);function gm(t){if(!U(t)||le(t)!=fm)return!1;var i=ft(t);if(i===null)return!0;var e=pm.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Qa.call(e)==hm}var Ja=gm;var bm="__lodash_hash_undefined__";function xm(t){return this.__data__.set(t,bm),this}var Za=xm;function vm(t){return this.__data__.has(t)}var Ya=vm;function nr(t){var i=-1,e=t==null?0:t.length;for(this.__data__=new jt;++i<e;)this.add(t[i])}nr.prototype.add=nr.prototype.push=Za;nr.prototype.has=Ya;var Xa=nr;function _m(t,i){for(var e=-1,r=t==null?0:t.length;++e<r;)if(i(t[e],e,t))return!0;return!1}var en=_m;function ym(t,i){return t.has(i)}var tn=ym;var Sm=1,wm=2;function Tm(t,i,e,r,o,n){var s=e&Sm,c=t.length,m=i.length;if(c!=m&&!(s&&m>c))return!1;var b=n.get(t),_=n.get(i);if(b&&_)return b==i&&_==t;var u=-1,v=!0,y=e&wm?new Xa:void 0;for(n.set(t,i),n.set(i,t);++u<c;){var w=t[u],E=i[u];if(r)var S=s?r(E,w,u,i,t,n):r(w,E,u,t,i,n);if(S!==void 0){if(S)continue;v=!1;break}if(y){if(!en(i,function(R,N){if(!tn(y,N)&&(w===R||o(w,R,e,r,n)))return y.push(N)})){v=!1;break}}else if(!(w===E||o(w,E,e,r,n))){v=!1;break}}return n.delete(t),n.delete(i),v}var sr=Tm;function Cm(t){var i=-1,e=Array(t.size);return t.forEach(function(r,o){e[++i]=[o,r]}),e}var rn=Cm;function km(t){var i=-1,e=Array(t.size);return t.forEach(function(r){e[++i]=r}),e}var on=km;var Am=1,Em=2,Dm="[object Boolean]",Mm="[object Date]",Fm="[object Error]",Om="[object Map]",Im="[object Number]",Rm="[object RegExp]",Nm="[object Set]",Um="[object String]",Pm="[object Symbol]",Lm="[object ArrayBuffer]",jm="[object DataView]",an=J?J.prototype:void 0,Wr=an?an.valueOf:void 0;function zm(t,i,e,r,o,n,s){switch(e){case jm:if(t.byteLength!=i.byteLength||t.byteOffset!=i.byteOffset)return!1;t=t.buffer,i=i.buffer;case Lm:return!(t.byteLength!=i.byteLength||!n(new mt(t),new mt(i)));case Dm:case Mm:case Im:return me(+t,+i);case Fm:return t.name==i.name&&t.message==i.message;case Rm:case Um:return t==i+"";case Om:var c=rn;case Nm:var m=r&Am;if(c||(c=on),t.size!=i.size&&!m)return!1;var b=s.get(t);if(b)return b==i;r|=Em,s.set(t,i);var _=sr(c(t),c(i),r,o,n,s);return s.delete(t),_;case Pm:if(Wr)return Wr.call(t)==Wr.call(i)}return!1}var nn=zm;var $m=1,Bm=Object.prototype,Wm=Bm.hasOwnProperty;function Hm(t,i,e,r,o,n){var s=e&$m,c=At(t),m=c.length,b=At(i),_=b.length;if(m!=_&&!s)return!1;for(var u=m;u--;){var v=c[u];if(!(s?v in i:Wm.call(i,v)))return!1}var y=n.get(t),w=n.get(i);if(y&&w)return y==i&&w==t;var E=!0;n.set(t,i),n.set(i,t);for(var S=s;++u<m;){v=c[u];var R=t[v],N=i[v];if(r)var Fe=s?r(N,R,v,i,t,n):r(R,N,v,t,i,n);if(!(Fe===void 0?R===N||o(R,N,e,r,n):Fe)){E=!1;break}S||(S=v=="constructor")}if(E&&!S){var F=t.constructor,X=i.constructor;F!=X&&"constructor"in t&&"constructor"in i&&!(typeof F=="function"&&F instanceof F&&typeof X=="function"&&X instanceof X)&&(E=!1)}return n.delete(t),n.delete(i),E}var sn=Hm;var Vm=1,ln="[object Arguments]",dn="[object Array]",lr="[object Object]",qm=Object.prototype,cn=qm.hasOwnProperty;function Km(t,i,e,r,o,n){var s=Z(t),c=Z(i),m=s?dn:ve(t),b=c?dn:ve(i);m=m==ln?lr:m,b=b==ln?lr:b;var _=m==lr,u=b==lr,v=m==b;if(v&&be(t)){if(!be(i))return!1;s=!0,_=!1}if(v&&!_)return n||(n=new De),s||st(t)?sr(t,i,e,r,o,n):nn(t,i,m,e,r,o,n);if(!(e&Vm)){var y=_&&cn.call(t,"__wrapped__"),w=u&&cn.call(i,"__wrapped__");if(y||w){var E=y?t.value():t,S=w?i.value():i;return n||(n=new De),o(E,S,e,r,n)}}return v?(n||(n=new De),sn(t,i,e,r,o,n)):!1}var fn=Km;function mn(t,i,e,r,o){return t===i?!0:t==null||i==null||!U(t)&&!U(i)?t!==t&&i!==i:fn(t,i,e,r,mn,o)}var un=mn;function Gm(t){return function(i,e,r){for(var o=-1,n=Object(i),s=r(i),c=s.length;c--;){var m=s[t?c:++o];if(e(n[m],m,n)===!1)break}return i}}var pn=Gm;var Qm=pn(),hn=Qm;function Jm(t,i,e){(e!==void 0&&!me(t[i],e)||e===void 0&&!(i in t))&&at(t,i,e)}var Et=Jm;function Zm(t){return U(t)&&Me(t)}var gn=Zm;function Ym(t,i){if(!(i==="constructor"&&typeof t[i]=="function")&&i!="__proto__")return t[i]}var Dt=Ym;function Xm(t){return ue(t,pe(t))}var bn=Xm;function eu(t,i,e,r,o,n,s){var c=Dt(t,e),m=Dt(i,e),b=s.get(m);if(b){Et(t,e,b);return}var _=n?n(c,m,e+"",t,i,s):void 0,u=_===void 0;if(u){var v=Z(m),y=!v&&be(m),w=!v&&!y&&st(m);_=m,v||y||w?Z(c)?_=c:gn(c)?_=qt(c):y?(u=!1,_=Vt(m,!0)):w?(u=!1,_=tr(m,!0)):_=[]:Ja(m)||Ct(m)?(_=c,Ct(c)?_=bn(c):(!j(c)||et(c))&&(_=rr(m))):u=!1}u&&(s.set(m,_),o(_,m,r,n,s),s.delete(m)),Et(t,e,_)}var xn=eu;function vn(t,i,e,r,o){t!==i&&hn(i,function(n,s){if(o||(o=new De),j(n))xn(t,i,s,e,vn,r,o);else{var c=r?r(Dt(t,s),n,s+"",t,i,o):void 0;c===void 0&&(c=n),Et(t,s,c)}},pe)}var _n=vn;function tu(t,i){return un(t,i)}var ru=tu;var iu=Ga(function(t,i,e){_n(t,i,e)}),Hr=iu;var pt=function(t){return t.Normal="normal",t.Nominal="nominal",t.Alert="alert",t.Warn="warn",t.Alarm="alarm",t.Emergency="emergency",t}(pt||{});var ou=function(t){return t.Visual="visual",t.Sound="sound",t}(ou||{});var wn=bs(yn());var au="self",Sn=t=>isFinite(+(t instanceof Date?t:new Date(t)))?!!new RegExp("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(.[0-9]+)?(([Zz])|([+|-]([01][0-9]|2[0-3]):[0-5][0-9]))$").test(t):!1,Y0=(()=>{class t{delta=g(La);_destroyRef=g(ye);_deltaUpdatesCounter=null;_deltaUpdatesSubject=new Ne(60);_deltaUpdatesCounterTimer=null;_isSkDataFullTreeActive=!1;_skDataSubject$=new D([]);_dataServiceMeta=[];_isSkMetaFullTreeActive=!1;_dataServiceMetaSubject$=new D([]);_skNotificationMsg$=new T;_skNotificationMeta$=new T;_isReset=new T;_selfUrn="self";_skData=[];_pathRegister=[];constructor(){this._deltaUpdatesCounterTimer=setInterval(()=>{if(this._deltaUpdatesCounter!==null){let e={timestamp:Date.now(),value:this._deltaUpdatesCounter};this._deltaUpdatesSubject.next(e),this._deltaUpdatesCounter=0}},1e3),this.delta.subscribeDataPathsUpdates().pipe(Y(this._destroyRef)).subscribe(e=>{this.updatePathData(e)}),this.delta.subscribeMetadataUpdates().pipe(Y(this._destroyRef)).subscribe(e=>{this.setMeta(e)}),this.delta.subscribeNotificationsUpdates().pipe(Y(this._destroyRef)).subscribe(e=>{let r=e.path.replace("notifications.","self."),o=this._skData.find(n=>n.path==r);if(o&&o.state!==e.value.state){o.state=e.value.state;let n=this._pathRegister.find(s=>s.path==r);n&&n._pathState$.next(o.state)}this._skNotificationMsg$.next(e)}),this.delta.subscribeSelfUpdates().pipe(Y(this._destroyRef)).subscribe(e=>{this.setSelfUrn(e)})}getSignalkDeltaUpdateStatistics(){return this._deltaUpdatesSubject.asObservable()}resetSignalKData(){this._skData=[],this._selfUrn="self",this._isReset.next(!0)}unsubscribePath(e){let r=this._pathRegister.findIndex(o=>o.path===e);if(r!==-1){let o=this._pathRegister[r];o._pathData$?.complete(),o._pathState$?.complete(),o.pathDataUpdate$?.complete(),o.pathMeta$?.complete(),this._pathRegister.splice(r,1)}}subscribePath(e,r){let o=this._pathRegister.find(w=>w.path===e&&w.source===r);if(o)return o.pathDataUpdate$;let n=null,s=null,c=null,m=pt.Normal,b={data:{value:null,timestamp:null},state:m},_=null,u=this._skData.find(w=>w.path==e);this._skData.length&&u&&(n=r==="default"?u.pathValue:u.sources?.[r]?.sourceValue??null,s=r==="default"?u.pathTimestamp:u.sources?.[r]?.sourceTimestamp??null,c=s?new Date(s):null,b={data:{value:n,timestamp:c},state:u.state||m},m=u.state||m,_=u.meta||null);let v={path:e,source:r,_pathData$:new D(b.data),_pathState$:new D(b.state),pathDataUpdate$:new D(b),pathMeta$:new D(_)};return vi([v._pathData$,v._pathState$]).pipe(ze(([w,E])=>({data:w,state:E}))).subscribe(w=>v.pathDataUpdate$.next(w)),this._pathRegister.push(v),v.pathDataUpdate$}updatePathData(e){this._deltaUpdatesCounter++;let r=this.setPathContext(e.context,e.path);if(r.includes("position.latitude")||r.includes("position.longitude")){let s=wn.default.swiftConverter("deg","rad");e.value=s(e.value)}let o=this._skData.find(s=>s.path==r);if(o)o.defaultSource===void 0&&(o.defaultSource=e.source),o.type===void 0&&e.value!==null&&(o.type=typeof e.value,o.type==="string"&&Sn(e.value)&&(o.type="Date")),o.pathValue=e.value,o.pathTimestamp=e.timestamp,o.sources[e.source]={sourceTimestamp:e.timestamp,sourceValue:e.value};else{let s=typeof e.value;s==="string"&&Sn(e.value)&&(s="Date"),o={path:r,pathValue:e.value,pathTimestamp:e.timestamp,defaultSource:e.source,type:s,state:pt.Normal,sources:{[e.source]:{sourceTimestamp:e.timestamp,sourceValue:e.value}}},this._skData.push(o)}let n=this._pathRegister.filter(s=>s.path===r);if(n.length){let s={value:o.pathValue,timestamp:new Date(o.pathTimestamp)},c=n.find(b=>b.source==="default");c&&c._pathData$.next(s);let m=n.find(b=>b.source===e.source);m&&m._pathData$.next(s)}this._isSkDataFullTreeActive&&this._skDataSubject$.next(this._skData)}setMeta(e){if(e.path.startsWith("notifications."))this._skNotificationMeta$.next(e);else{let r=this.setPathContext(e.context,e.path),o=this._skData.find(s=>s.path===r);o?(o.type==="object"&&e.meta.units&&(o.type="number"),o.meta=Hr(o.meta,e.meta)):(o={path:r,pathValue:void 0,pathTimestamp:void 0,type:e.meta.units?"number":void 0,state:pt.Normal,defaultSource:void 0,sources:{},meta:e.meta},this._skData.push(o));let n=this._pathRegister.find(s=>s.path===r);n&&n.pathMeta$.next(o.meta),this._isSkMetaFullTreeActive&&(this._dataServiceMeta.push({path:r,meta:o.meta}),this._dataServiceMetaSubject$.next(this._dataServiceMeta))}}startSkMetaFullTree(){return this._isSkMetaFullTreeActive=!0,this._dataServiceMeta=this._skData.filter(e=>e.meta!==void 0&&e.path.startsWith("self.")).map(e=>({path:e.path,meta:e.meta})),this._dataServiceMetaSubject$.next(this._dataServiceMeta),this._dataServiceMetaSubject$}stopSkMetaFullTree(){this._isSkMetaFullTreeActive=!1,this._dataServiceMetaSubject$.next(null),this._dataServiceMeta=null}startSkDataFullTree(){return this._isSkDataFullTreeActive=!0,this._skDataSubject$.next(this._skData),this._skDataSubject$}stopSkDataFullTree(){this._isSkDataFullTreeActive=!1}setSelfUrn(e){e!==""||e!==null?(console.debug("[Signal K Data Service] Setting self to: "+e),this._selfUrn=e):console.error("[Signal K Data Service] Invalid self URN: "+e)}setPathContext(e,r){return e!==this._selfUrn?`${e}.${r}`:`${au}.${r}`}getPathsByType(e,r){return this._skData.filter(o=>o.type===e&&(!r||o.path.startsWith("self"))).map(o=>o.path)}getPathsAndMetaByType(e,r,o){return this._skData.filter(n=>n.type===e&&(!o||n.path.startsWith("self"))&&(r===!0?n.meta?.supportsPut===!0:!0)).map(n=>({path:n.path,meta:n.meta}))}getPathObject(e){return $r(this._skData.find(r=>r.path===e))||null}getPathUnitType(e){return this._skData.find(r=>r.path===e)?.meta?.units||null}timeoutPathObservable(e,r){let o=this._pathRegister.find(n=>n.path==e);if(o){let n;["string","Date","number"].includes(r)&&(n={data:{value:null,timestamp:null},state:pt.Normal}),o.pathDataUpdate$.next(n)}}getNotificationMsgObservable(){return this._skNotificationMsg$.asObservable()}getNotificationMetaObservable(){return this._skNotificationMeta$.asObservable()}getPathMetaObservable(e){return this._pathRegister.find(o=>o.path==e)?.pathMeta$.asObservable()||Rt(null)}getPathMeta(e){return this._skData.find(r=>r.path===e)?.meta||null}isResetService(){return this._isReset.asObservable()}ngOnDestroy(){this._deltaUpdatesSubject?.complete(),this._skNotificationMsg$?.complete(),this._skNotificationMeta$?.complete(),this._isReset?.complete(),this._skDataSubject$?.complete(),this._dataServiceMetaSubject$?.complete(),this._deltaUpdatesCounterTimer&&clearInterval(this._deltaUpdatesCounterTimer)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Kr=class{_box;_destroyed=new T;_resizeSubject=new T;_resizeObserver;_elementObservables=new Map;constructor(i){this._box=i,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(i){return this._elementObservables.has(i)||this._elementObservables.set(i,new Re(e=>{let r=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(i,{box:this._box}),()=>{this._resizeObserver?.unobserve(i),r.unsubscribe(),this._elementObservables.delete(i)}}).pipe($e(e=>e.some(r=>r.target===i)),Ai({bufferSize:1,refCount:!0}),Ue(this._destroyed))),this._elementObservables.get(i)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}},Tn=(()=>{class t{_cleanupErrorListener;_observers=new Map;_ngZone=g(G);constructor(){typeof ResizeObserver<"u"}ngOnDestroy(){for(let[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,r){let o=r?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Kr(o)),this._observers.get(o).observe(e)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var nu=["notch"],su=["matFormFieldNotchedOutline",""],lu=["*"],du=["textField"],cu=["iconPrefixContainer"],fu=["textPrefixContainer"],mu=["iconSuffixContainer"],uu=["textSuffixContainer"],pu=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],hu=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function gu(t,i){t&1&&Pe(0,"span",20)}function bu(t,i){if(t&1&&(V(0,"label",19),ne(1,1),W(2,gu,1,0,"span",20),Q()),t&2){let e=we(2);He("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),xt("for",e._control.disableAutomaticLabeling?null:e._control.id),L(2),H(!e.hideRequiredMarker&&e._control.required?2:-1)}}function xu(t,i){if(t&1&&W(0,bu,3,5,"label",19),t&2){let e=we();H(e._hasFloatingLabel()?0:-1)}}function vu(t,i){t&1&&Pe(0,"div",7)}function _u(t,i){}function yu(t,i){if(t&1&&W(0,_u,0,0,"ng-template",13),t&2){we(2);let e=Ar(1);He("ngTemplateOutlet",e)}}function Su(t,i){if(t&1&&(V(0,"div",9),W(1,yu,1,1,null,13),Q()),t&2){let e=we();He("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),L(),H(e._forceDisplayInfixLabel()?-1:1)}}function wu(t,i){t&1&&(V(0,"div",10,2),ne(2,2),Q())}function Tu(t,i){t&1&&(V(0,"div",11,3),ne(2,3),Q())}function Cu(t,i){}function ku(t,i){if(t&1&&W(0,Cu,0,0,"ng-template",13),t&2){we();let e=Ar(1);He("ngTemplateOutlet",e)}}function Au(t,i){t&1&&(V(0,"div",14,4),ne(2,4),Q())}function Eu(t,i){t&1&&(V(0,"div",15,5),ne(2,5),Q())}function Du(t,i){t&1&&Pe(0,"div",16)}function Mu(t,i){t&1&&ne(0,6)}function Fu(t,i){if(t&1&&(V(0,"mat-hint",21),Bi(1),Q()),t&2){let e=we(2);He("id",e._hintLabelId),L(),Wi(e.hintLabel)}}function Ou(t,i){if(t&1&&(W(0,Fu,2,2,"mat-hint",21),ne(1,7),Pe(2,"div",22),ne(3,8)),t&2){let e=we();H(e.hintLabel?0:-1)}}var Gr=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["mat-label"]]})}return t})(),Jr=new oe("MatError"),Iu=(()=>{class t{id=g(Qe).getId("mat-mdc-error-");constructor(){}static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:[1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(r,o){r&2&&vt("id",o.id)},inputs:{id:"id"},features:[qe([{provide:Jr,useExisting:t}])]})}return t})(),Qr=(()=>{class t{align="start";id=g(Qe).getId("mat-mdc-hint-");static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(r,o){r&2&&(vt("id",o.id),xt("align",null),ce("mat-mdc-form-field-hint-end",o.align==="end"))},inputs:{align:"align",id:"id"}})}return t})(),Fn=new oe("MatPrefix");var Zr=new oe("MatSuffix"),Ru=(()=>{class t{set _isTextSelector(e){this._isText=!0}_isText=!1;static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:[0,"matTextSuffix","_isTextSelector"]},features:[qe([{provide:Zr,useExisting:t}])]})}return t})(),On=new oe("FloatingLabelParent"),Cn=(()=>{class t{_elementRef=g(Se);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=g(Tn);_ngZone=g(G);_parent=g(On);_resizeSubscription=new It;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return Nu(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(r,o){r&2&&ce("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return t})();function Nu(t){let i=t;if(i.offsetParent!==null)return i.scrollWidth;let e=i.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);let r=e.scrollWidth;return e.remove(),r}var kn="mdc-line-ripple--active",dr="mdc-line-ripple--deactivating",An=(()=>{class t{_elementRef=g(Se);_cleanupTransitionEnd;constructor(){let e=g(G),r=g(gt);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=r.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){let e=this._elementRef.nativeElement.classList;e.remove(dr),e.add(kn)}deactivate(){this._elementRef.nativeElement.classList.add(dr)}_handleTransitionEnd=e=>{let r=this._elementRef.nativeElement.classList,o=r.contains(dr);e.propertyName==="opacity"&&o&&r.remove(kn,dr)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return t})(),En=(()=>{class t{_elementRef=g(Se);_ngZone=g(G);open=!1;_notch;constructor(){}ngAfterViewInit(){let e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){!this.open||!e?this._notch.nativeElement.style.width="":this._notch.nativeElement.style.width=`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`}static \u0275fac=function(r){return new(r||t)};static \u0275cmp=bt({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(r,o){if(r&1&&fe(nu,5),r&2){let n;z(n=$())&&(o._notch=n.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(r,o){r&2&&ce("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:su,ngContentSelectors:lu,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(r,o){r&1&&(kr(),Pe(0,"div",1),V(1,"div",2,0),ne(3),Q(),Pe(4,"div",3))},encapsulation:2,changeDetection:0})}return t})(),cr=(()=>{class t{value;stateChanges;id;placeholder;ngControl;focused;empty;shouldLabelFloat;required;disabled;errorState;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;static \u0275fac=function(r){return new(r||t)};static \u0275dir=ae({type:t})}return t})();var fr=new oe("MatFormField"),In=new oe("MAT_FORM_FIELD_DEFAULT_OPTIONS"),Dn="fill",Uu="auto",Mn="fixed",Pu="translateY(-50%)",Lu=(()=>{class t{_elementRef=g(Se);_changeDetectorRef=g(qi);_dir=g(Zi);_platform=g(Ge);_idGenerator=g(Qe);_ngZone=g(G);_injector=g(Cr);_defaults=g(In,{optional:!0});_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=Li(Gr);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=Ze(e)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||Uu}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearance}set appearance(e){let r=this._appearance,o=e||this._defaults?.appearance||Dn;this._appearance=o,this._appearance==="outline"&&this._appearance!==r&&(this._needsOutlineLabelOffsetUpdate=!0)}_appearance=Dn;get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||Mn}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||Mn}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new T;_isFocused=null;_explicitFormFieldControl;_needsOutlineLabelOffsetUpdate=!1;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_animationsDisabled;constructor(){let e=this._defaults;e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),this._animationsDisabled=g(Ni,{optional:!0})==="NoopAnimations"}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=yt(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){let r=this._control,o="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(o+e.controlType),r.controlType&&this._elementRef.nativeElement.classList.add(o+r.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=r.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=r.stateChanges.pipe(Ei([void 0,void 0]),ze(()=>[r.errorState,r.userAriaDescribedBy]),Ci(),$e(([[n,s],[c,m]])=>n!==c||s!==m)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),r.ngControl&&r.ngControl.valueChanges&&(this._valueChanges=r.ngControl.valueChanges.pipe(Ue(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),yi(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){this._control}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||this._isFocused===null)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0),Ui(()=>{this._needsOutlineLabelOffsetUpdate&&(this._needsOutlineLabelOffsetUpdate=!1,this._updateOutlineLabelOffset())},{injector:this._injector}),this._dir.change.pipe(Ue(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0)}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=yt(()=>!!this._labelChild());_shouldLabelFloat(){return this._hasFloatingLabel()?this._control.shouldLabelFloat||this._shouldAlwaysFloat():!1}_shouldForward(e){let r=this._control?this._control.ngControl:null;return r&&r[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){this._hintChildren}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&e.push(...this._control.userAriaDescribedBy.split(" ")),this._getSubscriptMessageType()==="hint"){let r=this._hintChildren?this._hintChildren.find(n=>n.align==="start"):null,o=this._hintChildren?this._hintChildren.find(n=>n.align==="end"):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),o&&e.push(o.id)}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return;let e=this._floatingLabel.element;if(!(this._iconPrefixContainer||this._textPrefixContainer)){e.style.transform="";return}if(!this._isAttachedToDom()){this._needsOutlineLabelOffsetUpdate=!0;return}let r=this._iconPrefixContainer?.nativeElement,o=this._textPrefixContainer?.nativeElement,n=this._iconSuffixContainer?.nativeElement,s=this._textSuffixContainer?.nativeElement,c=r?.getBoundingClientRect().width??0,m=o?.getBoundingClientRect().width??0,b=n?.getBoundingClientRect().width??0,_=s?.getBoundingClientRect().width??0,u=this._dir.value==="rtl"?"-1":"1",v=`${c+m}px`,w=`calc(${u} * (${v} + var(--mat-mdc-form-field-label-offset-x, 0px)))`;e.style.transform=`var(
|
|
3
3
|
--mat-mdc-form-field-label-transform,
|
|
4
4
|
${Pu} translateX(${w})
|