UNPKG

iobroker.lovelace

Version:

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

11 lines 14.8 kB
/*! For license information please see 24901.e56296097f27d827.js.LICENSE.txt */ export const __rspack_esm_id=24901;export const __rspack_esm_ids=[24901];export const __webpack_modules__={41060(a,e,t){t.a(a,async function(a,e){try{t(18111),t(61701);var i=t(62826),o=t(5124),r=t(22441),s=t(6412),l=t(44537),n=t(1087),d=t(67258),c=t(46187),p=t(18350),h=t(26300),u=t(94355),g=a([p,h,u]);[p,h,u]=g.then?(await g)():g;const v="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",b="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";class f extends o.WF{firstUpdated(a){super.firstUpdated(a),this.autoOpenFileDialog&&this._openFilePicker()}get _name(){if(void 0===this.value)return"";if("string"==typeof this.value)return this.value;return(this.value instanceof FileList?Array.from(this.value):(0,l.e)(this.value)).map(a=>a.name).join(", ")}render(){const a=this.localize||this.hass.localize;return o.qy` ${this.uploading?o.qy`<div class="container"> <div class="uploading"> <span class="header">${this.uploadingLabel||(this.value?a("ui.components.file-upload.uploading_name",{name:this._name}):a("ui.components.file-upload.uploading"))}</span> ${this.progress?o.qy`<div class="progress"> ${this.progress}${this.hass&&(0,d.d)(this.hass.locale)}% </div>`:o.s6} </div> <ha-progress-bar .indeterminate="${!this.progress}" .value="${this.progress}" loading></ha-progress-bar> </div>`:o.qy`<label for="${this.value?"":"input"}" class="container ${(0,s.H)({dragged:this._drag,multiple:this.multiple,value:Boolean(this.value)})}" @drop="${this._handleDrop}" @dragenter="${this._handleDragStart}" @dragover="${this._handleDragStart}" @dragleave="${this._handleDragEnd}" @dragend="${this._handleDragEnd}">${this.value?"string"==typeof this.value?o.qy`<div class="row"> <div class="value" @click="${this._openFilePicker}"> <ha-svg-icon .path="${this.icon||b}"></ha-svg-icon> ${this.value} </div> <ha-icon-button @click="${this._clearValue}" .label="${this.deleteLabel||a("ui.common.delete")}" .path="${v}"></ha-icon-button> </div>`:(this.value instanceof FileList?Array.from(this.value):(0,l.e)(this.value)).map(e=>o.qy`<div class="row"> <div class="value" @click="${this._openFilePicker}"> <ha-svg-icon .path="${this.icon||b}"></ha-svg-icon> ${e.name} - ${(0,c.A)(e.size)} </div> <ha-icon-button @click="${this._clearValue}" .label="${this.deleteLabel||a("ui.common.delete")}" .path="${v}"></ha-icon-button> </div>`):o.qy`<ha-button size="small" appearance="filled" @click="${this._openFilePicker}"> <ha-svg-icon slot="start" .path="${this.icon||b}"></ha-svg-icon> ${this.label||a("ui.components.file-upload.label")} </ha-button> <span class="secondary">${this.secondary||a("ui.components.file-upload.secondary")}</span> <span class="supports">${this.supports}</span>`} <input id="input" type="file" class="file" .accept="${this.accept}" .multiple="${this.multiple}" @change="${this._handleFilePicked}"></label>`} `}_openFilePicker(){this._input?.click()}_handleDrop(a){a.preventDefault(),a.stopPropagation(),a.dataTransfer?.files&&(0,n.r)(this,"file-picked",{files:this.multiple||1===a.dataTransfer.files.length?Array.from(a.dataTransfer.files):[a.dataTransfer.files[0]]}),this._drag=!1}_handleDragStart(a){a.preventDefault(),a.stopPropagation(),this._drag=!0}_handleDragEnd(a){a.preventDefault(),a.stopPropagation(),this._drag=!1}_handleFilePicked(a){0!==a.target.files.length&&(this.value=a.target.files,(0,n.r)(this,"file-picked",{files:a.target.files}))}_clearValue(a){a.preventDefault(),this._input.value="",this.value=void 0,(0,n.r)(this,"change"),(0,n.r)(this,"files-cleared")}constructor(...a){super(...a),this.multiple=!1,this.disabled=!1,this.uploading=!1,this.autoOpenFileDialog=!1,this._drag=!1}}f.styles=o.AH`: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,var(--ha-border-radius-sm));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:8px}.supports{color:var(--secondary-text-color);font-size:var(--ha-font-size-s)}: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}ha-button{--mdc-button-outline-color:var(--primary-color);--ha-icon-button-size:24px}ha-progress-bar{width:100%;padding:8px 32px;box-sizing:border-box}.header{font-weight:var(--ha-font-weight-medium)}.progress{color:var(--secondary-text-color)}button.link{background:0 0;border:none;padding:0;font-size:var(--ha-font-size-m);color:var(--primary-color);text-decoration:underline;cursor:pointer}`,(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"localize",void 0),(0,i.Cg)([(0,r.MZ)()],f.prototype,"accept",void 0),(0,i.Cg)([(0,r.MZ)()],f.prototype,"icon",void 0),(0,i.Cg)([(0,r.MZ)()],f.prototype,"label",void 0),(0,i.Cg)([(0,r.MZ)()],f.prototype,"secondary",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"uploading-label"})],f.prototype,"uploadingLabel",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"delete-label"})],f.prototype,"deleteLabel",void 0),(0,i.Cg)([(0,r.MZ)()],f.prototype,"supports",void 0),(0,i.Cg)([(0,r.MZ)({type:Object})],f.prototype,"value",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],f.prototype,"multiple",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],f.prototype,"disabled",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],f.prototype,"uploading",void 0),(0,i.Cg)([(0,r.MZ)({type:Number})],f.prototype,"progress",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"auto-open-file-dialog"})],f.prototype,"autoOpenFileDialog",void 0),(0,i.Cg)([(0,r.wk)()],f.prototype,"_drag",void 0),(0,i.Cg)([(0,r.P)("#input")],f.prototype,"_input",void 0),f=(0,i.Cg)([(0,r.EM)("ha-file-upload")],f),e()}catch(a){e(a)}})},94355(a,e,t){t.a(a,async function(a,e){try{var i=t(62826),o=t(88590),r=t(5124),s=t(22441),l=a([o]);o=(l.then?(await l)():l)[0];class n extends o.A{static get styles(){return[o.A.styles,r.AH`:host{--indicator-color:var( --ha-progress-bar-indicator-color, var(--ha-color-on-primary-normal) );--track-color:var( --ha-progress-bar-track-color, var(--ha-color-fill-neutral-normal-hover) );--track-height:var(--ha-progress-bar-track-height, 12px);--wa-transition-slow:var(--ha-animation-duration-slow);position:relative}.progress-bar{border-radius:var(--ha-progress-bar-border-radius,var(--ha-border-radius-pill))}.indicator{background:var(--ha-progress-bar-indicator-background,var(--indicator-color))}:host([indeterminate]) .indicator{animation:wa-progress-indeterminate var(--ha-progress-bar-animation-duration,2.5s) infinite cubic-bezier(.37,0,.63,1)}@keyframes slide-highlight{0%{transform:translateX(-200%)}100%{transform:translateX(200%)}}:host([loading]:not([indeterminate])) .progress-bar::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,oklch(from var(--indicator-color) 85% c h) 50%,transparent 100%);opacity:.5;animation:slide-highlight var(--ha-progress-bar-animation-duration,2.5s) infinite cubic-bezier(.37,0,.63,1);width:50%}:host::after{--width:var( --ha-progress-bar-indicator-highlight-width, calc(var(--track-height) * 2) );width:var(--width);height:var(--ha-progress-bar-indicator-highlight-height,calc(var(--track-height) * 2));content:"";position:absolute;inset-inline-start:clamp(var(--width)/ 2,var(--percentage,0%),calc(100% - var(--width)/ 2));top:50%;transform:translate(-50%,-50%);background-image:var(--ha-progress-bar-indicator-highlight-image);background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;transition:inset-inline-start var(--wa-transition-slow, 200ms) var(--wa-transition-easing, ease)}:host([indeterminate])::after{display:none}`]}constructor(...a){super(...a),this.loading=!1}}(0,i.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"loading",void 0),n=(0,i.Cg)([(0,s.EM)("ha-progress-bar")],n),e()}catch(a){e(a)}})},62468(a,e,t){t.a(a,async function(a,i){try{t.r(e),t.d(e,{DialogUploadBackup:()=>m});var o=t(62826),r=t(5124),s=t(22441),l=t(36312),n=t(1087),d=t(38962),c=t(18350),p=t(72554),h=(t(93444),t(41060)),u=t(31420),g=t(14503),v=t(33963),b=a([d,c,p,h,v,u]);[d,c,p,h,v,u]=b.then?(await b)():b;const f="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75";class m extends r.WF{async showDialog(a){this._params=a,this._formData=u.Dt,this._open=!0}_dialogClosed(){this._params.cancel&&this._params.cancel(),this._formData=void 0,this._params=void 0,this._open=!1,(0,n.r)(this,"dialog-closed",{dialog:this.localName})}closeDialog(){return this._open=!1,!0}_formValid(){return void 0!==this._formData?.file}render(){return this._params&&this._formData?r.qy` <ha-dialog .open="${this._open}" header-title="${this.hass.localize("ui.panel.config.backup.dialogs.upload.title")}" ?prevent-scrim-close="${this._uploading}" @closed="${this._dialogClosed}"> ${this._error?r.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:r.s6} <ha-file-upload .hass="${this.hass}" .uploading="${this._uploading}" .icon="${f}" .accept="${u.xN}" .localize="${this.hass.localize}" .label="${this.hass.localize("ui.panel.config.backup.dialogs.upload.input_label")}" .supports="${this.hass.localize("ui.panel.config.backup.dialogs.upload.supports_tar")}" @file-picked="${this._filePicked}" @files-cleared="${this._filesCleared}"></ha-file-upload> <ha-dialog-footer slot="footer"> <ha-button slot="secondaryAction" appearance="plain" @click="${this.closeDialog}" .disabled="${this._uploading}"> ${this.hass.localize("ui.common.cancel")} </ha-button> <ha-button slot="primaryAction" @click="${this._upload}" .disabled="${!this._formValid()||this._uploading}"> ${this.hass.localize("ui.panel.config.backup.dialogs.upload.action")} </ha-button> </ha-dialog-footer> </ha-dialog> `:r.s6}_filePicked(a){this._error=void 0;const e=a.detail.files[0];this._formData={...this._formData,file:e}}_filesCleared(){this._error=void 0,this._formData=u.Dt}async _upload(){const{file:a}=this._formData;if(!a||a.type!==u.xN)return void(0,v.showAlertDialog)(this,{title:this.hass.localize("ui.panel.config.backup.dialogs.upload.unsupported.title"),text:this.hass.localize("ui.panel.config.backup.dialogs.upload.unsupported.text"),confirmText:this.hass.localize("ui.common.ok")});const e=(0,l.x)(this.hass.config,"hassio")?[u.mF]:[u.gv];this._uploading=!0;try{await(0,u.kI)(this.hass,a,e),this._params.submit?.(),this.closeDialog()}catch(a){this._error=a.message}finally{this._uploading=!1}}static get styles(){return[g.RF,g.nA,r.AH`ha-alert{display:block;margin-bottom:var(--ha-space-4)}`]}constructor(...a){super(...a),this._uploading=!1,this._open=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"hass",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_params",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_uploading",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_error",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_formData",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_open",void 0),m=(0,o.Cg)([(0,s.EM)("ha-dialog-upload-backup")],m),i()}catch(a){i(a)}})},88590(a,e,t){t.a(a,async function(a,i){try{t.d(e,{A:()=>v});var o=t(5124),r=t(22441),s=t(63672),l=t(95010),n=t(717),d=t(17060),c=t(4168),p=a([d]);d=(p.then?(await p)():p)[0];var h=Object.defineProperty,u=Object.getOwnPropertyDescriptor,g=(a,e,t,i)=>{for(var o,r=i>1?void 0:i?u(e,t):e,s=a.length-1;s>=0;s--)(o=a[s])&&(r=(i?o(e,t,r):o(r))||r);return i&&r&&h(e,t,r),r};let v=class extends n.A{updated(a){a.has("value")&&requestAnimationFrame(()=>{this.style.setProperty("--percentage",`${(0,l.q)(this.value,0,100)}%`)})}render(){return o.qy` <div part="base" class="progress-bar" role="progressbar" title="${(0,s.J)(this.title)}" aria-label="${this.label.length>0?this.label:this.localize.term("progress")}" aria-valuemin="0" aria-valuemax="100" aria-valuenow="${this.indeterminate?"0":this.value}"> <div part="indicator" class="indicator"> ${this.indeterminate?"":o.qy` <slot part="label" class="label"></slot> `} </div> </div> `}constructor(){super(...arguments),this.localize=new d.c(this),this.value=0,this.indeterminate=!1,this.label=""}};v.css=c.A,g([(0,r.MZ)({type:Number,reflect:!0})],v.prototype,"value",2),g([(0,r.MZ)({type:Boolean,reflect:!0})],v.prototype,"indeterminate",2),g([(0,r.MZ)()],v.prototype,"label",2),v=g([(0,r.EM)("wa-progress-bar")],v),i()}catch(a){i(a)}})},4168(a,e,t){t.d(e,{A:()=>i});var i=t(5124).AH`:host{--track-height:1rem;--track-color:var(--wa-color-neutral-fill-normal);--indicator-color:var(--wa-color-brand-fill-loud);display:flex}.progress-bar{flex:1 1 auto;display:flex;position:relative;overflow:hidden;height:var(--track-height);border-radius:var(--wa-border-radius-pill);background-color:var(--track-color);color:var(--wa-color-brand-on-loud);font-size:var(--wa-font-size-s)}.indicator{width:var(--percentage);display:flex;align-items:center;justify-content:center;background-color:var(--indicator-color);text-align:center;white-space:nowrap;overflow:hidden;line-height:1;font-weight:var(--wa-font-weight-semibold);transition:all var(--wa-transition-slow, 200ms) var(--wa-transition-easing, ease);user-select:none;-webkit-user-select:none}:host([indeterminate]) .indicator{position:absolute;inset-block:0;inline-size:50%;animation:wa-progress-indeterminate 2.5s infinite cubic-bezier(.37,0,.63,1)}@media (forced-colors:active){.progress-bar{outline:solid 1px SelectedItem;background-color:var(--wa-color-surface-default)}.indicator{outline:solid 1px SelectedItem;background-color:SelectedItem}}@keyframes wa-progress-indeterminate{0%{inset-inline-start:-50%}100%,75%{inset-inline-start:100%}}`}};