zwave-js-ui 9.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +48 -0
- package/dev-dist/registerSW.js +5 -0
- package/dist/apple-touch-icon-180x180.png +0 -0
- package/dist/assets/AssociationGroups-474358b5.js +1 -0
- package/dist/assets/BgRssiChart-3e7d7555.css +1 -0
- package/dist/assets/BgRssiChart-554c89ef.js +3 -0
- package/dist/assets/BlinkIcon-5407e2e0.js +1 -0
- package/dist/assets/ColumnFilter-378ec338.js +1 -0
- package/dist/assets/ColumnFilterBoolean-e0ff8ce6.js +1 -0
- package/dist/assets/ColumnFilterDate-b17871ea.js +1 -0
- package/dist/assets/ColumnFilterNumber-c07930a6.js +1 -0
- package/dist/assets/ColumnFilterString-079ac562.js +1 -0
- package/dist/assets/ControlPanel-3c3168d8.js +7 -0
- package/dist/assets/ControllerChart-f2fbb771.js +1 -0
- package/dist/assets/Debug-ea34e06e.js +98 -0
- package/dist/assets/DialogAdvanced-5f8c36c7.js +1 -0
- package/dist/assets/DialogAdvanced-eaabda04.css +1 -0
- package/dist/assets/DialogAssociation-6da4cd66.js +1 -0
- package/dist/assets/DialogGatewayValue-501b7bbe.js +1 -0
- package/dist/assets/DialogGatewayValue-911dd212.css +1 -0
- package/dist/assets/DialogHealthCheck-2228ed6c.css +1 -0
- package/dist/assets/DialogHealthCheck-9e90523a.js +1 -0
- package/dist/assets/DialogSceneValue-ff3081b9.js +1 -0
- package/dist/assets/ErrorPage-a4f837c6.js +1 -0
- package/dist/assets/ExpandedNode-9f727a42.css +1 -0
- package/dist/assets/ExpandedNode-a0bff765.js +3 -0
- package/dist/assets/HomeAssistant-974143e2.js +1 -0
- package/dist/assets/ListInput-d8c678f2.js +1 -0
- package/dist/assets/Login-1826b0a1.css +1 -0
- package/dist/assets/Login-5424b4df.js +1 -0
- package/dist/assets/MaterialIcons-Regular-11ec382a.woff +0 -0
- package/dist/assets/MaterialIcons-Regular-29c11fa5.ttf +0 -0
- package/dist/assets/MaterialIcons-Regular-5743ed3d.woff2 +0 -0
- package/dist/assets/MaterialIcons-Regular-e69d687a.eot +0 -0
- package/dist/assets/Mesh-1b8d31eb.css +1 -0
- package/dist/assets/Mesh-25b19dfe.js +1 -0
- package/dist/assets/NodeDetails-da00c417.css +1 -0
- package/dist/assets/NodeDetails-e9d8d566.js +5 -0
- package/dist/assets/NodePanel-3639f227.css +1 -0
- package/dist/assets/NodePanel-5cdb1b4a.js +1 -0
- package/dist/assets/NodeScheduler-e91e411b.js +1 -0
- package/dist/assets/OTAUpdates-066cbfed.js +7 -0
- package/dist/assets/QrReader-00dee3fb.css +1 -0
- package/dist/assets/QrReader-c320584c.js +1 -0
- package/dist/assets/ReinterviewBadge-a40fb19f.js +1 -0
- package/dist/assets/RichValue-3ea76a33.css +1 -0
- package/dist/assets/RichValue-3f78fa98.js +1 -0
- package/dist/assets/Scenes-4aea74b8.js +1 -0
- package/dist/assets/Settings-ac079344.css +1 -0
- package/dist/assets/Settings-d8e203ed.js +44 -0
- package/dist/assets/SmartStart-63c21be6.js +2 -0
- package/dist/assets/SmartView-f9259d20.js +1 -0
- package/dist/assets/StatisticsArrows-40c56587.js +1 -0
- package/dist/assets/StatisticsCard-a91596c0.js +1 -0
- package/dist/assets/Store-701d51c8.js +1 -0
- package/dist/assets/Store-a58f7130.css +1 -0
- package/dist/assets/UserCodeTable-c397703b.js +1 -0
- package/dist/assets/ValueId-b8e1e4a2.js +1 -0
- package/dist/assets/ValueId-ea679e64.css +1 -0
- package/dist/assets/ZwaveGraph-4fa851e3.js +98 -0
- package/dist/assets/ZwaveGraph-fe07d4ee.css +1 -0
- package/dist/assets/file-input-064e7979.js +1 -0
- package/dist/assets/index-058391ec.js +17 -0
- package/dist/assets/index-3c63af0b.js +112 -0
- package/dist/assets/index-468a52af.js +2 -0
- package/dist/assets/index-be785cef.css +9 -0
- package/dist/assets/index-d98f5afd.css +1 -0
- package/dist/assets/items-45b4c1f5.js +1 -0
- package/dist/assets/mdi-4fe99e39.js +1 -0
- package/dist/assets/prismeditor.esm-3002a813.js +7 -0
- package/dist/assets/qr-scanner-worker.min-5f44a019.js +98 -0
- package/dist/assets/vuedraggable.umd-441070b9.js +8 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.html +47 -0
- package/dist/logo.png +0 -0
- package/dist/logo.svg +32 -0
- package/dist/manifest.webmanifest +1 -0
- package/dist/maskable-icon-512x512.png +0 -0
- package/dist/pwa-192x192.png +0 -0
- package/dist/pwa-512x512.png +0 -0
- package/dist/pwa-64x64.png +0 -0
- package/dist/registerSW.js +1 -0
- package/dist/star.svg +3 -0
- package/dist/sw.js +1232 -0
- package/package.json +217 -0
- package/public/apple-touch-icon-180x180.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/logo.png +0 -0
- package/public/logo.svg +32 -0
- package/public/maskable-icon-512x512.png +0 -0
- package/public/pwa-192x192.png +0 -0
- package/public/pwa-512x512.png +0 -0
- package/public/pwa-64x64.png +0 -0
- package/public/star.svg +3 -0
- package/server/app.js +1201 -0
- package/server/bin/www.js +70 -0
- package/server/config/app.js +22 -0
- package/server/config/store.js +19 -0
- package/server/hass/configurations.js +195 -0
- package/server/hass/devices.js +397 -0
- package/server/lib/BackupManager.js +134 -0
- package/server/lib/Constants.js +705 -0
- package/server/lib/CustomPlugin.js +9 -0
- package/server/lib/EventEmitter.js +14 -0
- package/server/lib/Gateway.js +1986 -0
- package/server/lib/MqttClient.js +418 -0
- package/server/lib/SocketEvents.js +34 -0
- package/server/lib/SocketManager.js +71 -0
- package/server/lib/ZwaveClient.js +4261 -0
- package/server/lib/jsonStore.js +139 -0
- package/server/lib/logger.js +169 -0
- package/server/lib/utils.js +283 -0
- package/snippets/access-store-dir.js +12 -0
- package/snippets/clone-config.js +17 -0
- package/snippets/pingNodes.js +14 -0
- package/snippets/reinterview-nodes.js +64 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Daniel Lando
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Z-Wave JS UI
|
|
2
|
+
|
|
3
|
+
<div>
|
|
4
|
+
<img style="background-color: #fff; border-radius: 15px" src="docs/_images/app_logo.svg" alt="Z-Wave JS UI">
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
[](http://makeapullrequest.com)
|
|
9
|
+
[](https://madewithvuejs.com/p/zwave2mqtt/shield-link)
|
|
10
|
+
[](https://opensource.org/licenses/mit-license.php)
|
|
11
|
+
[](https://github.com/zwave-js/zwave-js-ui/actions?query=workflow%3Aci+branch%3Amaster)
|
|
12
|
+
[](https://github.com/zwave-js/zwave-js-ui/actions/workflows/docker-release.yml)
|
|
13
|
+
[](https://github.com/zwave-js/zwave-js-ui/releases)
|
|
14
|
+
[](https://coveralls.io/github/zwave-js/zwave-js-ui?branch=master)
|
|
15
|
+
[](https://snyk.io/test/github/zwave-js/zwave-js-ui?targetFile=package.json)
|
|
16
|
+
|
|
17
|
+
[](https://discord.gg/HFqcyFNfWd)
|
|
18
|
+
|
|
19
|
+
[](https://www.buymeacoffee.com/MVg9wc2HE "Buy Me A Coffee") [<img style="background:#ccc;border-radius:10px" alt="PayPal" src="https://www.paypalobjects.com/paypal-ui/logos/svg/paypal-color.svg" width="200" height="40px" />](https://paypal.me/daniellando) [](https://www.patreon.com/bePatron?u=16906849) [<img src="https://liberapay.com/assets/widgets/donate.svg" alt="Donate using Liberapay" />](https://liberapay.com/robertsLando/donate)[](https://ko-fi.com/I2I1JN3M5)
|
|
20
|
+
|
|
21
|
+
[](https://hub.docker.com/r/zwavejs/zwave-js-ui)
|
|
22
|
+
|
|
23
|
+
Full featured Z-Wave **Control Panel** and MQTT **Gateway**.
|
|
24
|
+
|
|
25
|
+
- **Backend**: [NodeJS](https://nodejs.org/en/), [Express](https://expressjs.com/), [socket.io](https://github.com/socketio/socket.io), [MQTTjs](https://github.com/mqttjs/MQTT.js), [zwavejs](https://github.com/zwave-js/node-zwave-js), [Webpack](https://webpack.js.org/)
|
|
26
|
+
- **Frontend**: [Vue](https://vuejs.org/), [socket.io](https://github.com/socketio/socket.io), [Vuetify](https://github.com/vuetifyjs/vuetify)
|
|
27
|
+
|
|
28
|
+
## Main features
|
|
29
|
+
|
|
30
|
+
- **Control Panel UI**: Directly control your nodes and their values from the UI, including:
|
|
31
|
+
- *Nodes management*: Add, remove, and configure all nodes in your Z-Wave network
|
|
32
|
+
- *Firmware updates*: Update device firmware using manufacturer-supplied firmware files
|
|
33
|
+
- *Groups associations*: Add, edit, and remove direct node associations
|
|
34
|
+
- *Z-Wave JS Exposed*: Provides full-access to Z-Wave JS's APIs
|
|
35
|
+
- **Full-Featured Z-Wave to MQTT Gateway**: Expose Z-Wave devices to an MQTT broker in a fully configurable manner
|
|
36
|
+
- **Secured**: Supports *HTTPS* and *user authentication*
|
|
37
|
+
- **Scene Management**: Create scenes and trigger them by using MQTT apis (with timeout support)
|
|
38
|
+
- **Debug Logs in the UI**: See debug logs directly from the UI
|
|
39
|
+
- **Access Store Files in the UI**: Access the files are stored in the persistent `store` folder directly from the UI
|
|
40
|
+
- **Network Graph**: Provides a beautiful map showing how nodes are communicating with the controller
|
|
41
|
+
- **Supports the Official Home Assistant Integration**: Can act as the backend driver for the official Home Assistant integration, using the same driver and socket server as the official addon
|
|
42
|
+
- **Supports Home Assistant Discovery via MQTT**: In lieu of the official integation, can be used to expose Z-Wave devices to Home Assistant via MQTT discovery.
|
|
43
|
+
- **Supported by Domoticz** (beta 2021.1) using MQTT Autodiscovery.
|
|
44
|
+
- **Automatic/Scheduled backups**: Scheduled backup of NVM and store directory. It's also possible to enable automatic backups of NVM before every node inclusion/exclusion/replace, this ensures to create a safe restore point before any operation that can cause a network corruption.
|
|
45
|
+
|
|
46
|
+
## Documentation
|
|
47
|
+
|
|
48
|
+
[Project documentation](https://zwave-js.github.io/zwave-js-ui/#/)
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as r,I as d,m as c,u as a,a as l,n as u}from"./index-3c63af0b.js";const p={components:{DialogAssociation:()=>r(()=>import("./DialogAssociation-6da4cd66.js"),["./DialogAssociation-6da4cd66.js","./index-3c63af0b.js","./index-be785cef.css"],import.meta.url)},mixins:[d],props:{node:Object},data(){return{associations:[],dialogAssociation:!1,headers:[{text:"Endpoint",value:"endpoint"},{text:"Group",value:"groupId"},{text:"Node",value:"nodeId"},{text:"Target Endpoint",value:"targetEndpoint"},{text:"Actions",value:"actions",sortable:!1}]}},computed:{...c(a,["nodes","nodesMap"])},mounted(){this.getAssociations()},methods:{...l(a,["showSnackbar"]),getAssociationAddress(s){return{nodeId:s.nodeId,endpoint:s.endpoint===null?void 0:s.endpoint}},getNodeName(s){const t=this.nodes[this.nodesMap.get(s)];return t?t._name:"NodeID_"+s},getEndpointLabel(s,t){const o=this.nodes[this.nodesMap.get(s)];if(o&&t>=0){const e=o.endpoints.find(n=>n.index===t);if(e)return e.label}return t>=0?"Endpoint "+t:"No Endpoint"},async getAssociations(s=!1){let t=!1;s&&this.node.status!=="Dead"&&(t=await this.$listeners.showConfirm("Info",`Do you want to force query associations?${this.node.status==="Alive"?"":" This node is Asleep, so you should wake it up first."}`,"info"));const o=await this.app.apiRequest("getAssociations",[this.node.id,t]);o.success&&(this.associations=o.result,this.showSnackbar("Associations updated","success"))},async addAssociation(s){const t=isNaN(s.target)?s.target.id:parseInt(s.target),o=s.group,e={nodeId:t};o.multiChannel&&s.targetEndpoint>=0&&(e.endpoint=s.targetEndpoint);const n=[this.getAssociationAddress({nodeId:this.node.id,endpoint:s.endpoint}),o.value,[e]],i=await this.app.apiRequest("addAssociations",n);i.success&&(i.result?(this.showSnackbar("Association added","success"),this.getAssociations()):this.showSnackbar("Error while adding association","error")),this.dialogAssociation=!1},async removeAssociation(s){const t=[this.getAssociationAddress({nodeId:this.node.id,endpoint:s.endpoint}),s.groupId,[{nodeId:s.nodeId,endpoint:s.targetEndpoint}]];(await this.app.apiRequest("removeAssociations",t)).success&&(this.showSnackbar("Association removed","success"),this.getAssociations())},async removeAllAssociations(){const s=[this.node.id];if(!await this.$listeners.showConfirm("Attention","Are you sure you want to remove all associations from this node? This will also remove lifeline association if it exists.","alert"))return;(await this.app.apiRequest("removeAllAssociations",s)).success&&(this.showSnackbar("Association removed","success"),this.getAssociations())}}};var f=function(){var t=this,o=t._self._c;return o("v-container",{attrs:{"grid-list-md":""}},[o("v-row",{staticClass:"pa-5",attrs:{justify:"center"}},[o("v-data-table",{staticClass:"elevation-1",attrs:{headers:t.headers,items:t.associations,"item-key":"id"},scopedSlots:t._u([{key:"top",fn:function(){return[o("v-btn",{staticClass:"mb-2",attrs:{text:"",color:"green"},on:{click:function(e){t.dialogAssociation=!0}}},[t._v("Add")]),o("v-btn",{staticClass:"mb-2",attrs:{text:"",color:"red"},on:{click:t.removeAllAssociations}},[t._v("Remove All")]),o("v-btn",{staticClass:"mb-2",attrs:{text:"",color:"primary"},on:{click:function(e){return t.getAssociations(!0)}}},[t._v("Refresh")])]},proxy:!0},{key:"item.groupId",fn:function({item:e}){return[t._v(" "+t._s(t.node.groups.find(n=>n.value===e.groupId&&n.endpoint===e.endpoint).text)+" ")]}},{key:"item.nodeId",fn:function({item:e}){return[t._v(" "+t._s(t.getNodeName(e.nodeId))+" ")]}},{key:"item.endpoint",fn:function({item:e}){return[t._v(" "+t._s(e.endpoint>=0?t.getEndpointLabel(t.node.id,e.endpoint):"None")+" ")]}},{key:"item.targetEndpoint",fn:function({item:e}){return[t._v(" "+t._s(e.targetEndpoint>=0?t.getEndpointLabel(e.nodeId,e.targetEndpoint):"None")+" ")]}},{key:"item.actions",fn:function({item:e}){return[o("v-icon",{attrs:{small:"",color:"red"},on:{click:function(n){return t.removeAssociation(e)}}},[t._v("delete")])]}}],null,!0)})],1),o("DialogAssociation",{attrs:{nodes:t.nodes,node:t.node,associations:t.associations},on:{add:t.addAssociation,close:function(e){t.dialogAssociation=!1}},model:{value:t.dialogAssociation,callback:function(e){t.dialogAssociation=e},expression:"dialogAssociation"}})],1)},g=[],h=u(p,f,g,!1,null,null,null,null);const v=h.exports;export{v as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:rgba(0,0,0,.07);position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{n as Po,l as Ro}from"./index-3c63af0b.js";const zo=!0,ke="u-",Co="uplot",Fo=ke+"hz",Vo=ke+"vt",No=ke+"title",Ho=ke+"wrap",Oo=ke+"under",Io=ke+"over",Go=ke+"axis",Vt=ke+"off",Wo=ke+"select",Bo=ke+"cursor-x",Uo=ke+"cursor-y",Yo=ke+"cursor-pt",Ko=ke+"legend",jo=ke+"live",qo=ke+"inline",$o=ke+"series",Jo=ke+"marker",Ri=ke+"label",Zo=ke+"value",Dl="width",Al="height",Ml="top",zi="bottom",$t="left",Tn="right",Bn="#000",Ci=Bn+"0",Fi="mousemove",Vi="mousedown",Ln="mouseup",Ni="mouseenter",Hi="mouseleave",Oi="dblclick",Qo="resize",Xo="scroll",Ii="change",$l="dppxchange",Un="--",ol=typeof window<"u",Fn=ol?document:null,Qt=ol?window:null,er=ol?navigator:null;let ie,Yl;function Vn(){let e=devicePixelRatio;ie!=e&&(ie=e,Yl&&Hn(Ii,Yl,Vn),Yl=matchMedia(`(min-resolution: ${ie-.001}dppx) and (max-resolution: ${ie+.001}dppx)`),Nt(Ii,Yl,Vn),Qt.dispatchEvent(new CustomEvent($l)))}function je(e,l){if(l!=null){let s=e.classList;!s.contains(l)&&s.add(l)}}function Nn(e,l){let s=e.classList;s.contains(l)&&s.remove(l)}function ge(e,l,s){e.style[l]=s+"px"}function rt(e,l,s,n){let o=Fn.createElement(e);return l!=null&&je(o,l),s!=null&&s.insertBefore(o,n),o}function Xe(e,l){return rt("div",e,l)}const Gi=new WeakMap;function Jt(e,l,s,n,o){let u="translate("+l+"px,"+s+"px)",c=Gi.get(e);u!=c&&(e.style.transform=u,Gi.set(e,u),l<0||s<0||l>n||s>o?je(e,Vt):Nn(e,Vt))}const Wi=new WeakMap;function tr(e,l,s){let n=l+s,o=Wi.get(e);n!=o&&(Wi.set(e,n),e.style.background=l,e.style.borderColor=s)}const Bi=new WeakMap;function lr(e,l,s,n){let o=l+""+s,u=Bi.get(e);o!=u&&(Bi.set(e,o),e.style.height=s+"px",e.style.width=l+"px",e.style.marginLeft=n?-l/2+"px":0,e.style.marginTop=n?-s/2+"px":0)}const Yn={passive:!0},ws={...Yn,capture:!0};function Nt(e,l,s,n){l.addEventListener(e,s,n?ws:Yn)}function Hn(e,l,s,n){l.removeEventListener(e,s,n?ws:Yn)}ol&&Vn();function Et(e,l,s,n){let o;s=s||0,n=n||l.length-1;let u=n<=2147483647;for(;n-s>1;)o=u?s+n>>1:qe((s+n)/2),l[o]<e?s=o:n=o;return e-l[s]<=l[n]-e?s:n}function Xt(e,l,s,n){for(let o=n==1?l:s;o>=l&&o<=s;o+=n)if(e[o]!=null)return o;return-1}function nr(e,l,s,n){let o=Z,u=-Z;if(n==1)o=e[l],u=e[s];else if(n==-1)o=e[s],u=e[l];else for(let c=l;c<=s;c++){let p=e[c];p!=null&&(p<o&&(o=p),p>u&&(u=p))}return[o,u]}function ir(e,l,s){let n=Z,o=-Z;for(let u=l;u<=s;u++){let c=e[u];c!=null&&c>0&&(c<n&&(n=c),c>o&&(o=c))}return[n==Z?1:n,o==-Z?10:o]}function en(e,l,s,n){let o=Ki(e),u=Ki(l),c=s==10?gt:Ss;e==l&&(o==-1?(e*=s,l/=s):(e/=s,l*=s));let p=o==1?qe:el,d=u==1?el:qe,g=p(c(Pe(e))),y=d(c(Pe(l))),S=tl(s,g),h=tl(s,y);return s==10&&(g<0&&(S=ue(S,-g)),y<0&&(h=ue(h,-y))),n||s==2?(e=S*o,l=h*u):(e=vs(e,S),l=nl(l,h)),[e,l]}function Kn(e,l,s,n){let o=en(e,l,s,n);return e==0&&(o[0]=0),l==0&&(o[1]=0),o}const jn=.1,Ui={mode:3,pad:jn},Ll={pad:0,soft:null,mode:0},sr={min:Ll,max:Ll};function Jl(e,l,s,n){return tn(s)?Yi(e,l,s):(Ll.pad=s,Ll.soft=n?0:null,Ll.mode=n?3:0,Yi(e,l,sr))}function se(e,l){return e??l}function or(e,l,s){for(l=se(l,0),s=se(s,e.length-1);l<=s;){if(e[l]!=null)return!0;l++}return!1}function Yi(e,l,s){let n=s.min,o=s.max,u=se(n.pad,0),c=se(o.pad,0),p=se(n.hard,-Z),d=se(o.hard,Z),g=se(n.soft,Z),y=se(o.soft,-Z),S=se(n.mode,0),h=se(o.mode,0),A=l-e,F=gt(A),E=Ne(Pe(e),Pe(l)),N=gt(E),z=Pe(N-F);(A<1e-9||z>10)&&(A=0,(e==0||l==0)&&(A=1e-9,S==2&&g!=Z&&(u=0),h==2&&y!=-Z&&(c=0)));let R=A||E||1e3,b=gt(R),T=tl(10,qe(b)),k=R*(A==0?e==0?.1:1:u),O=ue(vs(e-k,T/10),9),D=e>=g&&(S==1||S==3&&O<=g||S==2&&O>=g)?g:Z,W=Ne(p,O<D&&e>=D?D:et(D,O)),B=R*(A==0?l==0?.1:1:c),V=ue(nl(l+B,T/10),9),x=l<=y&&(h==1||h==3&&V>=y||h==2&&V<=y)?y:-Z,H=et(d,V>x&&l<=x?x:Ne(x,V));return W==H&&W==0&&(H=100),[W,H]}const rr=new Intl.NumberFormat(ol?er.language:"en-US"),qn=e=>rr.format(e),$e=Math,ql=$e.PI,Pe=$e.abs,qe=$e.floor,Ve=$e.round,el=$e.ceil,et=$e.min,Ne=$e.max,tl=$e.pow,Ki=$e.sign,gt=$e.log10,Ss=$e.log2,fr=(e,l=1)=>$e.sinh(e)*l,Pn=(e,l=1)=>$e.asinh(e/l),Z=1/0;function ji(e){return(gt((e^e>>31)-(e>>31))|0)+1}function Zl(e,l,s){return et(Ne(e,l),s)}function J(e){return typeof e=="function"?e:()=>e}const cr=()=>{},ys=e=>e,_s=(e,l)=>l,ur=e=>null,qi=e=>!0,$i=(e,l)=>e==l,ll=e=>ue(e,14);function Ft(e,l){return ll(ue(ll(e/l))*l)}function nl(e,l){return ll(el(ll(e/l))*l)}function vs(e,l){return ll(qe(ll(e/l))*l)}function ue(e,l=0){if(ar(e))return e;let s=10**l,n=e*s*(1+Number.EPSILON);return Ve(n)/s}const il=new Map;function xs(e){return((""+e).split(".")[1]||"").length}function Rl(e,l,s,n){let o=[],u=n.map(xs);for(let c=l;c<s;c++){let p=Pe(c),d=ue(tl(e,c),p);for(let g=0;g<n.length;g++){let y=n[g]*d,S=(y>=0&&c>=0?0:p)+(c>=u[g]?0:u[g]),h=ue(y,S);o.push(h),il.set(h,S)}}return o}const Pl={},bs=[],sl=[null,null],Dt=Array.isArray,ar=Number.isInteger,hr=e=>e===void 0;function Ji(e){return typeof e=="string"}function tn(e){let l=!1;if(e!=null){let s=e.constructor;l=s==null||s==Object}return l}function Zi(e){return e!=null&&typeof e=="object"}const pr=Object.getPrototypeOf(Uint8Array);function Ht(e,l=tn){let s;if(Dt(e)){let n=e.find(o=>o!=null);if(Dt(n)||l(n)){s=Array(e.length);for(let o=0;o<e.length;o++)s[o]=Ht(e[o],l)}else s=e.slice()}else if(e instanceof pr)s=e.slice();else if(l(e)){s={};for(let n in e)s[n]=Ht(e[n],l)}else s=e;return s}function xe(e){let l=arguments;for(let s=1;s<l.length;s++){let n=l[s];for(let o in n)tn(e[o])?xe(e[o],Ht(n[o])):e[o]=Ht(n[o])}return e}const mr=0,dr=1,gr=2;function wr(e,l,s){for(let n=0,o,u=-1;n<l.length;n++){let c=l[n];if(c>u){for(o=c-1;o>=0&&e[o]==null;)e[o--]=null;for(o=c+1;o<s&&e[o]==null;)e[u=o++]=null}}}function Sr(e,l){if(vr(e)){let c=e[0].slice();for(let p=1;p<e.length;p++)c.push(...e[p].slice(1));return xr(c[0])||(c=_r(c)),c}let s=new Set;for(let c=0;c<e.length;c++){let d=e[c][0],g=d.length;for(let y=0;y<g;y++)s.add(d[y])}let n=[Array.from(s).sort((c,p)=>c-p)],o=n[0].length,u=new Map;for(let c=0;c<o;c++)u.set(n[0][c],c);for(let c=0;c<e.length;c++){let p=e[c],d=p[0];for(let g=1;g<p.length;g++){let y=p[g],S=Array(o).fill(void 0),h=l?l[c][g]:dr,A=[];for(let F=0;F<y.length;F++){let E=y[F],N=u.get(d[F]);E===null?h!=mr&&(S[N]=E,h==gr&&A.push(N)):S[N]=E}wr(S,A,o),n.push(S)}}return n}const yr=typeof queueMicrotask>"u"?e=>Promise.resolve().then(e):queueMicrotask;function _r(e){let l=e[0],s=l.length,n=Array(s);for(let u=0;u<n.length;u++)n[u]=u;n.sort((u,c)=>l[u]-l[c]);let o=[];for(let u=0;u<e.length;u++){let c=e[u],p=Array(s);for(let d=0;d<s;d++)p[d]=c[n[d]];o.push(p)}return o}function vr(e){let l=e[0][0],s=l.length;for(let n=1;n<e.length;n++){let o=e[n][0];if(o.length!=s)return!1;if(o!=l){for(let u=0;u<s;u++)if(o[u]!=l[u])return!1}}return!0}function xr(e,l=100){const s=e.length;if(s<=1)return!0;let n=0,o=s-1;for(;n<=o&&e[n]==null;)n++;for(;o>=n&&e[o]==null;)o--;if(o<=n)return!0;const u=Ne(1,qe((o-n+1)/l));for(let c=e[n],p=n+u;p<=o;p+=u){const d=e[p];if(d!=null){if(d<=c)return!1;c=d}}return!0}const ks=["January","February","March","April","May","June","July","August","September","October","November","December"],Ms=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Es(e){return e.slice(0,3)}const br=Ms.map(Es),kr=ks.map(Es),Mr={MMMM:ks,MMM:kr,WWWW:Ms,WWW:br};function El(e){return(e<10?"0":"")+e}function Er(e){return(e<10?"00":e<100?"0":"")+e}const Dr={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,l)=>l.MMMM[e.getMonth()],MMM:(e,l)=>l.MMM[e.getMonth()],MM:e=>El(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>El(e.getDate()),D:e=>e.getDate(),WWWW:(e,l)=>l.WWWW[e.getDay()],WWW:(e,l)=>l.WWW[e.getDay()],HH:e=>El(e.getHours()),H:e=>e.getHours(),h:e=>{let l=e.getHours();return l==0?12:l>12?l-12:l},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>El(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>El(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>Er(e.getMilliseconds())};function $n(e,l){l=l||Mr;let s=[],n=/\{([a-z]+)\}|[^{]+/gi,o;for(;o=n.exec(e);)s.push(o[0][0]=="{"?Dr[o[1]]:o[0]);return u=>{let c="";for(let p=0;p<s.length;p++)c+=typeof s[p]=="string"?s[p]:s[p](u,l);return c}}const Ar=new Intl.DateTimeFormat().resolvedOptions().timeZone;function Tr(e,l){let s;return l=="UTC"||l=="Etc/UTC"?s=new Date(+e+e.getTimezoneOffset()*6e4):l==Ar?s=e:(s=new Date(e.toLocaleString("en-US",{timeZone:l})),s.setMilliseconds(e.getMilliseconds())),s}const Ds=e=>e%1==0,Ql=[1,2,2.5,5],Lr=Rl(10,-16,0,Ql),As=Rl(10,0,16,Ql),Pr=As.filter(Ds),Rr=Lr.concat(As),Jn=`
|
|
2
|
+
`,Ts="{YYYY}",Qi=Jn+Ts,Ls="{M}/{D}",Tl=Jn+Ls,Kl=Tl+"/{YY}",Ps="{aa}",zr="{h}:{mm}",Zt=zr+Ps,Xi=Jn+Zt,es=":{ss}",re=null;function Rs(e){let l=e*1e3,s=l*60,n=s*60,o=n*24,u=o*30,c=o*365,d=(e==1?Rl(10,0,3,Ql).filter(Ds):Rl(10,-3,0,Ql)).concat([l,l*5,l*10,l*15,l*30,s,s*5,s*10,s*15,s*30,n,n*2,n*3,n*4,n*6,n*8,n*12,o,o*2,o*3,o*4,o*5,o*6,o*7,o*8,o*9,o*10,o*15,u,u*2,u*3,u*4,u*6,c,c*2,c*5,c*10,c*25,c*50,c*100]);const g=[[c,Ts,re,re,re,re,re,re,1],[o*28,"{MMM}",Qi,re,re,re,re,re,1],[o,Ls,Qi,re,re,re,re,re,1],[n,"{h}"+Ps,Kl,re,Tl,re,re,re,1],[s,Zt,Kl,re,Tl,re,re,re,1],[l,es,Kl+" "+Zt,re,Tl+" "+Zt,re,Xi,re,1],[e,es+".{fff}",Kl+" "+Zt,re,Tl+" "+Zt,re,Xi,re,1]];function y(S){return(h,A,F,E,N,z)=>{let R=[],b=N>=c,T=N>=u&&N<c,k=S(F),O=ue(k*e,3),D=Rn(k.getFullYear(),b?0:k.getMonth(),T||b?1:k.getDate()),W=ue(D*e,3);if(T||b){let B=T?N/u:0,V=b?N/c:0,x=O==W?O:ue(Rn(D.getFullYear()+V,D.getMonth()+B,1)*e,3),H=new Date(Ve(x/e)),q=H.getFullYear(),Q=H.getMonth();for(let K=0;x<=E;K++){let ce=Rn(q+V*K,Q+B*K,1),Y=ce-S(ue(ce*e,3));x=ue((+ce+Y)*e,3),x<=E&&R.push(x)}}else{let B=N>=o?o:N,V=qe(F)-qe(O),x=W+V+nl(O-W,B);R.push(x);let H=S(x),q=H.getHours()+H.getMinutes()/s+H.getSeconds()/n,Q=N/n,K=h.axes[A]._space,ce=z/K;for(;x=ue(x+N,e==1?0:3),!(x>E);)if(Q>1){let Y=qe(ue(q+Q,6))%24,X=S(x).getHours()-Y;X>1&&(X=-1),x-=X*n,q=(q+Q)%24;let oe=R[R.length-1];ue((x-oe)/N,3)*ce>=.7&&R.push(x)}else R.push(x)}return R}}return[d,g,y]}const[Cr,Fr,Vr]=Rs(1),[Nr,Hr,Or]=Rs(.001);Rl(2,-53,53,[1]);function ts(e,l){return e.map(s=>s.map((n,o)=>o==0||o==8||n==null?n:l(o==1||s[8]==0?n:s[1]+n)))}function ls(e,l){return(s,n,o,u,c)=>{let p=l.find(F=>c>=F[0])||l[l.length-1],d,g,y,S,h,A;return n.map(F=>{let E=e(F),N=E.getFullYear(),z=E.getMonth(),R=E.getDate(),b=E.getHours(),T=E.getMinutes(),k=E.getSeconds(),O=N!=d&&p[2]||z!=g&&p[3]||R!=y&&p[4]||b!=S&&p[5]||T!=h&&p[6]||k!=A&&p[7]||p[1];return d=N,g=z,y=R,S=b,h=T,A=k,O(E)})}}function Ir(e,l){let s=$n(l);return(n,o,u,c,p)=>o.map(d=>s(e(d)))}function Rn(e,l,s){return new Date(e,l,s)}function ns(e,l){return l(e)}const Gr="{YYYY}-{MM}-{DD} {h}:{mm}{aa}";function is(e,l){return(s,n,o,u)=>u==null?Un:l(e(n))}function Wr(e,l){let s=e.series[l];return s.width?s.stroke(e,l):s.points.width?s.points.stroke(e,l):null}function Br(e,l){return e.series[l].fill(e,l)}const Ur={show:!0,live:!0,isolate:!1,mount:cr,markers:{show:!0,width:2,stroke:Wr,fill:Br,dash:"solid"},idx:null,idxs:null,values:[]};function Yr(e,l){let s=e.cursor.points,n=Xe(),o=s.size(e,l);ge(n,Dl,o),ge(n,Al,o);let u=o/-2;ge(n,"marginLeft",u),ge(n,"marginTop",u);let c=s.width(e,l,o);return c&&ge(n,"borderWidth",c),n}function Kr(e,l){let s=e.series[l].points;return s._fill||s._stroke}function jr(e,l){let s=e.series[l].points;return s._stroke||s._fill}function qr(e,l){return e.series[l].points.size}function $r(e,l,s){return s}const zn=[0,0];function Jr(e,l,s){return zn[0]=l,zn[1]=s,zn}function jl(e,l,s,n=!0){return o=>{o.button==0&&(!n||o.target==l)&&s(o)}}function Cn(e,l,s,n=!0){return o=>{(!n||o.target==l)&&s(o)}}const Zr={show:!0,x:!0,y:!0,lock:!1,move:Jr,points:{show:Yr,size:qr,width:0,stroke:jr,fill:Kr},bind:{mousedown:jl,mouseup:jl,click:jl,dblclick:jl,mousemove:Cn,mouseleave:Cn,mouseenter:Cn},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,l)=>{l.stopPropagation(),l.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:$r,idxs:null,event:null},zs={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},Zn=xe({},zs,{filter:_s}),Cs=xe({},Zn,{size:10}),Fs=xe({},zs,{show:!1}),Qn='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',Vs="bold "+Qn,Ns=1.5,ss={show:!0,scale:"x",stroke:Bn,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:Vs,side:2,grid:Zn,ticks:Cs,border:Fs,font:Qn,lineGap:Ns,rotate:0},Qr="Value",Xr="Time",os={show:!0,scale:"x",auto:!1,sorted:1,min:Z,max:-Z,idxs:[]};function ef(e,l,s,n,o){return l.map(u=>u==null?"":qn(u))}function tf(e,l,s,n,o,u,c){let p=[],d=il.get(o)||0;s=c?s:ue(nl(s,o),d);for(let g=s;g<=n;g=ue(g+o,d))p.push(Object.is(g,-0)?0:g);return p}function On(e,l,s,n,o,u,c){const p=[],d=e.scales[e.axes[l].scale].log,g=d==10?gt:Ss,y=qe(g(s));o=tl(d,y),d==10&&y<0&&(o=ue(o,-y));let S=s;do p.push(S),S=S+o,d==10&&(S=ue(S,il.get(o))),S>=o*d&&(o=S);while(S<=n);return p}function lf(e,l,s,n,o,u,c){let d=e.scales[e.axes[l].scale].asinh,g=n>d?On(e,l,Ne(d,s),n,o):[d],y=n>=0&&s<=0?[0]:[];return(s<-d?On(e,l,Ne(d,-n),-s,o):[d]).reverse().map(h=>-h).concat(y,g)}const Hs=/./,nf=/[12357]/,sf=/[125]/,rs=/1/,In=(e,l,s,n)=>e.map((o,u)=>l==4&&o==0||u%n==0&&s.test(o.toExponential()[o<0?1:0])?o:null);function of(e,l,s,n,o){let u=e.axes[s],c=u.scale,p=e.scales[c],d=e.valToPos,g=u._space,y=d(10,c),S=d(9,c)-y>=g?Hs:d(7,c)-y>=g?nf:d(5,c)-y>=g?sf:rs;if(S==rs){let h=Pe(d(1,c)-y);if(h<g)return In(l.slice().reverse(),p.distr,S,el(g/h)).reverse()}return In(l,p.distr,S,1)}function rf(e,l,s,n,o){let u=e.axes[s],c=u.scale,p=u._space,d=e.valToPos,g=Pe(d(1,c)-d(2,c));return g<p?In(l.slice().reverse(),3,Hs,el(p/g)).reverse():l}function ff(e,l,s,n){return n==null?Un:l==null?"":qn(l)}const fs={show:!0,scale:"y",stroke:Bn,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:Vs,side:3,grid:Zn,ticks:Cs,border:Fs,font:Qn,lineGap:Ns,rotate:0};function cf(e,l){let s=3+(e||1)*2;return ue(s*l,3)}function uf(e,l){let{scale:s,idxs:n}=e.series[0],o=e._data[0],u=e.valToPos(o[n[0]],s,!0),c=e.valToPos(o[n[1]],s,!0),p=Pe(c-u),d=e.series[l],g=p/(d.points.space*ie);return n[1]-n[0]<=g}const cs={scale:null,auto:!0,sorted:0,min:Z,max:-Z},Os=(e,l,s,n,o)=>o,us={show:!0,auto:!0,sorted:0,gaps:Os,alpha:1,facets:[xe({},cs,{scale:"x"}),xe({},cs,{scale:"y"})]},as={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:Os,alpha:1,points:{show:uf,filter:null},values:null,min:Z,max:-Z,idxs:[],path:null,clip:null};function af(e,l,s,n,o){return s/10}const Is={time:zo,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},hf=xe({},Is,{time:!1,ori:1}),hs={};function Gs(e,l){let s=hs[e];return s||(s={key:e,plots:[],sub(n){s.plots.push(n)},unsub(n){s.plots=s.plots.filter(o=>o!=n)},pub(n,o,u,c,p,d,g){for(let y=0;y<s.plots.length;y++)s.plots[y]!=o&&s.plots[y].pub(n,o,u,c,p,d,g)}},e!=null&&(hs[e]=s)),s}const Ot=1,Xl=2;function It(e,l,s){const n=e.mode,o=e.series[l],u=n==2?e._data[l]:e._data,c=e.scales,p=e.bbox;let d=u[0],g=n==2?u[1]:u[l],y=n==2?c[o.facets[0].scale]:c[e.series[0].scale],S=n==2?c[o.facets[1].scale]:c[o.scale],h=p.left,A=p.top,F=p.width,E=p.height,N=e.valToPosH,z=e.valToPosV;return y.ori==0?s(o,d,g,y,S,N,z,h,A,F,E,sn,rl,rn,Bs,Ys):s(o,d,g,y,S,z,N,A,h,E,F,on,fl,ei,Us,Ks)}function ln(e,l){let s=0,n=0,o=se(e.bands,bs);for(let u=0;u<o.length;u++){let c=o[u];c.series[0]==l?s=c.dir:c.series[1]==l&&(c.dir==1?n|=1:n|=2)}return[s,n==1?-1:n==2?1:n==3?2:0]}function pf(e,l,s,n,o){let u=e.mode,c=e.series[l],p=u==2?c.facets[1].scale:c.scale,d=e.scales[p];return o==-1?d.min:o==1?d.max:d.distr==3?d.dir==1?d.min:d.max:0}function wt(e,l,s,n,o,u){return It(e,l,(c,p,d,g,y,S,h,A,F,E,N)=>{let z=c.pxRound;const R=g.dir*(g.ori==0?1:-1),b=g.ori==0?rl:fl;let T,k;R==1?(T=s,k=n):(T=n,k=s);let O=z(S(p[T],g,E,A)),D=z(h(d[T],y,N,F)),W=z(S(p[k],g,E,A)),B=z(h(u==1?y.max:y.min,y,N,F)),V=new Path2D(o);return b(V,W,B),b(V,O,B),b(V,O,D),V})}function nn(e,l,s,n,o,u){let c=null;if(e.length>0){c=new Path2D;const p=l==0?rn:ei;let d=s;for(let S=0;S<e.length;S++){let h=e[S];if(h[1]>h[0]){let A=h[0]-d;A>0&&p(c,d,n,A,n+u),d=h[1]}}let g=s+o-d,y=10;g>0&&p(c,d,n-y/2,g,n+u+y)}return c}function mf(e,l,s){let n=e[e.length-1];n&&n[0]==l?n[1]=s:e.push([l,s])}function Xn(e,l,s,n,o,u,c){let p=[],d=e.length;for(let g=o==1?s:n;g>=s&&g<=n;g+=o)if(l[g]===null){let S=g,h=g;if(o==1)for(;++g<=n&&l[g]===null;)h=g;else for(;--g>=s&&l[g]===null;)h=g;let A=u(e[S]),F=h==S?A:u(e[h]),E=S-o;A=c<=0&&E>=0&&E<d?u(e[E]):A;let z=h+o;F=c>=0&&z>=0&&z<d?u(e[z]):F,F>=A&&p.push([A,F])}return p}function ps(e){return e==0?ys:e==1?Ve:l=>Ft(l,e)}function Ws(e){let l=e==0?sn:on,s=e==0?(o,u,c,p,d,g)=>{o.arcTo(u,c,p,d,g)}:(o,u,c,p,d,g)=>{o.arcTo(c,u,d,p,g)},n=e==0?(o,u,c,p,d)=>{o.rect(u,c,p,d)}:(o,u,c,p,d)=>{o.rect(c,u,d,p)};return(o,u,c,p,d,g=0,y=0)=>{g==0&&y==0?n(o,u,c,p,d):(g=et(g,p/2,d/2),y=et(y,p/2,d/2),l(o,u+g,c),s(o,u+p,c,u+p,c+d,g),s(o,u+p,c+d,u,c+d,y),s(o,u,c+d,u,c,y),s(o,u,c,u+p,c,g),o.closePath())}}const sn=(e,l,s)=>{e.moveTo(l,s)},on=(e,l,s)=>{e.moveTo(s,l)},rl=(e,l,s)=>{e.lineTo(l,s)},fl=(e,l,s)=>{e.lineTo(s,l)},rn=Ws(0),ei=Ws(1),Bs=(e,l,s,n,o,u)=>{e.arc(l,s,n,o,u)},Us=(e,l,s,n,o,u)=>{e.arc(s,l,n,o,u)},Ys=(e,l,s,n,o,u,c)=>{e.bezierCurveTo(l,s,n,o,u,c)},Ks=(e,l,s,n,o,u,c)=>{e.bezierCurveTo(s,l,o,n,c,u)};function js(e){return(l,s,n,o,u)=>It(l,s,(c,p,d,g,y,S,h,A,F,E,N)=>{let{pxRound:z,points:R}=c,b,T;g.ori==0?(b=sn,T=Bs):(b=on,T=Us);const k=ue(R.width*ie,3);let O=(R.size-R.width)/2*ie,D=ue(O*2,3),W=new Path2D,B=new Path2D,{left:V,top:x,width:H,height:q}=l.bbox;rn(B,V-D,x-D,H+D*2,q+D*2);const Q=K=>{if(d[K]!=null){let ce=z(S(p[K],g,E,A)),Y=z(h(d[K],y,N,F));b(W,ce+O,Y),T(W,ce,Y,O,0,ql*2)}};if(u)u.forEach(Q);else for(let K=n;K<=o;K++)Q(K);return{stroke:k>0?W:null,fill:W,clip:B,flags:Ot|Xl}})}function qs(e){return(l,s,n,o,u,c)=>{n!=o&&(u!=n&&c!=n&&e(l,s,n),u!=o&&c!=o&&e(l,s,o),e(l,s,c))}}const df=qs(rl),gf=qs(fl);function $s(e){const l=se(e==null?void 0:e.alignGaps,0);return(s,n,o,u)=>It(s,n,(c,p,d,g,y,S,h,A,F,E,N)=>{let z=c.pxRound,R=I=>z(S(I,g,E,A)),b=I=>z(h(I,y,N,F)),T,k;g.ori==0?(T=rl,k=df):(T=fl,k=gf);const O=g.dir*(g.ori==0?1:-1),D={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ot},W=D.stroke;let B=Z,V=-Z,x,H,q,Q=R(p[O==1?o:u]),K=Xt(d,o,u,1*O),ce=Xt(d,o,u,-1*O),Y=R(p[K]),Je=R(p[ce]),Re=!1;for(let I=O==1?o:u;I>=o&&I<=u;I+=O){let he=R(p[I]),G=d[I];he==Q?G!=null?(H=b(G),B==Z&&(T(W,he,H),x=H),B=et(H,B),V=Ne(H,V)):G===null&&(Re=!0):(B!=Z&&(k(W,Q,B,V,x,H),q=Q),G!=null?(H=b(G),T(W,he,H),B=V=x=H):(B=Z,V=-Z,G===null&&(Re=!0)),Q=he)}B!=Z&&B!=V&&q!=Q&&k(W,Q,B,V,x,H);let[X,oe]=ln(s,n);if(c.fill!=null||X!=0){let I=D.fill=new Path2D(W),he=c.fillTo(s,n,c.min,c.max,X),G=b(he);T(I,Je,G),T(I,Y,G)}if(!c.spanGaps){let I=[];Re&&I.push(...Xn(p,d,o,u,O,R,l)),D.gaps=I=c.gaps(s,n,o,u,I),D.clip=nn(I,g.ori,A,F,E,N)}return oe!=0&&(D.band=oe==2?[wt(s,n,o,u,W,-1),wt(s,n,o,u,W,1)]:wt(s,n,o,u,W,oe)),D})}function wf(e){const l=se(e.align,1),s=se(e.ascDesc,!1),n=se(e.alignGaps,0),o=se(e.extend,!1);return(u,c,p,d)=>It(u,c,(g,y,S,h,A,F,E,N,z,R,b)=>{let T=g.pxRound,{left:k,width:O}=u.bbox,D=X=>T(F(X,h,R,N)),W=X=>T(E(X,A,b,z)),B=h.ori==0?rl:fl;const V={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ot},x=V.stroke,H=h.dir*(h.ori==0?1:-1);p=Xt(S,p,d,1),d=Xt(S,p,d,-1);let q=W(S[H==1?p:d]),Q=D(y[H==1?p:d]),K=Q,ce=Q;o&&l==-1&&(ce=k,B(x,ce,q)),B(x,Q,q);for(let X=H==1?p:d;X>=p&&X<=d;X+=H){let oe=S[X];if(oe==null)continue;let I=D(y[X]),he=W(oe);l==1?B(x,I,q):B(x,K,he),B(x,I,he),q=he,K=I}let Y=K;o&&l==1&&(Y=k+O,B(x,Y,q));let[Je,Re]=ln(u,c);if(g.fill!=null||Je!=0){let X=V.fill=new Path2D(x),oe=g.fillTo(u,c,g.min,g.max,Je),I=W(oe);B(X,Y,I),B(X,ce,I)}if(!g.spanGaps){let X=[];X.push(...Xn(y,S,p,d,H,D,n));let oe=g.width*ie/2,I=s||l==1?oe:-oe,he=s||l==-1?-oe:oe;X.forEach(G=>{G[0]+=I,G[1]+=he}),V.gaps=X=g.gaps(u,c,p,d,X),V.clip=nn(X,h.ori,N,z,R,b)}return Re!=0&&(V.band=Re==2?[wt(u,c,p,d,x,-1),wt(u,c,p,d,x,1)]:wt(u,c,p,d,x,Re)),V})}function Sf(e){e=e||Pl;const l=se(e.size,[.6,Z,1]),s=e.align||0,n=(e.gap||0)*ie;let o=e.radius;o=o==null?[0,0]:typeof o=="number"?[o,0]:o;const u=J(o),c=1-l[0],p=se(l[1],Z)*ie,d=se(l[2],1)*ie,g=se(e.disp,Pl),y=se(e.each,A=>{}),{fill:S,stroke:h}=g;return(A,F,E,N)=>It(A,F,(z,R,b,T,k,O,D,W,B,V,x)=>{let H=z.pxRound,q,Q;T.ori==0?[q,Q]=u(A,F):[Q,q]=u(A,F);const K=T.dir*(T.ori==0?1:-1),ce=k.dir*(k.ori==1?1:-1);let Y=T.ori==0?rn:ei,Je=T.ori==0?y:(L,ae,be,Me,Ie,Ee,Ge)=>{y(L,ae,be,Ie,Me,Ge,Ee)},[Re,X]=ln(A,F),oe=k.distr==3?Re==1?k.max:k.min:0,I=D(oe,k,x,B),he,G,ee=H(z.width*ie),St=!1,pt=null,ft=null,yt=null,mt=null;S!=null&&(ee==0||h!=null)&&(St=!0,pt=S.values(A,F,E,N),ft=new Map,new Set(pt).forEach(L=>{L!=null&&ft.set(L,new Path2D)}),ee>0&&(yt=h.values(A,F,E,N),mt=new Map,new Set(yt).forEach(L=>{L!=null&&mt.set(L,new Path2D)})));let{x0:tt,size:At}=g,zl=!0;if(tt!=null&&At!=null){R=tt.values(A,F,E,N),tt.unit==2&&(R=R.map(ae=>A.posToVal(W+ae*V,T.key,!0)));let L=At.values(A,F,E,N);At.unit==2?G=L[0]*V:G=O(L[0],T,V,W)-O(0,T,V,W),ee>=G&&(ee=0),G=H(Zl(G-ee,d,p)),he=K==1?-ee/2:G+ee/2}else{let L=V;if(R.length>1){let be=null;for(let Me=0,Ie=1/0;Me<R.length;Me++)if(b[Me]!==void 0){if(be!=null){let Ee=Pe(R[Me]-R[be]);Ee<Ie&&(Ie=Ee,L=Pe(O(R[Me],T,V,W)-O(R[be],T,V,W)))}be=Me}}let ae=L*c;G=L-ae-n,ee>=G&&(ee=0),ae+n<5&&(H=ys),G=H(Zl(L-ae,d,p)-ee-n),he=(s==0?G/2:s==K?0:G)-s*K*n/2,G+ee>L&&(zl=!1)}const _t={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:Ot|Xl};let cl;X!=0&&(_t.band=new Path2D,cl=H(D(X==1?k.max:k.min,k,x,B)));const ul=St?null:new Path2D,Tt=_t.band;let{y0:Ze,y1:al}=g,vt=null;Ze!=null&&al!=null&&(b=al.values(A,F,E,N),vt=Ze.values(A,F,E,N));let Lt=q*G,te=Q*G;for(let L=K==1?E:N;L>=E&&L<=N;L+=K){let ae=b[L];if(ae===void 0)continue;let be=T.distr!=2||g!=null?R[L]:L,Me=O(be,T,V,W),Ie=D(se(ae,oe),k,x,B);vt!=null&&ae!=null&&(I=D(vt[L],k,x,B));let Ee=H(Me-he),Ge=H(Ne(Ie,I)),Ue=H(et(Ie,I)),lt=Ge-Ue;if(ae!=null){let ct=ae<0?te:Lt,nt=ae<0?Lt:te;St?(ee>0&&yt[L]!=null&&Y(mt.get(yt[L]),Ee,Ue+qe(ee/2),G,Ne(0,lt-ee),ct,nt),pt[L]!=null&&Y(ft.get(pt[L]),Ee,Ue+qe(ee/2),G,Ne(0,lt-ee),ct,nt)):Y(ul,Ee,Ue+qe(ee/2),G,Ne(0,lt-ee),ct,nt),Je(A,F,L,Ee-ee/2,Ue,G+ee,lt)}X!=0&&(ae!=null||zl)&&(ce*X==1?(Ge=Ue,Ue=cl):(Ue=Ge,Ge=cl),lt=Ge-Ue,Y(Tt,Ee-ee/2,Ue,G+ee,Ne(0,lt),0,0))}return ee>0&&(_t.stroke=St?mt:ul),_t.fill=St?ft:ul,_t})}function yf(e,l){const s=se(l==null?void 0:l.alignGaps,0);return(n,o,u,c)=>It(n,o,(p,d,g,y,S,h,A,F,E,N,z)=>{let R=p.pxRound,b=Y=>R(h(Y,y,N,F)),T=Y=>R(A(Y,S,z,E)),k,O,D;y.ori==0?(k=sn,D=rl,O=Ys):(k=on,D=fl,O=Ks);const W=y.dir*(y.ori==0?1:-1);u=Xt(g,u,c,1),c=Xt(g,u,c,-1);let B=b(d[W==1?u:c]),V=B,x=[],H=[];for(let Y=W==1?u:c;Y>=u&&Y<=c;Y+=W)if(g[Y]!=null){let Re=d[Y],X=b(Re);x.push(V=X),H.push(T(g[Y]))}const q={stroke:e(x,H,k,D,O,R),fill:null,clip:null,band:null,gaps:null,flags:Ot},Q=q.stroke;let[K,ce]=ln(n,o);if(p.fill!=null||K!=0){let Y=q.fill=new Path2D(Q),Je=p.fillTo(n,o,p.min,p.max,K),Re=T(Je);D(Y,V,Re),D(Y,B,Re)}if(!p.spanGaps){let Y=[];Y.push(...Xn(d,g,u,c,W,b,s)),q.gaps=Y=p.gaps(n,o,u,c,Y),q.clip=nn(Y,y.ori,F,E,N,z)}return ce!=0&&(q.band=ce==2?[wt(n,o,u,c,Q,-1),wt(n,o,u,c,Q,1)]:wt(n,o,u,c,Q,ce)),q})}function _f(e){return yf(vf,e)}function vf(e,l,s,n,o,u){const c=e.length;if(c<2)return null;const p=new Path2D;if(s(p,e[0],l[0]),c==2)n(p,e[1],l[1]);else{let d=Array(c),g=Array(c-1),y=Array(c-1),S=Array(c-1);for(let h=0;h<c-1;h++)y[h]=l[h+1]-l[h],S[h]=e[h+1]-e[h],g[h]=y[h]/S[h];d[0]=g[0];for(let h=1;h<c-1;h++)g[h]===0||g[h-1]===0||g[h-1]>0!=g[h]>0?d[h]=0:(d[h]=3*(S[h-1]+S[h])/((2*S[h]+S[h-1])/g[h-1]+(S[h]+2*S[h-1])/g[h]),isFinite(d[h])||(d[h]=0));d[c-1]=g[c-2];for(let h=0;h<c-1;h++)o(p,e[h]+S[h]/3,l[h]+d[h]*S[h]/3,e[h+1]-S[h]/3,l[h+1]-d[h+1]*S[h]/3,e[h+1],l[h+1])}return p}const Gn=new Set;function ms(){for(let e of Gn)e.syncRect(!0)}ol&&(Nt(Qo,Qt,ms),Nt(Xo,Qt,ms,!0),Nt($l,Qt,()=>{Oe.pxRatio=ie}));const xf=$s(),bf=js();function ds(e,l,s,n){return(n?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((u,c)=>Wn(u,c,l,s))}function kf(e,l){return e.map((s,n)=>n==0?null:xe({},l,s))}function Wn(e,l,s,n){return xe({},l==0?s:n,e)}function Js(e,l,s){return l==null?sl:[l,s]}const Mf=Js;function Ef(e,l,s){return l==null?sl:Jl(l,s,jn,!0)}function Zs(e,l,s,n){return l==null?sl:en(l,s,e.scales[n].log,!1)}const Df=Zs;function Qs(e,l,s,n){return l==null?sl:Kn(l,s,e.scales[n].log,!1)}const Af=Qs;function Tf(e,l,s,n,o){let u=Ne(ji(e),ji(l)),c=l-e,p=Et(o/n*c,s);do{let d=s[p],g=n*d/c;if(g>=o&&u+(d<5?il.get(d):0)<=17)return[d,g]}while(++p<s.length);return[0,0]}function gs(e){let l,s;return e=e.replace(/(\d+)px/,(n,o)=>(l=Ve((s=+o)*ie))+"px"),[e,l,s]}function Lf(e){e.show&&[e.font,e.labelFont].forEach(l=>{let s=ue(l[2]*ie,1);l[0]=l[0].replace(/[0-9.]+px/,s+"px"),l[1]=s})}function Oe(e,l,s){const n={mode:se(e.mode,1)},o=n.mode;function u(t,i){return((i.distr==3?gt(t>0?t:i.clamp(n,t,i.min,i.max,i.key)):i.distr==4?Pn(t,i.asinh):t)-i._min)/(i._max-i._min)}function c(t,i,r,f){let a=u(t,i);return f+r*(i.dir==-1?1-a:a)}function p(t,i,r,f){let a=u(t,i);return f+r*(i.dir==-1?a:1-a)}function d(t,i,r,f){return i.ori==0?c(t,i,r,f):p(t,i,r,f)}n.valToPosH=c,n.valToPosV=p;let g=!1;n.status=0;const y=n.root=Xe(Co);if(e.id!=null&&(y.id=e.id),je(y,e.class),e.title){let t=Xe(No,y);t.textContent=e.title}const S=rt("canvas"),h=n.ctx=S.getContext("2d"),A=Xe(Ho,y);Nt("click",A,t=>{t.target===E&&(pe!=Wt||me!=Bt)&&Ce.click(n,t)},!0);const F=n.under=Xe(Oo,A);A.appendChild(S);const E=n.over=Xe(Io,A);e=Ht(e);const N=+se(e.pxAlign,1),z=ps(N);(e.plugins||[]).forEach(t=>{t.opts&&(e=t.opts(n,e)||e)});const R=e.ms||.001,b=n.series=o==1?ds(e.series||[],os,as,!1):kf(e.series||[null],us),T=n.axes=ds(e.axes||[],ss,fs,!0),k=n.scales={},O=n.bands=e.bands||[];O.forEach(t=>{t.fill=J(t.fill||null),t.dir=se(t.dir,-1)});const D=o==2?b[1].facets[0].scale:b[0].scale,W={axes:go,series:uo},B=(e.drawOrder||["axes","series"]).map(t=>W[t]);function V(t){let i=k[t];if(i==null){let r=(e.scales||Pl)[t]||Pl;if(r.from!=null)V(r.from),k[t]=xe({},k[r.from],r,{key:t});else{i=k[t]=xe({},t==D?Is:hf,r),i.key=t;let f=i.time,a=i.range,m=Dt(a);if((t!=D||o==2&&!f)&&(m&&(a[0]==null||a[1]==null)&&(a={min:a[0]==null?Ui:{mode:1,hard:a[0],soft:a[0]},max:a[1]==null?Ui:{mode:1,hard:a[1],soft:a[1]}},m=!1),!m&&tn(a))){let w=a;a=(v,M,C)=>M==null?sl:Jl(M,C,w)}i.range=J(a||(f?Mf:t==D?i.distr==3?Df:i.distr==4?Af:Js:i.distr==3?Zs:i.distr==4?Qs:Ef)),i.auto=J(m?!1:i.auto),i.clamp=J(i.clamp||af),i._min=i._max=null}}}V("x"),V("y"),o==1&&b.forEach(t=>{V(t.scale)}),T.forEach(t=>{V(t.scale)});for(let t in e.scales)V(t);const x=k[D],H=x.distr;let q,Q;x.ori==0?(je(y,Fo),q=c,Q=p):(je(y,Vo),q=p,Q=c);const K={};for(let t in k){let i=k[t];(i.min!=null||i.max!=null)&&(K[t]={min:i.min,max:i.max},i.min=i.max=null)}const ce=e.tzDate||(t=>new Date(Ve(t/R))),Y=e.fmtDate||$n,Je=R==1?Vr(ce):Or(ce),Re=ls(ce,ts(R==1?Fr:Hr,Y)),X=is(ce,ns(Gr,Y)),oe=[],I=n.legend=xe({},Ur,e.legend),he=I.show,G=I.markers;I.idxs=oe,G.width=J(G.width),G.dash=J(G.dash),G.stroke=J(G.stroke),G.fill=J(G.fill);let ee,St,pt,ft=[],yt=[],mt,tt=!1,At={};if(I.live){const t=b[1]?b[1].values:null;tt=t!=null,mt=tt?t(n,1,0):{_:0};for(let i in mt)At[i]=Un}if(he)if(ee=rt("table",Ko,y),pt=rt("tbody",null,ee),I.mount(n,ee),tt){St=rt("thead",null,ee,pt);let t=rt("tr",null,St);rt("th",null,t);for(var zl in mt)rt("th",Ri,t).textContent=zl}else je(ee,qo),I.live&&je(ee,jo);const _t={show:!0},cl={show:!1};function ul(t,i){if(i==0&&(tt||!I.live||o==2))return sl;let r=[],f=rt("tr",$o,pt,pt.childNodes[i]);je(f,t.class),t.show||je(f,Vt);let a=rt("th",null,f);if(G.show){let v=Xe(Jo,a);if(i>0){let M=G.width(n,i);M&&(v.style.border=M+"px "+G.dash(n,i)+" "+G.stroke(n,i)),v.style.background=G.fill(n,i)}}let m=Xe(Ri,a);m.textContent=t.label,i>0&&(G.show||(m.style.color=t.width>0?G.stroke(n,i):G.fill(n,i)),Ze("click",a,v=>{if(U._lock)return;Pt(v);let M=b.indexOf(t);if((v.ctrlKey||v.metaKey)!=I.isolate){let C=b.some((_,P)=>P>0&&P!=M&&_.show);b.forEach((_,P)=>{P>0&&at(P,C?P==M?_t:cl:_t,!0,_e.setSeries)})}else at(M,{show:!t.show},!0,_e.setSeries)},!1),pl&&Ze(Ni,a,v=>{U._lock||(Pt(v),at(b.indexOf(t),Kt,!0,_e.setSeries))},!1));for(var w in mt){let v=rt("td",Zo,f);v.textContent="--",r.push(v)}return[f,r]}const Tt=new Map;function Ze(t,i,r,f=!0){const a=Tt.get(i)||{},m=U.bind[t](n,i,r,f);m&&(Nt(t,i,a[t]=m),Tt.set(i,a))}function al(t,i,r){const f=Tt.get(i)||{};for(let a in f)(t==null||a==t)&&(Hn(a,i,f[a]),delete f[a]);t==null&&Tt.delete(i)}let vt=0,Lt=0,te=0,L=0,ae=0,be=0,Me=0,Ie=0,Ee=0,Ge=0;n.bbox={};let Ue=!1,lt=!1,ct=!1,nt=!1,fn=!1,Qe=!1;function cn(t,i,r){(r||t!=n.width||i!=n.height)&&ti(t,i),gl(!1),ct=!0,lt=!0,U.left>=0&&(nt=Qe=!0),zt()}function ti(t,i){n.width=vt=te=t,n.height=Lt=L=i,ae=be=0,lo(),no();let r=n.bbox;Me=r.left=Ft(ae*ie,.5),Ie=r.top=Ft(be*ie,.5),Ee=r.width=Ft(te*ie,.5),Ge=r.height=Ft(L*ie,.5)}const Xs=3;function eo(){let t=!1,i=0;for(;!t;){i++;let r=po(i),f=mo(i);t=i==Xs||r&&f,t||(ti(n.width,n.height),lt=!0)}}function to({width:t,height:i}){cn(t,i)}n.setSize=to;function lo(){let t=!1,i=!1,r=!1,f=!1;T.forEach((a,m)=>{if(a.show&&a._show){let{side:w,_size:v}=a,M=w%2,C=a.label!=null?a.labelSize:0,_=v+C;_>0&&(M?(te-=_,w==3?(ae+=_,f=!0):r=!0):(L-=_,w==0?(be+=_,t=!0):i=!0))}}),Rt[0]=t,Rt[1]=r,Rt[2]=i,Rt[3]=f,te-=xt[1]+xt[3],ae+=xt[3],L-=xt[2]+xt[0],be+=xt[0]}function no(){let t=ae+te,i=be+L,r=ae,f=be;function a(m,w){switch(m){case 1:return t+=w,t-w;case 2:return i+=w,i-w;case 3:return r-=w,r+w;case 0:return f-=w,f+w}}T.forEach((m,w)=>{if(m.show&&m._show){let v=m.side;m._pos=a(v,m._size),m.label!=null&&(m._lpos=a(v,m.labelSize))}})}const U=n.cursor=xe({},Zr,{drag:{y:o==2}},e.cursor),Pt=t=>{U.event=t};U.idxs=oe,U._lock=!1;let ut=U.points;ut.show=J(ut.show),ut.size=J(ut.size),ut.stroke=J(ut.stroke),ut.width=J(ut.width),ut.fill=J(ut.fill);const hl=n.focus=xe({},e.focus||{alpha:.3},U.focus),pl=hl.prox>=0;let Ye=[null];function io(t,i){if(i>0){let r=U.points.show(n,i);if(r)return je(r,Yo),je(r,t.class),Jt(r,-10,-10,te,L),E.insertBefore(r,Ye[i]),r}}function li(t,i){if(o==1||i>0){let r=o==1&&k[t.scale].time,f=t.value;t.value=r?Ji(f)?is(ce,ns(f,Y)):f||X:f||ff,t.label=t.label||(r?Xr:Qr)}if(i>0){t.width=t.width==null?1:t.width,t.paths=t.paths||xf||ur,t.fillTo=J(t.fillTo||pf),t.pxAlign=+se(t.pxAlign,N),t.pxRound=ps(t.pxAlign),t.stroke=J(t.stroke||null),t.fill=J(t.fill||null),t._stroke=t._fill=t._paths=t._focus=null;let r=cf(Ne(1,t.width),1),f=t.points=xe({},{size:r,width:Ne(1,r*.2),stroke:t.stroke,space:r*2,paths:bf,_stroke:null,_fill:null},t.points);f.show=J(f.show),f.filter=J(f.filter),f.fill=J(f.fill),f.stroke=J(f.stroke),f.paths=J(f.paths),f.pxAlign=t.pxAlign}if(he){let r=ul(t,i);ft.splice(i,0,r[0]),yt.splice(i,0,r[1]),I.values.push(null)}if(U.show){oe.splice(i,0,null);let r=io(t,i);r&&Ye.splice(i,0,r)}Fe("addSeries",i)}function so(t,i){i=i??b.length,t=o==1?Wn(t,i,os,as):Wn(t,i,null,us),b.splice(i,0,t),li(b[i],i)}n.addSeries=so;function oo(t){if(b.splice(t,1),he){I.values.splice(t,1),yt.splice(t,1);let i=ft.splice(t,1)[0];al(null,i.firstChild),i.remove()}U.show&&(oe.splice(t,1),Ye.length>1&&Ye.splice(t,1)[0].remove()),Fe("delSeries",t)}n.delSeries=oo;const Rt=[!1,!1,!1,!1];function ro(t,i){if(t._show=t.show,t.show){let r=t.side%2,f=k[t.scale];f==null&&(t.scale=r?b[1].scale:D,f=k[t.scale]);let a=f.time;t.size=J(t.size),t.space=J(t.space),t.rotate=J(t.rotate),Dt(t.incrs)&&t.incrs.forEach(w=>{!il.has(w)&&il.set(w,xs(w))}),t.incrs=J(t.incrs||(f.distr==2?Pr:a?R==1?Cr:Nr:Rr)),t.splits=J(t.splits||(a&&f.distr==1?Je:f.distr==3?On:f.distr==4?lf:tf)),t.stroke=J(t.stroke),t.grid.stroke=J(t.grid.stroke),t.ticks.stroke=J(t.ticks.stroke),t.border.stroke=J(t.border.stroke);let m=t.values;t.values=Dt(m)&&!Dt(m[0])?J(m):a?Dt(m)?ls(ce,ts(m,Y)):Ji(m)?Ir(ce,m):m||Re:m||ef,t.filter=J(t.filter||(f.distr>=3&&f.log==10?of:f.distr==3&&f.log==2?rf:_s)),t.font=gs(t.font),t.labelFont=gs(t.labelFont),t._size=t.size(n,null,i,0),t._space=t._rotate=t._incrs=t._found=t._splits=t._values=null,t._size>0&&(Rt[i]=!0,t._el=Xe(Go,A))}}function ml(t,i,r,f){let[a,m,w,v]=r,M=i%2,C=0;return M==0&&(v||m)&&(C=i==0&&!a||i==2&&!w?Ve(ss.size/3):0),M==1&&(a||w)&&(C=i==1&&!m||i==3&&!v?Ve(fs.size/2):0),C}const ni=n.padding=(e.padding||[ml,ml,ml,ml]).map(t=>J(se(t,ml))),xt=n._padding=ni.map((t,i)=>t(n,i,Rt,0));let ze,De=null,Ae=null;const Cl=o==1?b[0].idxs:null;let it=null,Fl=!1;function ii(t,i){if(l=t==null?[]:Ht(t,Zi),o==2){ze=0;for(let r=1;r<b.length;r++)ze+=l[r][0].length;n.data=l=t}else if(l[0]==null&&(l[0]=[]),n.data=l.slice(),it=l[0],ze=it.length,H==2){l[0]=Array(ze);for(let r=0;r<ze;r++)l[0][r]=r}if(n._data=l,gl(!0),Fe("setData"),H==2&&(ct=!0),i!==!1){let r=x;r.auto(n,Fl)?un():Ut(D,r.min,r.max),nt=nt||U.left>=0,Qe=!0,zt()}}n.setData=ii;function un(){Fl=!0;let t,i;o==1&&(ze>0?(De=Cl[0]=0,Ae=Cl[1]=ze-1,t=l[0][De],i=l[0][Ae],H==2?(t=De,i=Ae):t==i&&(H==3?[t,i]=en(t,t,x.log,!1):H==4?[t,i]=Kn(t,t,x.log,!1):x.time?i=t+Ve(86400/R):[t,i]=Jl(t,i,jn,!0))):(De=Cl[0]=t=null,Ae=Cl[1]=i=null)),Ut(D,t,i)}let Vl,Gt,an,hn,pn,mn,dn,gn,wn,dl;function si(t,i,r,f,a,m){t??(t=Ci),r??(r=bs),f??(f="butt"),a??(a=Ci),m??(m="round"),t!=Vl&&(h.strokeStyle=Vl=t),a!=Gt&&(h.fillStyle=Gt=a),i!=an&&(h.lineWidth=an=i),m!=pn&&(h.lineJoin=pn=m),f!=mn&&(h.lineCap=mn=f),r!=hn&&h.setLineDash(hn=r)}function oi(t,i,r,f){i!=Gt&&(h.fillStyle=Gt=i),t!=dn&&(h.font=dn=t),r!=gn&&(h.textAlign=gn=r),f!=wn&&(h.textBaseline=wn=f)}function Sn(t,i,r,f,a=0){if(f.length>0&&t.auto(n,Fl)&&(i==null||i.min==null)){let m=se(De,0),w=se(Ae,f.length-1),v=r.min==null?t.distr==3?ir(f,m,w):nr(f,m,w,a):[r.min,r.max];t.min=et(t.min,r.min=v[0]),t.max=Ne(t.max,r.max=v[1])}}function fo(){let t=Ht(k,Zi);for(let f in t){let a=t[f],m=K[f];if(m!=null&&m.min!=null)xe(a,m),f==D&&gl(!0);else if(f!=D||o==2)if(ze==0&&a.from==null){let w=a.range(n,null,null,f);a.min=w[0],a.max=w[1]}else a.min=Z,a.max=-Z}if(ze>0){b.forEach((f,a)=>{if(o==1){let m=f.scale,w=t[m],v=K[m];if(a==0){let M=w.range(n,w.min,w.max,m);w.min=M[0],w.max=M[1],De=Et(w.min,l[0]),Ae=Et(w.max,l[0]),Ae-De>1&&(l[0][De]<w.min&&De++,l[0][Ae]>w.max&&Ae--),f.min=it[De],f.max=it[Ae]}else f.show&&f.auto&&Sn(w,v,f,l[a],f.sorted);f.idxs[0]=De,f.idxs[1]=Ae}else if(a>0&&f.show&&f.auto){let[m,w]=f.facets,v=m.scale,M=w.scale,[C,_]=l[a];Sn(t[v],K[v],m,C,m.sorted),Sn(t[M],K[M],w,_,w.sorted),f.min=w.min,f.max=w.max}});for(let f in t){let a=t[f],m=K[f];if(a.from==null&&(m==null||m.min==null)){let w=a.range(n,a.min==Z?null:a.min,a.max==-Z?null:a.max,f);a.min=w[0],a.max=w[1]}}}for(let f in t){let a=t[f];if(a.from!=null){let m=t[a.from];if(m.min==null)a.min=a.max=null;else{let w=a.range(n,m.min,m.max,f);a.min=w[0],a.max=w[1]}}}let i={},r=!1;for(let f in t){let a=t[f],m=k[f];if(m.min!=a.min||m.max!=a.max){m.min=a.min,m.max=a.max;let w=m.distr;m._min=w==3?gt(m.min):w==4?Pn(m.min,m.asinh):m.min,m._max=w==3?gt(m.max):w==4?Pn(m.max,m.asinh):m.max,i[f]=r=!0}}if(r){b.forEach((f,a)=>{o==2?a>0&&i.y&&(f._paths=null):i[f.scale]&&(f._paths=null)});for(let f in i)ct=!0,Fe("setScale",f);U.show&&U.left>=0&&(nt=Qe=!0)}for(let f in K)K[f]=null}function co(t){let i=Zl(De-1,0,ze-1),r=Zl(Ae+1,0,ze-1);for(;t[i]==null&&i>0;)i--;for(;t[r]==null&&r<ze-1;)r++;return[i,r]}function uo(){ze>0&&(b.forEach((t,i)=>{if(i>0&&t.show&&t._paths==null){let r=o==2?[0,l[i][0].length-1]:co(l[i]);t._paths=t.paths(n,i,r[0],r[1])}}),b.forEach((t,i)=>{if(i>0&&t.show){dl!=t.alpha&&(h.globalAlpha=dl=t.alpha),ri(i,!1),t._paths&&fi(i,!1);{ri(i,!0);let r=t._paths?t._paths.gaps:null,f=t.points.show(n,i,De,Ae,r),a=t.points.filter(n,i,f,r);(f||a)&&(t.points._paths=t.points.paths(n,i,De,Ae,a),fi(i,!0))}dl!=1&&(h.globalAlpha=dl=1),Fe("drawSeries",i)}}))}function ri(t,i){let r=i?b[t].points:b[t];r._stroke=r.stroke(n,t),r._fill=r.fill(n,t)}function fi(t,i){let r=i?b[t].points:b[t],f=r._stroke,a=r._fill,{stroke:m,fill:w,clip:v,flags:M}=r._paths,C=null,_=ue(r.width*ie,3),P=_%2/2;i&&a==null&&(a=_>0?"#fff":f);let j=r.pxAlign==1&&P>0;if(j&&h.translate(P,P),!i){let Se=Me-_/2,$=Ie-_/2,ne=Ee+_,le=Ge+_;C=new Path2D,C.rect(Se,$,ne,le)}i?yn(f,_,r.dash,r.cap,a,m,w,M,v):ao(t,f,_,r.dash,r.cap,a,m,w,M,C,v),j&&h.translate(-P,-P)}function ao(t,i,r,f,a,m,w,v,M,C,_){let P=!1;O.forEach((j,Se)=>{if(j.series[0]==t){let $=b[j.series[1]],ne=l[j.series[1]],le=($._paths||Pl).band;Dt(le)&&(le=j.dir==1?le[0]:le[1]);let fe,we=null;$.show&&le&&or(ne,De,Ae)?(we=j.fill(n,Se)||m,fe=$._paths.clip):le=null,yn(i,r,f,a,we,w,v,M,C,_,fe,le),P=!0}}),P||yn(i,r,f,a,m,w,v,M,C,_)}const ci=Ot|Xl;function yn(t,i,r,f,a,m,w,v,M,C,_,P){si(t,i,r,f,a),(M||C||P)&&(h.save(),M&&h.clip(M),C&&h.clip(C)),P?(v&ci)==ci?(h.clip(P),_&&h.clip(_),Hl(a,w),Nl(t,m,i)):v&Xl?(Hl(a,w),h.clip(P),Nl(t,m,i)):v&Ot&&(h.save(),h.clip(P),_&&h.clip(_),Hl(a,w),h.restore(),Nl(t,m,i)):(Hl(a,w),Nl(t,m,i)),(M||C||P)&&h.restore()}function Nl(t,i,r){r>0&&(i instanceof Map?i.forEach((f,a)=>{h.strokeStyle=Vl=a,h.stroke(f)}):i!=null&&t&&h.stroke(i))}function Hl(t,i){i instanceof Map?i.forEach((r,f)=>{h.fillStyle=Gt=f,h.fill(r)}):i!=null&&t&&h.fill(i)}function ho(t,i,r,f){let a=T[t],m;if(f<=0)m=[0,0];else{let w=a._space=a.space(n,t,i,r,f),v=a._incrs=a.incrs(n,t,i,r,f,w);m=Tf(i,r,v,f,w)}return a._found=m}function _n(t,i,r,f,a,m,w,v,M,C){let _=w%2/2;N==1&&h.translate(_,_),si(v,w,M,C,v),h.beginPath();let P,j,Se,$,ne=a+(f==0||f==3?-m:m);r==0?(j=a,$=ne):(P=a,Se=ne);for(let le=0;le<t.length;le++)i[le]!=null&&(r==0?P=Se=t[le]:j=$=t[le],h.moveTo(P,j),h.lineTo(Se,$));h.stroke(),N==1&&h.translate(-_,-_)}function po(t){let i=!0;return T.forEach((r,f)=>{if(!r.show)return;let a=k[r.scale];if(a.min==null){r._show&&(i=!1,r._show=!1,gl(!1));return}else r._show||(i=!1,r._show=!0,gl(!1));let m=r.side,w=m%2,{min:v,max:M}=a,[C,_]=ho(f,v,M,w==0?te:L);if(_==0)return;let P=a.distr==2,j=r._splits=r.splits(n,f,v,M,C,_,P),Se=a.distr==2?j.map(fe=>it[fe]):j,$=a.distr==2?it[j[1]]-it[j[0]]:C,ne=r._values=r.values(n,r.filter(n,Se,f,_,$),f,_,$);r._rotate=m==2?r.rotate(n,ne,f,_):0;let le=r._size;r._size=el(r.size(n,ne,f,t)),le!=null&&r._size!=le&&(i=!1)}),i}function mo(t){let i=!0;return ni.forEach((r,f)=>{let a=r(n,f,Rt,t);a!=xt[f]&&(i=!1),xt[f]=a}),i}function go(){for(let t=0;t<T.length;t++){let i=T[t];if(!i.show||!i._show)continue;let r=i.side,f=r%2,a,m,w=i.stroke(n,t),v=r==0||r==3?-1:1;if(i.label){let ot=i.labelGap*v,dt=Ve((i._lpos+ot)*ie);oi(i.labelFont[0],w,"center",r==2?Ml:zi),h.save(),f==1?(a=m=0,h.translate(dt,Ve(Ie+Ge/2)),h.rotate((r==3?-ql:ql)/2)):(a=Ve(Me+Ee/2),m=dt),h.fillText(i.label,a,m),h.restore()}let[M,C]=i._found;if(C==0)continue;let _=k[i.scale],P=f==0?Ee:Ge,j=f==0?Me:Ie,Se=Ve(i.gap*ie),$=i._splits,ne=_.distr==2?$.map(ot=>it[ot]):$,le=_.distr==2?it[$[1]]-it[$[0]]:M,fe=i.ticks,we=i.border,Ke=fe.show?Ve(fe.size*ie):0,de=i._rotate*-ql/180,ve=z(i._pos*ie),He=(Ke+Se)*v,ye=ve+He;m=f==0?ye:0,a=f==1?ye:0;let Be=i.font[0],st=i.align==1?$t:i.align==2?Tn:de>0?$t:de<0?Tn:f==0?"center":r==3?Tn:$t,Mt=de||f==1?"middle":r==2?Ml:zi;oi(Be,w,st,Mt);let Ai=i.font[1]*i.lineGap,Ul=$.map(ot=>z(d(ot,_,P,j))),Ti=i._values;for(let ot=0;ot<Ti.length;ot++){let dt=Ti[ot];if(dt!=null){f==0?a=Ul[ot]:m=Ul[ot],dt=""+dt;let Li=dt.indexOf(`
|
|
3
|
+
`)==-1?[dt]:dt.split(/\n/gm);for(let kl=0;kl<Li.length;kl++){let Pi=Li[kl];de?(h.save(),h.translate(a,m+kl*Ai),h.rotate(de),h.fillText(Pi,0,0),h.restore()):h.fillText(Pi,a,m+kl*Ai)}}}fe.show&&_n(Ul,fe.filter(n,ne,t,C,le),f,r,ve,Ke,ue(fe.width*ie,3),fe.stroke(n,t),fe.dash,fe.cap);let qt=i.grid;qt.show&&_n(Ul,qt.filter(n,ne,t,C,le),f,f==0?2:1,f==0?Ie:Me,f==0?Ge:Ee,ue(qt.width*ie,3),qt.stroke(n,t),qt.dash,qt.cap),we.show&&_n([ve],[1],f==0?1:0,f==0?1:2,f==1?Ie:Me,f==1?Ge:Ee,ue(we.width*ie,3),we.stroke(n,t),we.dash,we.cap)}Fe("drawAxes")}function gl(t){b.forEach((i,r)=>{r>0&&(i._paths=null,t&&(o==1?(i.min=null,i.max=null):i.facets.forEach(f=>{f.min=null,f.max=null})))})}let vn=!1;function zt(){vn||(yr(wo),vn=!0)}function wo(){Ue&&(fo(),Ue=!1),ct&&(eo(),ct=!1),lt&&(ge(F,$t,ae),ge(F,Ml,be),ge(F,Dl,te),ge(F,Al,L),ge(E,$t,ae),ge(E,Ml,be),ge(E,Dl,te),ge(E,Al,L),ge(A,Dl,vt),ge(A,Al,Lt),S.width=Ve(vt*ie),S.height=Ve(Lt*ie),T.forEach(({_el:t,_show:i,_size:r,_pos:f,side:a})=>{if(t!=null)if(i){let m=a===3||a===0?r:0,w=a%2==1;ge(t,w?"left":"top",f-m),ge(t,w?"width":"height",r),ge(t,w?"top":"left",w?be:ae),ge(t,w?"height":"width",w?L:te),Nn(t,Vt)}else je(t,Vt)}),Vl=Gt=an=pn=mn=dn=gn=wn=hn=null,dl=1,xl(!0),Fe("setSize"),lt=!1),vt>0&&Lt>0&&(h.clearRect(0,0,S.width,S.height),Fe("drawClear"),B.forEach(t=>t()),Fe("draw")),We.show&&fn&&(Gl(We),fn=!1),U.show&&nt&&(Ct(null,!0,!1),nt=!1),I.show&&I.live&&Qe&&(Mn(),Qe=!1),g||(g=!0,n.status=1,Fe("ready")),Fl=!1,vn=!1}n.redraw=(t,i)=>{ct=i||!1,t!==!1?Ut(D,x.min,x.max):zt()};function xn(t,i){let r=k[t];if(r.from==null){if(ze==0){let f=r.range(n,i.min,i.max,t);i.min=f[0],i.max=f[1]}if(i.min>i.max){let f=i.min;i.min=i.max,i.max=f}if(ze>1&&i.min!=null&&i.max!=null&&i.max-i.min<1e-16)return;t==D&&r.distr==2&&ze>0&&(i.min=Et(i.min,l[0]),i.max=Et(i.max,l[0]),i.min==i.max&&i.max++),K[t]=i,Ue=!0,zt()}}n.setScale=xn;let bn,kn,Ol,Il,ui,ai,Wt,Bt,hi,pi,pe,me,bt=!1;const Ce=U.drag;let Te=Ce.x,Le=Ce.y;U.show&&(U.x&&(bn=Xe(Bo,E)),U.y&&(kn=Xe(Uo,E)),x.ori==0?(Ol=bn,Il=kn):(Ol=kn,Il=bn),pe=U.left,me=U.top);const We=n.select=xe({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),wl=We.show?Xe(Wo,We.over?E:F):null;function Gl(t,i){if(We.show){for(let r in t)We[r]=t[r],r in wi&&ge(wl,r,t[r]);i!==!1&&Fe("setSelect")}}n.setSelect=Gl;function So(t,i){let r=b[t],f=he?ft[t]:null;r.show?f&&Nn(f,Vt):(f&&je(f,Vt),Ye.length>1&&Jt(Ye[t],-10,-10,te,L))}function Ut(t,i,r){xn(t,{min:i,max:r})}function at(t,i,r,f){i.focus!=null&&bo(t),i.show!=null&&b.forEach((a,m)=>{m>0&&(t==m||t==null)&&(a.show=i.show,So(m,i.show),Ut(o==2?a.facets[1].scale:a.scale,null,null),zt())}),r!==!1&&Fe("setSeries",t,i),f&&bl("setSeries",n,t,i)}n.setSeries=at;function yo(t,i){xe(O[t],i)}function _o(t,i){t.fill=J(t.fill||null),t.dir=se(t.dir,-1),i=i??O.length,O.splice(i,0,t)}function vo(t){t==null?O.length=0:O.splice(t,1)}n.addBand=_o,n.setBand=yo,n.delBand=vo;function xo(t,i){b[t].alpha=i,U.show&&Ye[t]&&(Ye[t].style.opacity=i),he&&ft[t]&&(ft[t].style.opacity=i)}let Yt,Sl,yl;const Kt={focus:!0};function bo(t){if(t!=yl){let i=t==null,r=hl.alpha!=1;b.forEach((f,a)=>{let m=i||a==0||a==t;f._focus=i?null:m,r&&xo(a,m?1:hl.alpha)}),yl=t,r&&zt()}}he&&pl&&Ze(Hi,ee,t=>{U._lock||(Pt(t),yl!=null&&at(null,Kt,!0,_e.setSeries))});function ht(t,i,r){let f=k[i];r&&(t=t/ie-(f.ori==1?be:ae));let a=te;f.ori==1&&(a=L,t=a-t),f.dir==-1&&(t=a-t);let m=f._min,w=f._max,v=t/a,M=m+(w-m)*v,C=f.distr;return C==3?tl(10,M):C==4?fr(M,f.asinh):M}function ko(t,i){let r=ht(t,D,i);return Et(r,l[0],De,Ae)}n.valToIdx=t=>Et(t,l[0]),n.posToIdx=ko,n.posToVal=ht,n.valToPos=(t,i,r)=>k[i].ori==0?c(t,k[i],r?Ee:te,r?Me:0):p(t,k[i],r?Ge:L,r?Ie:0);function Mo(t){t(n),zt()}n.batch=Mo,n.setCursor=(t,i,r)=>{pe=t.left,me=t.top,Ct(null,i,r)};function mi(t,i){ge(wl,$t,We.left=t),ge(wl,Dl,We.width=i)}function di(t,i){ge(wl,Ml,We.top=t),ge(wl,Al,We.height=i)}let _l=x.ori==0?mi:di,vl=x.ori==1?mi:di;function Eo(){if(he&&I.live)for(let t=o==2?1:0;t<b.length;t++){if(t==0&&tt)continue;let i=I.values[t],r=0;for(let f in i)yt[t][r++].firstChild.nodeValue=i[f]}}function Mn(t,i){t!=null&&(t.idxs?t.idxs.forEach((r,f)=>{oe[f]=r}):hr(t.idx)||oe.fill(t.idx),I.idx=oe[0]);for(let r=0;r<b.length;r++)(r>0||o==1&&!tt)&&Do(r,oe[r]);he&&I.live&&Eo(),Qe=!1,i!==!1&&Fe("setLegend")}n.setLegend=Mn;function Do(t,i){let r=b[t],f=t==0&&H==2?it:l[t],a;tt?a=r.values(n,t,i)??At:(a=r.value(n,i==null?null:f[i],t,i),a=a==null?At:{_:a}),I.values[t]=a}function Ct(t,i,r){hi=pe,pi=me,[pe,me]=U.move(n,pe,me),U.show&&(Ol&&Jt(Ol,Ve(pe),0,te,L),Il&&Jt(Il,0,Ve(me),te,L));let f,a=De>Ae;Yt=Z;let m=x.ori==0?te:L,w=x.ori==1?te:L;if(pe<0||ze==0||a){f=null;for(let v=0;v<b.length;v++)v>0&&Ye.length>1&&Jt(Ye[v],-10,-10,te,L);pl&&at(null,Kt,!0,t==null&&_e.setSeries),I.live&&(oe.fill(f),Qe=!0)}else{let v,M,C;o==1&&(v=x.ori==0?pe:me,M=ht(v,D),f=Et(M,l[0],De,Ae),C=q(l[0][f],x,m,0));for(let _=o==2?1:0;_<b.length;_++){let P=b[_],j=oe[_],Se=o==1?l[_][j]:l[_][1][j],$=U.dataIdx(n,_,f,M),ne=o==1?l[_][$]:l[_][1][$];Qe=Qe||ne!=Se||$!=j,oe[_]=$;let le=nl($==f?C:q(o==1?l[0][$]:l[_][0][$],x,m,0),1);if(_>0&&P.show){let fe=ne==null?-10:nl(Q(ne,o==1?k[P.scale]:k[P.facets[1].scale],w,0),1);if(pl&&fe>=0&&o==1){let de=Pe(fe-me);if(de<Yt){let ve=hl.bias;if(ve!=0){let He=x.ori==1?pe:me,ye=ht(He,P.scale),Be=ne>=0?1:-1,st=ye>=0?1:-1;st==Be&&(st==1?ve==1?ne>=ye:ne<=ye:ve==1?ne<=ye:ne>=ye)&&(Yt=de,Sl=_)}else Yt=de,Sl=_}}let we,Ke;if(x.ori==0?(we=le,Ke=fe):(we=fe,Ke=le),Qe&&Ye.length>1){tr(Ye[_],U.points.fill(n,_),U.points.stroke(n,_));let de,ve,He,ye,Be=!0,st=U.points.bbox;if(st!=null){Be=!1;let Mt=st(n,_);He=Mt.left,ye=Mt.top,de=Mt.width,ve=Mt.height}else He=we,ye=Ke,de=ve=U.points.size(n,_);lr(Ye[_],de,ve,Be),Jt(Ye[_],He,ye,te,L)}}}}if(U.idx=f,U.left=pe,U.top=me,Qe&&(I.idx=f,Mn()),We.show&&bt)if(t!=null){let[v,M]=_e.scales,[C,_]=_e.match,[P,j]=t.cursor.sync.scales,Se=t.cursor.drag;if(Te=Se._x,Le=Se._y,Te||Le){let{left:$,top:ne,width:le,height:fe}=t.select,we=t.scales[v].ori,Ke=t.posToVal,de,ve,He,ye,Be,st=v!=null&&C(v,P),Mt=M!=null&&_(M,j);st&&Te?(we==0?(de=$,ve=le):(de=ne,ve=fe),He=k[v],ye=q(Ke(de,P),He,m,0),Be=q(Ke(de+ve,P),He,m,0),_l(et(ye,Be),Pe(Be-ye))):_l(0,m),Mt&&Le?(we==1?(de=$,ve=le):(de=ne,ve=fe),He=k[M],ye=Q(Ke(de,j),He,w,0),Be=Q(Ke(de+ve,j),He,w,0),vl(et(ye,Be),Pe(Be-ye))):vl(0,w)}else Wl()}else{let v=Pe(hi-ui),M=Pe(pi-ai);if(x.ori==1){let j=v;v=M,M=j}Te=Ce.x&&v>=Ce.dist,Le=Ce.y&&M>=Ce.dist;let C=Ce.uni;C!=null?Te&&Le&&(Te=v>=C,Le=M>=C,!Te&&!Le&&(M>v?Le=!0:Te=!0)):Ce.x&&Ce.y&&(Te||Le)&&(Te=Le=!0);let _,P;Te&&(x.ori==0?(_=Wt,P=pe):(_=Bt,P=me),_l(et(_,P),Pe(P-_)),Le||vl(0,w)),Le&&(x.ori==1?(_=Wt,P=pe):(_=Bt,P=me),vl(et(_,P),Pe(P-_)),Te||_l(0,m)),!Te&&!Le&&(_l(0,0),vl(0,0))}if(Ce._x=Te,Ce._y=Le,t==null){if(r){if(Di!=null){let[v,M]=_e.scales;_e.values[0]=v!=null?ht(x.ori==0?pe:me,v):null,_e.values[1]=M!=null?ht(x.ori==1?pe:me,M):null}bl(Fi,n,pe,me,te,L,f)}if(pl){let v=r&&_e.setSeries,M=hl.prox;yl==null?Yt<=M&&at(Sl,Kt,!0,v):Yt>M?at(null,Kt,!0,v):Sl!=yl&&at(Sl,Kt,!0,v)}}i!==!1&&Fe("setCursor")}let kt=null;Object.defineProperty(n,"rect",{get(){return kt==null&&xl(!1),kt}});function xl(t=!1){t?kt=null:(kt=E.getBoundingClientRect(),Fe("syncRect",kt))}function gi(t,i,r,f,a,m,w){U._lock||bt&&t!=null&&t.movementX==0&&t.movementY==0||(En(t,i,r,f,a,m,w,!1,t!=null),t!=null?Ct(null,!0,!0):Ct(i,!0,!1))}function En(t,i,r,f,a,m,w,v,M){if(kt==null&&xl(!1),Pt(t),t!=null)r=t.clientX-kt.left,f=t.clientY-kt.top;else{if(r<0||f<0){pe=-10,me=-10;return}let[C,_]=_e.scales,P=i.cursor.sync,[j,Se]=P.values,[$,ne]=P.scales,[le,fe]=_e.match,we=i.axes[0].side%2==1,Ke=x.ori==0?te:L,de=x.ori==1?te:L,ve=we?m:a,He=we?a:m,ye=we?f:r,Be=we?r:f;if($!=null?r=le(C,$)?d(j,k[C],Ke,0):-10:r=Ke*(ye/ve),ne!=null?f=fe(_,ne)?d(Se,k[_],de,0):-10:f=de*(Be/He),x.ori==1){let st=r;r=f,f=st}}M&&((r<=1||r>=te-1)&&(r=Ft(r,te)),(f<=1||f>=L-1)&&(f=Ft(f,L))),v?(ui=r,ai=f,[Wt,Bt]=U.move(n,r,f)):(pe=r,me=f)}const wi={width:0,height:0,left:0,top:0};function Wl(){Gl(wi,!1)}let Si,yi,_i,vi;function xi(t,i,r,f,a,m,w){bt=!0,Te=Le=Ce._x=Ce._y=!1,En(t,i,r,f,a,m,w,!0,!1),t!=null&&(Ze(Ln,Fn,bi,!1),bl(Vi,n,Wt,Bt,te,L,null));let{left:v,top:M,width:C,height:_}=We;Si=v,yi=M,_i=C,vi=_,Wl()}function bi(t,i,r,f,a,m,w){bt=Ce._x=Ce._y=!1,En(t,i,r,f,a,m,w,!1,!0);let{left:v,top:M,width:C,height:_}=We,P=C>0||_>0,j=Si!=v||yi!=M||_i!=C||vi!=_;if(P&&j&&Gl(We),Ce.setScale&&P&&j){let Se=v,$=C,ne=M,le=_;if(x.ori==1&&(Se=M,$=_,ne=v,le=C),Te&&Ut(D,ht(Se,D),ht(Se+$,D)),Le)for(let fe in k){let we=k[fe];fe!=D&&we.from==null&&we.min!=Z&&Ut(fe,ht(ne+le,fe),ht(ne,fe))}Wl()}else U.lock&&(U._lock=!U._lock,U._lock||Ct(null,!0,!1));t!=null&&(al(Ln,Fn),bl(Ln,n,pe,me,te,L,null))}function Ao(t,i,r,f,a,m,w){if(U._lock)return;Pt(t);let v=bt;if(bt){let M=!0,C=!0,_=10,P,j;x.ori==0?(P=Te,j=Le):(P=Le,j=Te),P&&j&&(M=pe<=_||pe>=te-_,C=me<=_||me>=L-_),P&&M&&(pe=pe<Wt?0:te),j&&C&&(me=me<Bt?0:L),Ct(null,!0,!0),bt=!1}pe=-10,me=-10,Ct(null,!0,!0),v&&(bt=v)}function ki(t,i,r,f,a,m,w){U._lock||(Pt(t),un(),Wl(),t!=null&&bl(Oi,n,pe,me,te,L,null))}function Mi(){T.forEach(Lf),cn(n.width,n.height,!0)}Nt($l,Qt,Mi);const jt={};jt.mousedown=xi,jt.mousemove=gi,jt.mouseup=bi,jt.dblclick=ki,jt.setSeries=(t,i,r,f)=>{let a=_e.match[2];r=a(n,i,r),r!=-1&&at(r,f,!0,!1)},U.show&&(Ze(Vi,E,xi),Ze(Fi,E,gi),Ze(Ni,E,t=>{Pt(t),xl(!1)}),Ze(Hi,E,Ao),Ze(Oi,E,ki),Gn.add(n),n.syncRect=xl);const Bl=n.hooks=e.hooks||{};function Fe(t,i,r){t in Bl&&Bl[t].forEach(f=>{f.call(null,n,i,r)})}(e.plugins||[]).forEach(t=>{for(let i in t.hooks)Bl[i]=(Bl[i]||[]).concat(t.hooks[i])});const Ei=(t,i,r)=>r,_e=xe({key:null,setSeries:!1,filters:{pub:qi,sub:qi},scales:[D,b[1]?b[1].scale:null],match:[$i,$i,Ei],values:[null,null]},U.sync);_e.match.length==2&&_e.match.push(Ei),U.sync=_e;const Di=_e.key,Dn=Gs(Di);function bl(t,i,r,f,a,m,w){_e.filters.pub(t,i,r,f,a,m,w)&&Dn.pub(t,i,r,f,a,m,w)}Dn.sub(n);function To(t,i,r,f,a,m,w){_e.filters.sub(t,i,r,f,a,m,w)&&jt[t](null,i,r,f,a,m,w)}n.pub=To;function Lo(){Dn.unsub(n),Gn.delete(n),Tt.clear(),Hn($l,Qt,Mi),y.remove(),ee==null||ee.remove(),Fe("destroy")}n.destroy=Lo;function An(){Fe("init",e,l),ii(l||e.data,!1),K[D]?xn(D,K[D]):un(),fn=We.show,nt=Qe=!0,cn(e.width,e.height)}return b.forEach(li),T.forEach(ro),s?s instanceof HTMLElement?(s.appendChild(y),An()):s(n,An):An(),n}Oe.assign=xe;Oe.fmtNum=qn;Oe.rangeNum=Jl;Oe.rangeLog=en;Oe.rangeAsinh=Kn;Oe.orient=It;Oe.pxRatio=ie;Oe.join=Sr;Oe.fmtDate=$n,Oe.tzDate=Tr;Oe.sync=Gs;{Oe.addGap=mf,Oe.clipGaps=nn;let e=Oe.paths={points:js};e.linear=$s,e.stepped=wf,e.bars=Sf,e.spline=_f}function Pf(e){function l(s,n,o){let u=s.over,c,p,d,g,y,S={x:0,y:0,dx:0,dy:0},h={x:0,y:0,dx:0,dy:0};function A(z,R){let b=R.touches,T=b[0],k=T.clientX-c.left,O=T.clientY-c.top;if(b.length==1)z.x=k,z.y=O,z.d=z.dx=z.dy=1;else{let D=R.touches[1],W=D.clientX-c.left,B=D.clientY-c.top,V=Math.min(k,W),x=Math.min(O,B),H=Math.max(k,W),q=Math.max(O,B);z.y=(x+q)/2,z.x=(V+H)/2,z.dx=H-V,z.dy=q-x,z.d=Math.sqrt(z.dx*z.dx+z.dy*z.dy)}}let F=!1;function E(){F=!1;let z=h.x,R=h.y,b=S.d/h.d,T=S.d/h.d,k=z/c.width,O=1-R/c.height,D=p*b,W=g-k*D,B=W+D,V=d*T,x=y-O*V,H=x+V;s.batch(()=>{s.setScale("x",{min:W,max:B}),s.setScale("y",{min:x,max:H})})}function N(z){A(h,z),F||(F=!0,requestAnimationFrame(E))}u.addEventListener("touchstart",function(z){c=u.getBoundingClientRect(),A(S,z),p=s.scales.x.max-s.scales.x.min,d=s.scales.y.max-s.scales.y.min;let R=S.x,b=S.y;g=s.posToVal(R,"x"),y=s.posToVal(b,"y"),document.addEventListener("touchmove",N,{passive:!0})}),u.addEventListener("touchend",function(){document.removeEventListener("touchmove",N,{passive:!0})})}return{hooks:{init:l}}}const Rf={props:{node:{type:Object,required:!0},fillSize:{type:Boolean,default:!1},container:{type:Element,default:null},zoom:{type:Boolean,default:!0}},data(){return{chart:null,ro:null,resizeTimeout:null,isLoading:!1}},computed:{data(){const e=[],l=[[],[]],s=[[],[]],n=[[],[]];return this.node.bgRSSIPoints&&this.node.bgRSSIPoints.length>0&&this.node.bgRSSIPoints.forEach(o=>{var u,c;e.push(o.timestamp/1e3),l[0].push(this.checkRssiError(o.channel0.current)),l[1].push(o.channel0.average),s[0].push(this.checkRssiError(o.channel1.current)),s[1].push(o.channel1.average),n[0].push(this.checkRssiError((u=o.channel2)==null?void 0:u.current)),n[1].push((c=o.channel2)==null?void 0:c.average)}),[e,...l,...s,...n]}},watch:{data(e,l){this.chart?this.isChanged(e,l)&&this.chart.setData(e):this.create()}},mounted(){this.create()},beforeUnmount(){this.destroy()},beforeDestroy(){this.destroy()},methods:{checkRssiError(e){return Ro.isRssiError(e)?null:e},isChanged(e,l){return e=e==null?void 0:e[0],l=l==null?void 0:l[0],!e||!l?!0:e[e.length-1]!==l[l.length-1]},destroy(){this.chart&&(this.chart.destroy(),this.chart=null),this.ro&&(this.ro.disconnect(),this.ro=null),this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null)},createSerie(e,l=1){const s=[3,5,7],n={show:!0,spanGaps:!1,label:"",value:(u,c)=>c?c.toFixed(2)+" dBm":"----- dBm",stroke:"red",width:1,fill:"rgba(255, 0, 0, 0.3)",dash:[s[l-1],s[l-1]],...e},o={...n,label:n.label+" (avg)",width:4,fill:void 0};return[n,o]},setSize(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.isLoading=!0,this.resizeTimeout=setTimeout(()=>{const e=this.container||this.$parent.$el,l=window.innerHeight-200,s=e.offsetWidth-100;let n=e.offsetHeight-100;n>l&&(n=l),this.chart.setSize({width:s,height:n}),this.isLoading=!1},150)},create(){if(this.destroy(),this.fillSize){const l=this.container||this.$parent.$el;this.ro=new ResizeObserver(this.setSize.bind(this)),this.ro.observe(l)}const e={title:"Background RSSI",width:400,height:400,plugins:[Pf()],axes:[{stroke:this.$vuetify.theme.dark?"#fff":"#000"},{stroke:this.$vuetify.theme.dark?"#fff":"#000"}],series:[{},...this.createSerie({label:"Channel 0",stroke:"#7a5195",fill:"rgba(122, 81, 149, 0.35)"},3),...this.createSerie({label:"Channel 1",stroke:"#bc5090",fill:"rgba(188, 80, 144, 0.35)"},2),...this.createSerie({label:"Channel 2",stroke:"#ffa600",fill:"rgba(255, 166, 0, 0.35)"},1)]};this.zoom||(e.cursor={drag:{setScale:!1}},e.select={show:!1}),this.chart=new Oe(e,this.data,this.$refs.chart)}}};var zf=function(){var l=this,s=l._self._c;return s("div",{ref:"chart",style:{visibility:l.isLoading?"hidden":"visible"}})},Cf=[],Ff=Po(Rf,zf,Cf,!1,null,null,null,null);const Nf=Ff.exports;export{Nf as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as o}from"./index-3c63af0b.js";const r={props:{active:{type:Boolean,default:!1},duration:{type:Number,default:1e3},size:{type:Number,default:20},icon:{type:String,default:"mdi-alert"},activeColor:{type:String,default:"success"},inactiveColor:{type:String,default:"grey"}},data:()=>({color:null,blinkInterval:null}),watch:{active(e){e?(this.color=this.activeColor,this.blinkInterval=setInterval(()=>{this.color=this.color===this.activeColor?this.inactiveColor:this.activeColor},this.duration)):(clearInterval(this.blinkInterval),this.color=this.inactiveColor)}},mounted(){this.color=this.inactiveColor},beforeDestroy(){clearInterval(this.blinkInterval)}};var i=function(){var t=this,l=t._self._c;return l("v-icon",{attrs:{size:t.size,color:t.color}},[t._v(t._s(t.icon))])},n=[],a=o(r,i,n,!1,null,null,null,null);const c=a.exports;export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n,_ as r}from"./index-3c63af0b.js";import{C as o}from"./index-468a52af.js";import"./vuedraggable.umd-441070b9.js";import"./mdi-4fe99e39.js";const s={components:{ColumnFilterBoolean:()=>r(()=>import("./ColumnFilterBoolean-e0ff8ce6.js"),["./ColumnFilterBoolean-e0ff8ce6.js","./index-468a52af.js","./index-3c63af0b.js","./index-be785cef.css","./vuedraggable.umd-441070b9.js","./mdi-4fe99e39.js","./index-d98f5afd.css"],import.meta.url),ColumnFilterDate:()=>r(()=>import("./ColumnFilterDate-b17871ea.js"),["./ColumnFilterDate-b17871ea.js","./index-468a52af.js","./index-3c63af0b.js","./index-be785cef.css","./vuedraggable.umd-441070b9.js","./mdi-4fe99e39.js","./index-d98f5afd.css"],import.meta.url),ColumnFilterNumber:()=>r(()=>import("./ColumnFilterNumber-c07930a6.js"),["./ColumnFilterNumber-c07930a6.js","./index-468a52af.js","./index-3c63af0b.js","./index-be785cef.css","./vuedraggable.umd-441070b9.js","./mdi-4fe99e39.js","./index-d98f5afd.css"],import.meta.url),ColumnFilterString:()=>r(()=>import("./ColumnFilterString-079ac562.js"),["./ColumnFilterString-079ac562.js","./index-468a52af.js","./index-3c63af0b.js","./index-be785cef.css","./vuedraggable.umd-441070b9.js","./mdi-4fe99e39.js","./index-d98f5afd.css"],import.meta.url)},props:{value:{type:Object,default:()=>{},required:!0},column:{type:Object,default:()=>{},required:!0},items:{type:Array,default:()=>[],required:!0},groupBy:{type:Boolean,default:()=>!1,required:!1}},data(){return{valid:!0,show:!1}},computed:{hasFilter(){return this.hasDeepValue(this.value)}},methods:{hasDeepValue(t){return t!=null&&Object.keys(t).some(e=>!!t[e]&&!!Object.keys(t[e]).length||typeof t[e]=="boolean")},showOptions(){this.show=!0},hideOptions(){this.show=!1},change(t,e){this.valid=e,e===!0&&this.$emit("change",o.filterSpec(this.column.type,t))},confirm(){this.hideOptions()},resetToDefaults(){const t=o.defaultFilter(this.column.type);Object.assign(this.value,t);for(const e in this.value)Object.hasOwnProperty.call(this.value,e)&&Object.keys(this.value).forEach(()=>{Object.keys(t).includes(e)||delete this.value.key})},clearFilter(){this.resetToDefaults(),this.change(this.value,!0)}}};var u=function(){var e=this,l=e._self._c;return l("v-menu",{attrs:{value:e.show,"close-on-content-click":!1,"offset-y":!0},scopedSlots:e._u([{key:"activator",fn:function({on:a,attrs:i}){return[l("v-icon",e._g(e._b({attrs:{small:"",title:"Filter options..."},on:{click:e.showOptions}},"v-icon",i,!1),a),[e._v(" "+e._s(e.hasFilter?"filter_list_alt":"filter_list")+" ")])]}}])},[l("v-card",[l("v-icon",{attrs:{small:"",right:""},on:{click:e.hideOptions}},[e._v("close")]),e.column.type=="boolean"?l("column-filter-boolean",{attrs:{value:e.value},on:{change:e.change}}):e._e(),e.column.type=="date"?l("column-filter-date",{attrs:{value:e.value},on:{change:e.change}}):e._e(),e.column.type=="number"?l("column-filter-number",{attrs:{value:e.value,items:e.items},on:{change:e.change}}):e._e(),e.column.type=="string"?l("column-filter-string",{attrs:{value:e.value,items:e.items},on:{change:e.change}}):e._e(),e.column.groupable!=!1?l("v-checkbox",{staticClass:"ml-4",attrs:{label:"Group values",value:e.groupBy},on:{change:function(a){return e.$emit("update:group-by",a?[e.column.value]:[])}}}):e._e(),l("v-card-actions",[l("v-btn",{on:{click:e.clearFilter}},[e._v("Clear")]),l("v-btn",{attrs:{color:"primary",disabled:!e.valid},on:{click:e.confirm}},[e._v("Ok")])],1)],1)],1)},c=[],m=n(s,u,c,!1,null,null,null,null);const f=m.exports;export{f as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as a}from"./index-468a52af.js";import{n as t}from"./index-3c63af0b.js";import"./vuedraggable.umd-441070b9.js";import"./mdi-4fe99e39.js";const n={props:{value:{type:Object,default:()=>a.defaultFilter("string"),required:!0}},methods:{change(){this.$emit("change",this.value,!0)}}};var r=function(){var e=this,l=e._self._c;return l("v-card-text",[l("v-form",[l("v-row",[l("v-col",[l("v-checkbox",{attrs:{indeterminate:e.value.boolValue==null,label:"Boolean value"},on:{change:e.change},model:{value:e.value.boolValue,callback:function(o){e.$set(e.value,"boolValue",o)},expression:"value.boolValue"}})],1)],1)],1)],1)},u=[],s=t(n,r,u,!1,null,null,null,null);const f=s.exports;export{f as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as o}from"./index-468a52af.js";import{n as r}from"./index-3c63af0b.js";import"./vuedraggable.umd-441070b9.js";import"./mdi-4fe99e39.js";const n={props:{value:{type:Object,default:()=>o.defaultFilter("string"),required:!0}},data(){return{valid:!1,rules:{from:[t=>!t||!this.value.to||t<=this.value.to||"From date should not be after to date"],to:[t=>!t||!this.value.from||t>=this.value.from||"To date should not be before from date"]}}},methods:{change(){this.$emit("change",this.value,this.valid)}}};var s=function(){var e=this,l=e._self._c;return l("v-card-text",[l("v-form",{model:{value:e.valid,callback:function(a){e.valid=a},expression:"valid"}},[l("v-row",[l("v-col",[l("v-text-field",{attrs:{type:"datetime-local",label:"From",rules:e.rules.from,clearable:""},on:{change:e.change},model:{value:e.value.from,callback:function(a){e.$set(e.value,"from",a)},expression:"value.from"}}),l("v-text-field",{attrs:{type:"datetime-local",label:"To",rules:e.rules.to,clearable:""},on:{change:e.change},model:{value:e.value.to,callback:function(a){e.$set(e.value,"to",a)},expression:"value.to"}})],1)],1)],1)],1)},u=[],i=r(n,s,u,!1,null,null,null,null);const f=i.exports;export{f as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as n}from"./index-468a52af.js";import{n as i}from"./index-3c63af0b.js";import"./vuedraggable.umd-441070b9.js";import"./mdi-4fe99e39.js";const u={props:{value:{type:Object,default:()=>n.defaultFilter("string"),required:!0},items:{type:Array,default:()=>[],required:!0}},computed:{values:{get(){var e;const l=this.items.find(a=>typeof a=="string");return l?((e=this.value.values)==null?void 0:e.map(a=>a===void 0?l:a))??[]:this.value.values??[]},set(l){this.value.values=l}}},data(){return{valid:!1,rules:{min:[l=>!l||l>=0||"Minimum should not be negative",l=>!l||!this.value.max||l<=this.value.max||"Minimum should not be above maximum"],max:[l=>!l||l>=0||"Maximum should not be negative",l=>!l||!this.value.min||l>=this.value.min||"Maximum should not be below minimum"]}}},methods:{change(){this.$emit("change",this.value,this.valid)}}};var s=function(){var e=this,a=e._self._c;return a("v-card-text",[a("v-form",{model:{value:e.valid,callback:function(t){e.valid=t},expression:"valid"}},[a("v-row",[a("v-col",[a("v-text-field",{attrs:{type:"number",label:"Min",rules:e.rules.min,clearable:""},on:{change:e.change},model:{value:e.value.min,callback:function(t){e.$set(e.value,"min",t)},expression:"value.min"}})],1),a("v-col",[a("v-text-field",{attrs:{type:"number",label:"Max",rules:e.rules.max,clearable:""},on:{change:e.change},model:{value:e.value.max,callback:function(t){e.$set(e.value,"max",t)},expression:"value.max"}})],1)],1),a("v-row",[a("v-col",[a("v-select",{attrs:{items:e.items,label:"Values",clearable:"",chips:"",deletableChips:"",dense:"",multiple:""},on:{change:e.change},model:{value:e.values,callback:function(t){e.values=t},expression:"values"}})],1)],1)],1)],1)},r=[],m=i(u,s,r,!1,null,null,null,null);const h=m.exports;export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as r}from"./index-468a52af.js";import{n as s}from"./index-3c63af0b.js";import"./vuedraggable.umd-441070b9.js";import"./mdi-4fe99e39.js";const n={props:{value:{type:Object,default:()=>r.defaultFilter("string"),required:!0},items:{type:Array,default:()=>[],required:!0}},data(){return{valid:!1,rules:{match:[t=>this.validateRegex(t)]}}},methods:{change(){this.$emit("change",this.value,this.valid)},validateRegex(t){let e;try{e=!!new RegExp(t)}catch(a){e=a.message}return e}}};var i=function(){var e=this,a=e._self._c;return a("v-card-text",[a("v-form",{model:{value:e.valid,callback:function(l){e.valid=l},expression:"valid"}},[a("v-row",[a("v-col",[a("v-text-field",{attrs:{label:"Search",hint:"Supports regular expressions",rules:e.rules.match,clearable:""},on:{change:e.change},model:{value:e.value.match,callback:function(l){e.$set(e.value,"match",l)},expression:"value.match"}})],1)],1),a("v-row",[a("v-col",[a("v-select",{attrs:{items:e.items,label:"Values",clearable:"",chips:"",deletableChips:"",dense:"",multiple:""},on:{change:e.change},model:{value:e.value.values,callback:function(l){e.$set(e.value,"values",l)},expression:"value.values"}})],1)],1)],1)],1)},u=[],c=s(n,i,u,!1,null,null,null,null);const p=c.exports;export{p as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{L as _,I as x,_ as m,m as S,u as h,S as N,a as C,j as R,C as v,n as T}from"./index-3c63af0b.js";const b=_.get("ControlPanel"),A={name:"ControlPanel",props:{socket:Object},mixins:[x],components:{NodesTable:()=>m(()=>import("./index-468a52af.js").then(o=>o.i),["./index-468a52af.js","./index-3c63af0b.js","./index-be785cef.css","./vuedraggable.umd-441070b9.js","./mdi-4fe99e39.js","./index-d98f5afd.css"],import.meta.url),DialogAdvanced:()=>m(()=>import("./DialogAdvanced-5f8c36c7.js"),["./DialogAdvanced-5f8c36c7.js","./index-3c63af0b.js","./index-be785cef.css","./DialogAdvanced-eaabda04.css"],import.meta.url),StatisticsCard:()=>m(()=>import("./StatisticsCard-a91596c0.js"),["./StatisticsCard-a91596c0.js","./index-3c63af0b.js","./index-be785cef.css"],import.meta.url),SmartView:()=>m(()=>import("./SmartView-f9259d20.js"),["./SmartView-f9259d20.js","./index-3c63af0b.js","./index-be785cef.css","./mdi-4fe99e39.js"],import.meta.url)},computed:{...S(h,["nodes","zwave","controllerNode"]),timeoutMs(){return this.zwave.commandsTimeout*1e3+800},statisticsOpeningIndicator(){return this.showControllerStatistics?"arrow_drop_up":"arrow_drop_down"},compact(){return this.$vuetify.breakpoint.smAndDown||this.compactMode},compactMode:{get(){return h().ui.compactMode},set(o){h().setCompactMode(o)}},actions(){return this.selected.length===0?this.generalActions:this.selectedActions},advancedDialogTitle(){return this.selected.length===0?"General actions":`Actions for ${this.selected.length} selected node${this.selected.length>1?"s":""}`}},watch:{},data(){return{fab:!1,selected:[],settings:new N(localStorage),advancedShowDialog:!1,generalActions:[{text:"Backup",options:[{name:"Import",action:"import"},{name:"Export",action:"export"}],icon:"save",desc:"Save or load `nodes.json` file with names and locations"},{text:"Dump",options:[{name:"Export",action:"exportDump"}],icon:"bug_report",desc:"Export all nodes in a json file. Useful for debugging purposes"},{text:"Rebuild Routes",options:[{name:"Begin",action:"beginRebuildingRoutes"},{name:"Stop",action:"stopRebuildingRoutes"}],icon:"healing",color:"warning",desc:"Force nodes to establish better connections to the controller"},{text:"Re-interview Nodes",options:[{name:"Start",action:"refreshInfo",args:{broadcast:!0}}],icon:"history",color:"warning",desc:"Clear all info about all nodes and make a new full interview. Use when nodes has wrong or missing capabilities"},{text:"Hard Reset",options:[{name:"Factory Reset",action:"hardReset"}],icon:"warning",color:"red",desc:"Reset controller to factory defaults (all paired devices will be removed)"},{text:"Soft Reset",options:[{name:"Soft Reset",action:"softReset",args:{confirm:`<p>Are you sure you want to soft-reset your controller?</p>
|
|
2
|
+
<p>USB modules will reconnect, meaning that they might get a new address. Make sure to configure your device address in a way that prevents it from changing, e.g. by using <code>/dev/serial/by-id/...</code> on Linux.</p>
|
|
3
|
+
<p><strong>This method may cause problems in Docker containers with certain Z-Wave stick.</strong> If that happens, you may need to restart your host OS and docker container.</p>`}}],icon:"refresh",color:"warning",desc:"Instruct the controller to soft-reset (restart)"},{text:"Failed Nodes",options:[{name:"Remove all",action:"removeFailedNode",args:{broadcast:!0,confirm:"This action will remove all failed nodes. ATTENTION: this will skip sleeping nodes to prevent unwanted behaviours"}}],icon:"dangerous",color:"error",desc:"Manage nodes that are dead and/or marked as failed with the controller"},{text:"Driver function",options:[{name:"Write",action:"driverFunction"}],icon:"code",desc:"Write a custom JS function using the ZwaveJS Driver"},{text:"NVM Management",options:[{name:"Backup",action:"backupNVMRaw"},{name:"Restore",action:"restoreNVM"}],icon:"update",color:"warning",desc:"Backup/Restore controller's NVM (Non Volatile Memory)"},{text:"Firmware update OTW",options:[{name:"Update",action:"firmwareUpdateOTW"}],icon:"update",color:"red",desc:"Perform a firmware update OTW (Over The Wire)"},{text:"Shutdown Zwave API",options:[{name:"Shutdown",action:"shutdownZwaveAPI",args:{confirm:"Are you sure you want to shutdown the Zwave API? You will have to unplug and replug the Zwave stick manually to restart it.",confirmLevel:"warning"}}],icon:"power_off",color:"warning",desc:"Allows to shutdown the Zwave API to safely unplug the Zwave stick."}],rules:{required:o=>{let e=!1;return o instanceof Array?e=o.length>0:e=!isNaN(o)||!!o,e||"This field is required."}},selectedActions:[{text:"Re-interview Node",options:[{name:"Interview",action:"refreshInfo"}],icon:"history",desc:"Clear all info about this node and make a new full interview. Use when the node has wrong or missing capabilities"},{text:"Refresh Values",options:[{name:"Refresh",action:"refreshValues",args:{confirm:"Are you sure you want to refresh values of this node? This action increases network traffic"}}],icon:"cached",desc:"Update all CC values and metadata. Use only when many values seems stale"},{text:"Rebuild Routes",options:[{name:"Rebuild",action:"rebuildNodeRoutes",args:{confirm:"Rebuilding routes causes a lot of traffic, can take minutes up to hours and you can expect degraded performance while it is going on"}}],icon:"healing",color:"warning",desc:"Discover and assign new routes from nodes to the controller and other nodes."},{text:"Ping",options:[{name:"Ping",action:"pingNode"}],icon:"swap_horiz",desc:"Ping node to check if it is alive"}],showControllerStatistics:!1}},methods:{...C(h,["setRebuildRoutesProgress","showSnackbar"]),jsonToList:R,showNodesManager(){this.app.showNodesManager()},async onAction(o,e={}){o==="import"?this.importConfiguration():o==="export"?this.exportConfiguration():o==="exportDump"?this.exportDump():this.sendAction(o,{...e,nodes:this.selected})},async importConfiguration(){if(await this.$listeners.showConfirm("Attention","This will override all existing nodes names and locations","alert"))try{const{data:o}=await this.$listeners.import("json"),e=await v.importConfig({data:o});this.showSnackbar(e.message,e.success?"success":"error")}catch(o){b.error(o)}},async exportConfiguration(){try{const o=await v.exportConfig();this.showSnackbar(o.message,o.success?"success":"error"),o.success&&this.$listeners.export(o.data,"nodes","json")}catch(o){b.error(o)}},exportDump(){this.$listeners.export(this.nodes,"nodes_dump","json")},async sendAction(o,{nodeId:e,broadcast:s,confirm:r,confirmLevel:p,nodes:u}){var y;if(o){if(r&&!await this.$listeners.showConfirm("Info",r,p||"info",{cancelText:"cancel",confirmText:"ok",width:900}))return;if((u==null?void 0:u.length)>0){const t=u.map(i=>this.app.apiRequest(o,[i.id]));await Promise.allSettled(t),this.showSnackbar(`Action ${o} sent to all nodes`,"success");return}let d=[];if(e!==void 0&&!s){if(isNaN(e)){this.showSnackbar("Node ID must be an integer value","error");return}d.push(parseInt(e))}if(o==="startInclusion"){const t=await this.$listeners.showConfirm("Node inclusion","Start inclusion in secure mode?","info",{cancelText:"No"});d.push(t)}else if(o==="hardReset"){const{confirm:t}=await this.$listeners.showConfirm("Hard Reset","Your controller will be reset to factory and all paired devices will be removed","alert",{confirmText:"Ok",inputs:[{type:"text",label:"Confirm",required:!0,key:"confirm",hint:'Type "yes" and press OK to confirm'}]});if(!t||t!=="yes")return}else if(o==="beginRebuildingRoutes"){const{includeSleeping:t}=await this.$listeners.showConfirm("Info","Rebuilding routes causes a lot of traffic, can take minutes up to hours and users have to expect degraded performance while it is going on","info",{confirmText:"Rebuild",inputs:[{type:"checkbox",label:"Include sleeping nodes",key:"includeSleeping",default:!1}]});if(t===void 0)return;d.push({includeSleeping:t})}else if(o==="firmwareUpdateOTW"){const t=await this.$listeners.showConfirm("Firmware update OTW",`<h3 class="red--text">We don't take any responsibility if devices upgraded using Z-Wave JS don't work after an update. Always double-check that the correct update is about to be installed.</h3>
|
|
4
|
+
<h3 class="mt-2 red--text">A failure during this process may leave your controller in recovery mode, rendering it unusable until a correct firmware image is uploaded. In case of 500 series controllers a failure on this process is likely unrecoverable.</h3>
|
|
5
|
+
`,"alert",{confirmText:"Update",width:500,inputs:[{type:"file",label:"File",hint:"Firmware file",key:"file",accept:".hex,.gbl,.otz,.ota"}]}),i=t==null?void 0:t.file;if(!i)return;try{const n=await i.arrayBuffer();d=[{name:i.name,data:n}];const c=h(),a=this.controllerNode||{id:1,name:"Controller",_name:"Controller",isControllerNode:!0,loc:"",ready:!0,values:[]};this.controllerNode||c.updateNode(a),c.updateNode({id:a.id,firmwareUpdate:{progress:0}},!0)}catch(n){this.showSnackbar("Error reading file: "+n.message,"error");return}}else if(o==="updateFirmware")try{const i=this.nodes.find(l=>l.id===e).firmwareCapabilities.firmwareTargets||[0],n={cols:8,type:"file",label:"File",hint:"Firmware file",key:"file",accept:".bin,.exe,.ex_,.hex,.gbl,.otz,.ota,.hec"},c={type:"list",cols:4,allowManualEntry:!0,label:"Target",hint:"Target to update",key:"target",items:i.map(l=>({text:"Target "+l,value:l}))},a=[];for(const l of i)a.push({...n,key:"file_"+l}),a.push({...c,key:"target_"+l,default:l});const f=await this.$listeners.showConfirm("Firmware update","","info",{confirmText:"Ok",width:500,inputs:a});if(!f)return;const w=[];for(const l of i)if(f["file_"+l]){const k=f["file_"+l],g={name:k.name,data:await k.arrayBuffer(),target:parseInt(f["target_"+l])};isNaN(g.target)&&delete g.target,w.push(g)}if(w.length===0)return;d.push(w)}catch{return}else if(o==="driverFunction"){const{data:t}=await v.getSnippets();await this.$listeners.showConfirm("Driver function","","info",{width:900,confirmText:"Close",cancelText:"",inputs:[{type:"list",key:"snippet",label:"Snippets",default:"",items:t,itemText:"name",itemValue:"name",hint:"Select a snippet from library",onChange:(i,n)=>{var a;const c=n?(a=t.find(f=>f.name===n))==null?void 0:a.content:"";n&&(i.code=c)}},{type:"button",label:"Run",icon:"play_circle_outline",color:"primary",onChange:async i=>{const n=await this.app.apiRequest(o,[i.code]);n.success&&this.showSnackbar("Function executed successfully, check console for result","success"),b.info("Driver function result:",n.result)}},{type:"code",key:"code",default:"// Example:\n// const { logger, zwaveClient, require } = this\n// const node = driver.controller.nodes.get(35);\n// await node.refreshInfo();\n// logger.info(`Node ${node.id} is ready: ${node.ready}`);",hint:`Write the function here. The only arg is:
|
|
6
|
+
<code>driver</code>. The function is <code>async</code>.`}]});return}else if(o==="backupNVMRaw"){if(!await this.$listeners.showConfirm("NVM Backup","While doing the backup the Z-Wave radio will be turned on/off","alert",{confirmText:"Ok"}))return}else if(o==="restoreNVM"){const t=await this.$listeners.showConfirm("NVM Restore",`While doing the restore the Z-Wave radio will be turned on/off.
|
|
7
|
+
<strong>A failure during this process may brick your controller. Use at your own risk!</strong>`,"alert",{confirmText:"Ok",width:500,inputs:[{type:"file",label:"File",hint:"NVM file",key:"file"},{type:"checkbox",label:"Skip compatibility check",hint:"This needs to be checked in order to allow restoring NVM backups on older controllers, with the risk of restoring an incompatible backup",key:"useRaw"}]});if(!(t!=null&&t.file))return;try{const i=await t.file.arrayBuffer();d.push(i,t.useRaw)}catch{return}}else if(o==="refreshInfo"){const t=await this.$listeners.showConfirm("Refresh info",`Are you sure you want to re-interview ${s?"all nodes":"node "+e}? All known information about your nodes will be discarded. Battery powered nodes need to be woken up, interaction with the nodes won't be reliable until the interview is done.`,"info",{width:900,confirmText:"Ok",inputs:[{type:"checkbox",key:"resetSecurityClasses",default:!1,label:"Reset security classes"}]});if(!t||Object.keys(t).length===0)return;d.push(t)}if(s){let t=this.nodes;o==="removeFailedNode"&&(t=t.filter(n=>n.status!=="Asleep"));const i=[];for(let n=0;n<t.length;n++){const c=t[n].id;i.push(this.app.apiRequest(o,[c],{infoSnack:!1,errorSnack:!1}).then(a=>{a.success?this.showSnackbar(`Node ${c} api request success`,"success"):this.showSnackbar(`Node ${c} error: ${a.error}`,"error")}))}await Promise.allSettled(i)}else{const t=await this.app.apiRequest(o,d);if(t.success)switch(t.api){case"getDriverStatistics":this.$listeners.showConfirm("Driver statistics",this.jsonToList(t.result));break;case"getNodeStatistics":this.$listeners.showConfirm("Node statistics",this.jsonToList(t.result));break;case"backupNVMRaw":{this.showSnackbar("NVM Backup DONE. You can find your file NVM_<date>.bin in store directory","success");const{result:i}=t;this.$listeners.export(i.data,i.fileName,"bin")}break;case"restoreNVM":this.showSnackbar("NVM restore DONE","success");break;case"firmwareUpdateOTW":break;case"updateFirmware":this.app.handleFwUpdateResponse(t);break;default:this.showSnackbar(`API ${t.api} ended successfully`,"success")}else t.api==="firmwareUpdateOTW"&&(y=this.controllerNode)!=null&&y.firmwareUpdate&&h().updateNode({id:this.controllerNode.id,firmwareUpdate:!1,firmwareUpdateResult:{success:!1,status:t.message}},!0)}}},toggleControllerStatistics(){this.showControllerStatistics=!this.showControllerStatistics}},mounted(){this.bindEvent("rebuildRoutesProgress",this.setRebuildRoutesProgress.bind(this))},beforeDestroy(){this.socket&&this.unbindEvents()}};var $=function(){var e=this,s=e._self._c;return s("div",[s("v-container",{staticClass:"pa-4",attrs:{fluid:""}},[s("v-row",{staticClass:"py-4 align-center",attrs:{"no-gutters":""}},[s("v-col",{class:e.compact?"text-center":"text-end"},[s("v-item-group",{staticClass:"v-btn-toggle"},[s("v-btn",{attrs:{color:"primary",outlined:""},on:{click:e.toggleControllerStatistics}},[s("v-icon",{attrs:{left:""}},[e._v(" "+e._s(e.statisticsOpeningIndicator)+" ")]),e._v(" Controller statistics "),s("v-icon",{attrs:{color:"primary",right:""}},[e._v(" multiline_chart ")])],1),e.$vuetify.breakpoint.mdAndUp?s("v-btn",{attrs:{color:"primary",outlined:!e.compactMode},on:{click:function(r){r.stopPropagation(),e.compactMode=!e.compactMode}}},[e._v(" Compact ")]):e._e()],1)],1)],1),s("v-expand-transition",[s("v-row",{directives:[{name:"show",rawName:"v-show",value:e.showControllerStatistics,expression:"showControllerStatistics"}]},[s("v-col",{staticClass:"mb-8"},[s("v-sheet",{attrs:{outlined:"",rounded:""}},[e.controllerNode?s("StatisticsCard",{attrs:{title:"Controller Statistics",node:this.controllerNode}}):e._e()],1)],1)],1)],1),e.compact?s("smart-view",e._g({attrs:{socket:e.socket},on:{selected:function(r){e.selected=r},action:e.sendAction}},e.$listeners)):s("nodes-table",e._g({staticClass:"pb-8",attrs:{socket:e.socket},on:{action:e.sendAction,selected:function(r){e.selected=r}}},e.$listeners))],1),s("DialogAdvanced",{attrs:{actions:e.actions,title:e.advancedDialogTitle},on:{close:function(r){e.advancedShowDialog=!1},action:e.onAction},model:{value:e.advancedShowDialog,callback:function(r){e.advancedShowDialog=r},expression:"advancedShowDialog"}}),s("v-speed-dial",{attrs:{bottom:"",fab:"",right:"",fixed:""},scopedSlots:e._u([{key:"activator",fn:function(){return[s("v-btn",{attrs:{color:e.selected.length===0?"blue darken-2":"success",dark:"",fab:"",hover:""},model:{value:e.fab,callback:function(r){e.fab=r},expression:"fab"}},[e.fab?s("v-icon",[e._v("close")]):s("v-icon",[e._v("menu")])],1)]},proxy:!0}]),model:{value:e.fab,callback:function(r){e.fab=r},expression:"fab"}},[s("v-tooltip",{attrs:{left:""},scopedSlots:e._u([{key:"activator",fn:function({on:r,attrs:p}){return[e.selected.length===0?s("v-btn",e._g(e._b({attrs:{fab:"",dark:"",small:"",color:"green"},on:{click:function(u){return e.showNodesManager()}}},"v-btn",p,!1),r),[s("v-icon",[e._v("all_inclusive")])],1):e._e()]}}])},[s("span",[e._v("Manage nodes")])]),s("v-tooltip",{attrs:{left:""},scopedSlots:e._u([{key:"activator",fn:function({on:r,attrs:p}){return[s("v-btn",e._g(e._b({attrs:{fab:"",dark:"",small:"",color:"purple"},on:{click:function(u){e.advancedShowDialog=!0}}},"v-btn",p,!1),r),[s("v-icon",[e._v("auto_fix_high")])],1)]}}])},[s("span",[e._v("Advanced actions")])])],1)],1)},D=[],M=T(A,$,D,!1,null,null,null,null);const O=M.exports;export{O as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as t,m as o,u as n,n as _}from"./index-3c63af0b.js";const l={components:{BgRssiChart:()=>t(()=>import("./BgRssiChart-554c89ef.js"),["./BgRssiChart-554c89ef.js","./index-3c63af0b.js","./index-be785cef.css","./BgRssiChart-3e7d7555.css"],import.meta.url)},computed:{...o(n,["controllerNode"])}};var s=function(){var e=this,r=e._self._c;return r("v-container",[e.controllerNode?r("bg-rssi-chart",{attrs:{node:e.controllerNode,"fill-size":""}}):e._e()],1)},a=[],c=_(l,s,a,!1,null,null,null,null);const u=c.exports;export{u as default};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import{m as x,u as _,a as S,s as g,n as w}from"./index-3c63af0b.js";var u=globalThis&&globalThis.__makeTemplateObject||function(n,e){return Object.defineProperty?Object.defineProperty(n,"raw",{value:e}):n.raw=e,n},l;(function(n){n[n.EOS=0]="EOS",n[n.Text=1]="Text",n[n.Incomplete=2]="Incomplete",n[n.ESC=3]="ESC",n[n.Unknown=4]="Unknown",n[n.SGR=5]="SGR",n[n.OSCURL=6]="OSCURL"})(l||(l={}));class y{constructor(){this.VERSION="6.0.2",this.setup_palettes(),this._use_classes=!1,this.bold=!1,this.faint=!1,this.italic=!1,this.underline=!1,this.fg=this.bg=null,this._buffer="",this._url_allowlist={http:1,https:1},this._escape_html=!0,this.boldStyle="font-weight:bold",this.faintStyle="opacity:0.7",this.italicStyle="font-style:italic",this.underlineStyle="text-decoration:underline"}set use_classes(e){this._use_classes=e}get use_classes(){return this._use_classes}set url_allowlist(e){this._url_allowlist=e}get url_allowlist(){return this._url_allowlist}set escape_html(e){this._escape_html=e}get escape_html(){return this._escape_html}set boldStyle(e){this._boldStyle=e}get boldStyle(){return this._boldStyle}set faintStyle(e){this._faintStyle=e}get faintStyle(){return this._faintStyle}set italicStyle(e){this._italicStyle=e}get italicStyle(){return this._italicStyle}set underlineStyle(e){this._underlineStyle=e}get underlineStyle(){return this._underlineStyle}setup_palettes(){this.ansi_colors=[[{rgb:[0,0,0],class_name:"ansi-black"},{rgb:[187,0,0],class_name:"ansi-red"},{rgb:[0,187,0],class_name:"ansi-green"},{rgb:[187,187,0],class_name:"ansi-yellow"},{rgb:[0,0,187],class_name:"ansi-blue"},{rgb:[187,0,187],class_name:"ansi-magenta"},{rgb:[0,187,187],class_name:"ansi-cyan"},{rgb:[255,255,255],class_name:"ansi-white"}],[{rgb:[85,85,85],class_name:"ansi-bright-black"},{rgb:[255,85,85],class_name:"ansi-bright-red"},{rgb:[0,255,0],class_name:"ansi-bright-green"},{rgb:[255,255,85],class_name:"ansi-bright-yellow"},{rgb:[85,85,255],class_name:"ansi-bright-blue"},{rgb:[255,85,255],class_name:"ansi-bright-magenta"},{rgb:[85,255,255],class_name:"ansi-bright-cyan"},{rgb:[255,255,255],class_name:"ansi-bright-white"}]],this.palette_256=[],this.ansi_colors.forEach(i=>{i.forEach(s=>{this.palette_256.push(s)})});let e=[0,95,135,175,215,255];for(let i=0;i<6;++i)for(let s=0;s<6;++s)for(let a=0;a<6;++a){let r={rgb:[e[i],e[s],e[a]],class_name:"truecolor"};this.palette_256.push(r)}let t=8;for(let i=0;i<24;++i,t+=10){let s={rgb:[t,t,t],class_name:"truecolor"};this.palette_256.push(s)}}escape_txt_for_html(e){return this._escape_html?e.replace(/[&<>"']/gm,t=>{if(t==="&")return"&";if(t==="<")return"<";if(t===">")return">";if(t==='"')return""";if(t==="'")return"'"}):e}append_buffer(e){var t=this._buffer+e;this._buffer=t}get_next_packet(){var e={kind:l.EOS,text:"",url:""},t=this._buffer.length;if(t==0)return e;var i=this._buffer.indexOf("\x1B");if(i==-1)return e.kind=l.Text,e.text=this._buffer,this._buffer="",e;if(i>0)return e.kind=l.Text,e.text=this._buffer.slice(0,i),this._buffer=this._buffer.slice(i),e;if(i==0){if(t<3)return e.kind=l.Incomplete,e;var s=this._buffer.charAt(1);if(s!="["&&s!="]"&&s!="(")return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;if(s=="["){this._csi_regex||(this._csi_regex=b(d||(d=u([`
|
|
2
|
+
^ # beginning of line
|
|
3
|
+
#
|
|
4
|
+
# First attempt
|
|
5
|
+
(?: # legal sequence
|
|
6
|
+
\x1B[ # CSI
|
|
7
|
+
([<-?]?) # private-mode char
|
|
8
|
+
([d;]*) # any digits or semicolons
|
|
9
|
+
([ -/]? # an intermediate modifier
|
|
10
|
+
[@-~]) # the command
|
|
11
|
+
)
|
|
12
|
+
| # alternate (second attempt)
|
|
13
|
+
(?: # illegal sequence
|
|
14
|
+
\x1B[ # CSI
|
|
15
|
+
[ -~]* # anything legal
|
|
16
|
+
([\0-:]) # anything illegal
|
|
17
|
+
)
|
|
18
|
+
`],[`
|
|
19
|
+
^ # beginning of line
|
|
20
|
+
#
|
|
21
|
+
# First attempt
|
|
22
|
+
(?: # legal sequence
|
|
23
|
+
\\x1b\\[ # CSI
|
|
24
|
+
([\\x3c-\\x3f]?) # private-mode char
|
|
25
|
+
([\\d;]*) # any digits or semicolons
|
|
26
|
+
([\\x20-\\x2f]? # an intermediate modifier
|
|
27
|
+
[\\x40-\\x7e]) # the command
|
|
28
|
+
)
|
|
29
|
+
| # alternate (second attempt)
|
|
30
|
+
(?: # illegal sequence
|
|
31
|
+
\\x1b\\[ # CSI
|
|
32
|
+
[\\x20-\\x7e]* # anything legal
|
|
33
|
+
([\\x00-\\x1f:]) # anything illegal
|
|
34
|
+
)
|
|
35
|
+
`]))));let r=this._buffer.match(this._csi_regex);if(r===null)return e.kind=l.Incomplete,e;if(r[4])return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;r[1]!=""||r[3]!="m"?e.kind=l.Unknown:e.kind=l.SGR,e.text=r[2];var a=r[0].length;return this._buffer=this._buffer.slice(a),e}else if(s=="]"){if(t<4)return e.kind=l.Incomplete,e;if(this._buffer.charAt(2)!="8"||this._buffer.charAt(3)!=";")return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;this._osc_st||(this._osc_st=v(p||(p=u([`
|
|
36
|
+
(?: # legal sequence
|
|
37
|
+
(\x1B\\) # ESC | # alternate
|
|
38
|
+
(\x07) # BEL (what xterm did)
|
|
39
|
+
)
|
|
40
|
+
| # alternate (second attempt)
|
|
41
|
+
( # illegal sequence
|
|
42
|
+
[\0-] # anything illegal
|
|
43
|
+
| # alternate
|
|
44
|
+
[\b-] # anything illegal
|
|
45
|
+
| # alternate
|
|
46
|
+
[-] # anything illegal
|
|
47
|
+
)
|
|
48
|
+
`],[`
|
|
49
|
+
(?: # legal sequence
|
|
50
|
+
(\\x1b\\\\) # ESC \\
|
|
51
|
+
| # alternate
|
|
52
|
+
(\\x07) # BEL (what xterm did)
|
|
53
|
+
)
|
|
54
|
+
| # alternate (second attempt)
|
|
55
|
+
( # illegal sequence
|
|
56
|
+
[\\x00-\\x06] # anything illegal
|
|
57
|
+
| # alternate
|
|
58
|
+
[\\x08-\\x1a] # anything illegal
|
|
59
|
+
| # alternate
|
|
60
|
+
[\\x1c-\\x1f] # anything illegal
|
|
61
|
+
)
|
|
62
|
+
`])))),this._osc_st.lastIndex=0;{let o=this._osc_st.exec(this._buffer);if(o===null)return e.kind=l.Incomplete,e;if(o[3])return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e}{let o=this._osc_st.exec(this._buffer);if(o===null)return e.kind=l.Incomplete,e;if(o[3])return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e}this._osc_regex||(this._osc_regex=b(m||(m=u([`
|
|
63
|
+
^ # beginning of line
|
|
64
|
+
#
|
|
65
|
+
\x1B]8; # OSC Hyperlink
|
|
66
|
+
[ -:<-~]* # params (excluding ;)
|
|
67
|
+
; # end of params
|
|
68
|
+
([!-~]{0,512}) # URL capture
|
|
69
|
+
(?: # ST
|
|
70
|
+
(?:\x1B\\) # ESC | # alternate
|
|
71
|
+
(?:\x07) # BEL (what xterm did)
|
|
72
|
+
)
|
|
73
|
+
([ -~]+) # TEXT capture
|
|
74
|
+
\x1B]8;; # OSC Hyperlink End
|
|
75
|
+
(?: # ST
|
|
76
|
+
(?:\x1B\\) # ESC | # alternate
|
|
77
|
+
(?:\x07) # BEL (what xterm did)
|
|
78
|
+
)
|
|
79
|
+
`],[`
|
|
80
|
+
^ # beginning of line
|
|
81
|
+
#
|
|
82
|
+
\\x1b\\]8; # OSC Hyperlink
|
|
83
|
+
[\\x20-\\x3a\\x3c-\\x7e]* # params (excluding ;)
|
|
84
|
+
; # end of params
|
|
85
|
+
([\\x21-\\x7e]{0,512}) # URL capture
|
|
86
|
+
(?: # ST
|
|
87
|
+
(?:\\x1b\\\\) # ESC \\
|
|
88
|
+
| # alternate
|
|
89
|
+
(?:\\x07) # BEL (what xterm did)
|
|
90
|
+
)
|
|
91
|
+
([\\x20-\\x7e]+) # TEXT capture
|
|
92
|
+
\\x1b\\]8;; # OSC Hyperlink End
|
|
93
|
+
(?: # ST
|
|
94
|
+
(?:\\x1b\\\\) # ESC \\
|
|
95
|
+
| # alternate
|
|
96
|
+
(?:\\x07) # BEL (what xterm did)
|
|
97
|
+
)
|
|
98
|
+
`]))));let r=this._buffer.match(this._osc_regex);if(r===null)return e.kind=l.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;e.kind=l.OSCURL,e.url=r[1],e.text=r[2];var a=r[0].length;return this._buffer=this._buffer.slice(a),e}else if(s=="(")return e.kind=l.Unknown,this._buffer=this._buffer.slice(3),e}}ansi_to_html(e){this.append_buffer(e);for(var t=[];;){var i=this.get_next_packet();if(i.kind==l.EOS||i.kind==l.Incomplete)break;i.kind==l.ESC||i.kind==l.Unknown||(i.kind==l.Text?t.push(this.transform_to_html(this.with_state(i))):i.kind==l.SGR?this.process_ansi(i):i.kind==l.OSCURL&&t.push(this.process_hyperlink(i)))}return t.join("")}with_state(e){return{bold:this.bold,faint:this.faint,italic:this.italic,underline:this.underline,fg:this.fg,bg:this.bg,text:e.text}}process_ansi(e){let t=e.text.split(";");for(;t.length>0;){let i=t.shift(),s=parseInt(i,10);if(isNaN(s)||s===0)this.fg=null,this.bg=null,this.bold=!1,this.faint=!1,this.italic=!1,this.underline=!1;else if(s===1)this.bold=!0;else if(s===2)this.faint=!0;else if(s===3)this.italic=!0;else if(s===4)this.underline=!0;else if(s===21)this.bold=!1;else if(s===22)this.faint=!1,this.bold=!1;else if(s===23)this.italic=!1;else if(s===24)this.underline=!1;else if(s===39)this.fg=null;else if(s===49)this.bg=null;else if(s>=30&&s<38)this.fg=this.ansi_colors[0][s-30];else if(s>=40&&s<48)this.bg=this.ansi_colors[0][s-40];else if(s>=90&&s<98)this.fg=this.ansi_colors[1][s-90];else if(s>=100&&s<108)this.bg=this.ansi_colors[1][s-100];else if((s===38||s===48)&&t.length>0){let a=s===38,r=t.shift();if(r==="5"&&t.length>0){let h=parseInt(t.shift(),10);h>=0&&h<=255&&(a?this.fg=this.palette_256[h]:this.bg=this.palette_256[h])}if(r==="2"&&t.length>2){let h=parseInt(t.shift(),10),o=parseInt(t.shift(),10),f=parseInt(t.shift(),10);if(h>=0&&h<=255&&o>=0&&o<=255&&f>=0&&f<=255){let c={rgb:[h,o,f],class_name:"truecolor"};a?this.fg=c:this.bg=c}}}}}transform_to_html(e){let t=e.text;if(t.length===0||(t=this.escape_txt_for_html(t),!e.bold&&!e.italic&&!e.underline&&e.fg===null&&e.bg===null))return t;let i=[],s=[],a=e.fg,r=e.bg;e.bold&&i.push(this._boldStyle),e.faint&&i.push(this._faintStyle),e.italic&&i.push(this._italicStyle),e.underline&&i.push(this._underlineStyle),this._use_classes?(a&&(a.class_name!=="truecolor"?s.push(`${a.class_name}-fg`):i.push(`color:rgb(${a.rgb.join(",")})`)),r&&(r.class_name!=="truecolor"?s.push(`${r.class_name}-bg`):i.push(`background-color:rgb(${r.rgb.join(",")})`))):(a&&i.push(`color:rgb(${a.rgb.join(",")})`),r&&i.push(`background-color:rgb(${r.rgb})`));let h="",o="";return s.length&&(h=` class="${s.join(" ")}"`),i.length&&(o=` style="${i.join(";")}"`),`<span${o}${h}>${t}</span>`}process_hyperlink(e){let t=e.url.split(":");return t.length<1||!this._url_allowlist[t[0]]?"":`<a href="${this.escape_txt_for_html(e.url)}">${this.escape_txt_for_html(e.text)}</a>`}}function b(n,...e){let t=n.raw[0],i=/^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm,s=t.replace(i,"");return new RegExp(s)}function v(n,...e){let t=n.raw[0],i=/^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm,s=t.replace(i,"");return new RegExp(s,"g")}var d,p,m;const E=new y,k=500,C={name:"Debug",props:{socket:Object},watch:{},computed:{...x(_,["zwave","gateway"]),logDisabled(){return!this.zwave.logEnabled||!this.gateway.logEnabled},filteredLogs(){return this.filter?this.debug.filter(n=>n.includes(this.filter)):this.debug}},data(){return{debug:[],filter:"",debugActive:!0,hideTopbar:!1}},methods:{...S(_,["showSnackbar"]),toggleDebug(n){this.debugActive=n,this.showSnackbar("Debug "+(n?"activated":"disabled"))},newWindow(){const n=window.open(window.location.href+"#no-topbar","DEBUG","height=800,width=600,status=no,toolbar:no,scrollbars:no,menubar:no");window.focus&&n.focus()}},mounted(){window.location.hash.substr(1)==="no-topbar"&&(this.hideTopbar=!0),this.socket.on(g.debug,e=>{if(this.debugActive){e=E.ansi_to_html(e),e=e.replace(/\n/g,"</br>"),this.debug.push(e),this.debug.length>k&&this.debug.shift();const t=document.getElementById("debug_window");t&&(t.scrollTop=t.scrollHeight)}})},beforeDestroy(){this.socket&&this.socket.off(g.debug)}};var T=function(){var e=this,t=e._self._c;return t("v-container",{attrs:{"grid-list-md":""}},[t("v-row",[t("v-col",{attrs:{cols:"12"}},[t("v-btn",{attrs:{color:"green darken-1",text:""},on:{click:function(i){return e.toggleDebug(!0)}}},[e._v("Start")]),t("v-btn",{attrs:{color:"red darken-1",text:""},on:{click:function(i){return e.toggleDebug(!1)}}},[e._v("Stop")]),t("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(i){e.debug=[]}}},[e._v("Clear")]),e.hideTopbar?e._e():t("v-btn",{attrs:{color:"yellow darken-1",text:""},on:{click:e.newWindow}},[e._v("Open in window")])],1),!e.zwave.logEnabled||!e.gateway.logEnabled||e.zwave.logToFile?t("v-alert",{staticClass:"mb-0",attrs:{dense:"",text:"",type:"warning"}},[e.zwave.logEnabled?e._e():t("p",{staticClass:"ma-1"},[e._v(' • ZwaveJS Logs are disabled. Please enable it on "Settings > Z-Wave" in order to see Application logs ')]),e.gateway.logEnabled?e._e():t("p",{staticClass:"ma-1"},[e._v(' • Application Logs are disabled. Please enable it on "Settings > General" in order to see ZwaveJS logs ')]),e.zwave.logToFile?t("p",{staticClass:"ma-1"},[e._v(' • ZwaveJS "Log to file" is enabled. Disable it in order to see ZwaveJS logs ')]):e._e()]):e._e(),t("v-col",{staticClass:"pa-2",attrs:{cols:"12"}},[t("v-text-field",{staticStyle:{"max-width":"300px"},attrs:{label:"Filter logs",hint:"Type to filter logs, case sensitive","persistent-hint":"","prepend-icon":"search"},model:{value:e.filter,callback:function(i){e.filter=i},expression:"filter"}})],1),t("v-col",{staticClass:"pt-0",attrs:{cols:"12"}},[t("div",{staticClass:"mono",staticStyle:{height:"800px",width:"100%","overflow-y":"scroll",border:"1px solid grey",padding:"10px","white-space":"pre"},attrs:{id:"debug_window"},domProps:{innerHTML:e._s(e.filteredLogs.join(""))}})])],1)],1)},O=[],I=w(C,T,O,!1,null,null,null,null);const B=I.exports;export{B as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as a}from"./index-3c63af0b.js";const i={props:{value:Boolean,actions:Array,title:{type:String,default:"Advanced"}},data(){return{}},computed:{},methods:{}};var s=function(){var e=this,t=e._self._c;return t("v-dialog",{attrs:{persistent:"","max-width":"800"},on:{keydown:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"esc",27,n.key,["Esc","Escape"])?null:e.$emit("close")}},model:{value:e.value,callback:function(n){e.value=n},expression:"value"}},[t("v-card",[t("v-card-title",[t("span",{staticClass:"headline"},[e._v(e._s(e.title))]),t("v-spacer"),t("v-btn",{attrs:{icon:""},on:{click:function(n){return e.$emit("close")}}},[t("v-icon",[e._v("close")])],1)],1),t("v-card-text",[t("div",{class:["action-grid",e.$vuetify.breakpoint.name]},e._l(e.actions,function(n,o){return t("div",{key:o},[t("v-icon",{attrs:{color:n.color||"primary","x-large":""}},[e._v(e._s(n.icon))]),t("div",{staticStyle:{"font-size":"1.1rem"}},[e._v(e._s(n.text))]),t("div",{staticClass:"action-desc"},[e._v(e._s(n.desc))]),e._l(n.options,function(c,r){return t("v-btn",{key:r,attrs:{text:"",color:n.color||"primary"},on:{click:function(v){return e.$emit("action",c.action,c.args)}}},[e._v(e._s(c.name))])})],2)}),0)])],1)],1)},l=[],_=a(i,s,l,!1,null,"8c9eb6de",null,null);const p=_.exports;export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.action-grid[data-v-8c9eb6de]{display:grid;grid-template-columns:repeat(3,1fr);column-gap:1.4rem;row-gap:1.2rem;justify-items:center;align-items:center}.action-grid.xs[data-v-8c9eb6de]{grid-template-columns:repeat(1,1fr)}.action-grid.sm[data-v-8c9eb6de]{grid-template-columns:repeat(2,1fr);column-gap:1rem}.action-grid>div[data-v-8c9eb6de]{text-align:center;max-width:215px}.action-desc[data-v-8c9eb6de]{font-size:.7rem;color:#999;line-height:.9rem}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as i}from"./index-3c63af0b.js";const a={props:{value:Boolean,nodes:Array,associations:Array,node:Object},watch:{value(){this.$refs.form&&this.$refs.form.resetValidation(),this.resetGroup()}},computed:{filteredNodes(){return this.nodes.filter(n=>n.id!==this.node.id)},endpoints(){return this.getEndpointItems(this.node)},targetEndpoints(){return this.getEndpointItems(this.group.target,!0)},maxNodes(){return this.group.group?this.group.group.maxNodes:-1},nodesInGroup(){return this.group.group?this.associations.filter(n=>n.groupId===this.group.group.value&&n.endpoint===this.group.endpoint).length:0},endpointGroups(){let n=[];try{n=this.node.groups;const t=this.group.endpoint;n=n.filter(e=>e.endpoint===t||t===null&&e.endpoint===0&&!e.multiChannel)}catch{}return n}},data(){return{valid:!0,group:{},defaultGroup:{endpoint:null},required:n=>!!n||"This field is required"}},methods:{resetGroup(){this.group=Object.assign({},this.defaultGroup)},getEndpointLabel(n,t){if(n&&n.endpoints){const e=n.endpoints.find(o=>o.index===t);if(e)return e.label}return"Endpoint "+t},getEndpointItems(n,t=!1){const e=[];if(t&&e.unshift({text:"No Endpoint",value:null}),n&&n.endpoints)for(const o of n.endpoints)e.push({text:o.label,value:o.index});return e}}};var l=function(){var t=this,e=t._self._c;return e("v-dialog",{attrs:{"max-width":"500px",persistent:""},model:{value:t.value,callback:function(o){t.value=o},expression:"value"}},[e("v-card",[e("v-card-title",[e("span",{staticClass:"headline"},[t._v("New Association")])]),e("v-card-text",[e("v-container",{attrs:{"grid-list-md":""}},[e("v-form",{ref:"form",attrs:{"lazy-validation":""},model:{value:t.valid,callback:function(o){t.valid=o},expression:"valid"}},[e("v-row",[e("v-col",{attrs:{cols:"12"}},[e("v-select",{attrs:{label:"Node Endpoint",hint:"Used to filter available groups","persistent-hint":"",items:t.endpoints},model:{value:t.group.endpoint,callback:function(o){t.$set(t.group,"endpoint",o)},expression:"group.endpoint"}})],1),e("v-col",{attrs:{cols:"12"}},[e("v-select",{attrs:{label:"Group",hint:"Node/Endpoint Group association to Add/Remove","persistent-hint":"",items:t.endpointGroups,rules:[t.required],"return-object":""},scopedSlots:t._u([{key:"selection",fn:function({item:o}){return[t._v(" "+t._s(o.text)+" ")]}},{key:"item",fn:function({item:o,attrs:s,on:r}){return[e("v-list-item",t._g(t._b({attrs:{"two-line":""}},"v-list-item",s,!1),r),[e("v-list-item-content",[e("v-list-item-title",[t._v(t._s(`[${o.value}] ${o.text}`))]),e("v-list-item-subtitle",[t._v(t._s(o.endpoint>=0?t.getEndpointLabel(t.node,o.endpoint):"No Endpoint"))])],1)],1)]}}]),model:{value:t.group.group,callback:function(o){t.$set(t.group,"group",o)},expression:"group.group"}})],1),t.group.group?e("v-col",{attrs:{cols:"12"}},[e("p",{staticClass:"text-subtitle-1 pa-0 ma-0"},[t._v(" Max associations: "),e("strong",[t._v(t._s(t.maxNodes))])]),e("p",{staticClass:"text-subtitle-1 pa-0 ma-0"},[t._v(" Actual associations: "),e("strong",[t._v(t._s(t.nodesInGroup))])])]):t._e(),t.nodesInGroup<t.maxNodes?e("v-col",{staticClass:"pa-0"},[e("v-col",{attrs:{cols:"12"}},[e("v-combobox",{attrs:{label:"Target Node",items:t.filteredNodes,"return-object":"",rules:[t.required],hint:"Node to add to the association group","persistent-hint":"","item-text":"_name"},model:{value:t.group.target,callback:function(o){t.$set(t.group,"target",o)},expression:"group.target"}})],1),t.group.group&&t.group.group.multiChannel?e("v-col",{attrs:{cols:"12"}},[e("v-select",{attrs:{"persistent-hint":"",label:"Target Endpoint",hint:"Target node endpoint",items:t.targetEndpoints},model:{value:t.group.targetEndpoint,callback:function(o){t.$set(t.group,"targetEndpoint",t._n(o))},expression:"group.targetEndpoint"}})],1):t._e()],1):t._e()],1)],1)],1)],1),e("v-card-actions",[e("v-spacer"),e("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(o){return t.$emit("close")}}},[t._v("Cancel")]),e("v-btn",{attrs:{color:"blue darken-1",text:"",disabled:t.nodesInGroup>=t.maxNodes},on:{click:function(o){t.$refs.form.validate()&&t.$emit("add",t.group)}}},[t._v("ADD")])],1)],1)],1)},u=[],p=i(a,l,u,!1,null,null,null,null);const c=p.exports;export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as s,m as n,u as r,p as l,n as d}from"./index-3c63af0b.js";const o={components:{PrismEditor:()=>s(()=>import("./prismeditor.esm-3002a813.js"),["./prismeditor.esm-3002a813.js","./index-3c63af0b.js","./index-be785cef.css"],import.meta.url).then(a=>a.PrismEditor)},props:{value:Boolean,gw_type:Number,title:String,editedValue:Object,devices:Array},watch:{value(a){this.$refs.form&&this.$refs.form.resetValidation(),a&&(this.isNew=!this.editedValue.device)}},computed:{...n(r,["gateway","mqtt"]),deviceValues(){const a=this.devices.find(e=>e.value==this.editedValue.device);return a?a.values:[]},deviceClasses(){const a=this.editedValue.value;return a?a.commandClass===48?["battery","cold","connectivity","door","garage_door","gas","heat","light","lock","moisture","motion","moving","occupancy","opening","plug","power","presence","problem","safety","smoke","sound","vibration","window"]:this.isSensor(a)?["battery","humidity","illuminance","signal_strength","temperature","power","power_factor","pressure","timestamp","current","energy","voltage"]:a.commandClass===38?["awning","blind","curtain","damper","door","garage","gate","shade","shutter","window"]:[]:[]},requiredIntensity(){return!this.editedValue.enablePoll||this.editedValue.enablePoll&&this.editedValue.pollInterval>=10||"Minimun interval is 10 seconds"},requiredTopic(){return this.gw_type!==2||!!this.editedValue.topic||"Topic required"}},data(){return{isNew:null,valid:!0,required:a=>!!a||"This field is required"}},methods:{highlighter(a){return l.highlight(a,l.languages.js)},isSensor(a){return a&&(a.commandClass===49||a.commandClass===50)}}};var c=function(){var e=this,t=e._self._c;return t("v-dialog",{attrs:{"max-width":"500px",persistent:""},model:{value:e.value,callback:function(i){e.value=i},expression:"value"}},[t("v-card",[t("v-card-title",[t("span",{staticClass:"headline"},[e._v(e._s(e.title))])]),t("v-card-text",[t("v-container",{attrs:{"grid-list-md":""}},[t("v-form",{ref:"form",attrs:{"lazy-validation":""},model:{value:e.valid,callback:function(i){e.valid=i},expression:"valid"}},[t("v-row",[t("v-col",{attrs:{cols:"12"}},[t("v-select",{attrs:{label:"Device",required:"",rules:[e.required],"item-text":"name",items:e.devices},model:{value:e.editedValue.device,callback:function(i){e.$set(e.editedValue,"device",i)},expression:"editedValue.device"}})],1),t("v-col",{attrs:{cols:"12"}},[t("v-select",{attrs:{label:"Value",hint:e.editedValue.value?e.editedValue.value.description:"",required:"","return-object":"",rules:[e.required],"item-text":"label","item-value":"id",items:e.deviceValues},scopedSlots:e._u([{key:"selection",fn:function({item:i}){return[e._v(" "+e._s((i.label||i.id)+(i.endpoint>1?" - Endpoint "+i.endpoint:""))+" ")]}},{key:"item",fn:function({item:i}){return[t("v-list-item-content",[t("v-list-item-title",[e._v(e._s((i.label||i.id)+(i.endpoint>0?" - Endpoint "+i.endpoint:"")))]),t("v-list-item-subtitle",{staticClass:"text-truncate text-no-wrap",staticStyle:{"max-width":"500px"}},[e._v(e._s(i.description))])],1)]}}]),model:{value:e.editedValue.value,callback:function(i){e.$set(e.editedValue,"value",i)},expression:"editedValue.value"}})],1),!this.mqtt.disabled&&this.gateway.hassDiscovery?t("v-col",{attrs:{cols:"12"}},[t("v-select",{attrs:{label:"Device Class",hint:"Specify a device class for Home assistant","item-text":"name",items:e.deviceClasses},model:{value:e.editedValue.device_class,callback:function(i){e.$set(e.editedValue,"device_class",i)},expression:"editedValue.device_class"}})],1):e._e(),e.isSensor(e.editedValue.value)?t("v-col",{attrs:{cols:"12"}},[t("v-text-field",{attrs:{hint:"Specify a device icon for Home assistant, format is <prefix>:<icons-alias> (Eg: 'mdi:water'). Check http://materialdesignicons.com/",label:"Device Icon"},model:{value:e.editedValue.icon,callback:function(i){e.$set(e.editedValue,"icon",e._n(i))},expression:"editedValue.icon"}})],1):e._e(),this.mqtt.disabled?e._e():t("v-col",{attrs:{cols:"12"}},[t("v-text-field",{attrs:{label:"Topic",rules:[e.requiredTopic],required:""},model:{value:e.editedValue.topic,callback:function(i){e.$set(e.editedValue,"topic",typeof i=="string"?i.trim():i)},expression:"editedValue.topic"}})],1),this.mqtt.disabled?e._e():t("v-col",{attrs:{cols:"6"}},[t("v-select",{attrs:{label:"QoS",hint:"If specified, overrides the default QoS in MQTT settings",items:[{text:"",value:void 0},{text:"0: At most once",value:0},{text:"1: At least once",value:1},{text:"2: Exactly once",value:2}],"persistent-hint":"",required:"",type:"number"},model:{value:e.editedValue.qos,callback:function(i){e.$set(e.editedValue,"qos",i)},expression:"editedValue.qos"}})],1),this.mqtt.disabled?e._e():t("v-col",{attrs:{cols:"6"}},[t("v-select",{attrs:{label:"Retain","persistent-hint":"",hint:"If specified, overrides the default retain in MQTT settings",items:[{text:"",value:void 0},{text:"True",value:!0},{text:"False",value:!1}],required:"",type:"number"},model:{value:e.editedValue.retain,callback:function(i){e.$set(e.editedValue,"retain",i)},expression:"editedValue.retain"}})],1),t("v-col",{attrs:{cols:"12"}},[t("v-text-field",{attrs:{label:"Post operation",hint:"Example: '/10' '*100' '+20'",required:""},model:{value:e.editedValue.postOperation,callback:function(i){e.$set(e.editedValue,"postOperation",i)},expression:"editedValue.postOperation"}})],1),t("v-col",{attrs:{cols:"6"}},[t("v-switch",{attrs:{label:"Poll",hint:"Enable poll of this value. ATTENTION: This could create lot traffic in your network and kill the life of battery powered devices. Use at your own risk","persistent-hint":""},model:{value:e.editedValue.enablePoll,callback:function(i){e.$set(e.editedValue,"enablePoll",i)},expression:"editedValue.enablePoll"}})],1),e.editedValue.enablePoll?t("v-col",{attrs:{cols:"6"}},[t("v-text-field",{attrs:{label:"Poll interval",hint:"Seconds between to wait between poll requests. The timer starts when the request ends",rules:[e.requiredIntensity],suffix:"seconds",required:"",type:"number"},model:{value:e.editedValue.pollInterval,callback:function(i){e.$set(e.editedValue,"pollInterval",e._n(i))},expression:"editedValue.pollInterval"}})],1):e._e(),t("v-col",{attrs:{cols:"6"}},[t("v-switch",{attrs:{label:"Parse send",hint:"Create a function that parse the value sent via MQTT","persistent-hint":""},model:{value:e.editedValue.parseSend,callback:function(i){e.$set(e.editedValue,"parseSend",i)},expression:"editedValue.parseSend"}})],1),e.editedValue.parseSend?t("v-container",[t("p",[e._v(" Write the function here. Args are: "),t("code",[e._v("value")]),e._v(", "),t("code",[e._v("valueId")]),e._v(", "),t("code",[e._v("node")]),e._v(", "),t("code",[e._v("logger")]),e._v(". The function is sync and must return the parsed "),t("code",[e._v("value")]),e._v(". ")]),t("prism-editor",{attrs:{lineNumbers:"",language:"js",highlight:e.highlighter},model:{value:e.editedValue.sendFunction,callback:function(i){e.$set(e.editedValue,"sendFunction",i)},expression:"editedValue.sendFunction"}})],1):e._e(),t("v-col",{attrs:{cols:"6"}},[t("v-switch",{attrs:{label:"Parse receive",hint:"Create a function that parse the received value from MQTT","persistent-hint":""},model:{value:e.editedValue.parseReceive,callback:function(i){e.$set(e.editedValue,"parseReceive",i)},expression:"editedValue.parseReceive"}})],1),e.editedValue.parseReceive?t("v-container",[t("p",[e._v(" Write the function here. Args are: "),t("code",[e._v("value")]),e._v(", "),t("code",[e._v("valueId")]),e._v(", "),t("code",[e._v("node")]),e._v(", "),t("code",[e._v("logger")]),e._v(". The function is sync and must return the parsed "),t("code",[e._v("value")]),e._v(". ")]),t("prism-editor",{attrs:{lineNumbers:"",language:"js",highlight:e.highlighter},model:{value:e.editedValue.receiveFunction,callback:function(i){e.$set(e.editedValue,"receiveFunction",i)},expression:"editedValue.receiveFunction"}})],1):e._e()],1)],1)],1)],1),t("v-card-actions",[t("v-spacer"),t("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(i){return e.$emit("close")}}},[e._v("Cancel")]),t("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(i){e.$refs.form.validate()&&e.$emit("save")}}},[e._v(e._s(e.isNew?"Add":"Update"))])],1)],1)],1)},u=[],v=d(o,c,u,!1,null,"06d1ee8a",null,null);const m=v.exports;export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.prism-editor__textarea[data-v-06d1ee8a]:focus{outline:none}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.help-menu{max-height:90vh;overflow:scroll}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as l,m as o,u as r,a as d,l as u,t as c,c as g,n as v}from"./index-3c63af0b.js";const h={components:{},props:{value:Boolean,node:Object,socket:Object},mixins:[l],watch:{value(i){this.init(i)}},computed:{...o(r,["nodes"]),filteredNodes(){return this.activeNode?this.nodes.filter(i=>i.id!==this.activeNode.id):this.nodes},headers(){return this.mode==="Lifeline"?[{text:"Max latency",value:"latency"},{text:"Failed pings",value:"failedPingsNode"},{text:"Route Changes",value:"routeChanges"},{text:"SNR margin",value:"snrMargin"},{text:"Min power level w/o errors",value:"minPowerlevel"},{text:"Rating",value:"rating"}]:[{text:"Failed pings",value:"failedPingsToSource"},{text:"Min Power Level w/o errors",value:"minPowerlevelSource"},{text:"Rating",value:"rating"}]}},data(){return{loading:!1,results:[],rounds:5,targetNode:null,activeNode:null,resultsTargetNode:null,averages:null,mode:"Lifeline",hintHeaders:[{text:"Rating",value:"rating",sortable:!1},{text:"Failed pings",value:"failedPings",sortable:!1},{text:"Max latency (*)",value:"latency",sortable:!1},{text:"No. of Neighbors",value:"neighbors",sortable:!1},{text:"SNR margin (*)",value:"snrMargin",sortable:!1},{text:"Min power level w/o errors",value:"minPowerlevel",sortable:!1}],hintValues:[{rating:10,failedPings:0,latency:"≤ 50 ms",neighbors:"> 2",snrMargin:"≥ 17dBm",minPowerlevel:"≤ -6dBm"},{rating:9,failedPings:0,latency:"≤ 100 ms",neighbors:"> 2",snrMargin:"≥ 17dBm",minPowerlevel:"≤ -6dBm"},{rating:8,failedPings:0,latency:"≤ 100 ms",neighbors:"≤ 2",snrMargin:"≥ 17dBm",minPowerlevel:"≤ -6dBm"},{rating:7,failedPings:0,latency:"≤ 100ms",neighbors:"> 2"},{rating:6,failedPings:0,latency:"≤ 100ms",neighbors:"≤ 2"},{rating:5,failedPings:0,latency:"≤ 250ms"},{rating:4,failedPings:0,latency:"≤ 500 ms"},{rating:3,failedPings:1,latency:"≤ 1000ms"},{rating:2,failedPings:"≤ 2",latency:"> 1000ms"},{rating:1,failedPings:"≤ 9"},{rating:0,failedPings:10}]}},methods:{...d(r,["showSnackbar"]),exportResults(){this.app.exportConfiguration(this.results,`healthCheck_${this.activeNode.id}-${this.resultsTargetNode}`,"json")},getNeighborsColor(i){return i>2?"success--text":i===0?"error--text":"warning--text"},getLatencyColor(i){return i<=100?"success--text":i<=500?"warning--text":"error--text"},getSnrMarginColor(i){return i>=17?"success--text":"error--text"},getFailedPingsColor(i){return i===0?"success--text":i===1?"warning--text":"error--text"},getRatingColor(i){return i===void 0?"primary":i>=6?"success":i>=4?"warning":"error"},getPowerLevel(i){return u.getEnumMemberName(c.Powerlevel,i)},getPowerLevelColor(i){return i===void 0?"":i>=6?"success--text":i>=3?"warning--text":"error--text"},init(i){i?(this.rounds=5,this.activeNode=g(this.node),this.targetNode=this.filteredNodes.find(e=>e.isControllerNode),this.selectedNode=this.filteredNodes[0]?this.filteredNodes[0].id:null,this.bindEvent("healthCheckProgress",this.onHealthCheckProgress.bind(this))):i===!1&&(this.unbindEvents(),this.results=[],this.loading=!1,this.targetNode=null,this.averages=null)},onHealthCheckProgress(i){const{request:e,round:t,totalRounds:s,lastResult:n}=i;if(e.nodeId===this.activeNode.id){const a=this.results[this.results.length-1];n&&Object.assign(a,n),t<s&&this.results.push({round:t,rating:void 0})}},async stopHealth(){(await this.app.apiRequest("abortHealthCheck",[this.activeNode.id])).success&&this.showSnackbar("Health check aborted","success")},async checkHealth(){this.loading=!0,this.results=[];const i=[this.activeNode.id],e=typeof this.targetNode=="object"?this.targetNode:this.nodes.find(s=>s.id==this.targetNode);if(!e)return;e.isControllerNode?this.mode="Lifeline":(this.mode="Route",i.push(e.id)),i.push(this.rounds||1),this.results.push({round:1,rating:void 0});const t=await this.app.apiRequest(`check${this.mode}Health`,i,{infoSnack:!0,errorSnack:!1});if(this.loading=!1,t.success){const s=t.result;this.results=s.results,delete s.results,this.averages=s,this.averages.numNeighbors=Math.max(...this.results.map(n=>n.numNeighbors)),this.resultsTargetNode=s.targetNodeId}else this.results.pop(),this.showSnackbar(t.message||"Health check failed","error")}},beforeDestroy(){this.init(!1)}};var f=function(){var e=this,t=e._self._c;return t("v-dialog",{attrs:{"max-width":"800px",persistent:""},model:{value:e.value,callback:function(s){e.value=s},expression:"value"}},[t("v-card",{attrs:{loading:e.loading}},[t("v-card-title",[t("span",{staticClass:"headline"},[e._v("Node "+e._s(e.activeNode?e.activeNode.id:"")+" - Health check")])]),t("v-card-text",[t("v-container",[t("v-row",{staticClass:"ma-3",attrs:{justify:"start"}},[t("v-col",[t("v-combobox",{staticStyle:{"max-width":"300px"},attrs:{label:"Target Node",items:e.filteredNodes,"return-object":"",hint:"Target node to run the route health check on","persistent-hint":"","item-text":"_name","item-value":"id"},model:{value:e.targetNode,callback:function(s){e.targetNode=s},expression:"targetNode"}})],1),t("v-col",[t("v-text-field",{attrs:{hint:"Number of rounds to run the health check",label:"Rounds",min:"1",max:"10",type:"number","persistent-hint":""},model:{value:e.rounds,callback:function(s){e.rounds=e._n(s)},expression:"rounds"}})],1)],1),t("v-row",{staticClass:"mb-2",attrs:{justify:"space-around"}},[t("v-btn",{attrs:{color:e.loading?"error":"success",disabled:!e.targetNode},on:{click:function(s){e.loading?e.stopHealth():e.checkHealth()}}},[e._v(e._s(e.loading?"Stop":"Check"))]),t("v-menu",{attrs:{"close-on-content-click":!1,"offset-y":"",bottom:"","open-on-click":"","content-class":"help-menu"},scopedSlots:e._u([{key:"activator",fn:function({on:s,attrs:n}){return[t("v-btn",e._g(e._b({attrs:{color:"primary"}},"v-btn",n,!1),s),[t("v-icon",[e._v("help")])],1)]}}])},[t("v-list",{attrs:{dense:""}},[t("v-list-item",[t("v-list-item-content",{staticClass:"ma-0"},[t("v-list-item-title",[e._v("Route changes")]),t("v-list-item-subtitle",[e._v("How many times at least one new route was needed. Lower = better, ideally 0. Only available if the controller supports TX reports")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("Latency")]),t("v-list-item-subtitle",[e._v("The maximum time it took to send a ping to the node. Lower = better, ideally 10 ms. Will use the time in TX reports if available, otherwise fall back to measuring the round trip time.")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("No. Neighbors")]),t("v-list-item-subtitle",[e._v("How many routing neighbors this node has. Higher = better, ideally > 2")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("Failed Pings node")]),t("v-list-item-subtitle",[e._v("How many pings were not ACKed by the node. Lower = better, ideally 0.")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("Min Power Level")]),t("v-list-item-subtitle",[e._v("The minimum powerlevel where all pings from the (source) node were ACKed by the target node / controller. Lower = better, ideally -6dBm or less. Only available if the (source) node supports Powerlevel CC")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("Failed pings Controller")]),t("v-list-item-subtitle",[e._v("If no powerlevel was found where the controller ACKed all pings from the node, this contains the number of pings that weren't ACKed. Lower = better, ideally 0.")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("SNR Margin")]),t("v-list-item-subtitle",[e._v("An estimation of the Signal-to-Noise Ratio Margin in dBm. Only available if the controller supports TX reports.")])],1)],1),t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[e._v("Rating")])],1)],1)],1),t("v-data-table",{staticClass:"elevation-1",attrs:{headers:e.hintHeaders,items:e.hintValues,"mobile-breakpoint":0,"hide-default-footer":"","disable-pagination":""},scopedSlots:e._u([{key:"footer",fn:function(){return[t("p",{staticClass:"mb-0 text-caption"},[t("code",[e._v("*")]),e._v(" Due to missing insight into re-routing attempts between two nodes, some of the values for the for the route check rating don't exist here and are only present in lifeline checks (when target node is the controller). Furthermore, it is not guaranteed that a route between two nodes and lifeline with the same health rating have the same quality. ")])]},proxy:!0}])})],1)],1),e.averages&&!e.loading?t("v-row",{staticClass:"mb-2",attrs:{justify:"space-around"}},[e.averages.numNeighbors?t("v-col",{staticClass:"text-center"},[t("p",{staticClass:"mb-1 subtitle-1 font-weight-bold"},[e._v(" No. Neighbors ")]),t("span",{staticClass:"text-h3",class:e.getNeighborsColor(e.averages.numNeighbors)},[e._v(e._s(e.averages.numNeighbors))])]):e._e(),e.averages.rating?t("v-col",{staticClass:"text-center"},[t("p",{staticClass:"mb-1 subtitle-1 font-weight-bold"},[e._v(" Rating ")]),t("span",{staticClass:"text-h3",class:e.getRatingColor(e.averages.rating)+"--text"},[e._v(e._s(e.averages.rating)+"/10")])]):e._e()],1):e._e(),e.results.length>0?t("v-data-table",{staticClass:"elevation-1",attrs:{headers:e.headers,items:e.results,"item-key":"id","hide-default-footer":"","items-per-page":-1},scopedSlots:e._u([{key:"top",fn:function(){return[!e.loading&&e.resultsTargetNode>=0?t("v-btn",{staticClass:"mb-2",attrs:{text:"",color:"primary"},on:{click:e.exportResults}},[e._v("Export")]):e._e()]},proxy:!0},{key:"item.rating",fn:function({item:s}){return[t("v-progress-linear",{staticStyle:{"min-width":"80px"},attrs:{rounded:"",height:"25",value:s.rating*10,color:e.getRatingColor(s.rating),indeterminate:s.rating===void 0}},[s.rating!==void 0?t("strong",[e._v(e._s(s.rating)+"/10")]):e._e()])]}},{key:"item.latency",fn:function({item:s}){return[s.latency!==void 0?t("strong",{class:e.getLatencyColor(s.latency)},[e._v(e._s(s.latency)+" ms")]):e._e()]}},{key:"item.snrMargin",fn:function({item:s}){return[s.snrMargin!==void 0?t("strong",{class:e.getSnrMarginColor(s.snrMargin)},[e._v(e._s(s.snrMargin)+" dBm")]):e._e()]}},{key:"item.routeChanges",fn:function({item:s}){return[s.routeChanges!==void 0?t("strong",[e._v(e._s(s.routeChanges))]):e._e()]}},{key:"item.minPowerlevel",fn:function({item:s}){return[s.minPowerlevel!==void 0?t("strong",{class:e.getPowerLevelColor(s.minPowerlevel)},[e._v(e._s(e.getPowerLevel(s.minPowerlevel)))]):e._e()]}},{key:"item.failedPingsNode",fn:function({item:s}){return[s.failedPingsNode!==void 0?t("p",{staticClass:"mb-0"},[e._v(" "+e._s(e.resultsTargetNode)+" → "+e._s(e.activeNode.id)+": "),t("strong",{class:e.getFailedPingsColor(s.failedPingsNode)},[e._v(e._s(s.failedPingsNode)+"/10")])]):e._e(),s.failedPingsController!==void 0?t("p",{staticClass:"mb-0"},[e._v(" "+e._s(e.resultsTargetNode)+" ← "+e._s(e.activeNode.id)+": "),t("strong",{class:e.getFailedPingsColor(s.failedPingsController)},[e._v(e._s(s.failedPingsController)+"/10")])]):e._e()]}},{key:"item.failedPingsToSource",fn:function({item:s}){return[s.failedPingsToSource!==void 0?t("p",{staticClass:"mb-0"},[e._v(" "+e._s(e.resultsTargetNode)+" → "+e._s(e.activeNode.id)+": "),t("strong",{class:e.getFailedPingsColor(s.failedPingsToSource)},[e._v(e._s(s.failedPingsToSource)+"/10")])]):e._e(),s.failedPingsToTarget!==void 0?t("p",{staticClass:"mb-0"},[e._v(" "+e._s(e.resultsTargetNode)+" ← "+e._s(e.activeNode.id)+": "),t("strong",{class:e.getFailedPingsColor(s.failedPingsToTarget)},[e._v(e._s(s.failedPingsToTarget)+"/10")])]):e._e()]}},{key:"item.minPowerlevelSource",fn:function({item:s}){return[s.minPowerlevelSource!==void 0?t("p",{staticClass:"mb-0"},[e._v(" Node "+e._s(e.activeNode.id)+": "),t("strong",{class:e.getPowerLevelColor(s.minPowerlevelSource)},[e._v(e._s(e.getPowerLevel(s.minPowerlevelSource)))])]):e._e(),s.minPowerlevelTarget!==void 0?t("p",{staticClass:"mb-0"},[e._v(" Node "+e._s(e.resultsTargetNode)+": "),t("strong",{class:e.getPowerLevelColor(s.minPowerlevelTarget)},[e._v(e._s(e.getPowerLevel(s.minPowerlevelTarget)))])]):e._e()]}}],null,!0)}):e._e()],1)],1),t("v-card-actions",[t("v-spacer"),t("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(s){return e.$emit("close")}}},[e._v("Close")])],1)],1)],1)},m=[],_=v(h,f,m,!1,null,null,null,null);const b=_.exports;export{b as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as i,_ as n}from"./index-3c63af0b.js";const s={components:{ValueID:()=>n(()=>import("./ValueId-b8e1e4a2.js"),["./ValueId-b8e1e4a2.js","./index-3c63af0b.js","./index-be785cef.css","./ValueId-ea679e64.css"],import.meta.url)},props:{value:Boolean,title:String,editedValue:Object,nodes:Array},watch:{value(a){this.$refs.form&&this.$refs.form.resetValidation()}},data(){return{valid:!0,required:a=>!!a||"This field is required",positive:a=>a>=0||"Value must be positive",validValue:[a=>!!a||"This field is required",a=>a&&a.writeable||"This value is Read Only"]}}};var o=function(){var e=this,l=e._self._c;return l("v-dialog",{attrs:{"max-width":"500px",persistent:""},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[l("v-card",[l("v-card-title",[l("span",{staticClass:"headline"},[e._v("Add association")])]),l("v-card-text",[l("v-container",{attrs:{"grid-list-md":""}},[l("v-form",{ref:"form",attrs:{"lazy-validation":""},model:{value:e.valid,callback:function(t){e.valid=t},expression:"valid"}},[l("v-row",[l("v-col",{attrs:{cols:"12"}},[l("v-select",{attrs:{label:"Node",required:"","return-object":"","item-text":"_name",rules:[e.required],"item-value":"id",items:e.nodes},model:{value:e.editedValue.node,callback:function(t){e.$set(e.editedValue,"node",t)},expression:"editedValue.node"}})],1),e.editedValue.node?l("v-col",{attrs:{cols:"12"}},[l("v-select",{attrs:{label:"Value",required:"","return-object":"","item-text":"label",rules:e.validValue,"item-value":"id",items:e.editedValue.node.values},scopedSlots:e._u([{key:"selection",fn:function({item:t}){return[e._v(" "+e._s((t.label||t.id)+(t.endpoint>1?" - Endpoint "+t.endpoint:""))+" ")]}},{key:"item",fn:function({item:t}){return[l("v-list-item-content",[l("v-list-item-title",[e._v(e._s((t.label||t.id)+(t.endpoint>0?" - Endpoint "+t.endpoint:"")))]),l("v-list-item-subtitle",{staticClass:"text-truncate text-no-wrap",staticStyle:{"max-width":"500px"}},[e._v(e._s(t.description))])],1)]}}],null,!1,2612602261),model:{value:e.editedValue.value,callback:function(t){e.$set(e.editedValue,"value",t)},expression:"editedValue.value"}})],1):e._e(),e.editedValue.value?l("v-col",{attrs:{cols:"12"}},[l("ValueID",{attrs:{disable_send:""},model:{value:e.editedValue.value,callback:function(t){e.$set(e.editedValue,"value",t)},expression:"editedValue.value"}})],1):e._e(),l("v-col",{attrs:{cols:"12"}},[l("v-text-field",{attrs:{label:"Timeout",hint:"Seconds to wait before send this value. Set to 0 to send immediately",suffix:"s",rules:[e.positive],required:"",type:"number"},model:{value:e.editedValue.timeout,callback:function(t){e.$set(e.editedValue,"timeout",e._n(t))},expression:"editedValue.timeout"}})],1)],1)],1)],1)],1),l("v-card-actions",[l("v-spacer"),l("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(t){return e.$emit("close")}}},[e._v("Cancel")]),l("v-btn",{attrs:{color:"blue darken-1",text:""},on:{click:function(t){e.$refs.form.validate()&&e.$emit("save")}}},[e._v("Save")])],1)],1)],1)},d=[],r=i(s,o,d,!1,null,null,null,null);const c=r.exports;export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as s}from"./index-3c63af0b.js";const o={data(){return{query:{code:404,message:"Not Found",path:"/error"}}},methods:{},beforeMount(){this.query=Object.keys(this.$route.query).length>0?this.$route.query:this.query}};var a=function(){var e=this,t=e._self._c;return t("v-container",{attrs:{fluid:"","fill-height":""}},[t("v-row",{attrs:{align:"center",justify:"center"}},[t("v-col",{attrs:{cols:"12",sm:"8",md:"4"}},[t("v-card",{staticClass:"elevation-12"},[t("v-toolbar",{attrs:{dark:"",color:"primary"}},[t("v-btn",{attrs:{icon:""},on:{click:function(r){return e.$router.go(-2)}}},[t("v-icon",[e._v("arrow_back")])],1),t("v-toolbar-title",[e._v(e._s(e.query.code+" - "+e.query.message))]),t("v-spacer"),t("v-btn",{attrs:{icon:""},on:{click:function(r){return e.$router.push("/")}}},[t("v-icon",[e._v("home")])],1)],1),t("v-card-text",[t("v-container",{attrs:{"fill-height":"","text-xs-center":""}},[t("v-row",{attrs:{justify:"center"}},[t("v-col",[t("strong",{staticClass:"headline font-weight-bold"},[e._v(" Error while requesting resource at "),t("code",[e._v(e._s(e.query.path))])])])],1)],1)],1)],1)],1)],1),t("v-footer",{staticClass:"pa-3",attrs:{absolute:""}},[t("v-col",{staticClass:"d-flex pa-0 justify-center py-3 text-caption"},[e._v(" ©"+e._s(new Date().getFullYear())+" — "),t("strong",{staticClass:"ml-1 mr-2"},[t("a",{attrs:{href:"https://github.com/sponsors/robertsLando"}},[e._v("Daniel Lando")])]),e._v(" All Rights Reserved. ")])],1)],1)},n=[],c=s(o,a,n,!1,null,null,null,null);const u=c.exports;export{u as default};
|