UNPKG

iobroker.lovelace

Version:

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

12 lines 35.9 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[49625],{36356:function(t,e,i){i.d(e,{q:function(){return o}});class o{get enabled(){return this._enabled}set enabled(t){t!==this._enabled&&(this._enabled=t,this._enabled?this._attach():this._detach(),this._host.requestUpdate())}hostUpdated(){this.enabled&&!this._scrollContainer&&this._attach()}hostDisconnected(){this._detach()}_attach(){var t;this._scrollContainer=null===(t=this._host.renderRoot)||void 0===t?void 0:t.querySelector(this._selector),this._scrollContainer&&this._scrollContainer.addEventListener("mousedown",this._mouseDown)}_detach(){window.removeEventListener("mousemove",this._mouseMove),window.removeEventListener("mouseup",this._mouseUp),this._scrollContainer&&(this._scrollContainer.removeEventListener("mousedown",this._mouseDown),this._scrollContainer=void 0),this.scrolled=!1,this.scrolling=!1,this.mouseIsDown=!1,this.scrollStartX=0,this.scrollLeft=0}constructor(t,{selector:e,enabled:i}){this.mouseIsDown=!1,this.scrolled=!1,this.scrolling=!1,this.scrollStartX=0,this.scrollLeft=0,this._enabled=!0,this._mouseDown=t=>{const e=this._scrollContainer;e&&(this.scrollStartX=t.pageX-e.offsetLeft,this.scrollLeft=e.scrollLeft,this.mouseIsDown=!0,this.scrolled=!1,window.addEventListener("mousemove",this._mouseMove),window.addEventListener("mouseup",this._mouseUp,{once:!0}))},this._mouseUp=()=>{this.mouseIsDown=!1,this.scrolling=!1,this._host.requestUpdate(),window.removeEventListener("mousemove",this._mouseMove)},this._mouseMove=t=>{if(!this.mouseIsDown)return;const e=this._scrollContainer;if(!e)return;const i=t.pageX-e.offsetLeft-this.scrollStartX;this.scrolled||(this.scrolled=Math.abs(i)>1,this.scrolling=this.scrolled,this._host.requestUpdate()),e.scrollLeft=this.scrollLeft-i},this._selector=e,this._host=t,this.enabled=null==i||i,t.addController(this)}}},98975:function(t,e,i){i.a(t,async function(t,o){try{i.d(e,{K:function(){return c}});var r=i(74487),s=i(22786),a=i(63927),n=t([r,a]);[r,a]=n.then?(await n)():n;const d=(0,s.A)(t=>new Intl.RelativeTimeFormat(t.language,{numeric:"auto"})),c=(t,e,i,o=!0)=>{const r=(0,a.x)(t,i,e);return o?d(e).format(r.value,r.unit):Intl.NumberFormat(e.language,{style:"unit",unit:r.unit,unitDisplay:"long"}).format(Math.abs(r.value))};o()}catch(d){o(d)}})},63927:function(t,e,i){i.a(t,async function(t,o){try{i.d(e,{x:function(){return p}});var r=i(6946),s=i(52640),a=i(38684),n=i(380),d=t([n]);n=(d.then?(await d)():d)[0];const l=1e3,h=60,u=60*h;function p(t,e=Date.now(),i,o={}){const d=Object.assign(Object.assign({},v),o||{}),c=(+t-+e)/l;if(Math.abs(c)<d.second)return{value:Math.round(c),unit:"second"};const p=c/h;if(Math.abs(p)<d.minute)return{value:Math.round(p),unit:"minute"};const g=c/u;if(Math.abs(g)<d.hour)return{value:Math.round(g),unit:"hour"};const y=new Date(t),b=new Date(e);y.setHours(0,0,0,0),b.setHours(0,0,0,0);const f=(0,r.c)(y,b);if(0===f)return{value:Math.round(g),unit:"hour"};if(Math.abs(f)<d.day)return{value:f,unit:"day"};const m=(0,n.P)(i),w=(0,s.k)(y,{weekStartsOn:m}),_=(0,s.k)(b,{weekStartsOn:m}),C=(0,a.I)(w,_);if(0===C)return{value:f,unit:"day"};if(Math.abs(C)<d.week)return{value:C,unit:"week"};const x=y.getFullYear()-b.getFullYear(),E=12*x+y.getMonth()-b.getMonth();return 0===E?{value:C,unit:"week"}:Math.abs(E)<d.month||0===x?{value:E,unit:"month"}:{value:Math.round(x),unit:"year"}}const v={second:59,minute:59,hour:22,day:5,week:4,month:11};o()}catch(c){o(c)}})},76776:function(t,e,i){i(62953);var o=i(40445),r=i(5124),s=i(67576);let a,n,d,c=t=>t;class l extends r.WF{render(){return(0,r.qy)(a||(a=c` ${0} <slot></slot> `),this.header?(0,r.qy)(n||(n=c`<h1 class="card-header">${0}</h1>`),this.header):r.s6)}constructor(...t){super(...t),this.raised=!1}}l.styles=(0,r.AH)(d||(d=c`: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,s.MZ)()],l.prototype,"header",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],l.prototype,"raised",void 0),l=(0,o.Cg)([(0,s.EM)("ha-card")],l)},85938:function(t,e,i){i(18111),i(22489),i(3362),i(46058),i(62953);var o=i(40445),r=i(5124),s=i(67576),a=i(1087);let n,d=t=>t;class c extends r.WF{updated(t){t.has("disabled")&&(this.disabled?this._destroySortable():this._createSortable())}disconnectedCallback(){super.disconnectedCallback(),this._shouldBeDestroy=!0,setTimeout(()=>{this._shouldBeDestroy&&(this._destroySortable(),this._shouldBeDestroy=!1)},1)}connectedCallback(){super.connectedCallback(),this._shouldBeDestroy=!1,this.hasUpdated&&!this.disabled&&this._createSortable()}createRenderRoot(){return this}render(){return this.noStyle?r.s6:(0,r.qy)(n||(n=d` <style>.sortable-fallback{display:none!important}.sortable-ghost{box-shadow:0 0 0 2px var(--primary-color);background:rgba(var(--rgb-primary-color),.25);border-radius:var(--ha-border-radius-sm);opacity:.4}.sortable-drag{border-radius:var(--ha-border-radius-sm);opacity:1;background:var(--card-background-color);box-shadow:0px 4px 8px 3px #00000026;cursor:grabbing}</style> `))}async _createSortable(){if(this._sortable)return;const t=this.children[0];if(!t)return;const e=(await Promise.all([i.e(85283),i.e(70322)]).then(i.bind(i,80745))).default,o=Object.assign(Object.assign({scroll:!0,forceAutoScrollFallback:!0,scrollSpeed:20,animation:150},this.options),{},{onChoose:this._handleChoose,onStart:this._handleStart,onEnd:this._handleEnd,onUpdate:this._handleUpdate,onAdd:this._handleAdd,onRemove:this._handleRemove});this.draggableSelector&&(o.draggable=this.draggableSelector),this.handleSelector&&(o.handle=this.handleSelector),void 0!==this.invertSwap&&(o.invertSwap=this.invertSwap),this.group&&(o.group=this.group),this.filter&&(o.filter=this.filter),this._sortable=new e(t,o)}_destroySortable(){this._sortable&&(this._sortable.destroy(),this._sortable=void 0)}constructor(...t){super(...t),this.disabled=!1,this.noStyle=!1,this.invertSwap=!1,this.rollback=!0,this._shouldBeDestroy=!1,this._handleUpdate=t=>{(0,a.r)(this,"item-moved",{newIndex:t.newIndex,oldIndex:t.oldIndex})},this._handleAdd=t=>{(0,a.r)(this,"item-added",{index:t.newIndex,data:t.item.sortableData,item:t.item})},this._handleRemove=t=>{(0,a.r)(this,"item-removed",{index:t.oldIndex})},this._handleEnd=async t=>{(0,a.r)(this,"drag-end"),this.rollback&&t.item.placeholder&&(t.item.placeholder.replaceWith(t.item),delete t.item.placeholder)},this._handleStart=()=>{(0,a.r)(this,"drag-start")},this._handleChoose=t=>{this.rollback&&(t.item.placeholder=document.createComment("sort-placeholder"),t.item.after(t.item.placeholder))}}}(0,o.Cg)([(0,s.MZ)({type:Boolean})],c.prototype,"disabled",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-style"})],c.prototype,"noStyle",void 0),(0,o.Cg)([(0,s.MZ)({type:String,attribute:"draggable-selector"})],c.prototype,"draggableSelector",void 0),(0,o.Cg)([(0,s.MZ)({type:String,attribute:"handle-selector"})],c.prototype,"handleSelector",void 0),(0,o.Cg)([(0,s.MZ)({type:String,attribute:"filter"})],c.prototype,"filter",void 0),(0,o.Cg)([(0,s.MZ)({type:String})],c.prototype,"group",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"invert-swap"})],c.prototype,"invertSwap",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],c.prototype,"options",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],c.prototype,"rollback",void 0),c=(0,o.Cg)([(0,s.EM)("ha-sortable")],c)},84970:function(t,e,i){i.d(e,{q:function(){return o}});const o=t=>"string"==typeof t?{type:"entity",entity:t,show_name:!0}:"type"in t&&t.type?t:Object.assign({type:"entity"},t)},77428:function(t,e,i){i.a(t,async function(t,e){try{i(74423),i(62953);var o=i(40445),r=(i(68825),i(5124)),s=i(67576),a=i(6412),n=i(1087),d=i(29823),c=(i(70947),i(26300)),l=(i(67094),i(14503)),h=t([d,c]);[d,c]=h.then?(await h)():h;let u,p,v,g,y,b,f,m,w=t=>t;const _="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z",C="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z",x="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z",E="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",M="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",k="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z",O="M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z";class S extends r.WF{firstUpdated(){this.addEventListener("focus",()=>{this._focused=!0}),this.addEventListener("blur",()=>{this._focused=!1}),this.addEventListener("touchstart",()=>{this._touchStarted=!0,this._hover=!0,document.addEventListener("click",this._documentClicked)}),this.addEventListener("touchend",()=>{setTimeout(()=>{this._touchStarted=!1},10)}),this.addEventListener("mouseenter",()=>{this._touchStarted||(this._hover=!0)}),this.addEventListener("mouseleave",()=>{this._hover=!1}),this.addEventListener("click",()=>{this._hover=!0,document.addEventListener("click",this._documentClicked)})}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._documentClicked)}render(){const t=(this._hover||this._focused)&&!this.hiddenOverlay;return(0,r.qy)(u||(u=w` <div class="card-wrapper" inert><slot></slot></div> <div class="card-overlay ${0}"> ${0} <ha-dropdown class="more" placement="bottom-end" @wa-select="${0}"> <ha-icon-button slot="trigger" .path="${0}"> </ha-icon-button> ${0} ${0} ${0} ${0} <ha-dropdown-item value="delete" variant="danger"> ${0} <ha-svg-icon class="warning" slot="icon" .path="${0}"></ha-svg-icon> </ha-dropdown-item> </ha-dropdown> </div> `),(0,a.H)({visible:t}),this.noEdit?(0,r.qy)(p||(p=w` <div class="control"> <div class="control-overlay"></div> <ha-svg-icon .path="${0}"> </ha-svg-icon> </div> `),x):(0,r.qy)(v||(v=w` <div class="control" @click="${0}" @keydown="${0}" tabindex="0"> <div class="control-overlay"></div> <ha-svg-icon .path="${0}"> </ha-svg-icon> </div> `),this._handleOverlayClick,this._handleOverlayClick,k),this._handleDropdownSelect,M,this.noEdit?r.s6:(0,r.qy)(g||(g=w` <ha-dropdown-item value="edit"> <ha-svg-icon slot="icon" .path="${0}"></ha-svg-icon> ${0} </ha-dropdown-item> `),k,this.hass.localize("ui.panel.lovelace.editor.edit_card.edit")),this.noDuplicate?r.s6:(0,r.qy)(y||(y=w` <ha-dropdown-item value="duplicate"> <ha-svg-icon slot="icon" .path="${0}"></ha-svg-icon> ${0} </ha-dropdown-item> `),O,this.hass.localize("ui.panel.lovelace.editor.edit_card.duplicate")),this.noMove?r.s6:(0,r.qy)(b||(b=w` <ha-dropdown-item value="copy"> <ha-svg-icon slot="icon" .path="${0}"></ha-svg-icon> ${0} </ha-dropdown-item> <ha-dropdown-item value="cut"> <ha-svg-icon slot="icon" .path="${0}"></ha-svg-icon> ${0} </ha-dropdown-item> `),_,this.hass.localize("ui.panel.lovelace.editor.edit_card.copy"),C,this.hass.localize("ui.panel.lovelace.editor.edit_card.cut")),this.noDuplicate&&this.noEdit&&this.noMove?r.s6:(0,r.qy)(f||(f=w`<wa-divider></wa-divider>`)),this.hass.localize("ui.panel.lovelace.editor.edit_card.delete"),E)}_handleOverlayClick(t){t.defaultPrevented||"keydown"===t.type&&"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),t.stopPropagation(),this._editCard())}_handleDropdownSelect(t){var e;const i=null===(e=t.detail)||void 0===e||null===(e=e.item)||void 0===e?void 0:e.value;if(i)switch(i){case"edit":this._editCard();break;case"duplicate":this._duplicateCard();break;case"copy":this._copyCard();break;case"cut":this._cutCard();break;case"delete":this._deleteCard()}}_duplicateCard(){(0,n.r)(this,"ll-duplicate-card",{path:this.path})}_editCard(){(0,n.r)(this,"ll-edit-card",{path:this.path})}_cutCard(){(0,n.r)(this,"ll-copy-card",{path:this.path}),(0,n.r)(this,"ll-delete-card",{path:this.path,silent:!0})}_copyCard(){(0,n.r)(this,"ll-copy-card",{path:this.path})}_deleteCard(){(0,n.r)(this,"ll-delete-card",{path:this.path,silent:!1})}static get styles(){return[l.RF,(0,r.AH)(m||(m=w`.card-overlay{position:absolute;opacity:0;pointer-events:none;inset:0;display:flex;align-items:center;justify-content:center;transition:opacity 180ms ease-in-out}.card-overlay.visible{opacity:1;pointer-events:auto}.card-wrapper{position:relative;height:100%;z-index:0}.control{outline:0!important;cursor:pointer;position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));z-index:0}.control-overlay{position:absolute;inset:0;opacity:.8;background-color:var(--primary-background-color);border:1px solid var(--divider-color);border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));z-index:0}.control ha-svg-icon{display:flex;position:relative;color:var(--primary-text-color);border-radius:var(--ha-border-radius-circle);padding:8px;background:var(--secondary-background-color);--mdc-icon-size:20px}.more ha-icon-button{position:absolute;right:-6px;top:-6px;inset-inline-end:-6px;inset-inline-start:initial;cursor:pointer;border-radius:var(--ha-border-radius-circle);background:var(--secondary-background-color);--ha-icon-button-size:32px;--mdc-icon-size:20px}`))]}constructor(...t){super(...t),this.hiddenOverlay=!1,this.noEdit=!1,this.noDuplicate=!1,this.noMove=!1,this._hover=!1,this._focused=!1,this._touchStarted=!1,this._documentClicked=t=>{this._hover=t.composedPath().includes(this),document.removeEventListener("click",this._documentClicked)}}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],S.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],S.prototype,"lovelace",void 0),(0,o.Cg)([(0,s.MZ)({type:Array})],S.prototype,"path",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"hidden-overlay"})],S.prototype,"hiddenOverlay",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-edit"})],S.prototype,"noEdit",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-duplicate"})],S.prototype,"noDuplicate",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-move"})],S.prototype,"noMove",void 0),(0,o.Cg)([(0,s.wk)()],S.prototype,"_hover",void 0),(0,o.Cg)([(0,s.wk)()],S.prototype,"_focused",void 0),S=(0,o.Cg)([(0,s.EM)("hui-card-edit-mode")],S),e()}catch(u){e(u)}})},118:function(t,e,i){i.a(t,async function(t,o){try{i.d(e,{O:function(){return c}});i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698),i(62953);var r=i(89213),s=i(34128),a=t([r]);r=(a.then?(await a)():a)[0];const n=new Set(["grid"]),d={},c=t=>(0,s.Ue)("section",t,n,d);o()}catch(n){o(n)}})},21146:function(t,e,i){i.d(e,{a:function(){return r},u:function(){return s}});i(3362),i(62953);var o=i(1087);const r=()=>Promise.all([i.e(66432),i.e(88815),i.e(37558)]).then(i.bind(i,2389)),s=(t,e)=>{(0,o.r)(t,"show-dialog",{dialogTag:"hui-dialog-create-card",dialogImport:r,dialogParams:e})}},15950:function(t,e,i){i.d(e,{O:function(){return s},S:function(){return r}});i(3362),i(62953);var o=i(1087);const r=()=>Promise.all([i.e(66432),i.e(91863),i.e(51746)]).then(i.bind(i,98489)),s=(t,e)=>{(0,o.r)(t,"show-dialog",{dialogTag:"hui-dialog-edit-card",dialogImport:r,dialogParams:e})}},82360:function(t,e,i){i.d(e,{Bl:function(){return y},Bn:function(){return m},DU:function(){return d},Ei:function(){return u},En:function(){return M},GO:function(){return l},HQ:function(){return E},Iq:function(){return g},M:function(){return k},P3:function(){return O},RB:function(){return S},Sg:function(){return f},bn:function(){return c},d6:function(){return h},fJ:function(){return v},gm:function(){return n},hB:function(){return x},lD:function(){return b},pk:function(){return _},sQ:function(){return p},tA:function(){return w}});i(16280),i(18111),i(22489),i(61701),i(13579),i(62953);var o=i(34271);if(59509==i.j)var r=i(84970);var s=i(91984),a=i(75196);const n=(t,e,i)=>{const o=(0,a.jW)("cards",t,e),r=o?[...o,i]:[i];return(0,a.z7)("cards",t,e,r)},d=(t,e,i)=>{const o=(0,a.jW)("cards",t,e),r=o?[...o,...i]:[...i];return(0,a.z7)("cards",t,e,r)},c=(t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("cards",t,r),n=(null!=s?s:[]).map((t,e)=>e===o?i:t);return(0,a.z7)("cards",t,r,n)},l=(t,e)=>{const{cardIndex:i}=(0,a.gO)(e),o=(0,a.S2)(e),r=(0,a.jW)("cards",t,o),s=(null!=r?r:[]).filter((t,e)=>e!==i);return(0,a.z7)("cards",t,o,s)},h=(t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("cards",t,r),n=s?[...s]:[],d=o,c=Math.max(Math.min(i,n.length-1),0),l=n[d];n.splice(d,1),n.splice(c,0,l);return(0,a.z7)("cards",t,r,n)},u=(t,e,i)=>{const{cardIndex:o,viewIndex:r,sectionIndex:s}=(0,a.gO)(e),{viewIndex:d,sectionIndex:c}=(0,a.$P)(i);if(r===d&&s===c)throw new Error("You cannot move a card to the view or section it is in.");const h=(0,a.S2)(e),u=(0,a.jW)("cards",t,h)[o];let p=n(t,i,u);return p=l(p,e),p},p=(t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("cards",t,r)[o];let n=l(t,e);return n=((t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("cards",t,r),n=s?[...s.slice(0,o),i,...s.slice(o)]:[i];return(0,a.z7)("cards",t,r,n)})(n,i,s),n},v=(t,e,i,o=!1)=>{if(i.path&&e.views.some(t=>t.path===i.path)){if(!o)throw new Error(t.localize("ui.panel.lovelace.editor.edit_view.error_same_url"));i=Object.assign(Object.assign({},i),{},{path:`${i.path}-2`})}return Object.assign(Object.assign({},e),{},{views:e.views.concat(i)})},g=(t,e,i,o)=>{if(o.path&&e.views.some((t,e)=>t.path===o.path&&e!==i))throw new Error(t.localize("ui.panel.lovelace.editor.edit_view.error_same_url"));return Object.assign(Object.assign({},e),{},{views:e.views.map((t,e)=>e===i?o:t)})},y=(t,e,i)=>{const o=t.views[e],r=t.views[i];return Object.assign(Object.assign({},t),{},{views:t.views.map((t,s)=>s===i?o:s===e?r:t)})},b=(t,e)=>Object.assign(Object.assign({},t),{},{views:t.views.filter((t,i)=>i!==e)}),f=(t,e,i,o)=>{const r=e.views[o];return[b(e,o),v(t,i,r,!0)]},m=(t,e,i)=>{const o=(0,a.ys)(t,[e]);if((0,s.R6)(o))throw new Error("Deleting sections in a strategy is not supported.");const r=o.sections?[...o.sections,i]:[i];return(0,a.uZ)(t,[e],Object.assign(Object.assign({},o),{},{sections:r}))},w=(t,e,i)=>{var o;const r=(0,a.ys)(t,[e]);if((0,s.R6)(r))throw new Error("Deleting sections in a strategy is not supported.");const n=null===(o=r.sections)||void 0===o?void 0:o.filter((t,e)=>e!==i);return(0,a.uZ)(t,[e],Object.assign(Object.assign({},r),{},{sections:n}))},_=(t,e,i)=>{const r=(0,a.ys)(t,[e]);if((0,s.R6)(r))throw new Error("Duplicating sections in a strategy is not supported.");const n=(0,o.A)(r.sections[i]);return C(t,e,i+1,n)},C=(t,e,i,o)=>{const r=(0,a.ys)(t,[e]);if((0,s.R6)(r))throw new Error("Inserting sections in a strategy is not supported.");const n=r.sections?[...r.sections.slice(0,i),o,...r.sections.slice(i)]:[o];return(0,a.uZ)(t,[e],Object.assign(Object.assign({},r),{},{sections:n}))},x=(t,e,i)=>{const o=(0,a.ys)(t,e);let r=w(t,e[0],e[1]);return r=C(r,i[0],i[1],o),r},E=(t,e,i)=>{const o=(0,a.jW)("badges",t,e),r=o?[...o,i]:[i];return(0,a.z7)("badges",t,e,r)},M=(t,e,i)=>{const o=(0,a.jW)("badges",t,e),r=o?[...o,...i]:[...i];return(0,a.z7)("badges",t,e,r)},k=(t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("badges",t,r),n=(null!=s?s:[]).map((t,e)=>e===o?i:t);return(0,a.z7)("badges",t,r,n)},O=(t,e)=>{const{cardIndex:i}=(0,a.gO)(e),o=(0,a.S2)(e),r=(0,a.jW)("badges",t,o),s=(null!=r?r:[]).filter((t,e)=>e!==i);return(0,a.z7)("badges",t,o,s)},S=(t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),s=(0,a.S2)(e),n=(0,a.jW)("badges",t,s)[o];let d=O(t,e);return d=((t,e,i)=>{const{cardIndex:o}=(0,a.gO)(e),r=(0,a.S2)(e),s=(0,a.jW)("badges",t,r),n=s?[...s.slice(0,o),i,...s.slice(o)]:[i];return(0,a.z7)("badges",t,r,n)})(d,i,(0,r.q)(n)),d}},90565:function(t,e,i){i.d(e,{r:function(){return s}});i(3362);var o=i(82360),r=i(1087);async function s(t,e,i){try{const{path:s,silent:a}=i,n=e.config,d=(0,o.GO)(n,s);if(await e.saveConfig(d),a)return;e.showToast({message:t.localize("ui.common.successfully_deleted"),duration:8e3,action:{action:()=>(0,r.r)(window,"undo-change"),text:t.localize("ui.common.undo")}})}catch(s){console.error(s),e.showToast({message:t.localize("ui.common.deleting_failed")})}}},75196:function(t,e,i){i.d(e,{$P:function(){return a},S2:function(){return n},gO:function(){return s},jW:function(){return h},uZ:function(){return c},ys:function(){return d},z7:function(){return l}});i(16280),i(18111),i(61701);var o=i(28918),r=i(91984);const s=t=>2===t.length?{viewIndex:t[0],cardIndex:t[1]}:{viewIndex:t[0],sectionIndex:t[1],cardIndex:t[2]},a=t=>1===t.length?{viewIndex:t[0]}:{viewIndex:t[0],sectionIndex:t[1]},n=t=>t.slice(0,-1),d=(t,e)=>{var i;const{viewIndex:o,sectionIndex:s}=a(e),n=t.views[o];if(!n)throw new Error("View does not exist");if(void 0===s)return n;if((0,r.R6)(n))throw new Error("Can not find section in a strategy view");const d=null===(i=n.sections)||void 0===i?void 0:i[s];if(!d)throw new Error("Section does not exist");return d},c=(t,e,i)=>{const{viewIndex:o,sectionIndex:s}=a(e);let n=!1;const d=t.views.map((t,e)=>{if(e!==o)return t;if(void 0===s)return n=!0,i;if((0,r.R6)(t))throw new Error("Can not update section in a strategy view");if(void 0===t.sections)throw new Error("Section does not exist");const a=t.sections.map((t,e)=>e!==s?t:(n=!0,i));return Object.assign(Object.assign({},t),{},{sections:a})});if(!n)throw new Error("Can not update cards in a non-existing view/section");return Object.assign(Object.assign({},t),{},{views:d})},l=(t,e,i,s)=>{const{viewIndex:n,sectionIndex:d}=a(i);let c=!1;const l=e.views.map((e,i)=>{if(i!==n)return e;if((0,r.R6)(e))throw new Error(`Can not update ${t} in a strategy view`);if(void 0===d)return c=!0,Object.assign(Object.assign({},e),{},{[t]:s});if(void 0===e.sections)throw new Error("Section does not exist");const a=e.sections.map((e,i)=>{if(i!==d)return e;if((0,o.H)(e))throw new Error(`Can not update ${t} in a strategy section`);return c=!0,Object.assign(Object.assign({},e),{},{[t]:s})});return Object.assign(Object.assign({},e),{},{sections:a})});if(!c)throw new Error(`Can not update ${t} in a non-existing view/section`);return Object.assign(Object.assign({},e),{},{views:l})},h=(t,e,i)=>{var s;const{viewIndex:n,sectionIndex:d}=a(i),c=e.views[n];if(!c)throw new Error("View does not exist");if((0,r.R6)(c))throw new Error("Can not find cards in a strategy view");if(void 0===d)return c[t];const l=null===(s=c.sections)||void 0===s?void 0:s[d];if(!l)throw new Error("Section does not exist");if((0,o.H)(l))throw new Error("Can not find cards in a strategy section");if("cards"===t)return l[t];throw new Error(`${t} is not supported in section`)}},89213:function(t,e,i){i.a(t,async function(t,e){try{i(88454),i(29452),i(62953);var o=i(40445),r=i(5124),s=i(67576),a=i(6412),n=i(75751),d=i(89784),c=i(1087),l=(i(54276),i(85938),i(14503)),h=i(76760),u=i(77428),p=i(82360),v=t([u]);u=(v.then?(await v)():v)[0];let g,y,b,f,m,w=t=>t;const _="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",C={delay:100,delayOnTouchOnly:!0,direction:"vertical",invertedSwapThreshold:.7,group:"card"},x=Object.assign(Object.assign({},C),{},{sort:!1,group:{name:"card",put:!1}});class E extends r.WF{setConfig(t){this._config=t}_getKey(t){return this._cardConfigKeys.has(t)||"object"!=typeof t||this._cardConfigKeys.set(t,Math.random().toString()),this._cardConfigKeys.get(t)}render(){var t,e,i;if(!this.cards||!this._config)return r.s6;const o=null!==(t=null===(e=this._config)||void 0===e?void 0:e.cards)&&void 0!==t?t:[],s=Boolean((null===(i=this.lovelace)||void 0===i?void 0:i.editMode)&&!this.isStrategy),c=this.importOnly?x:C;return(0,r.qy)(g||(g=w` <ha-sortable .disabled="${0}" @drag-start="${0}" @drag-end="${0}" draggable-selector=".card" .rollback="${0}" .options="${0}" @item-moved="${0}" @item-added="${0}" @item-removed="${0}" invert-swap> <div class="container ${0}"> ${0} ${0} </div> </ha-sortable> `),!s,this._dragStart,this._dragEnd,!1,c,this._cardMoved,this._cardAdded,this._cardRemoved,(0,a.H)({"edit-mode":s}),(0,n.u)(o,t=>this._getKey(t),(t,e)=>{const i=this.cards[e];i.layout="grid";const o=i.getGridOptions(),{rows:n,columns:c}=(0,h.Ns)(o),l=[this.viewIndex,this.index,e];return(0,r.qy)(y||(y=w` <div style="${0}" class="card ${0}" .sortableData="${0}"> ${0} </div> `),(0,d.W)({"--column-size":"number"==typeof c?c:void 0,"--row-size":"number"==typeof n?n:void 0}),(0,a.H)({"fit-rows":"number"==typeof n,"full-width":"full"===c}),l,s?(0,r.qy)(b||(b=w` <hui-card-edit-mode .hass="${0}" .lovelace="${0}" .path="${0}" .hiddenOverlay="${0}" .noEdit="${0}" .noDuplicate="${0}"> ${0} </hui-card-edit-mode> `),this.hass,this.lovelace,l,this._dragging,this.importOnly,this.importOnly,i):i)}),s&&!this.importOnly?(0,r.qy)(f||(f=w` <button class="add" @click="${0}" aria-label="${0}" .title="${0}"> <ha-ripple></ha-ripple> <ha-svg-icon .path="${0}"></ha-svg-icon> </button> `),this._addCard,this.hass.localize("ui.panel.lovelace.editor.section.add_card"),this.hass.localize("ui.panel.lovelace.editor.section.add_card"),_):r.s6)}_cardMoved(t){t.stopPropagation();const{oldIndex:e,newIndex:i}=t.detail,o=(0,p.sQ)(this.lovelace.config,[this.viewIndex,this.index,e],[this.viewIndex,this.index,i]);this.lovelace.saveConfig(o)}_cardAdded(t){const{index:e,data:i}=t.detail,o=i,r=[this.viewIndex,this.index,e],s=(0,p.sQ)(this.lovelace.config,o,r);this.lovelace.saveConfig(s)}_cardRemoved(t){t.stopPropagation()}_dragStart(){this._dragging=!0}_dragEnd(){this._dragging=!1}_addCard(){(0,c.r)(this,"ll-create-card",{suggested:["tile","heading"]})}static get styles(){return[l.RF,(0,r.AH)(m||(m=w`:host{--base-column-count:12;--row-gap:var(--ha-section-grid-row-gap, 8px);--column-gap:var(--ha-section-grid-column-gap, 8px);--row-height:var(--ha-section-grid-row-height, 56px);display:flex;flex-direction:column;gap:var(--row-gap)}.container{--grid-column-count:calc( var(--base-column-count) * var(--column-span, 1) );display:grid;grid-template-columns:repeat(var(--grid-column-count),minmax(0,1fr));grid-auto-rows:auto;row-gap:var(--row-gap);column-gap:var(--column-gap);padding:0;margin:0 auto}.card{border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));position:relative;grid-row:span var(--row-size,1);grid-column:span min(var(--column-size,1),var(--grid-column-count))}.container.edit-mode .card{min-height:calc((var(--row-height) - var(--row-gap))/ 2)}.card.fit-rows{height:calc((var(--row-size,1) * (var(--row-height) + var(--row-gap))) - var(--row-gap))}.card.full-width{grid-column:1/-1}.card:has(> *){display:block}.card:has(> [hidden]){display:none}.add{position:relative;outline:0;grid-row:span 1;grid-column:span 3;background:0 0;cursor:pointer;border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));border:2px dashed var(--primary-color);height:var(--row-height);order:1;--ha-ripple-color:var(--primary-color);--ha-ripple-hover-opacity:0.04;--ha-ripple-pressed-opacity:0.12}.add:focus{border-style:solid}.sortable-ghost{border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}`))]}constructor(...t){super(...t),this.isStrategy=!1,this.cards=[],this.importOnly=!1,this._dragging=!1,this._cardConfigKeys=new WeakMap}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],E.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],E.prototype,"lovelace",void 0),(0,o.Cg)([(0,s.MZ)({type:Number})],E.prototype,"index",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],E.prototype,"viewIndex",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],E.prototype,"isStrategy",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],E.prototype,"cards",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"import-only",type:Boolean})],E.prototype,"importOnly",void 0),(0,o.Cg)([(0,s.wk)()],E.prototype,"_config",void 0),(0,o.Cg)([(0,s.wk)()],E.prototype,"_dragging",void 0),E=(0,o.Cg)([(0,s.EM)("hui-grid-section")],E),e()}catch(g){e(g)}})},26004:function(t,e,i){i.a(t,async function(t,e){try{i(49255),i(18111),i(81148),i(7588),i(61701),i(3362),i(62953);var o=i(40445),r=i(34271),s=i(5124),a=i(67576),n=i(93905),d=i(19459),c=i(42372),l=i(1087),h=(i(67094),i(28918)),u=i(91263),p=i(46856),v=i(14487),g=i(118),y=i(21146),b=i(15950),f=i(82360),m=i(90565),w=i(75196),_=i(15656),C=t([p,u,v,g]);[p,u,v,g]=C.then?(await C)():C;class x extends((0,u.M)(s.mN)){_createCardElement(t){const e=document.createElement("hui-card");return e.hass=this.hass,e.preview=this.preview,e.config=t,e.addEventListener("card-updated",t=>{t.stopPropagation(),this._cards=[...this._cards]}),e.load(),e}createRenderRoot(){return this}willUpdate(t){super.willUpdate(t);const e=t.get("config");!t.has("config")||e&&this.config===e||this._initializeConfig()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("card-visibility-changed",this._cardVisibilityChanged)}connectedCallback(){var t;super.connectedCallback(),this._updateVisibility(),this.addEventListener("card-visibility-changed",this._cardVisibilityChanged),this.hass&&null!==(t=this._config)&&void 0!==t&&t.theme&&(0,c.Q)(this,this.hass.themes,this._config.theme)}update(t){if(super.update(t),this._layoutElement){if(t.has("hass")){this._cards.forEach(t=>{t.hass=this.hass}),this._layoutElement.hass=this.hass;const i=t.get("hass");var e;if(!i||this.hass.themes!==i.themes||this.hass.selectedTheme!==i.selectedTheme)(0,c.Q)(this,this.hass.themes,null===(e=this._config)||void 0===e?void 0:e.theme)}t.has("lovelace")&&(this._layoutElement.lovelace=this.lovelace),t.has("preview")&&(this._layoutElement.preview=this.preview,this._cards.forEach(t=>{t.preview=this.preview})),t.has("importOnly")&&(this._layoutElement.importOnly=this.importOnly),t.has("_cards")&&(this._layoutElement.cards=this._cards),(t.has("hass")||t.has("preview")||t.has("_cards"))&&this._updateVisibility()}}async _initializeConfig(){let t=Object.assign({},this.config),e=!1;if((0,h.H)(t)&&(e=!0,t=await(0,_.xC)(t,this.hass)),t=Object.assign(Object.assign({},t),{},{type:t.type||"grid"}),e&&(0,d.b)(t,this._config))return;this._config=t,(0,c.Q)(this,this.hass.themes,this._config.theme);let i=!1;if(this._layoutElement&&this._layoutElementType===t.type?this._layoutElement.setConfig(t):(i=!0,this._createLayoutElement(this._config)),this._createCards(t),this._layoutElement.isStrategy=e,this._layoutElement.hass=this.hass,this._layoutElement.lovelace=this.lovelace,this._layoutElement.index=this.index,this._layoutElement.viewIndex=this.viewIndex,this._layoutElement.cards=this._cards,i){for(;this.lastChild;)this.removeChild(this.lastChild);this._updateVisibility()}}_updateVisibility(t){if(!this._layoutElement||!this._config)return;if(this.preview)return void this._setElementVisibility(!0);if(this._config.disabled)return void this._setElementVisibility(!1);if(!(null!=t?t:!this._config.visibility||(0,v.XH)(this._config.visibility,this.hass,this._conditionContext)))return void this._setElementVisibility(!1);const e=this._cards.length>0&&this._cards.every(t=>t.hidden);this._setElementVisibility(!e)}_setElementVisibility(t){this._layoutElement&&(this.hidden!==!t&&(this.style.setProperty("display",t?"":"none"),this.toggleAttribute("hidden",!t),(0,l.r)(this,"section-visibility-changed",{value:t})),this._layoutElement.parentElement||this.appendChild(this._layoutElement))}_createLayoutElement(t){this._layoutElement=(0,g.O)(t),this._layoutElementType=t.type,this._layoutElement.addEventListener("ll-create-card",t=>{var e;t.stopPropagation(),this.lovelace&&(0,y.u)(this,{lovelaceConfig:this.lovelace.config,saveConfig:this.lovelace.saveConfig,path:[this.viewIndex,this.index],suggestedCards:null===(e=t.detail)||void 0===e?void 0:e.suggested})}),this._layoutElement.addEventListener("ll-edit-card",t=>{if(t.stopPropagation(),!this.lovelace)return;const{cardIndex:e}=(0,w.gO)(t.detail.path),i=this.config;if((0,h.H)(i))return;const o=i.cards[e];(0,b.O)(this,{lovelaceConfig:this.lovelace.config,saveCardConfig:async t=>{const i=(0,f.bn)(this.lovelace.config,[this.viewIndex,this.index,e],t);await this.lovelace.saveConfig(i)},sectionConfig:i,cardConfig:o})}),this._layoutElement.addEventListener("ll-delete-card",t=>{t.stopPropagation(),this.lovelace&&(0,m.r)(this.hass,this.lovelace,t.detail)}),this._layoutElement.addEventListener("ll-duplicate-card",t=>{if(t.stopPropagation(),!this.lovelace)return;const{cardIndex:e}=(0,w.gO)(t.detail.path),i=this.config;if((0,h.H)(i))return;const o=i.cards[e];(0,b.O)(this,{lovelaceConfig:this.lovelace.config,saveCardConfig:async t=>{const e=(0,f.gm)(this.lovelace.config,[this.viewIndex,this.index],t);await this.lovelace.saveConfig(e)},cardConfig:o,sectionConfig:i,isNew:!0})}),this._layoutElement.addEventListener("ll-copy-card",t=>{if(t.stopPropagation(),!this.lovelace)return;const{cardIndex:e}=(0,w.gO)(t.detail.path),i=this.config;if((0,h.H)(i))return;const o=i.cards[e];this._clipboard=(0,r.A)(o)})}_createCards(t){t&&t.cards&&Array.isArray(t.cards)?this._cards=t.cards.map(t=>this._createCardElement(t)):this._cards=[]}constructor(...t){super(...t),this.preview=!1,this.importOnly=!1,this._cards=[],this._cardVisibilityChanged=()=>{this._updateVisibility()}}}(0,o.Cg)([(0,a.MZ)({attribute:!1})],x.prototype,"hass",void 0),(0,o.Cg)([(0,a.MZ)({attribute:!1})],x.prototype,"config",void 0),(0,o.Cg)([(0,a.MZ)({attribute:!1})],x.prototype,"lovelace",void 0),(0,o.Cg)([(0,a.MZ)({type:Boolean,reflect:!0})],x.prototype,"preview",void 0),(0,o.Cg)([(0,a.MZ)({type:Boolean,attribute:"import-only"})],x.prototype,"importOnly",void 0),(0,o.Cg)([(0,a.MZ)({type:Number})],x.prototype,"index",void 0),(0,o.Cg)([(0,a.MZ)({attribute:!1})],x.prototype,"viewIndex",void 0),(0,o.Cg)([(0,a.wk)()],x.prototype,"_cards",void 0),(0,o.Cg)([(0,n.I)({key:"dashboardCardClipboard",state:!1,subscribe:!1,storage:"sessionStorage"})],x.prototype,"_clipboard",void 0),x=(0,o.Cg)([(0,a.EM)("hui-section")],x),e()}catch(x){e(x)}})}}]);