1*cf78ab8cSAndroid Build Coastguard Workerimport{__decorate as t}from"../node_modules/tslib/tslib.es6.js";import{css as e,LitElement as i,html as o}from"https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";import{property as a,customElement as n}from"https://cdn.skypack.dev/pin/[email protected]/mode=imports/optimized/lit/decorators.js";import{simulationState as r}from"./device-observer.js";let d=class extends i{constructor(){super(...arguments),this.captureData=[],this.deviceData=[]}connectedCallback(){super.connectedCallback(),r.registerObserver(this)}disconnectedCallback(){r.removeObserver(this),super.disconnectedCallback()}onNotify(t){this.captureData=t.captures,this.deviceData=t.devices,this.requestUpdate()}toggleCapture(t){let e=t.id.toString(),i=t.state?"0":"1";r.patchCapture(e,i)}handleGetChips(t){var e,i,a,n,r,d,s,l;let c=o``,p=o``,b=o``;if("chips"in t&&t.chips)for(const h of t.chips){if("bt"in h&&h.bt){let t=o``,r=o``;"lowEnergy"in h.bt&&h.bt.lowEnergy&&(t=o` 2*cf78ab8cSAndroid Build Coastguard Worker <tr> 3*cf78ab8cSAndroid Build Coastguard Worker <td>BLE</td> 4*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(e=h.bt.lowEnergy.rxCount)&&void 0!==e?e:0}</td> 5*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(i=h.bt.lowEnergy.txCount)&&void 0!==i?i:0}</td> 6*cf78ab8cSAndroid Build Coastguard Worker </tr> 7*cf78ab8cSAndroid Build Coastguard Worker `),"classic"in h.bt&&h.bt.classic&&(r=o` 8*cf78ab8cSAndroid Build Coastguard Worker <tr> 9*cf78ab8cSAndroid Build Coastguard Worker <td>Bluetooth Classic</td> 10*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(a=h.bt.classic.rxCount)&&void 0!==a?a:0}</td> 11*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(n=h.bt.classic.txCount)&&void 0!==n?n:0}</td> 12*cf78ab8cSAndroid Build Coastguard Worker </tr> 13*cf78ab8cSAndroid Build Coastguard Worker `),c=o`${t} ${r}`}"uwb"in h&&h.uwb&&(p=o` 14*cf78ab8cSAndroid Build Coastguard Worker <tr> 15*cf78ab8cSAndroid Build Coastguard Worker <td>UWB</td> 16*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(r=h.uwb.rxCount)&&void 0!==r?r:0}</td> 17*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(d=h.uwb.txCount)&&void 0!==d?d:0}</td> 18*cf78ab8cSAndroid Build Coastguard Worker </tr> 19*cf78ab8cSAndroid Build Coastguard Worker `),"wifi"in h&&h.wifi&&(b=o` 20*cf78ab8cSAndroid Build Coastguard Worker <tr> 21*cf78ab8cSAndroid Build Coastguard Worker <td>WIFI</td> 22*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(s=h.wifi.rxCount)&&void 0!==s?s:0}</td> 23*cf78ab8cSAndroid Build Coastguard Worker <td>${null!==(l=h.wifi.txCount)&&void 0!==l?l:0}</td> 24*cf78ab8cSAndroid Build Coastguard Worker </tr> 25*cf78ab8cSAndroid Build Coastguard Worker `)}return o` 26*cf78ab8cSAndroid Build Coastguard Worker ${c} 27*cf78ab8cSAndroid Build Coastguard Worker ${p} 28*cf78ab8cSAndroid Build Coastguard Worker ${b} 29*cf78ab8cSAndroid Build Coastguard Worker `}handleListCaptures(t){return o` 30*cf78ab8cSAndroid Build Coastguard Worker <tr> 31*cf78ab8cSAndroid Build Coastguard Worker <td>${t.deviceName}</td> 32*cf78ab8cSAndroid Build Coastguard Worker <td>${t.chipKind}</td> 33*cf78ab8cSAndroid Build Coastguard Worker <td>${t.size}</td> 34*cf78ab8cSAndroid Build Coastguard Worker <td>${t.records}</td> 35*cf78ab8cSAndroid Build Coastguard Worker <td> 36*cf78ab8cSAndroid Build Coastguard Worker <input 37*cf78ab8cSAndroid Build Coastguard Worker type="checkbox" 38*cf78ab8cSAndroid Build Coastguard Worker class="switch_1" 39*cf78ab8cSAndroid Build Coastguard Worker .checked=${t.state} 40*cf78ab8cSAndroid Build Coastguard Worker @click=${()=>{this.toggleCapture(t)}} 41*cf78ab8cSAndroid Build Coastguard Worker /> 42*cf78ab8cSAndroid Build Coastguard Worker </td> 43*cf78ab8cSAndroid Build Coastguard Worker <td> 44*cf78ab8cSAndroid Build Coastguard Worker <a 45*cf78ab8cSAndroid Build Coastguard Worker href="./v1/captures/${t.id}" 46*cf78ab8cSAndroid Build Coastguard Worker target="_blank" 47*cf78ab8cSAndroid Build Coastguard Worker type="application/vnd.tcpdump.pcap" 48*cf78ab8cSAndroid Build Coastguard Worker ><button>Download</button></a 49*cf78ab8cSAndroid Build Coastguard Worker > 50*cf78ab8cSAndroid Build Coastguard Worker </td> 51*cf78ab8cSAndroid Build Coastguard Worker </tr> 52*cf78ab8cSAndroid Build Coastguard Worker `}render(){return o` 53*cf78ab8cSAndroid Build Coastguard Worker <div class="panel"> 54*cf78ab8cSAndroid Build Coastguard Worker <div class="title">Packet Info</div> 55*cf78ab8cSAndroid Build Coastguard Worker ${this.deviceData.map((t=>o` 56*cf78ab8cSAndroid Build Coastguard Worker <div class="label">${t.name}</div> 57*cf78ab8cSAndroid Build Coastguard Worker <table class="styled-table"> 58*cf78ab8cSAndroid Build Coastguard Worker <tr> 59*cf78ab8cSAndroid Build Coastguard Worker <th>Radio</th> 60*cf78ab8cSAndroid Build Coastguard Worker <th>RX Count</th> 61*cf78ab8cSAndroid Build Coastguard Worker <th>TX Count</th> 62*cf78ab8cSAndroid Build Coastguard Worker </tr> 63*cf78ab8cSAndroid Build Coastguard Worker ${this.handleGetChips(t)} 64*cf78ab8cSAndroid Build Coastguard Worker </table> 65*cf78ab8cSAndroid Build Coastguard Worker `))} 66*cf78ab8cSAndroid Build Coastguard Worker </div> 67*cf78ab8cSAndroid Build Coastguard Worker <div class="panel"> 68*cf78ab8cSAndroid Build Coastguard Worker <div class="title">Packet Capture</div> 69*cf78ab8cSAndroid Build Coastguard Worker <table class="styled-table"> 70*cf78ab8cSAndroid Build Coastguard Worker <tr> 71*cf78ab8cSAndroid Build Coastguard Worker <th>Device Name</th> 72*cf78ab8cSAndroid Build Coastguard Worker <th>Chip Kind</th> 73*cf78ab8cSAndroid Build Coastguard Worker <th>Bytes</th> 74*cf78ab8cSAndroid Build Coastguard Worker <th>Records</th> 75*cf78ab8cSAndroid Build Coastguard Worker <th>Capture State</th> 76*cf78ab8cSAndroid Build Coastguard Worker <th>Download Pcap</th> 77*cf78ab8cSAndroid Build Coastguard Worker </tr> 78*cf78ab8cSAndroid Build Coastguard Worker ${this.captureData.map((t=>this.handleListCaptures(t)))} 79*cf78ab8cSAndroid Build Coastguard Worker </table> 80*cf78ab8cSAndroid Build Coastguard Worker </div> 81*cf78ab8cSAndroid Build Coastguard Worker `}};d.styles=e` 82*cf78ab8cSAndroid Build Coastguard Worker :host { 83*cf78ab8cSAndroid Build Coastguard Worker display: flex; 84*cf78ab8cSAndroid Build Coastguard Worker justify-content: center; 85*cf78ab8cSAndroid Build Coastguard Worker align-items: flex-start; 86*cf78ab8cSAndroid Build Coastguard Worker height: 100vh; 87*cf78ab8cSAndroid Build Coastguard Worker } 88*cf78ab8cSAndroid Build Coastguard Worker 89*cf78ab8cSAndroid Build Coastguard Worker .panel { 90*cf78ab8cSAndroid Build Coastguard Worker cursor: pointer; 91*cf78ab8cSAndroid Build Coastguard Worker display: grid; 92*cf78ab8cSAndroid Build Coastguard Worker place-content: center; 93*cf78ab8cSAndroid Build Coastguard Worker color: black; 94*cf78ab8cSAndroid Build Coastguard Worker font-size: 25px; 95*cf78ab8cSAndroid Build Coastguard Worker font-family: 'Lato', sans-serif; 96*cf78ab8cSAndroid Build Coastguard Worker border: 5px solid black; 97*cf78ab8cSAndroid Build Coastguard Worker border-radius: 12px; 98*cf78ab8cSAndroid Build Coastguard Worker margin: 10px; 99*cf78ab8cSAndroid Build Coastguard Worker padding: 10px; 100*cf78ab8cSAndroid Build Coastguard Worker background-color: #ffffff; 101*cf78ab8cSAndroid Build Coastguard Worker max-width: max-content; 102*cf78ab8cSAndroid Build Coastguard Worker float: left; 103*cf78ab8cSAndroid Build Coastguard Worker } 104*cf78ab8cSAndroid Build Coastguard Worker 105*cf78ab8cSAndroid Build Coastguard Worker .title { 106*cf78ab8cSAndroid Build Coastguard Worker font-weight: bold; 107*cf78ab8cSAndroid Build Coastguard Worker text-transform: uppercase; 108*cf78ab8cSAndroid Build Coastguard Worker text-align: center; 109*cf78ab8cSAndroid Build Coastguard Worker margin-bottom: 10px; 110*cf78ab8cSAndroid Build Coastguard Worker } 111*cf78ab8cSAndroid Build Coastguard Worker 112*cf78ab8cSAndroid Build Coastguard Worker .label { 113*cf78ab8cSAndroid Build Coastguard Worker text-align: left; 114*cf78ab8cSAndroid Build Coastguard Worker } 115*cf78ab8cSAndroid Build Coastguard Worker 116*cf78ab8cSAndroid Build Coastguard Worker .styled-table { 117*cf78ab8cSAndroid Build Coastguard Worker border-collapse: collapse; 118*cf78ab8cSAndroid Build Coastguard Worker margin: 25px 0; 119*cf78ab8cSAndroid Build Coastguard Worker font-size: 20px; 120*cf78ab8cSAndroid Build Coastguard Worker font-family: sans-serif; 121*cf78ab8cSAndroid Build Coastguard Worker width: 100%; 122*cf78ab8cSAndroid Build Coastguard Worker box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); 123*cf78ab8cSAndroid Build Coastguard Worker } 124*cf78ab8cSAndroid Build Coastguard Worker 125*cf78ab8cSAndroid Build Coastguard Worker .styled-table thead tr { 126*cf78ab8cSAndroid Build Coastguard Worker background-color: #009879; 127*cf78ab8cSAndroid Build Coastguard Worker color: #ffffff; 128*cf78ab8cSAndroid Build Coastguard Worker text-align: left; 129*cf78ab8cSAndroid Build Coastguard Worker } 130*cf78ab8cSAndroid Build Coastguard Worker 131*cf78ab8cSAndroid Build Coastguard Worker .styled-table th, 132*cf78ab8cSAndroid Build Coastguard Worker .styled-table td { 133*cf78ab8cSAndroid Build Coastguard Worker padding: 12px 15px; 134*cf78ab8cSAndroid Build Coastguard Worker text-align: left; 135*cf78ab8cSAndroid Build Coastguard Worker } 136*cf78ab8cSAndroid Build Coastguard Worker 137*cf78ab8cSAndroid Build Coastguard Worker .styled-table tbody tr { 138*cf78ab8cSAndroid Build Coastguard Worker border-bottom: 1px solid #dddddd; 139*cf78ab8cSAndroid Build Coastguard Worker } 140*cf78ab8cSAndroid Build Coastguard Worker 141*cf78ab8cSAndroid Build Coastguard Worker .styled-table tbody tr:nth-of-type(even) { 142*cf78ab8cSAndroid Build Coastguard Worker background-color: #cac0c0; 143*cf78ab8cSAndroid Build Coastguard Worker } 144*cf78ab8cSAndroid Build Coastguard Worker 145*cf78ab8cSAndroid Build Coastguard Worker input[type='button'] { 146*cf78ab8cSAndroid Build Coastguard Worker height: 2rem; 147*cf78ab8cSAndroid Build Coastguard Worker font-size: inherit; 148*cf78ab8cSAndroid Build Coastguard Worker } 149*cf78ab8cSAndroid Build Coastguard Worker 150*cf78ab8cSAndroid Build Coastguard Worker input[type='checkbox'].switch_1 { 151*cf78ab8cSAndroid Build Coastguard Worker font-size: 30px; 152*cf78ab8cSAndroid Build Coastguard Worker -webkit-appearance: none; 153*cf78ab8cSAndroid Build Coastguard Worker -moz-appearance: none; 154*cf78ab8cSAndroid Build Coastguard Worker appearance: none; 155*cf78ab8cSAndroid Build Coastguard Worker width: 3.5em; 156*cf78ab8cSAndroid Build Coastguard Worker height: 1.5em; 157*cf78ab8cSAndroid Build Coastguard Worker background: #ddd; 158*cf78ab8cSAndroid Build Coastguard Worker border-radius: 3em; 159*cf78ab8cSAndroid Build Coastguard Worker position: relative; 160*cf78ab8cSAndroid Build Coastguard Worker cursor: pointer; 161*cf78ab8cSAndroid Build Coastguard Worker outline: none; 162*cf78ab8cSAndroid Build Coastguard Worker -webkit-transition: all 0.2s ease-in-out; 163*cf78ab8cSAndroid Build Coastguard Worker transition: all 0.2s ease-in-out; 164*cf78ab8cSAndroid Build Coastguard Worker } 165*cf78ab8cSAndroid Build Coastguard Worker 166*cf78ab8cSAndroid Build Coastguard Worker input[type='checkbox'].switch_1:checked { 167*cf78ab8cSAndroid Build Coastguard Worker background: #0ebeff; 168*cf78ab8cSAndroid Build Coastguard Worker } 169*cf78ab8cSAndroid Build Coastguard Worker 170*cf78ab8cSAndroid Build Coastguard Worker input[type='checkbox'].switch_1:after { 171*cf78ab8cSAndroid Build Coastguard Worker position: absolute; 172*cf78ab8cSAndroid Build Coastguard Worker content: ''; 173*cf78ab8cSAndroid Build Coastguard Worker width: 1.5em; 174*cf78ab8cSAndroid Build Coastguard Worker height: 1.5em; 175*cf78ab8cSAndroid Build Coastguard Worker border-radius: 50%; 176*cf78ab8cSAndroid Build Coastguard Worker background: #fff; 177*cf78ab8cSAndroid Build Coastguard Worker -webkit-box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.3); 178*cf78ab8cSAndroid Build Coastguard Worker box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.3); 179*cf78ab8cSAndroid Build Coastguard Worker -webkit-transform: scale(0.7); 180*cf78ab8cSAndroid Build Coastguard Worker transform: scale(0.7); 181*cf78ab8cSAndroid Build Coastguard Worker left: 0; 182*cf78ab8cSAndroid Build Coastguard Worker -webkit-transition: all 0.2s ease-in-out; 183*cf78ab8cSAndroid Build Coastguard Worker transition: all 0.2s ease-in-out; 184*cf78ab8cSAndroid Build Coastguard Worker } 185*cf78ab8cSAndroid Build Coastguard Worker 186*cf78ab8cSAndroid Build Coastguard Worker input[type='checkbox'].switch_1:checked:after { 187*cf78ab8cSAndroid Build Coastguard Worker left: calc(100% - 1.5em); 188*cf78ab8cSAndroid Build Coastguard Worker } 189*cf78ab8cSAndroid Build Coastguard Worker 190*cf78ab8cSAndroid Build Coastguard Worker button { 191*cf78ab8cSAndroid Build Coastguard Worker display: inline-block; 192*cf78ab8cSAndroid Build Coastguard Worker padding: 12px 24px; 193*cf78ab8cSAndroid Build Coastguard Worker background-color: #4CAF50; 194*cf78ab8cSAndroid Build Coastguard Worker color: #FFFFFF; 195*cf78ab8cSAndroid Build Coastguard Worker font-size: 18px; 196*cf78ab8cSAndroid Build Coastguard Worker font-weight: bold; 197*cf78ab8cSAndroid Build Coastguard Worker text-align: center; 198*cf78ab8cSAndroid Build Coastguard Worker text-decoration: none; 199*cf78ab8cSAndroid Build Coastguard Worker border: none; 200*cf78ab8cSAndroid Build Coastguard Worker cursor: pointer; 201*cf78ab8cSAndroid Build Coastguard Worker transition: background-color 0.3s ease; 202*cf78ab8cSAndroid Build Coastguard Worker } 203*cf78ab8cSAndroid Build Coastguard Worker 204*cf78ab8cSAndroid Build Coastguard Worker button:hover { 205*cf78ab8cSAndroid Build Coastguard Worker background-color: #45a049; 206*cf78ab8cSAndroid Build Coastguard Worker transition: 0.5s; 207*cf78ab8cSAndroid Build Coastguard Worker } 208*cf78ab8cSAndroid Build Coastguard Worker `,t([a()],d.prototype,"captureData",void 0),t([a()],d.prototype,"deviceData",void 0),d=t([n("ns-packet-info")],d);export{d as PacketInformation}; 209