iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
16 lines • 18.6 kB
JavaScript
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[65463],{76776:function(t,a,e){e(62953);var o=e(40445),r=e(5124),i=e(67576);let n,s,c,l=t=>t;class h extends r.WF{render(){return(0,r.qy)(n||(n=l` ${0} <slot></slot> `),this.header?(0,r.qy)(s||(s=l`<h1 class="card-header">${0}</h1>`),this.header):r.s6)}constructor(...t){super(...t),this.raised=!1}}h.styles=(0,r.AH)(c||(c=l`:host{background:var(--ha-card-background,var(--card-background-color,#fff));-webkit-backdrop-filter:var(--ha-card-backdrop-filter,none);backdrop-filter:var(--ha-card-backdrop-filter,none);box-shadow:var(--ha-card-box-shadow,none);box-sizing:border-box;border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));border-width:var(--ha-card-border-width,1px);border-style:solid;border-color:var(--ha-card-border-color,var(--divider-color,#e0e0e0));color:var(--primary-text-color);display:block;transition:all .3s ease-out;position:relative}:host([raised]){border:none;box-shadow:var(--ha-card-box-shadow,0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12))}.card-header,:host ::slotted(.card-header){color:var(--ha-card-header-color,var(--primary-text-color));font-family:var(--ha-card-header-font-family, inherit);font-size:var(--ha-card-header-font-size, var(--ha-font-size-2xl));letter-spacing:-.012em;line-height:var(--ha-line-height-expanded);padding:var(--ha-space-3) var(--ha-space-4) var(--ha-space-4);display:block;margin-block-start:0;margin-block-end:0;font-weight:var(--ha-font-weight-normal)}
:host
::slotted(
.card-content:not(:nth-child(1 of .card-content, .card-header))
),
slot:not(:first-child)::slotted(.card-content) {
padding-top: 0;
margin-top: calc(var(--ha-space-2) * -1);
}
:host ::slotted(.card-content){padding:var(--ha-space-4)}:host ::slotted(.card-actions){border-top:1px solid var(--divider-color,#e8e8e8);padding:var(--ha-space-2)}`)),(0,o.Cg)([(0,i.MZ)()],h.prototype,"header",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean,reflect:!0})],h.prototype,"raised",void 0),h=(0,o.Cg)([(0,i.EM)("ha-card")],h)},43661:function(t,a,e){e.r(a),e.d(a,{HaIconNext:function(){return s}});e(62953);var o=e(40445),r=e(67576),i=e(63091),n=e(67094);class s extends n.HaSvgIcon{constructor(...t){super(...t),this.path="rtl"===i.G.document.dir?"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z":"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"}}(0,o.Cg)([(0,r.MZ)()],s.prototype,"path",void 0),s=(0,o.Cg)([(0,r.EM)("ha-icon-next")],s)},2846:function(t,a,e){e.d(a,{G:function(){return p},J:function(){return d}});var o=e(40445),r=e(58168),i=e(82553),n=e(5124),s=e(67576);e(54276);let c,l,h=t=>t;const d=[i.R,(0,n.AH)(c||(c=h`:host{--ha-icon-display:block;--md-sys-color-primary:var(--primary-text-color);--md-sys-color-secondary:var(--secondary-text-color);--md-sys-color-surface:var(--card-background-color);--md-sys-color-on-surface:var(--primary-text-color);--md-sys-color-on-surface-variant:var(--secondary-text-color)}md-item{overflow:var(--md-item-overflow,hidden);align-items:var(--md-item-align-items,center);gap:var(--ha-md-list-item-gap,16px)}`))];class p extends r.n{renderRipple(){return"text"===this.type?n.s6:(0,n.qy)(l||(l=h`<ha-ripple part="ripple" for="item" ?disabled="${0}"></ha-ripple>`),this.disabled&&"link"!==this.type)}}p.styles=d,p=(0,o.Cg)([(0,s.EM)("ha-md-list-item")],p)},17308:function(t,a,e){var o=e(40445),r=e(49838),i=e(11245),n=e(5124),s=e(67576);let c;class l extends r.B{}l.styles=[i.R,(0,n.AH)(c||(c=(t=>t)`:host{--md-sys-color-surface:var(--card-background-color)}`))],l=(0,o.Cg)([(0,s.EM)("ha-md-list")],l)},54276:function(t,a,e){e(62953);var o=e(40445),r=e(76482),i=e(91382),n=e(96245),s=e(5124),c=e(67576);let l;class h extends i.n{attach(t){super.attach(t),this.attachableTouchController.attach(t)}disconnectedCallback(){super.disconnectedCallback(),this.hovered=!1,this.pressed=!1}detach(){super.detach(),this.attachableTouchController.detach()}_onTouchControlChange(t,a){null==t||t.removeEventListener("touchend",this._handleTouchEnd),null==a||a.addEventListener("touchend",this._handleTouchEnd)}constructor(...t){super(...t),this.attachableTouchController=new r.i(this,this._onTouchControlChange.bind(this)),this._handleTouchEnd=()=>{this.disabled||super.endPressAnimation()}}}h.styles=[n.R,(0,s.AH)(l||(l=(t=>t)`:host{--md-ripple-hover-opacity:var(--ha-ripple-hover-opacity, 0.08);--md-ripple-pressed-opacity:var(--ha-ripple-pressed-opacity, 0.12);--md-ripple-hover-color:var(
--ha-ripple-hover-color,
var(--ha-ripple-color, var(--secondary-text-color))
);--md-ripple-pressed-color:var(
--ha-ripple-pressed-color,
var(--ha-ripple-color, var(--secondary-text-color))
)}`))],h=(0,o.Cg)([(0,c.EM)("ha-ripple")],h)},81310:function(t,a,e){e.a(t,async function(t,a){try{e(62953);var o=e(40445),r=e(5124),i=e(67576),n=e(6412),s=e(26218),c=e(91926),l=e(90248),h=e(2054),d=e(14503),p=t([l,h]);[l,h]=p.then?(await p)():p;let v,u,b,g,f,m=t=>t;class C extends r.WF{render(){var t;return(0,r.qy)(v||(v=m` <div class="toolbar ${0}"> <div class="toolbar-content"> ${0} <div class="main-title"> <slot name="header">${0}</slot> </div> <slot name="toolbar-icon"></slot> </div> </div> <div class="${0}" ="${0}"> <slot></slot> </div> <div id="fab"> <slot name="fab"></slot> </div> `),(0,n.H)({narrow:this.narrow}),this.mainPage||null!==(t=history.state)&&void 0!==t&&t.root?(0,r.qy)(u||(u=m` <ha-menu-button .hass="${0}" .narrow="${0}"></ha-menu-button> `),this.hass,this.narrow):this.backPath?(0,r.qy)(b||(b=m` <ha-icon-button-arrow-prev href="${0}" .hass="${0}"></ha-icon-button-arrow-prev> `),this.backPath,this.hass):(0,r.qy)(g||(g=m` <ha-icon-button-arrow-prev .hass="${0}" ="${0}"></ha-icon-button-arrow-prev> `),this.hass,this._backTapped),this.header,(0,n.H)({content:!0,"ha-scrollbar":this.scrollable,"not-scrollable":!this.scrollable}),this._saveScrollPos)}_saveScrollPos(t){this._savedScrollPos=t.target.scrollTop}_backTapped(){this.backCallback?this.backCallback():(0,c.OE)()}static get styles(){return[d.dp,(0,r.AH)(f||(f=m`:host{display:block;height:100%;background-color:var(--primary-background-color);overflow:hidden;position:relative}:host([narrow]){width:100%;position:fixed}.toolbar{background-color:var(--app-header-background-color);padding-top:var(--safe-area-inset-top);padding-right:var(--safe-area-inset-right)}:host([narrow]) .toolbar{padding-left:var(--safe-area-inset-left)}.toolbar-content{display:flex;align-items:center;font-size:var(--ha-font-size-xl);height:var(--header-height);font-weight:var(--ha-font-weight-normal);color:var(--app-header-text-color,#fff);border-bottom:var(--app-header-border-bottom,none);box-sizing:border-box;padding:8px 12px}.toolbar a{color:var(--sidebar-text-color);text-decoration:none}::slotted([slot=toolbar-icon]),ha-icon-button-arrow-prev,ha-menu-button{display:flex;align-items:center;pointer-events:auto;color:var(--sidebar-icon-color)}.main-title{margin-inline-start:var(--ha-space-6);line-height:var(--ha-line-height-normal);min-width:0;flex-grow:1;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.narrow .main-title{margin-inline-start:var(--ha-space-2)}.content{position:relative;width:calc(100% - var(--safe-area-inset-right,0px));height:calc(100% - 1px - var(--header-height,0px) - var(--safe-area-inset-top,0px) - var(--safe-area-inset-bottom,0px));padding-bottom:var(--safe-area-inset-bottom,0px);margin-right:var(--safe-area-inset-right);overflow-y:auto;overflow:auto;-webkit-overflow-scrolling:touch}.content.not-scrollable{overflow:hidden;display:flex;flex-direction:column}:host([narrow]) .content{width:calc(100% - var(--safe-area-inset-left,0px) - var(--safe-area-inset-right,0px));margin-left:var(--safe-area-inset-left)}#fab{position:absolute;right:calc(16px + var(--safe-area-inset-right,0px));inset-inline-end:calc(16px + var(--safe-area-inset-right,0px));inset-inline-start:initial;bottom:calc(16px + var(--safe-area-inset-bottom,0px));z-index:1;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--ha-space-2);--ha-button-box-shadow:var(--ha-box-shadow-l)}:host([narrow]) #fab.tabs{bottom:calc(84px + var(--safe-area-inset-bottom,0px))}#fab[is-wide]{bottom:calc(24px + var(--safe-area-inset-bottom,0px));right:calc(24px + var(--safe-area-inset-right,0px));inset-inline-end:calc(24px + var(--safe-area-inset-right,0px));inset-inline-start:initial}`))]}constructor(...t){super(...t),this.mainPage=!1,this.narrow=!1,this.scrollable=!0}}(0,o.Cg)([(0,i.MZ)({attribute:!1})],C.prototype,"hass",void 0),(0,o.Cg)([(0,i.MZ)()],C.prototype,"header",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean,attribute:"main-page"})],C.prototype,"mainPage",void 0),(0,o.Cg)([(0,i.MZ)({type:String,attribute:"back-path"})],C.prototype,"backPath",void 0),(0,o.Cg)([(0,i.MZ)({attribute:!1})],C.prototype,"backCallback",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean,reflect:!0})],C.prototype,"narrow",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean})],C.prototype,"scrollable",void 0),(0,o.Cg)([(0,s.a)(".content")],C.prototype,"_savedScrollPos",void 0),(0,o.Cg)([(0,i.Ls)({passive:!0})],C.prototype,"_saveScrollPos",null),C=(0,o.Cg)([(0,i.EM)("hass-subpage")],C),a()}catch(v){a(v)}})},34301:function(t,a,e){e.a(t,async function(t,o){try{e.r(a),e.d(a,{BluetoothConfigDashboard:function(){return _}});e(72712),e(18111),e(22489),e(18237),e(13579),e(3362),e(62953);var r=e(40445),i=e(5124),n=e(67576),s=e(18350),c=(e(76776),e(43661),e(17308),e(2846),e(67094),e(21030)),l=e(77423),h=e(81310),d=e(14503),p=e(44144),v=t([s,h]);[s,h]=v.then?(await v)():v;let u,b,g=t=>t;const f="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z",m="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z",C="M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M18 12C18 8.7 15.3 6 12 6S6 8.7 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 9.9 9.8 8.1 12 8.1S16 9.9 16 12.1C16 13.6 15.2 14.9 14 15.5L15 17.2C16.8 16.2 18 14.2 18 12M12 2C6.5 2 2 6.5 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 7.6 7.6 4 12 4S20 7.6 20 12C20 15 18.4 17.5 16 18.9L17 20.6C20 18.9 22 15.7 22 12C22 6.5 17.5 2 12 2Z",y="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z",x="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z",w="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z",k="M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3M4 5H6V7H4M18 7H20V9H18M8 17H10V19H8Z";class _ extends i.WF{connectedCallback(){super.connectedCallback(),this.hass&&(this._loadConfigEntries(),this._subscribeBluetoothConnectionAllocations(),this._subscribeBluetoothScannerState(),this._subscribeBluetoothAdvertisements())}async _loadConfigEntries(){this._configEntries=await(0,l.VN)(this.hass,{domain:"bluetooth"})}async _subscribeBluetoothConnectionAllocations(){this._unsubConnectionAllocations||(this._unsubConnectionAllocations=await(0,c.gO)(this.hass.connection,t=>{this._connectionAllocationData=t}))}async _subscribeBluetoothScannerState(){this._unsubScannerState||(this._unsubScannerState=await(0,c.wj)(this.hass.connection,t=>{this._scannerStates=Object.assign(Object.assign({},this._scannerStates),{},{[t.source]:t})}))}_subscribeBluetoothAdvertisements(){this._unsubAdvertisements||(this._unsubAdvertisements=(0,c.Ht)(this.hass.connection,t=>{this._advertisementData=t}))}disconnectedCallback(){super.disconnectedCallback(),this._unsubConnectionAllocations&&(this._unsubConnectionAllocations(),this._unsubConnectionAllocations=void 0),this._unsubScannerState&&(this._unsubScannerState(),this._unsubScannerState=void 0),this._unsubAdvertisements&&(this._unsubAdvertisements(),this._unsubAdvertisements=void 0)}render(){var t;const a=this._configEntries.filter(t=>null===t.disabled_by).length,e=this._connectionAllocationData.reduce((t,a)=>t+a.slots,0),o=this._connectionAllocationData.reduce((t,a)=>t+(a.slots-a.free),0),r=Object.values(this._scannerStates).some(c.SB),n=0===a,s=n?"offline":r?"warning":"online",l=n?x:r?m:y;return(0,i.qy)(u||(u=g` <hass-subpage .hass="${0}" .narrow="${0}" .header="${0}" back-path="/config"> <div class="container"> <ha-card class="content network-status"> <div class="card-content"> <div class="heading"> <div class="icon ${0}"> <ha-svg-icon .path="${0}"></ha-svg-icon> </div> <div class="details"> ${0}<br> <small> ${0} </small> </div> <img class="logo" alt="Bluetooth" crossorigin="anonymous" referrerpolicy="no-referrer" src="${0}"> </div> </div> </ha-card> <ha-card class="network-card"> <div class="card-header"> ${0} <ha-button appearance="filled" href="/config/bluetooth/visualization"> <ha-svg-icon slot="start" .path="${0}"></ha-svg-icon> ${0} </ha-button> </div> <div class="card-content network-card-content"> <ha-md-list> <ha-md-list-item type="link" href="/config/bluetooth/adapter-info"> <ha-svg-icon slot="start" .path="${0}"></ha-svg-icon> <div slot="headline"> ${0} </div> <ha-icon-next slot="end"></ha-icon-next> </ha-md-list-item> <ha-md-list-item type="link" href="/config/bluetooth/connection-monitor"> <ha-svg-icon slot="start" .path="${0}"></ha-svg-icon> <div slot="headline"> ${0} </div> <ha-icon-next slot="end"></ha-icon-next> </ha-md-list-item> <ha-md-list-item type="link" href="/config/bluetooth/advertisement-monitor"> <ha-svg-icon slot="start" .path="${0}"></ha-svg-icon> <div slot="headline"> ${0} </div> <ha-icon-next slot="end"></ha-icon-next> </ha-md-list-item> </ha-md-list> </div> </ha-card> </div> </hass-subpage> `),this.hass,this.narrow,this.hass.localize("ui.panel.config.bluetooth.title"),s,l,this.hass.localize(`ui.panel.config.bluetooth.status_${s}`),this.hass.localize("ui.panel.config.bluetooth.connections_summary",{used:o,total:e}),(0,p.MR)({domain:"bluetooth",type:"icon",darkOptimized:null===(t=this.hass.themes)||void 0===t?void 0:t.darkMode},this.hass.auth.data.hassUrl),this.hass.localize("ui.panel.config.bluetooth.my_network"),k,this.hass.localize("ui.panel.config.bluetooth.show_map"),f,this.hass.localize("ui.panel.config.bluetooth.adapters_count",{count:a}),w,this.hass.localize("ui.panel.config.bluetooth.connections_count",{count:o}),C,this.hass.localize("ui.panel.config.bluetooth.advertisements_count",{count:this._advertisementData.length}))}static get styles(){return[d.RF,(0,i.AH)(b||(b=g`.container{padding:var(--ha-space-2) var(--ha-space-4) var(--ha-space-4)}ha-card{margin:0px auto var(--ha-space-4);max-width:600px}.content{margin-top:var(--ha-space-6)}ha-md-list{background:0 0;padding:0}.network-card{overflow:hidden}.network-card .card-content{padding:0}.network-card .card-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--ha-space-2)}.network-status div.heading{display:flex;align-items:center;column-gap:var(--ha-space-4)}.network-status div.heading .logo{height:40px;width:40px;margin-inline-start:auto;object-fit:contain}.network-status div.heading .icon{position:relative;border-radius:var(--ha-border-radius-2xl);width:var(--ha-space-10);height:var(--ha-space-10);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;--icon-color:var(--primary-color)}.network-status div.heading .icon.online{--icon-color:var(--success-color)}.network-status div.heading .icon.warning{--icon-color:var(--warning-color)}.network-status div.heading .icon.offline{--icon-color:var(--error-color)}.network-status div.heading .icon::before{display:block;content:"";position:absolute;inset:0;background-color:var(--icon-color,var(--primary-color));opacity:.2}.network-status div.heading .icon ha-svg-icon{color:var(--icon-color,var(--primary-color));width:var(--ha-space-6);height:var(--ha-space-6)}.network-status div.heading .details{font-size:var(--ha-font-size-xl);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-condensed);color:var(--primary-text-color)}.network-status small{font-size:var(--ha-font-size-m);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-condensed);letter-spacing:.25px;color:var(--secondary-text-color)}`))]}constructor(...t){super(...t),this.narrow=!1,this.isWide=!1,this._configEntries=[],this._connectionAllocationData=[],this._scannerStates={},this._advertisementData=[]}}(0,r.Cg)([(0,n.MZ)({attribute:!1})],_.prototype,"hass",void 0),(0,r.Cg)([(0,n.MZ)({attribute:!1})],_.prototype,"route",void 0),(0,r.Cg)([(0,n.MZ)({type:Boolean})],_.prototype,"narrow",void 0),(0,r.Cg)([(0,n.MZ)({attribute:"is-wide",type:Boolean})],_.prototype,"isWide",void 0),(0,r.Cg)([(0,n.wk)()],_.prototype,"_configEntries",void 0),(0,r.Cg)([(0,n.wk)()],_.prototype,"_connectionAllocationData",void 0),(0,r.Cg)([(0,n.wk)()],_.prototype,"_scannerStates",void 0),(0,r.Cg)([(0,n.wk)()],_.prototype,"_advertisementData",void 0),_=(0,r.Cg)([(0,n.EM)("bluetooth-config-dashboard")],_),o()}catch(u){o(u)}})}}]);