UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

1 lines 18.5 kB
export const __rspack_esm_id=7014;export const __rspack_esm_ids=[7014];export const __webpack_modules__={22130(s,a,t){t.r(a),t.d(a,{fetchAddonInfo:()=>b,fetchHassioAddonChangelog:()=>h,fetchHassioAddonDocumentation:()=>c,fetchHassioAddonInfo:()=>d,fetchHassioAddonLogs:()=>l,fetchHassioAddonsInfo:()=>n,installHassioAddon:()=>v,rebuildLocalAddon:()=>A,reloadHassioAddons:()=>o,restartHassioAddon:()=>f,setHassioAddonOption:()=>p,setHassioAddonSecurity:()=>m,startHassioAddon:()=>u,stopHassioAddon:()=>g,uninstallHassioAddon:()=>y,updateHassioAddon:()=>_,validateHassioAddonOption:()=>r});t(18111),t(20116);var e=t(35541),i=t(47351);const o=async s=>{await s.callWS({type:"supervisor/api",endpoint:"/addons/reload",method:"post"})},n=async s=>s.callWS({type:"supervisor/api",endpoint:"/addons",method:"get"}),d=async(s,a)=>s({type:"supervisor/api",endpoint:`/addons/${a}/info`,method:"get"}),h=async(s,a)=>s.callApi("GET",`hassio/addons/${a}/changelog`),l=async(s,a)=>s.callApi("GET",`hassio/addons/${a}/logs`),c=async(s,a)=>s.callApi("GET",`hassio/addons/${a}/documentation`),p=async(s,a,t)=>{const e=await s({type:"supervisor/api",endpoint:`/addons/${a}/options`,method:"post",data:t});if("error"===e.result)throw Error((0,i.VR)(e));return e},r=async(s,a,t)=>s({type:"supervisor/api",endpoint:`/addons/${a}/options/validate`,method:"post",data:t}),u=async(s,a)=>s({type:"supervisor/api",endpoint:`/addons/${a}/start`,method:"post",timeout:null}),g=async(s,a)=>s({type:"supervisor/api",endpoint:`/addons/${a}/stop`,method:"post",timeout:null}),m=async(s,a,t)=>{await s({type:"supervisor/api",endpoint:`/addons/${a}/security`,method:"post",data:t})},v=async(s,a)=>{await s({type:"supervisor/api",endpoint:`/addons/${a}/install`,method:"post",timeout:null})},_=async(s,a,t)=>{await s.callWS({type:"hassio/update/addon",addon:a,backup:t})},f=async(s,a)=>{await s({type:"supervisor/api",endpoint:`/addons/${a}/restart`,method:"post",timeout:null})},y=async(s,a,t)=>{await s({type:"supervisor/api",endpoint:`/addons/${a}/uninstall`,method:"post",timeout:null,data:{remove_config:t}})},b=(s,a,t)=>(0,e.X)(s,a.addon?.addons.find(s=>s.slug===t)?`/addons/${t}/info`:`/store/addons/${t}`),A=async(s,a)=>s({type:"supervisor/api",endpoint:`/addons/${a}/rebuild`,method:"post",timeout:null})},15336(s,a,t){t.d(a,{He:()=>l,Ku:()=>o,PB:()=>n,Wq:()=>r,hu:()=>h,mZ:()=>d,v9:()=>c,xY:()=>p});var e=t(62384),i=t(47351);const o=async s=>{if((0,e.v)(s.config.version,2021,2,4))return s.callWS({type:"supervisor/api",endpoint:"/host/info",method:"get"});const a=await s.callApi("GET","hassio/host/info");return(0,i.PS)(a)},n=async s=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/os/info",method:"get"}):(0,i.PS)(await s.callApi("GET","hassio/os/info")),d=async s=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/host/reboot",method:"post",timeout:null}):s.callApi("POST","hassio/host/reboot"),h=async s=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/host/shutdown",method:"post",timeout:null}):s.callApi("POST","hassio/host/shutdown"),l=async(s,a)=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/host/options",method:"post",data:a}):s.callApi("POST","hassio/host/options",a),c=async(s,a)=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/os/datadisk/move",method:"post",timeout:null,data:{device:a}}):s.callApi("POST","hassio/os/datadisk/move"),p=async s=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/os/datadisk/list",method:"get",timeout:null}):(0,i.PS)(await s.callApi("GET","/os/datadisk/list")),r=async s=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:"/host/disks/default/usage",method:"get",timeout:3600,params:{max_depth:3}}):(0,i.PS)(await s.callApi("GET","hassio/host/disks/default/usage"))},35541(s,a,t){t.d(a,{X:()=>o});var e=t(62384),i=t(47351);const o=async(s,a,t)=>(0,e.v)(s.config.version,2021,2,4)?s.callWS({type:"supervisor/api",endpoint:a,method:t?.method||"get",timeout:t?.timeout??null,data:t?.data}):(0,i.PS)(await s.callApi((t.method||"get").toUpperCase(),`hassio${a}`,t?.data))},59717(s,a,t){t.a(s,async function(s,a){try{t(74423),t(18111),t(7588),t(13579);var e=t(62826),i=t(5124),o=t(22441),n=t(22786),d=t(36312),h=t(1087),l=t(38962),c=t(18350),p=(t(11382),t(606)),r=t(65829),u=t(59646),g=t(34127),m=(t(28170),t(50723),t(22130)),v=t(15336),_=t(23528),f=t(46187),y=(t(76127),s([l,c,p,r,u,g]));[l,c,p,r,u,g]=y.then?(await y)():y;const b="M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17Z",A="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z",$="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z",C="M11,9H13V7H11M12,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,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z",w="M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,14.5V5.5L18,10L12,14.5Z",k="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z",H={homeassistant:!1,database:!1,media:!1,share:!1,local_addons:!1,addons_mode:"all",addons:[]};class x extends i.WF{firstUpdated(s){super.firstUpdated(s),this._checkDbOption(),(0,d.x)(this.hass.config,"hassio")&&(this._fetchAddons(),this._fetchStorageInfo())}updated(s){s.has("value")&&(0,d.x)(this.hass.config,"hassio")&&this.value?.include_addons?.length&&(this._showAddons=!0)}async _fetchAddons(){const{addons:s}=await(0,m.fetchHassioAddonsInfo)(this.hass);this._addons=s,(0,h.r)(this,"backup-addons-fetched")}async _checkDbOption(){if((0,d.x)(this.hass.config,"recorder")){const s=await(0,_.Z)(this.hass.connection);this._showDbOption=s.db_in_default_location,!this._showDbOption&&this.value?.include_database&&(this.value.include_database=!1)}else this._showDbOption=!1}async _fetchStorageInfo(){try{this._storageInfo=await(0,v.Wq)(this.hass)}catch(s){this._storageInfo=null}}_hasLocalAddons(s){return s.some(s=>"local"===s.slug)}_setData(s){const a=[...s.media?["media"]:[],...s.share?["share"]:[],...s.local_addons?["addons/local"]:[]],t="custom"===s.addons_mode?s.addons:[];this.value={include_homeassistant:s.homeassistant||s.database||this.forceHomeAssistant,include_addons:t.length?t:void 0,include_all_addons:"all"===s.addons_mode,include_database:s.database,include_folders:a.length?a:void 0},(0,h.r)(this,"value-changed",{value:this.value})}render(){const s=this._getData(this.value,this._showAddons),a=(0,d.x)(this.hass.config,"hassio");return i.qy` ${this._renderSizeEstimate()} <ha-list-base> <ha-list-item-base> <ha-svg-icon slot="start" .path="${A}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.ha_settings")} </span> <span slot="supporting-text"> ${this.forceHomeAssistant?this.hass.localize("ui.panel.config.backup.data.ha_settings_included_description"):this.hass.localize("ui.panel.config.backup.data.ha_settings_description")} </span> <ha-switch id="homeassistant" slot="end" @change="${this._switchChanged}" .checked="${s.homeassistant}" .disabled="${this.forceHomeAssistant||s.database}"></ha-switch> </ha-list-item-base> ${this._showDbOption?i.qy`<ha-list-item-base> <ha-svg-icon slot="start" .path="${b}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.history")} </span> <span slot="supporting-text"> ${this.hass.localize("ui.panel.config.backup.data.history_description")} </span> <ha-switch id="database" slot="end" @change="${this._switchChanged}" .checked="${s.database}"></ha-switch> </ha-list-item-base>`:i.s6} ${a?i.qy` <ha-list-item-base> <ha-svg-icon slot="start" .path="${w}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.media")} </span> <span slot="supporting-text"> ${this.hass.localize("ui.panel.config.backup.data.media_description")} </span> <ha-switch id="media" slot="end" @change="${this._switchChanged}" .checked="${s.media}"></ha-switch> </ha-list-item-base> <ha-list-item-base> <ha-svg-icon slot="start" .path="${$}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.share_folder")} </span> <span slot="supporting-text"> ${this.hass.localize("ui.panel.config.backup.data.share_folder_description")} </span> <ha-switch id="share" slot="end" @change="${this._switchChanged}" .checked="${s.share}"></ha-switch> </ha-list-item-base> ${this._hasLocalAddons(this._addons)?i.qy` <ha-list-item-base> <ha-svg-icon slot="start" .path="${$}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.local_apps")} </span> <span slot="supporting-text"> ${this.hass.localize("ui.panel.config.backup.data.local_apps_description")} </span> <ha-switch id="local_addons" slot="end" @change="${this._switchChanged}" .checked="${s.local_addons}"></ha-switch> </ha-list-item-base> `:i.s6} ${this._addons.length?i.qy` <ha-list-item-base> <ha-svg-icon slot="start" .path="${k}"></ha-svg-icon> <span slot="headline"> ${this.hass.localize("ui.panel.config.backup.data.apps")} </span> <span slot="supporting-text"> ${this.hass.localize("ui.panel.config.backup.data.apps_description")} </span> <ha-select slot="end" @selected="${this._selectChanged}" .value="${s.addons_mode}" .options="${[{value:"all",label:this.hass.localize("ui.panel.config.backup.data.apps_all")},{value:"none",label:this.hass.localize("ui.panel.config.backup.data.apps_none")},{value:"custom",label:this.hass.localize("ui.panel.config.backup.data.apps_custom")}]}"></ha-select> </ha-list-item-base> `:i.s6} `:i.s6} </ha-list-base> ${a&&this._showAddons&&this._addons.length?i.qy` <ha-expansion-panel .header="${this.hass.localize("ui.panel.config.backup.data.apps")}" outlined expanded> <ha-backup-addons-picker .hass="${this.hass}" .value="${s.addons}" @value-changed="${this._addonsChanged}" .addons="${this._addons}" .hideVersion="${this.hideAddonVersion}"></ha-backup-addons-picker> </ha-expansion-panel> `:i.s6} `}_switchChanged(s){const a=s.currentTarget,t=this._getData(this.value,this._showAddons);this._setData({...t,[a.id]:a.checked})}_selectChanged(s){const a=s.detail.value;if(!a)return;const t=this._getData(this.value,this._showAddons);this._setData({...t,addons_mode:a}),this._showAddons="custom"===a}_addonsChanged(s){s.stopPropagation();const a=s.detail.value,t=this._getData(this.value,this._showAddons);this._setData({...t,addons:a})}_renderSizeEstimate(){if(!(0,d.x)(this.hass.config,"hassio"))return i.s6;const s=this._getData(this.value,this._showAddons);if(!(s.homeassistant||s.database||s.media||s.share||s.local_addons||"all"===s.addons_mode||"custom"===s.addons_mode&&s.addons.length>0))return i.s6;if(void 0===this._storageInfo)return i.qy` <ha-alert alert-type="info"> <ha-spinner slot="icon"></ha-spinner> ${this.hass.localize("ui.panel.config.backup.data.estimated_size_loading")} </ha-alert> `;if(!this._storageInfo||!this._storageInfo.children)return i.s6;const a=this._estimateBackupSize(s,this._storageInfo,this._addons.length);if(null===a)return i.s6;const{compressedBytes:t,addonsNotAccurate:e}=a;return i.qy` <span class="estimated-size"> <span class="estimated-size-heading"> ${this.hass.localize("ui.panel.config.backup.data.estimated_size")} <ha-svg-icon id="estimated-size-info" .path="${C}"></ha-svg-icon> <ha-tooltip for="estimated-size-info" placement="right"> ${this.hass.localize("ui.panel.config.backup.data.estimated_size_disclaimer")} ${e?i.qy`<br><br>${this.hass.localize("ui.panel.config.backup.data.estimated_size_disclaimer_apps_custom")}`:i.s6} </ha-tooltip> </span> <span class="estimated-size-value"> ${(0,f.A)(t)} </span> </span> `}constructor(...s){super(...s),this.forceHomeAssistant=!1,this.hideAddonVersion=!1,this._addons=[],this._showAddons=!1,this._showDbOption=!0,this._estimateBackupSize=(0,n.A)((s,a,t)=>{if(!a?.children)return null;let e=0;const i={};return a.children.forEach(s=>{i[s.id]=s.used_bytes}),s.homeassistant&&(e+=i.homeassistant??0),s.media&&(e+=i.media??0),s.share&&(e+=i.share??0),("all"===s.addons_mode||"custom"===s.addons_mode&&s.addons.length>0)&&(e+=(i.addons_data??0)+(i.addons_config??0)),{compressedBytes:Math.round(.6*e),addonsNotAccurate:"custom"===s.addons_mode&&s.addons.length>0&&s.addons.length!==t}}),this._getData=(0,n.A)((s,a)=>{if(!s)return H;const t=s,e=t.include_addons?.slice()??[];return{homeassistant:t.include_homeassistant||this.forceHomeAssistant,database:t.include_database,media:t.include_folders?.includes("media")||!1,share:t.include_folders?.includes("share")||!1,local_addons:t.include_folders?.includes("addons/local")||!1,addons_mode:t.include_all_addons?"all":e.length>0||a?"custom":"none",addons:e}})}}x.styles=i.AH`.estimated-size{display:block;margin-top:var(--ha-space-2);font-size:var(--ha-font-size-m)}.estimated-size-heading{font-size:var(--ha-font-size-m);line-height:var(--ha-line-height-expanded)}.estimated-size-heading ha-svg-icon{--mdc-icon-size:16px;color:var(--secondary-text-color);margin-inline-start:var(--ha-space-1);vertical-align:middle}.estimated-size-value{display:block;font-size:var(--ha-font-size-s);color:var(--secondary-text-color)}ha-spinner{--ha-spinner-size:24px}ha-list-base{--ha-row-item-padding-inline:0}ha-list-item-base::part(headline),ha-list-item-base::part(supporting-text){white-space:wrap}ha-list-item-base::part(start){color:var(--ha-color-text-secondary)}ha-select{min-width:210px}@media all and (max-width:450px){ha-select{min-width:140px;width:140px}}ha-expansion-panel{margin-bottom:var(--ha-space-4)}`,(0,e.Cg)([(0,o.MZ)({attribute:!1})],x.prototype,"hass",void 0),(0,e.Cg)([(0,o.MZ)({type:Boolean,attribute:"force-home-assistant"})],x.prototype,"forceHomeAssistant",void 0),(0,e.Cg)([(0,o.MZ)({attribute:"hide-addon-version",type:Boolean})],x.prototype,"hideAddonVersion",void 0),(0,e.Cg)([(0,o.wk)()],x.prototype,"value",void 0),(0,e.Cg)([(0,o.wk)()],x.prototype,"_addons",void 0),(0,e.Cg)([(0,o.wk)()],x.prototype,"_showAddons",void 0),(0,e.Cg)([(0,o.wk)()],x.prototype,"_showDbOption",void 0),(0,e.Cg)([(0,o.wk)()],x.prototype,"_storageInfo",void 0),x=(0,e.Cg)([(0,o.EM)("ha-backup-config-data")],x),a()}catch(s){a(s)}})},76127(s,a,t){t(74423),t(44114),t(18111),t(22489),t(20116),t(61701);var e=t(62826),i=t(5124),o=t(22441),n=t(22786),d=t(1087),h=t(52220);t(9503),t(27826);class l extends i.WF{render(){return i.qy` <div class="items"> ${this._addons(this.addons).map(s=>i.qy` <ha-checkbox .id="${s.slug}" .checked="${this.value?.includes(s.slug)||!1}" @change="${this._checkboxChanged}" .disabled="${this.disabled}"> <ha-backup-formfield-label .label="${s.name}" .version="${this.hideVersion?void 0:s.version}" .iconPath="${s.iconPath||"M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z"}" .imageUrl="${this.addons?.find(a=>a.slug===s.slug)?.icon?`/api/hassio/addons/${s.slug}/icon`:void 0}"> </ha-backup-formfield-label> </ha-checkbox> `)} </div> `}_checkboxChanged(s){s.stopPropagation();let a=this.value??[];const t=s.currentTarget;t.checked?a.push(t.id):a=a.filter(s=>s!==t.id),(0,d.r)(this,"value-changed",{value:a})}constructor(...s){super(...s),this.hideVersion=!1,this.disabled=!1,this._addons=(0,n.A)(s=>s.sort((s,a)=>(0,h.xL)(s.name,a.name,this.hass?.locale?.language)))}}l.styles=i.AH`.items{display:flex;flex-direction:column;gap:var(--ha-space-2);padding-inline-start:var(--ha-space-2);padding-bottom:var(--ha-space-3)}`,(0,e.Cg)([(0,o.MZ)({attribute:!1})],l.prototype,"hass",void 0),(0,e.Cg)([(0,o.MZ)({attribute:!1})],l.prototype,"addons",void 0),(0,e.Cg)([(0,o.MZ)({attribute:!1})],l.prototype,"value",void 0),(0,e.Cg)([(0,o.MZ)({attribute:"hide-version",type:Boolean})],l.prototype,"hideVersion",void 0),(0,e.Cg)([(0,o.MZ)({type:Boolean})],l.prototype,"disabled",void 0),l=(0,e.Cg)([(0,o.EM)("ha-backup-addons-picker")],l)},27826(s,a,t){var e=t(62826),i=t(5124),o=t(22441);t(67094);class n extends i.WF{render(){return i.qy` ${this.imageUrl?i.qy`<img loading="lazy" alt="" src="${this.imageUrl}" class="icon">`:this.iconPath?i.qy` <ha-svg-icon .path="${this.iconPath}" class="icon"></ha-svg-icon> `:i.s6} <span class="label"> ${this.label} ${this.version?i.qy`<span class="version">(${this.version})</span>`:i.s6} </span> `}}n.styles=i.AH`:host{display:flex;flex-direction:row;gap:var(--ha-space-1);align-items:center}.label{margin-right:4px;margin-inline-end:4px;margin-inline-start:initial;font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-normal);letter-spacing:.5px}.version{color:var(--secondary-text-color)}.icon{--mdi-icon-size:24px;width:24px;height:24px}`,(0,e.Cg)([(0,o.MZ)({type:String})],n.prototype,"label",void 0),(0,e.Cg)([(0,o.MZ)({type:String,attribute:"image-url"})],n.prototype,"imageUrl",void 0),(0,e.Cg)([(0,o.MZ)({type:String,attribute:"icon-path"})],n.prototype,"iconPath",void 0),(0,e.Cg)([(0,o.MZ)({type:String})],n.prototype,"version",void 0),n=(0,e.Cg)([(0,o.EM)("ha-backup-formfield-label")],n)}};