iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
2 lines • 14.9 kB
JavaScript
"use strict";(self.webpackChunkhome_assistant_frontend=self.webpackChunkhome_assistant_frontend||[]).push([["72308"],{78951:function(e,i,t){t.a(e,(async function(e,i){try{var a=t(61701),o=t(72621),l=(t(71695),t(9359),t(70104),t(47021),t(87515)),n=t(57243),s=t(50778),r=t(35359),d=t(36522),c=(t(59826),t(23334),t(45061)),u=t(95262),h=t(90698),p=e([l]);l=(p.then?(await p)():p)[0];let v,g,f,m,y,k,b,_,$=e=>e;const x="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",C="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z";(0,a.Z)([(0,s.Mo)("ha-file-upload")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"localize",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"accept",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"icon",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"secondary",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"uploading-label"})],key:"uploadingLabel",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"delete-label"})],key:"deleteLabel",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"supports",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Object})],key:"value",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"multiple",value(){return!1}},{kind:"field",decorators:[(0,s.Cb)({type:Boolean,reflect:!0})],key:"disabled",value(){return!1}},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"uploading",value(){return!1}},{kind:"field",decorators:[(0,s.Cb)({type:Number})],key:"progress",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Boolean,attribute:"auto-open-file-dialog"})],key:"autoOpenFileDialog",value(){return!1}},{kind:"field",decorators:[(0,s.SB)()],key:"_drag",value(){return!1}},{kind:"field",decorators:[(0,s.IO)("#input")],key:"_input",value:void 0},{kind:"method",key:"firstUpdated",value:function(e){(0,o.Z)(t,"firstUpdated",this,3)([e]),this.autoOpenFileDialog&&this._openFilePicker()}},{kind:"get",key:"_name",value:function(){if(void 0===this.value)return"";if("string"==typeof this.value)return this.value;return(this.value instanceof FileList?Array.from(this.value):(0,u.r)(this.value)).map((e=>e.name)).join(", ")}},{kind:"method",key:"render",value:function(){const e=this.localize||this.hass.localize;return(0,n.dy)(v||(v=$` ${0} `),this.uploading?(0,n.dy)(g||(g=$`<div class="container"> <div class="uploading"> <span class="header">${0}</span> ${0} </div> <mwc-linear-progress .indeterminate="${0}" .progress="${0}"></mwc-linear-progress> </div>`),this.uploadingLabel||this.value?e("ui.components.file-upload.uploading_name",{name:this._name}):e("ui.components.file-upload.uploading"),this.progress?(0,n.dy)(f||(f=$`<div class="progress"> ${0}${0}% </div>`),this.progress,this.hass&&(0,c.K)(this.hass.locale)):n.Ld,!this.progress,this.progress?this.progress/100:void 0):(0,n.dy)(m||(m=$`<label for="${0}" class="container ${0}" ="${0}" ="${0}" ="${0}" ="${0}" ="${0}">${0} <input id="input" type="file" class="file" .accept="${0}" .multiple="${0}" ="${0}"></label>`),this.value?"":"input",(0,r.$)({dragged:this._drag,multiple:this.multiple,value:Boolean(this.value)}),this._handleDrop,this._handleDragStart,this._handleDragStart,this._handleDragEnd,this._handleDragEnd,this.value?"string"==typeof this.value?(0,n.dy)(k||(k=$`<div class="row"> <div class="value" ="${0}"> <ha-svg-icon .path="${0}"></ha-svg-icon> ${0} </div> <ha-icon-button ="${0}" .label="${0}" .path="${0}"></ha-icon-button> </div>`),this._openFilePicker,this.icon||C,this.value,this._clearValue,this.deleteLabel||e("ui.common.delete"),x):(this.value instanceof FileList?Array.from(this.value):(0,u.r)(this.value)).map((i=>(0,n.dy)(b||(b=$`<div class="row"> <div class="value" ="${0}"> <ha-svg-icon .path="${0}"></ha-svg-icon> ${0} - ${0} </div> <ha-icon-button ="${0}" .label="${0}" .path="${0}"></ha-icon-button> </div>`),this._openFilePicker,this.icon||C,i.name,(0,h.d)(i.size),this._clearValue,this.deleteLabel||e("ui.common.delete"),x))):(0,n.dy)(y||(y=$`<ha-svg-icon class="big-icon" .path="${0}"></ha-svg-icon> <ha-button unelevated ="${0}"> ${0} </ha-button> <span class="secondary">${0}</span> <span class="supports">${0}</span>`),this.icon||C,this._openFilePicker,this.label||e("ui.components.file-upload.label"),this.secondary||e("ui.components.file-upload.secondary"),this.supports),this.accept,this.multiple,this._handleFilePicked))}},{kind:"method",key:"_openFilePicker",value:function(){var e;null===(e=this._input)||void 0===e||e.click()}},{kind:"method",key:"_handleDrop",value:function(e){var i;e.preventDefault(),e.stopPropagation(),null!==(i=e.dataTransfer)&&void 0!==i&&i.files&&(0,d.B)(this,"file-picked",{files:this.multiple||1===e.dataTransfer.files.length?Array.from(e.dataTransfer.files):[e.dataTransfer.files[0]]}),this._drag=!1}},{kind:"method",key:"_handleDragStart",value:function(e){e.preventDefault(),e.stopPropagation(),this._drag=!0}},{kind:"method",key:"_handleDragEnd",value:function(e){e.preventDefault(),e.stopPropagation(),this._drag=!1}},{kind:"method",key:"_handleFilePicked",value:function(e){0!==e.target.files.length&&(this.value=e.target.files,(0,d.B)(this,"file-picked",{files:e.target.files}))}},{kind:"method",key:"_clearValue",value:function(e){e.preventDefault(),this._input.value="",this.value=void 0,(0,d.B)(this,"change"),(0,d.B)(this,"files-cleared")}},{kind:"field",static:!0,key:"styles",value(){return(0,n.iv)(_||(_=$`:host{display:block;height:240px}:host([disabled]){pointer-events:none;color:var(--disabled-text-color)}.container{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;border:solid 1px var(--mdc-text-field-idle-line-color,rgba(0,0,0,.42));border-radius:var(--mdc-shape-small,4px);height:100%}.row{display:flex;align-items:center}label.container{border:dashed 1px var(--mdc-text-field-idle-line-color,rgba(0,0,0,.42));cursor:pointer}.container .uploading{display:flex;flex-direction:column;width:100%;align-items:flex-start;padding:0 32px;box-sizing:border-box}:host([disabled]) .container{border-color:var(--disabled-color)}label.dragged,label:hover{border-style:solid}label.dragged{border-color:var(--primary-color)}.dragged:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:var(--primary-color);content:"";opacity:var(--dark-divider-opacity);pointer-events:none;border-radius:var(--mdc-shape-small,4px)}label.value{cursor:default}label.value.multiple{justify-content:unset;overflow:auto}.highlight{color:var(--primary-color)}ha-button{margin-bottom:4px}.supports{color:var(--secondary-text-color);font-size:12px}:host([disabled]) .secondary{color:var(--disabled-text-color)}input.file{display:none}.value{cursor:pointer}.value ha-svg-icon{margin-right:8px;margin-inline-end:8px;margin-inline-start:initial}.big-icon{--mdc-icon-size:48px;margin-bottom:8px}ha-button{--mdc-button-outline-color:var(--primary-color);--mdc-icon-button-size:24px}mwc-linear-progress{width:100%;padding:8px 32px;box-sizing:border-box}.header{font-weight:500}.progress{color:var(--secondary-text-color)}button.link{background:0 0;border:none;padding:0;font-size:14px;color:var(--primary-color);text-decoration:underline;cursor:pointer}`))}}]}}),n.oi);i()}catch(v){i(v)}}))},2928:function(e,i,t){t.a(e,(async function(e,i){try{var a=t(61701),o=(t(19083),t(71695),t(40251),t(11740),t(47021),t(57243)),l=t(50778),n=t(36522),s=t(28008),r=t(6343),d=t(76131),c=t(8580),u=(t(59826),t(78951)),h=t(40944),p=e([u]);u=(p.then?(await p)():p)[0];let v,g,f,m,y,k=e=>e;const b="M18 15V18H15V20H18V23H20V20H23V18H20V15H18M13.3 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5V13.3C20.4 13.1 19.7 13 19 13C17.9 13 16.8 13.3 15.9 13.9L14.5 12L11 16.5L8.5 13.5L5 18H13.1C13 18.3 13 18.7 13 19C13 19.7 13.1 20.4 13.3 21Z";(0,a.Z)([(0,l.Mo)("ha-picture-upload")],(function(e,i){return{F:class extends i{constructor(...i){super(...i),e(this)}},d:[{kind:"field",key:"hass",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"value",value(){return null}},{kind:"field",decorators:[(0,l.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"secondary",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"supports",value:void 0},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"currentImageAltText",value:void 0},{kind:"field",decorators:[(0,l.Cb)({type:Boolean})],key:"crop",value(){return!1}},{kind:"field",decorators:[(0,l.Cb)({type:Boolean,attribute:"select-media"})],key:"selectMedia",value(){return!1}},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"cropOptions",value:void 0},{kind:"field",decorators:[(0,l.Cb)({type:Boolean})],key:"original",value(){return!1}},{kind:"field",decorators:[(0,l.Cb)({type:Number})],key:"size",value(){return 512}},{kind:"field",decorators:[(0,l.SB)()],key:"_uploading",value(){return!1}},{kind:"method",key:"render",value:function(){if(!this.value){const e=this.secondary||(this.selectMedia?(0,o.dy)(v||(v=k`${0}`),this.hass.localize("ui.components.picture-upload.secondary",{select_media:(0,o.dy)(g||(g=k`<button class="link" ="${0}"> ${0} </button>`),this._chooseMedia,this.hass.localize("ui.components.picture-upload.select_media"))})):void 0);return(0,o.dy)(f||(f=k` <ha-file-upload .hass="${0}" .icon="${0}" .label="${0}" .secondary="${0}" .supports="${0}" .uploading="${0}" -picked="${0}" ="${0}" accept="image/png, image/jpeg, image/gif"></ha-file-upload> `),this.hass,b,this.label||this.hass.localize("ui.components.picture-upload.label"),e,this.supports||this.hass.localize("ui.components.picture-upload.supported_formats"),this._uploading,this._handleFilePicked,this._handleFileCleared)}return(0,o.dy)(m||(m=k`<div class="center-vertical"> <div class="value"> <img .src="${0}" alt="${0}"> <div> <ha-button ="${0}" .label="${0}"> </ha-button> </div> </div> </div>`),this.value,this.currentImageAltText||this.hass.localize("ui.components.picture-upload.current_image_alt"),this._handleChangeClick,this.hass.localize("ui.components.picture-upload.clear_picture"))}},{kind:"method",key:"_handleChangeClick",value:function(){this.value=null,(0,n.B)(this,"change")}},{kind:"method",key:"_handleFilePicked",value:async function(e){const i=e.detail.files[0];this.crop?this._cropFile(i):this._uploadFile(i)}},{kind:"method",key:"_handleFileCleared",value:async function(){this.value=null}},{kind:"method",key:"_cropFile",value:async function(e,i){["image/png","image/jpeg","image/gif"].includes(e.type)?(0,c.E)(this,{file:e,options:this.cropOptions||{round:!1,aspectRatio:NaN},croppedCallback:t=>{i&&t===e?(this.value=(0,r.p6)(i,this.size,this.original),(0,n.B)(this,"change")):this._uploadFile(t)}}):(0,d.showAlertDialog)(this,{text:this.hass.localize("ui.components.picture-upload.unsupported_format")})}},{kind:"method",key:"_uploadFile",value:async function(e){if(["image/png","image/jpeg","image/gif"].includes(e.type)){this._uploading=!0;try{const i=await(0,r.Bi)(this.hass,e);this.value=(0,r.p6)(i.id,this.size,this.original),(0,n.B)(this,"change")}catch(i){(0,d.showAlertDialog)(this,{text:i.toString()})}finally{this._uploading=!1}}else(0,d.showAlertDialog)(this,{text:this.hass.localize("ui.components.picture-upload.unsupported_format")})}},{kind:"field",key:"_chooseMedia",value(){return()=>{(0,h.B)(this,{action:"pick",entityId:"browser",navigateIds:[{media_content_id:void 0,media_content_type:void 0},{media_content_id:r.dg,media_content_type:"app"}],minimumNavigateLevel:2,mediaPickedCallback:async e=>{const i=(0,r.TT)(e.item.media_content_id);if(i)if(this.crop){const a=(0,r.p6)(i,void 0,!0);let o;try{o=await(0,r.n$)(this.hass,a)}catch(t){return void(0,d.showAlertDialog)(this,{text:t.toString()})}const l={type:e.item.media_content_type},n=new File([o],e.item.title,l);this._cropFile(n,i)}else this.value=(0,r.p6)(i,this.size,this.original),(0,n.B)(this,"change")}})}}},{kind:"get",static:!0,key:"styles",value:function(){return[s.Qx,(0,o.iv)(y||(y=k`:host{display:block;height:240px}ha-file-upload{height:100%}.center-vertical{display:flex;align-items:center;height:100%}.value{width:100%;display:flex;flex-direction:column;align-items:center}img{max-width:100%;max-height:200px;margin-bottom:4px;border-radius:var(--file-upload-image-border-radius);transition:opacity .3s;opacity:var(--picture-opacity, 1)}img:hover{opacity:1}`))]}}]}}),o.oi);i()}catch(v){i(v)}}))},40944:function(e,i,t){t.d(i,{B:()=>o});t(71695),t(40251),t(47021);var a=t(36522);const o=(e,i)=>{(0,a.B)(e,"show-dialog",{dialogTag:"dialog-media-player-browse",dialogImport:()=>Promise.all([t.e("46379"),t.e("66031"),t.e("72206"),t.e("91552"),t.e("97983"),t.e("78456"),t.e("24199"),t.e("41258"),t.e("56898"),t.e("78943"),t.e("35671"),t.e("99287"),t.e("41103"),t.e("58640"),t.e("13914"),t.e("18865"),t.e("27090"),t.e("44959"),t.e("3049"),t.e("4277"),t.e("93350")]).then(t.bind(t,84961)),dialogParams:i})}},6343:function(e,i,t){t.d(i,{Bi:()=>s,JS:()=>a,TT:()=>l,ao:()=>r,dg:()=>o,n$:()=>d,p6:()=>n});t(52247),t(19423),t(40251),t(88044);const a="/api/image/serve/",o="media-source://image_upload",l=e=>{let i;if(e.startsWith(a)){i=e.substring(a.length);const t=i.indexOf("/");t>=0&&(i=i.substring(0,t))}else e.startsWith(o)&&(i=e.substring(o.length+1));return i},n=(e,i,t=!1)=>{if(!t&&!i)throw new Error("Size must be provided if original is false");return t?`/api/image/serve/${e}/original`:`/api/image/serve/${e}/${i}x${i}`},s=async(e,i)=>{const t=new FormData;t.append("file",i);const a=await e.fetchWithAuth("/api/image/upload",{method:"POST",body:t});if(413===a.status)throw new Error(`Uploaded image is too large (${i.name})`);if(200!==a.status)throw new Error("Unknown error");return a.json()},r=(e,i)=>e.callWS({type:"image/delete",image_id:i}),d=async(e,i)=>{const t=await fetch(e.hassUrl(i));if(!t.ok)throw new Error(`Failed to fetch image: ${t.statusText?t.statusText:t.status}`);return t.blob()}},8580:function(e,i,t){t.d(i,{E:()=>l});t(71695),t(40251),t(47021);var a=t(36522);const o=()=>Promise.all([t.e("97983"),t.e("2142"),t.e("58640"),t.e("81176"),t.e("37860")]).then(t.bind(t,77333)),l=(e,i)=>{(0,a.B)(e,"show-dialog",{dialogTag:"image-cropper-dialog",dialogImport:o,dialogParams:i})}},90698:function(e,i,t){t.d(i,{d:()=>a});t(49278),t(95078);const a=(e=0,i=2)=>{if(0===e)return"0 Bytes";i=i<0?0:i;const t=Math.floor(Math.log(e)/Math.log(1024));return`${parseFloat((e/1024**t).toFixed(i))} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][t]}`}}}]);
//# sourceMappingURL=72308.5a1b61a48d5807b2.js.map