/*! maintenance_supporter frontend 2.96.0 */ import{a as rt,b as F,e as C,f as zt,g as Nt}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-3DX24CU6.js";import{a as ut}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-RJY4VEHX.js";import{b as Ht}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-3VJOJBZ5.js";import{b as ct}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4OFQFCKD.js";import{b as Ot,c as qt}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-BA7DXCPM.js";import{f as Rt,l as st}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-BYGTDXRD.js";import{b as It,c as Mt,e as nt,f as Ct,h as Dt,k as jt}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-MHBW3M6D.js";import{j as ht}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-WJT4RRLS.js";import{a as M}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-BFBOHWBW.js";import{A as wt,B as y,C as N,D as Tt,E as tt,F as B,G as et,I as At,J as it,O as pt,P as Et,Q as Lt,R as St,T as Pt,a as p,b as $,c as a,d as q,f as d,h as S,l as T,m as u,n as bt,q as X,s as r,t as xt,u as $t,w as U,y as A,z as kt}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-N6F5RX6S.js";var V=$` .backdrop { position: fixed; inset: 0; z-index: 100; background: rgba(0,0,0,0.5); } .dialog { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 95vw; max-width: var(--ms-modal-max-width, 480px); max-height: var(--ms-modal-max-height, 92vh); overflow: auto; background: var(--card-background-color, var(--ha-card-background, #1c1c1c)); color: var(--primary-text-color); border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.4); padding: 20px; display: flex; flex-direction: column; gap: var(--ms-modal-gap, 14px); z-index: 101; } /* Focused programmatically on open (so Escape works at once) — no ring. */ .dialog:focus { outline: none; } `;function he(e,n){e.key!=="Escape"||e.defaultPrevented||e.composedPath().some(t=>t instanceof Element&&t.localName==="ms-camera-capture")||(e.preventDefault(),e.stopPropagation(),n())}function W(e,n){return a`
`}function G(e){e?.querySelector(".dialog")?.focus({preventScroll:!0})}var v=class extends S{constructor(){super(...arguments);this._open=!1;this._title="";this._message="";this._confirmText="";this._danger=!1;this._inputLabel="";this._inputType="";this._options=null;this._inputValue="";this._resolve=null;this._promptResolve=null}confirm(t){return this._title=t.title,this._message=t.message,this._confirmText=t.confirmText||"OK",this._danger=t.danger||!1,this._inputLabel="",this._inputType="",this._options=null,this._inputValue="",this._open=!0,new Promise(i=>{this._resolve=i,this._promptResolve=null})}prompt(t){return this._title=t.title,this._message=t.message,this._confirmText=t.confirmText||"OK",this._danger=t.danger||!1,this._inputLabel=t.inputLabel||"",this._inputType=t.inputType||"text",this._options=t.options&&t.options.length?t.options:null,this._inputValue=t.inputValue||"",this._open=!0,new Promise(i=>{this._promptResolve=i,this._resolve=null})}_cancel(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!1,value:""}),this._promptResolve=null),this._resolve?.(!1),this._resolve=null}_confirmAction(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!0,value:this._inputValue}),this._promptResolve=null),this._resolve?.(!0),this._resolve=null}render(){if(!this._open)return d;let t=A(this.hass);return a`
${this._title}
${this._message} ${this._inputLabel?a` `:d}
${r("cancel",t)} ${this._confirmText}
`}};v.styles=[St,$` .dialog-title { font-size: 18px; font-weight: 500; padding-bottom: 12px; } /* shared native-field scaffold from nativeFieldStyles; the prompt input follows the message text, hence the extra top margin here */ .field { margin-top: 12px; } .content { padding: 8px 0; min-width: 280px; line-height: 1.5; display: flex; flex-direction: column; gap: 12px; } .dialog-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 16px; } ha-textfield { display: block; } ha-button.danger { --mdc-theme-primary: var(--error-color, #f44336); } `],p([T({attribute:!1})],v.prototype,"hass",2),p([u()],v.prototype,"_open",2),p([u()],v.prototype,"_title",2),p([u()],v.prototype,"_message",2),p([u()],v.prototype,"_confirmText",2),p([u()],v.prototype,"_danger",2),p([u()],v.prototype,"_inputLabel",2),p([u()],v.prototype,"_inputType",2),p([u()],v.prototype,"_options",2),p([u()],v.prototype,"_inputValue",2);customElements.get("maintenance-confirm-dialog")||customElements.define("maintenance-confirm-dialog",v);var Ft="maintenance-confirm-dialog",Vt="data-ms-lovelace-confirm";function me(){return document.querySelector("home-assistant")?.shadowRoot??document.body}function z(e,n){let t=me(),i=t.querySelector(`${Ft}[${Vt}]`);return i||(i=document.createElement(Ft),i.setAttribute(Vt,""),t.appendChild(i)),i.hass=e,i.confirm(n)}var D=class extends S{constructor(){super(...arguments);this.docId="";this._url="";this._failed=!1;this._signedFor=""}updated(){this.hass&&this.docId&&this._signedFor!==this.docId&&(this._signedFor=this.docId,this._url="",this._failed=!1,this._sign())}async _sign(){try{this._url=await Ht(this.hass,this.docId)}catch{this._failed=!0}}render(){return this._failed||!this.docId?d:this._url?a` this._failed=!0} /> `:a`
`}};D.styles=$` .wrap { display: inline-block; margin-top: 4px; } /* #161: uniform 96px tiles — several photos sit in a strip, so a tiny or portrait shot must not collapse its slot. */ img { width: 96px; height: 96px; object-fit: cover; border-radius: 6px; display: block; border: 1px solid var(--divider-color); box-sizing: border-box; } .ph { width: 96px; height: 96px; border-radius: 6px; background: var(--secondary-background-color, rgba(0,0,0,0.06)); margin-top: 4px; } `,p([T({attribute:!1})],D.prototype,"hass",2),p([T()],D.prototype,"docId",2),p([u()],D.prototype,"_url",2),p([u()],D.prototype,"_failed",2);customElements.get("maintenance-history-photo")||customElements.define("maintenance-history-photo",D);var b=class extends S{constructor(){super(...arguments);this._open=!1;this._saving=!1;this._error="";this._draft=null;this._originalSnapshot=null;this._partOptions=null;this._partQty={};this._partQtyOriginal="";this._openGen=0;this._photos=new qt(this,{entryId:()=>this._draft?.entry_id??"",hass:()=>this.hass});this._photosOriginal="";this._readingRows=[];this._readingText={};this._readingsOriginal=""}get _lang(){return A(this.hass)}openEdit(t){this._openGen++,this._draft={...t},this._originalSnapshot={...t},this._error="",this._open=!0,this._partOptions=null,this._partQty={},this._partQtyOriginal="",this._photos.reset(t.photo_doc_ids??[]),this._photosOriginal=JSON.stringify(this._photos.ids),this._seedReadings(t),this._loadPartOptions()}_seedReadings(t){let i=[],s=new Set;for(let o of t.readings??[])s.has(o.id)||(s.add(o.id),i.push({id:o.id,name:o.name,unit:o.unit??null}));for(let o of t.reading_values??[])s.has(o.id)||(s.add(o.id),i.push({id:o.id,name:o.name,unit:o.unit??null}));this._readingRows=i;let l={};for(let o of t.reading_values??[])l[o.id]=String(o.value);this._readingText=l,this._readingsOriginal=JSON.stringify(this._readingNumbers())}_readingNumbers(){let t={};for(let i of this._readingRows){let s=(this._readingText[i.id]??"").trim();if(s==="")continue;let l=parseFloat(s.replace(",","."));isNaN(l)||(t[i.id]=l)}return t}async _loadPartOptions(){let t=this._draft;if(!t)return;let i=this._openGen;try{let s=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/parts/overview"});if(i!==this._openGen)return;let l=[];for(let c of s.parts||[]){let h=c.entry_id===t.entry_id,m=c.consumers.some(g=>g.entry_id===t.entry_id&&g.task_id===t.task_id);!h&&!m||l.push({part_id:c.part_id,name:c.name,entry_id:c.entry_id,foreign:!h,object_name:c.object_name})}for(let c of t.used_parts||[]){let h=c.entry_id||t.entry_id;l.some(m=>m.part_id===c.part_id&&m.entry_id===h)||l.push({part_id:c.part_id,name:c.name||c.part_id,entry_id:h,foreign:h!==t.entry_id,object_name:null})}let o={};for(let c of t.used_parts||[])o[`${c.entry_id||t.entry_id}:${c.part_id}`]=c.quantity??1;this._partOptions=l,this._partQty=o,this._partQtyOriginal=this._partSelectionKey()}catch{if(i!==this._openGen)return;this._partOptions=[]}}_partSelectionKey(){return JSON.stringify(Object.entries(this._partQty).filter(([,t])=>t>0).sort(([t],[i])=>t.localeCompare(i)))}close(){this._openGen++,this._open=!1,this._error="",this._draft=null,this._originalSnapshot=null,this._photos.discardOrphans()}_set(t,i){this._draft&&(this._draft={...this._draft,[t]:i})}async _delete(){if(!this._draft||!this._originalSnapshot)return;let t=this._lang;if(!await z(this.hass,{title:r("history_delete_entry",t),message:r("history_delete_confirm",t),confirmText:r("delete",t),danger:!0})||!this._draft||!this._originalSnapshot)return;let s=this._draft;this._error="",await this._runWs({type:"maintenance_supporter/task/history/delete",entry_id:s.entry_id,task_id:s.task_id,timestamp:this._originalSnapshot.original_timestamp})!==void 0&&(this.dispatchEvent(new CustomEvent("history-entry-saved",{detail:{entry_id:s.entry_id,task_id:s.task_id,deleted:!0},bubbles:!0,composed:!0})),this.close())}_runWs(t){return M(this,t,{busy:i=>{this._saving=i},onError:i=>{this._error=i}})}async _save(){if(!this._draft||!this._originalSnapshot||this._saving||this._photos.uploading)return;this._error="",this._photos.clearError();let t=this._draft,i=this._originalSnapshot,s={type:"maintenance_supporter/task/history/update",entry_id:t.entry_id,task_id:t.task_id,original_timestamp:i.original_timestamp};if(t.timestamp!==i.timestamp&&(s.timestamp=t.timestamp),t.notes!==i.notes&&(s.notes=t.notes),t.cost!==i.cost&&(s.cost=t.cost),t.duration!==i.duration&&(s.duration=t.duration),t.completed_by!==i.completed_by&&(s.completed_by=t.completed_by),this._partOptions!==null&&this._partSelectionKey()!==this._partQtyOriginal&&(s.used_parts=(this._partOptions||[]).filter(o=>(this._partQty[`${o.entry_id}:${o.part_id}`]||0)>0).map(o=>({part_id:o.part_id,quantity:this._partQty[`${o.entry_id}:${o.part_id}`],...o.foreign?{entry_id:o.entry_id}:{}}))),t.reading_value!==i.reading_value&&(s.reading_value=t.reading_value??null),this._readingRows.length>0&&JSON.stringify(this._readingNumbers())!==this._readingsOriginal){let o=this._readingNumbers(),c={};for(let h of this._readingRows)c[h.id]=o[h.id]??null;s.reading_values=c}if(JSON.stringify(this._photos.ids)!==this._photosOriginal&&(s.photo_doc_ids=this._photos.ids),Object.keys(s).filter(o=>!["type","entry_id","task_id","original_timestamp"].includes(o)).length===0){this.close();return}await this._runWs(s)!==void 0&&(this._photos.markAttached(),this.dispatchEvent(new CustomEvent("history-entry-saved",{detail:{entry_id:t.entry_id,task_id:t.task_id,new_timestamp:t.timestamp},bubbles:!0,composed:!0})),this.close())}render(){if(!this._open||!this._draft)return d;let t=this._lang,i=this._draft,s=this._error||this._photos.errorText(t);return W(()=>this.close(),a`

${r("history_edit_title",t)}

${r(i.type,t)||i.type}
{let o=l.detail.value;o&&this._set("timestamp",o)}} >
${this._renderReadings(i,t)} ${this._partOptions&&this._partOptions.length>0?a`
${r("complete_parts_used",t)} ${this._partOptions.map(l=>{let o=`${l.entry_id}:${l.part_id}`,c=this._partQty[o]||0;return a` `})}
`:d}
${r("completion_photos",t)} ${this._photos.photos.length>0?a`
${this._photos.photos.map(l=>a`
`)}
`:d} ${this._photos.full?a`${r("photos_limit",t).replace("{max}",String(this._photos.max))}`:a`this._photos.addFiles(l.detail.files)} >`} ${r("history_edit_photos_hint",t)}
${s?a`
${s}
`:d}
`)}updated(t){t.has("_open")&&this._open&&G(this.shadowRoot)}_renderReadings(t,i){return this._readingRows.length>0?a`
${r("readings_section",i)} ${this._readingRows.map(s=>a` `)}
`:t.reading_value==null&&t.task_type!=="reading"?d:a` `}};b.styles=[Ot,V,$` :host { display: contents; --ms-modal-max-height: 90vh; --ms-modal-gap: 12px; } h2 { margin: 0; font-size: 18px; } .entry-type { display: flex; align-items: center; gap: 6px; color: var(--secondary-text-color); font-size: 13px; } label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; } label span { color: var(--secondary-text-color); } .row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } input, textarea { padding: 8px; font-size: 14px; background: var(--secondary-background-color, #2c2c2c); color: var(--primary-text-color); border: 1px solid var(--divider-color, #444); border-radius: 6px; width: 100%; box-sizing: border-box; font-family: inherit; } .delete-entry { margin-right: auto; color: var(--error-color, #d32f2f); background: transparent; border: 1px solid var(--error-color, #d32f2f); border-radius: 6px; padding: 6px 10px; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; } .delete-entry ha-icon { --mdc-icon-size: 18px; } .actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 8px; } button { padding: 8px 16px; font-size: 14px; border-radius: 6px; cursor: pointer; border: none; font-weight: 500; } button.cancel { background: transparent; color: var(--primary-text-color); border: 1px solid var(--divider-color); } button.save { background: var(--primary-color); color: var(--text-primary-color, white); } button[disabled] { opacity: 0.5; cursor: wait; } .error { color: var(--error-color, #d32f2f); font-size: 13px; padding: 8px; background: rgba(211,47,47,0.1); border-radius: 6px; } /* #130: parts on the entry */ .parts-block { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--divider-color, #444); border-radius: 6px; padding: 8px; } .parts-title { color: var(--secondary-text-color); font-size: 13px; } .part-row-edit { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 14px; } .part-row-edit input[type="checkbox"] { width: auto; } .part-label { flex: 1; color: var(--primary-text-color); } .part-qty { width: 76px; } /* #161 phase 2: readings on the entry */ .readings-block { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--divider-color, #444); border-radius: 6px; padding: 8px; } .reading-row-edit { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 14px; } .reading-row-name { flex: 1; color: var(--primary-text-color); min-width: 0; } .reading-row-input { width: 140px; font-variant-numeric: tabular-nums; } /* #161: photos on the entry */ .photos-block { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--divider-color, #444); border-radius: 6px; padding: 8px; } .photo-strip { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; } .photo-tile { position: relative; width: fit-content; } .photo-remove { position: absolute; top: -4px; right: -8px; width: 22px; height: 22px; border-radius: 50%; border: none; background: var(--error-color, #db4437); color: #fff; cursor: pointer; font-size: 11px; line-height: 1; padding: 0; } /* the camera / gallery pickers come from photoPickerStyles (ms-photo-picker) */ .photos-hint { font-size: 12px; color: var(--secondary-text-color); } `],p([T({attribute:!1})],b.prototype,"hass",2),p([u()],b.prototype,"_open",2),p([u()],b.prototype,"_saving",2),p([u()],b.prototype,"_error",2),p([u()],b.prototype,"_draft",2),p([u()],b.prototype,"_partOptions",2),p([u()],b.prototype,"_partQty",2),p([u()],b.prototype,"_readingRows",2),p([u()],b.prototype,"_readingText",2);customElements.get("maintenance-history-edit-dialog")||customElements.define("maintenance-history-edit-dialog",b);function Wt(e,n,t=new Date){let i=e?.hours,s=e?.snoozed_until?new Date(e.snoozed_until):null;if(typeof i!="number"||!s||isNaN(s.getTime()))return r("snoozed",n);let o=s.toDateString()===t.toDateString()?tt(s,n):et(e.snoozed_until,n);return(i===1?r("snoozed_for_one",n):r("snoozed_for",n).replace("{hours}",y(i,n))).replace("{until}",o)}function _e(e,n){if(n<=0)return 0;let t=typeof e=="number"&&Number.isFinite(e)?Math.trunc(e):0;return t<0?0:t%n}function fe(e){return!!(e?.phases&&e.phase_sequence&&e.phase_sequence.length>0)}function mt(e){if(!e||!fe(e))return null;let n=e.phase_sequence,t=_e(e.phase_cursor,n.length),i=n[t],s=e.phases?.[i];return s?{id:i,name:s.name,index:t,count:n.length,notes:s.notes,checklist:s.checklist!==void 0?s.checklist:e.checklist??[],consumesParts:s.consumes_parts!==void 0?s.consumes_parts:e.consumes_parts??[],requiredFields:s.required_completion_fields!==void 0?s.required_completion_fields:e.required_completion_fields??[]}:null}function K(e){let n=mt(e);return n?`${n.index+1}/${n.count} \xB7 ${n.name}`:""}function ge(e,n){return typeof e=="number"&&Number.isFinite(e)&&e>=.01?e:n}function Gt(e){let n=e.task??null,t=n?mt(n):null,i=t?t.consumesParts:n?.consumes_parts||[],s=!!n?.part_ref,l=e.objects.find(g=>g.entry_id===e.entryId)?.parts||[],o=s?l.find(g=>g.id===n.part_ref.part_id):void 0,c=e.features?e.features.checklists:e.checklistsEnabled??!0,h=e.features?e.features.checklists?e.checklist??n?.checklist??[]:[]:e.checklist??[],m=e.features?e.features.adaptive&&(e.adaptiveEnabled??!!n?.adaptive_config?.enabled):!!e.adaptiveEnabled;return{entry_id:e.entryId,task_id:e.taskId,task_name:e.taskName,checklist:t?c?t.checklist:[]:h,adaptive_enabled:m,required_completion_fields:t?t.requiredFields:n?.required_completion_fields||[],task_type:n?.type||"",reading_unit:n?.reading_unit||"",readings:n?.readings||[],reading_history:Ct(n?.history),parts:s?[]:Mt({consumes_parts:i},e.entryId,e.objects,e.lang),consumes_parts:s?[]:i,phase_label:t?K(n):"",require_tag_scan:!!n?.require_tag_scan,restock_default:s?ge(o?.restock_quantity,1):null,restock_unit_cost:s?o?.cost??null:null,restock_package:s&&o?.package_size?Tt(o.package_size,o.unit,e.lang):"",currency_symbol:U({currency_symbol:e.currencySymbol}),consumes_info:i.map(g=>It(g,e.entryId,e.objects,e.lang)),checklist_prefill:n?.checklist_progress||{},via_tag_scan:!!e.viaTagScan,parts_cost_mode:e.partsCostMode??"purchase"}}function Ut(e,n,t){e.entryId=n.entry_id,e.taskId=n.task_id,e.taskName=n.task_name,e.lang=t,e.checklist=n.checklist??[],e.adaptiveEnabled=!!n.adaptive_enabled,e.requiredFields=n.required_completion_fields??[],e.taskType=n.task_type??"",e.readingUnit=n.reading_unit??"",e.readings=n.readings??[],e.readingHistory=n.reading_history??[],e.parts=n.parts??[],e.consumesParts=n.consumes_parts??[],e.phaseLabel=n.phase_label??"",e.requireTagScan=!!n.require_tag_scan,e.restockDefault=n.restock_default??null,e.restockUnitCost=n.restock_unit_cost??null,e.restockPackage=n.restock_package??"",e.currencySymbol=U(n),e.consumesInfo=n.consumes_info??[],e.checklistPrefill=n.checklist_prefill??{},e.viaTagScan=!!n.via_tag_scan,e.partsCostMode=n.parts_cost_mode??"purchase",e.open({viaTagScan:!!n.via_tag_scan})}function at(e){return e?customElements.get("ha-markdown")?a``:a`${e}`:d}function _t(e,n,t,i){let s=t,l=h=>typeof h=="string"?h:null,o=h=>typeof h=="number"?h:null,c=l(s.timestamp)??"";return{entry_id:e,task_id:n,original_timestamp:c,type:l(s.type)||"completed",timestamp:c,notes:l(s.notes),cost:o(s.cost),duration:o(s.duration),completed_by:l(s.completed_by),used_parts:Array.isArray(s.used_parts)?s.used_parts:null,photo_doc_ids:st(s),reading_value:o(s.reading_value),reading_values:nt(s),readings:i?.readings??[],task_type:i?.type??null,reading_unit:i?.reading_unit??null}}async function wi(e,n,t,i){let l=(await e.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:n})).tasks?.find(c=>c.id===t);if(!l)return null;let o=l.history?.find(c=>c.timestamp===i);return o||(o=(await e.connection.sendMessagePromise({type:"maintenance_supporter/task/history",entry_id:n,task_id:t})).history?.find(h=>h.timestamp===i)),o?_t(n,t,o,l):null}var Bt=e=>typeof e=="number"&&Number.isInteger(e)&&e>0;function ye(e){return e&&Bt(e.ref_no)?String(e.ref_no):null}function Kt(e,n){let t=ye(e);return t&&n&&Bt(n.ref_no)?`${t}.${n.ref_no}`:null}function Ei(e){let n=/^(\d+)(?:\.(\d+)(?:-(\d+))?)?$/.exec(e.trim());return n?{object:Number(n[1]),task:n[2]?Number(n[2]):null,entry:n[3]?Number(n[3]):null}:null}function Yt(e,n){return e?a`#${e}`:d}var ve=["completed","reset","skipped"];function ft(e){let n=t=>{let i=t.timestamp??"",s=Date.parse(i.length===10?`${i}T00:00:00`:i);return Number.isNaN(s)?-1/0:s};return(e??[]).map((t,i)=>({entry:t,index:i,at:n(t)})).sort((t,i)=>i.at-t.at||i.index-t.index).map(t=>t.entry)}var be=["completed","skipped","missed","reset","triggered","trigger_replaced","trigger_removed"];function Oi(e,n){let t=n.lang;return a`
${be.map(i=>{let s=e.history.filter(l=>l.type===i).length;return s===0?d:a` n.setFilter(n.filter===i?null:i)}> ${r(i,t)} (${s}) `})} ${n.filter?a`n.setFilter(null)}>${r("show_all",t)}`:d}
n.setSearch(i.target.value)} />
`}function zi(e,n){let t=n.lang,i=n.filter?e.history.filter(s=>s.type===n.filter):e.history;if(n.search){let s=n.search.toLowerCase();i=i.filter(l=>ct(l.notes,n.search)||ct(ut(l.notes,t),n.search)||(Zt(n,l)??"").toLowerCase().endsWith(s))}return i.length===0?a`

${r("no_history",t)}

`:a`
${ft(i).map(s=>gt(s,n))}
`}function Zt(e,n){return e.taskRef&&n.ref_no?`${e.taskRef}-${n.ref_no}`:null}function xe(e,n){let t=st(n);return t.length>0?a`
${t.map(i=>a``)}
`:d}function $e(e,n){let t=n.lang,i=o=>y(o,t,{maximumFractionDigits:3}),s=o=>o==null?"":` (${o>=0?"+":""}${i(o)})`,l=nt(e);return l.length>0?a`
${l.map(o=>a` ${o.name} ${i(o.value)}${o.unit?` ${o.unit}`:""}${s(n.readingSlotDelta?.(e,o.id))} `)}
`:e.reading_value!=null?a`
${r("reading_label",t)} ${i(e.reading_value)}${n.readingUnit?` ${n.readingUnit}`:""}${s(n.readingDelta?.(e))}
`:d}function gt(e,n,t={}){let i=n.lang,{compact:s=!1,showRef:l=!0,showBadges:o=!0,showEdit:c=!0}=t,h=n.openEdit,m=c&&!!h&&ve.includes(e.type),g=typeof e.parts_cost=="number"?e.parts_cost:null,k=e.cost_basis==="use",O=k&&!!e.purchase;return a`
${s?d:a`
`}
${r(e.type,i)} ${l?Yt(Zt(n,e),r("ref_number",i)):d} ${o&&e.phase_id?a`${n.phaseNames?.[e.phase_id]||e.phase_id}`:d} ${o&&e.auto?a`${r("history_auto",i)}`:d} ${m?a``:d}
${et(e.timestamp,i)}
${e.notes?a`
${ut(e.notes,i)}
`:d} ${xe(n.hass,e)} ${$e(e,n)} ${e.cost!=null||e.duration!=null||e.trigger_value!=null||g!=null?a`
${e.cost!=null?O?a`${r("history_purchase_stock",i).replace("{amount}",N(e.cost,n.currencySymbol,i))}`:a`${r("cost",i)}: ${N(e.cost,n.currencySymbol,i)}`:d} ${g!=null?a`${r(k?"history_parts_counted":"history_parts_info",i).replace("{amount}",N(g,n.currencySymbol,i))}`:d} ${e.duration!=null?a`${r("duration",i)}: ${it(e.duration,i)}`:d} ${e.trigger_value!=null?a`${r("trigger_val",i)}: ${e.trigger_value}`:d}
`:d}
`}var ke="var(--maint-done-color, #78909c)";function Y(e){return e.archived?"archived":e.is_done?"done":e.status||"ok"}function yt(e,n){return r(e==="done"?"completed":e,n)}function ot(e){let n=Y(e);return n==="done"?ke:bt[n]||"var(--disabled-color, #9e9e9e)"}function we(e){return X[e==="done"?"completed":e]||"mdi:circle-medium"}function Jt(e,n,t="pill"){let i=Y(e),s=yt(i,n);return t==="chip"?a`${s}`:a`${s}`}function _(e){return e.toFixed(1)}function Gi(e,n,t=4){if(!isFinite(e)||!isFinite(n))return{ticks:[],niceMin:0,niceMax:1};if(e===n){let m=Math.abs(e)*.1||1;e-=m,n+=m}let i=n-e,s=Math.pow(10,Math.floor(Math.log10(i/Math.max(1,t)))),l=s;for(let m of[1,2,5,10])if(l=s*m,i/l<=t+.5)break;let o=Math.floor(e/l)*l,c=Math.ceil(n/l)*l,h=[];for(let m=o;m<=c+l*1e-6;m+=l)h.push(Math.abs(m)({maximumFractionDigits:s});return t>=1e6?y(e/1e6,n,i(t>=1e7?0:1))+"M":t>=1e4?y(e/1e3,n,i(0))+"k":t>=1e3?y(e/1e3,n,i(1))+"k":t>=100?y(e,n,i(0)):t>=1?y(e,n,i(1)):t===0?"0":y(e,n,i(2))}function Bi(e,n,t){let i=y(e,t,{maximumFractionDigits:Math.abs(e)>=100?0:1});return n?`${i} ${n}`:i}function Ki(e,n,t){return pt(new Date(e),n,t)}function Yi(e,n){let t=new Date(e);return`${pt(t,n)}, ${tt(t,n)}`}function Zi(e,n){return new Date(e).getFullYear()!==new Date(n).getFullYear()}function Ji(e,n,t){if(t<2||n<=e)return[e,n];let i=[];for(let s=0;s
${r("weibull_reliability_curve",n)} ${Te(i,n)}
${Ae(i,s,l,o,n)} ${Ee(t,n)} ${t?.confidence_interval_low!=null?Le(t,e,n):d} `}function Te(e,n){let t,i,s;return e<.8?(t="early_failures",i="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z",s="beta_early_failures"):e<=1.2?(t="random_failures",i="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,17H11V15H13V17M13,13H11V7H13V13Z",s="beta_random_failures"):e<=3.5?(t="wear_out",i="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M12,6A6,6 0 0,1 18,12H12V6Z",s="beta_wear_out"):(t="highly_predictable",i="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z",s="beta_highly_predictable"),a` ${r(s,n)} (\u03B2=${y(e,n,2)}) `}function Ae(e,n,t,i,s){let x=Math.max(t,i,n,1)*1.3,P=50,H=[];for(let w=0;w<=P;w++){let L=w/P*x,ce=1-Math.exp(-Math.pow(L/n,e)),pe=32+L/x*260,ue=136-ce*128;H.push([pe,ue])}let Z=H.map(([w,L])=>`${_(w)},${_(L)}`).join(" "),dt="M32,136 "+H.map(([w,L])=>`L${_(w)},${_(L)}`).join(" ")+` L${_(H[P][0])},136 Z`,j=32+t/x*260,J=1-Math.exp(-Math.pow(t/n,e)),Q=136-J*128,le=y((1-J)*100,s,0),vt=32+i/x*260,de=[0,.25,.5,.75,1];return a`
${de.map(w=>{let L=136-w*128;return q` ${y(w*100,s,0)}% `})} 0 ${Math.round(x/2)} ${Math.round(x)} ${t>0?q` R=${le}% `:d} ${i>0&&i!==t?q` `:d}
${r("weibull_failure_probability",s)} ${t>0?a` ${r("current_interval_marker",s)}`:d} ${i>0&&i!==t?a` ${r("recommended_marker",s)}`:d}
`}function Ee(e,n){return a`
${r("characteristic_life",n)} ${Math.round(e.weibull_eta)} ${r("days",n)}
${e.weibull_r_squared!=null?a`
${r("weibull_r_squared",n)} ${y(e.weibull_r_squared,n,3)}
`:d}
`}function Le(e,n,t){let i=e.confidence_interval_low,s=e.confidence_interval_high,l=n.suggested_interval??n.interval_days??0,o=n.interval_days??0,c=Math.max(0,i-5),m=s+5-c,g=(i-c)/m*100,k=(s-i)/m*100,O=(l-c)/m*100,x=o>0?(o-c)/m*100:-1;return a`
${r("confidence_interval",t)}: ${l} ${r("days",t)} (${i}\u2013${s})
${x>=0?a`
`:d}
${r("confidence_conservative",t)} (${i}${r("days",t).charAt(0)}) ${r("confidence_aggressive",t)} (${s}${r("days",t).charAt(0)})
`}function Xt(e,n,t){let i=e.degradation_trend!=null&&e.degradation_trend!=="insufficient_data",s=e.days_until_threshold!=null,l=e.environmental_factor!=null&&e.environmental_factor!==1;if(!i&&!s&&!l)return d;let o=e.degradation_trend==="rising"?"M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z":e.degradation_trend==="falling"?"M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z":"M22,12L18,8V11H3V13H18V16L22,12Z";return a`
${e.sensor_prediction_urgency?a`
${r("sensor_prediction_urgency",n).replace("{days}",String(Math.round(e.days_until_threshold||0)))}
`:d}
${r("sensor_prediction",n)}
${i?a`
${r("degradation_trend",n)} ${r("trend_"+e.degradation_trend,n)} ${e.degradation_rate!=null?a`${e.degradation_rate>0?"+":""}${y(e.degradation_rate,n,Math.abs(e.degradation_rate)>=10?0:1)} ${e.trigger_entity_info?.unit_of_measurement||""}/${r("day_short",n)}`:d}
`:d} ${s?a`
${r("days_until_threshold",n)} ${e.days_until_threshold===0?r("threshold_exceeded",n):"~"+Math.round(e.days_until_threshold)+" "+r("days",n)} ${e.threshold_prediction_date?a`${B(e.threshold_prediction_date,n)}`:d} ${e.threshold_prediction_confidence?a``:d} ${(e.prediction_cycles??0)>0?a`${r("prediction_cycles",n)}: ${e.prediction_cycles}`:d}
`:d} ${l&&t.environmental?a`
${r("environmental_adjustment",n)} ${y(e.environmental_factor,n,2)}x ${e.environmental_entity?a`Lt(c,e.environmental_entity)}>${e.environmental_entity}`:d}
`:d}
`}function te(e,n,t,i){let s=Math.max(e||1,n);return a`
${r("current",i)}: ${e??"\u2014"} ${e!=null?r("days",i):""}
${r("recommended",i)}: ${n} ${r("days",i)} ${r(`confidence_${t}`,i)}
`}var ee=["month_jan","month_feb","month_mar","month_apr","month_may","month_jun","month_jul","month_aug","month_sep","month_oct","month_nov","month_dec"];function ie(e,n,t){if(!t.seasonal||!e.seasonal_factor||e.seasonal_factor===1)return d;let i=ee.map(c=>r(c,n)),s=new Date().getMonth(),l=e.seasonal_factors||e.interval_analysis?.seasonal_factors||null,o=l&&l.length===12?l:i.map((c,h)=>{let m=e.seasonal_factor||1,g=Math.sin((h-6)*Math.PI/6)*.3;return Math.max(.7,Math.min(1.3,m+g))});return a`

${r("seasonal_awareness",n)}

${o.map((c,h)=>{let m=c*40,g=c<.9?"low":c>1.1?"high":"normal";return a`
`})}
${r("shorter",n)} ${r("normal",n)} ${r("longer",n)}
`}function ne(e,n){return Se(e,n)}function Se(e,n){let t=e.seasonal_factors??e.interval_analysis?.seasonal_factors;if(!t||t.length!==12)return d;let i=e.interval_analysis?.seasonal_reason,s=new Date().getMonth(),l=300,o=100,c=8,m=o-c-4,g=Math.max(...t,1.5),k=l/12,O=k*.65,x=c+m-1/g*m;return a`
${r("seasonal_chart_title",n)} ${i?a`${i==="learned"?r("seasonal_learned",n):r("seasonal_manual",n)}`:d}
${t.map((P,H)=>{let Z=P/g*m,dt=H*k+(k-O)/2,j=c+m-Z,J=H===s,Q=P<1?"var(--success-color, #4caf50)":P>1?"var(--warning-color, #ff9800)":"var(--secondary-text-color)";return q` `})}
${ee.map((P,H)=>a`${r(P,n)}`)}
`}var f=class extends S{constructor(){super(...arguments);this._open=!1;this._entryId=null;this._taskId=null;this._task=null;this._objectName="";this._taskRef=null;this._busy=!1;this._error="";this._showSkip=!1;this._showReset=!1;this._showPostpone=!1;this._showDetails=!1;this._showAdaptive=!1;this._skipReason="";this._resetDate="";this._postponeDate="";this._features={adaptive:!1,seasonal:!1,environmental:!1,budget:!1,groups:!1,checklists:!1,schedule_time:!1,completion_actions:!1};this._toast="";this._toastTimer=new Nt;this._access=rt;this._currencySymbol="";this._partsCostMode="purchase";this._loadSeq=0}get _lang(){return A(this.hass)}async openFor(t,i){(t!==this._entryId||i!==this._taskId)&&(this._task=null),this._entryId=t,this._taskId=i,this._error="",this._showSkip=!1,this._showReset=!1,this._showPostpone=!1,this._showAdaptive=!1,this._skipReason="",this._postponeDate="",this._resetDate=Rt(new Date),this._open=!0,await Promise.all([this._loadTask(),this._loadFeatures()])}async _loadFeatures(){let t=await C(this.hass);this._features={...this._features,...t.features},this._access=t.access,this._currencySymbol=U(t.budget??void 0),kt(t.budget??void 0),this._partsCostMode=t.partsCostMode}close(){this._loadSeq++,this._open=!1,this._task=null,this._error="",this._toastTimer.clear(),this._toast=""}_showToast(t,i){this._toast=t,this._toastTimer.schedule(()=>{this._toast=""},i)}async _loadTask(){let t=this._entryId,i=this._taskId;if(!t||!i)return;let s=++this._loadSeq,l="",o=await M(this,{type:"maintenance_supporter/object",entry_id:t},{onError:h=>{l=h}});if(s!==this._loadSeq)return;if(o===void 0){this._error=l;return}this._objectName=o?.object?.name||"";let c=(o?.tasks||[]).find(h=>h.id===i);this._task=c??null,this._taskRef=Kt(o?.object,c),c||(this._error=r("ws_err_not_found",this._lang))}_runWs(t){return this._error="",M(this,t,{busy:i=>{this._busy=i},onError:i=>{this._error=i}})}_notifyChanged(t){this.dispatchEvent(new CustomEvent("task-action-fired",{detail:{entry_id:this._entryId,task_id:this._taskId,action:t},bubbles:!0,composed:!0}))}_onComplete(){!this._entryId||!this._taskId||!this._task||import("/maintenance_supporter_panelfiles/panel-chunks/dialog-mount-FGPZ3MEC.js").then(async({openCompleteDialog:t})=>{let i=this._task,s=[];try{s=(await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/objects",compact:!0})).objects||[]}catch{}t(Gt({entryId:this._entryId,taskId:this._taskId,taskName:i.name,task:i,objects:s,lang:this._lang,features:this._features,currencySymbol:this._currencySymbol,partsCostMode:this._partsCostMode}))&&(this._notifyChanged("complete"),this.close())})}async _onSkipConfirm(){if(!this._entryId||!this._taskId)return;await this._runWs({type:"maintenance_supporter/task/skip",entry_id:this._entryId,task_id:this._taskId,reason:this._skipReason.trim()||null})!==void 0&&(this._notifyChanged("skip"),this.close())}async _onResetConfirm(){if(!this._entryId||!this._taskId)return;await this._runWs({type:"maintenance_supporter/task/reset",entry_id:this._entryId,task_id:this._taskId,date:this._resetDate||void 0})!==void 0&&(this._notifyChanged("reset"),this.close())}async _onPostponeConfirm(){if(!this._entryId||!this._taskId||!this._postponeDate)return;await this._runWs({type:"maintenance_supporter/task/postpone",entry_id:this._entryId,task_id:this._taskId,until:this._postponeDate})!==void 0&&(this._notifyChanged("postpone"),this.close())}async _onSnooze(){if(!this._entryId||!this._taskId)return;let t=await this._runWs({type:"maintenance_supporter/task/snooze",entry_id:this._entryId,task_id:this._taskId});t!==void 0&&(this._notifyChanged("snooze"),this.dispatchEvent(new CustomEvent("hass-notification",{detail:{message:Wt(t,this._lang)},bubbles:!0,composed:!0})),this.close())}_onEdit(){!this._entryId||!this._taskId||import("/maintenance_supporter_panelfiles/panel-chunks/dialog-mount-FGPZ3MEC.js").then(({openEditTaskDialog:t})=>{t(this._entryId,this._taskId),this.close()})}_onQr(){!this._entryId||!this._taskId||!this._task||import("/maintenance_supporter_panelfiles/panel-chunks/dialog-mount-FGPZ3MEC.js").then(({openQrDialog:t})=>{t({entry_id:this._entryId,task_id:this._taskId,task_name:this._task.name,object_name:this._objectName}),this.close()})}async _onDelete(){if(!this._entryId||!this._taskId||!await z(this.hass,{title:r("delete",this._lang),message:r("delete_task_confirm",this._lang),confirmText:r("delete",this._lang),danger:!0}))return;await this._runWs({type:"maintenance_supporter/task/delete",entry_id:this._entryId,task_id:this._taskId})!==void 0&&(this._notifyChanged("delete"),this.close())}async _onArchive(){if(!this._entryId||!this._taskId)return;await this._runWs({type:"maintenance_supporter/task/archive",entry_id:this._entryId,task_id:this._taskId})!==void 0&&(this._notifyChanged("archive"),this.close())}async _onUnarchive(){if(!this._entryId||!this._taskId)return;await this._runWs({type:"maintenance_supporter/task/unarchive",entry_id:this._entryId,task_id:this._taskId})!==void 0&&(this._notifyChanged("unarchive"),this.close())}_onOpenInPanel(){if(!this._entryId||!this._taskId)return;let t=`/maintenance-supporter?entry_id=${encodeURIComponent(this._entryId)}&task_id=${encodeURIComponent(this._taskId)}`;history.pushState(null,"",t),window.dispatchEvent(new CustomEvent("location-changed")),this.close()}async _applySuggestion(){if(!this._entryId||!this._taskId||!this._task?.suggested_interval)return;await this._runWs({type:"maintenance_supporter/task/apply_suggestion",entry_id:this._entryId,task_id:this._taskId,interval:this._task.suggested_interval})!==void 0&&(this._showToast(r("suggestion_applied",this._lang)),this._notifyChanged("apply_suggestion"),await this._loadTask())}async _reanalyzeInterval(){if(!this._entryId||!this._taskId)return;let t=await this._runWs({type:"maintenance_supporter/task/analyze_interval",entry_id:this._entryId,task_id:this._taskId});t!==void 0&&(this._showToast(t?.recommended_interval?`${r("reanalyze_result",this._lang)}: ${At(t.recommended_interval,"days",this._lang)} (${t.data_points} ${r("data_points",this._lang)})`:r("reanalyze_insufficient_data",this._lang)),await this._loadTask())}_onEditHistoryEntry(t){if(!this._entryId||!this._taskId)return;let i=_t(this._entryId,this._taskId,t,this._task);import("/maintenance_supporter_panelfiles/panel-chunks/dialog-mount-FGPZ3MEC.js").then(({openHistoryEditDialog:s})=>s(i))}_renderRecommendation(t){if(!this._features.adaptive||!t.suggested_interval||t.suggested_interval===t.interval_days)return d;let i=this._lang;return a`

${r("suggested_interval",i)}

${te(t.interval_days,t.suggested_interval,t.interval_confidence||"medium",i)}
${F(this.hass?.user,this._access)?a``:d}
`}_renderAdaptive(t){let i=this._lang,s=this._features.adaptive&&t.suggested_interval&&t.suggested_interval!==t.interval_days,l=t.degradation_trend!=null&&t.degradation_trend!=="insufficient_data"||t.days_until_threshold!=null||t.environmental_factor!=null&&t.environmental_factor!==1,o=this._features.adaptive&&t.interval_analysis?.weibull_beta!=null&&t.interval_analysis?.weibull_eta!=null,c=this._features.seasonal&&t.seasonal_factor&&t.seasonal_factor!==1;return!s&&!l&&!o&&!c?a`
${r("adaptive_no_data",i)}
`:a`
${this._toast?a`
${this._toast}
`:d} ${s?this._renderRecommendation(t):d} ${l?Xt(t,i,this._features):d} ${o?Qt(t,i):d} ${c?a` ${ie(t,i,this._features)} ${t.seasonal_factors?.length===12||t.interval_analysis?.seasonal_factors?.length===12?ne(t,i):d} `:d}
`}_renderDetails(t){let i=this._lang,s=t.history||[],l=t.history_count??s.length,o=ft(s).slice(0,20);return a`
${r("times_performed",i)} ${t.times_performed??0}
${r("total_cost",i)} ${N(t.total_cost??0,this._currencySymbol,i)}
${r("avg_duration",i)} ${it(t.average_duration!=null?Math.round(t.average_duration):null,i)}
${r("history",i)} ${l}
${s.length===0?a`
${r("history_empty",i)}
`:a`
${o.map(c=>gt(c,{lang:i,hass:this.hass,currencySymbol:this._currencySymbol,openEdit:F(this.hass?.user,this._access)?h=>this._onEditHistoryEntry(h):void 0,readingUnit:t.reading_unit,readingSlotDelta:(h,m)=>Dt(s,h,m),taskRef:this._taskRef},{compact:!0}))} ${l>o.length?a`
… +${l-o.length} ${r("older_entries",i)}
`:d}
`}
`}render(){if(!this._open)return d;let t=this._lang,i=this._task,s=F(this.hass?.user,this._access),l=!!i&&(!!i.archived||i.enabled===!1||i.status==="paused");return W(()=>this.close(),a` ${i?a`
${i.name} ${Jt(i,t)}
${i.next_due?a`${r("next_due",t)}: ${B(i.next_due,t)}`:d} ${i.last_performed?a`${r("last_performed",t)}: ${B(i.last_performed,t)}`:d} ${i.schedule?.kind&&!["manual","one_time"].includes(i.schedule.kind)||i.interval_days!=null?a`${r("interval",t)}: ${Et(i,t)}`:d} ${K(i)?a`${r("phase_current",t)}: ${K(i)}`:d}
${i.notes?a`
${at(i.notes)}
`:d}
${this._error?a`
${this._error}
`:d} ${this._showSkip?a`
{this._skipReason=o.target.value}} />
`:this._showReset?a`
{this._resetDate=o.detail.value}} >
`:this._showPostpone?a`
{this._postponeDate=o.detail.value}} >
`:a`
${r("complete",t)} ${i.allow_skip!==!1?a` {this._showSkip=!0}} .disabled=${this._busy}> ${r("skip",t)} `:d} {this._showReset=!0}} .disabled=${this._busy}> ${r("reset",t)}
${s?a` ${r("edit",t)} `:d} ${r("qr_code",t)} ${l?d:a`{this._showPostpone=!0}} .disabled=${this._busy}> ${r("postpone",t)}… ${r("snooze",t)} `} ${s?a` ${i.archived?r("unarchive",t):r("archive",t)} ${r("delete",t)} `:d}
${this._features.adaptive||this._features.seasonal||this._features.environmental?a``:d}
${this._showDetails?this._renderDetails(i):d} ${this._showAdaptive?this._renderAdaptive(i):d} `} `:this._error?a`
${this._error}
`:a`
${r("loading",t)}
`} `)}updated(t){t.has("_open")&&this._open&&G(this.shadowRoot)}};f.styles=[Pt,V,$` :host { display: contents; --ms-modal-max-width: 460px; } .header { display: flex; flex-direction: column; gap: 6px; } .title { display: flex; align-items: center; gap: 10px; } .status-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; } .task-name { font-size: 18px; font-weight: 600; } .object { font-size: 13px; color: var(--secondary-text-color); } .link-inline { background: transparent; border: none; padding: 0; cursor: pointer; color: var(--primary-color); font-size: inherit; font-family: inherit; } .link-inline:hover { text-decoration: underline; } .quick-info { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--secondary-text-color); padding-top: 4px; border-top: 1px solid var(--divider-color); } .quick-info strong { color: var(--primary-text-color); font-weight: 500; } .actions { display: flex; gap: 8px; } .actions.primary-row { gap: 6px; } .actions.primary-row .btn { flex: 1; } .actions.primary-row ha-button { flex: 1; } /* Edit + QR are admin-tools — left-align as a group; Delete is destructive so it gets pushed to the far right with margin-left:auto for visual separation. Earlier this row was flex-end which left a strange empty gap on the left (user feedback). */ .actions.secondary-row { padding-top: 8px; border-top: 1px solid var(--divider-color); justify-content: flex-start; /* 360 px: Edit + QR + Archive + Delete were 388 px in a 342 px row — Delete sat past the dialog edge (audit 2026-09-29). Wrap instead; Delete keeps its margin-left:auto on the second line. */ flex-wrap: wrap; row-gap: 6px; } .actions.secondary-row .btn.danger, .actions.secondary-row ha-button.danger { margin-left: auto; } .actions.secondary-row ha-button { --ha-button-font-size: 13px; } .btn { padding: 8px 12px; font-size: 14px; border-radius: 6px; cursor: pointer; border: 1px solid var(--divider-color); background: var(--secondary-background-color, transparent); color: var(--primary-text-color); font-weight: 500; display: inline-flex; align-items: center; gap: 6px; transition: background 0.12s; } .btn:hover { background: var(--state-icon-color, rgba(255,255,255,0.06)); } .btn[disabled] { opacity: 0.5; cursor: wait; } .btn.primary { background: var(--primary-color); color: var(--text-primary-color, white); border-color: var(--primary-color); } .btn.cancel { background: transparent; } .btn.ghost { padding: 6px 10px; font-size: 13px; } .btn.danger { color: var(--error-color); } .btn ha-icon { --mdc-icon-size: 18px; } .inline-form { display: flex; flex-direction: column; gap: 8px; } .notes-body { margin-top: 8px; padding: 8px; border-radius: 6px; background: var(--secondary-background-color); font-size: 13px; white-space: pre-wrap; word-break: break-word; } .notes-body ha-markdown { white-space: normal; } .inline-form label { font-size: 13px; color: var(--secondary-text-color); } .inline-form input { padding: 8px; font-size: 14px; background: var(--secondary-background-color, #2c2c2c); color: var(--primary-text-color); border: 1px solid var(--divider-color, #444); border-radius: 6px; } .inline-actions { display: flex; gap: 8px; justify-content: flex-end; } .footer { display: flex; justify-content: center; padding-top: 4px; } .link { background: transparent; border: none; cursor: pointer; color: var(--primary-color); font-size: 13px; display: inline-flex; align-items: center; gap: 4px; } .link:hover { text-decoration: underline; } .link ha-icon { --mdc-icon-size: 14px; } .loading { padding: 24px; text-align: center; color: var(--secondary-text-color); } .error { padding: 8px; border-radius: 6px; background: rgba(211,47,47,0.1); color: var(--error-color, #d32f2f); font-size: 13px; } /* Details (expandable Show details section) */ .details-toggle { display: flex; justify-content: center; margin-top: 4px; } .details { display: flex; flex-direction: column; gap: 12px; border-top: 1px solid var(--divider-color); padding-top: 12px; } .stats-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; } .stat { display: flex; flex-direction: column; gap: 2px; background: var(--secondary-background-color, rgba(255,255,255,0.04)); padding: 8px; border-radius: 6px; align-items: center; } .stat-label { font-size: 11px; color: var(--secondary-text-color); text-transform: uppercase; letter-spacing: 0.5px; } .stat-value { font-size: 16px; font-weight: 600; } .history-header { display: flex; align-items: baseline; gap: 8px; font-size: 14px; } .history-count { font-size: 12px; color: var(--secondary-text-color); background: var(--secondary-background-color); padding: 2px 8px; border-radius: 999px; } .history-empty { color: var(--secondary-text-color); font-style: italic; font-size: 13px; } /* The rows themselves are the shared renderer's (.history-entry.compact + the history-* classes from sharedStyles); only the list chrome is local. */ .history-list { display: flex; flex-direction: column; max-height: 280px; overflow: auto; } .history-list .history-entry { padding: 6px 8px; border-radius: 6px; border-bottom: none; margin-bottom: 6px; background: var(--secondary-background-color, rgba(255,255,255,0.03)); } .history-list .history-date { font-size: 11px; } .history-list .history-details { font-size: 11px; } .history-more { padding: 8px; text-align: center; font-size: 12px; color: var(--secondary-text-color); font-style: italic; } /* Adaptive section — wraps the panel renderers (which assume sharedStyles are present) and adds dialog-specific layout. */ .adaptive-stack { display: flex; flex-direction: column; gap: 12px; border-top: 1px solid var(--divider-color); padding-top: 12px; } .adaptive-empty { padding: 16px; text-align: center; color: var(--secondary-text-color); font-style: italic; font-size: 13px; border-top: 1px solid var(--divider-color); } .toast { padding: 8px 12px; border-radius: 6px; background: rgba(76, 175, 80, 0.15); color: #4caf50; font-size: 13px; font-weight: 500; } /* The panel's recommendation-card uses ha-button. We use plain `:d} `:a`
${r("loading",t)}
`} `)}updated(t){t.has("_open")&&this._open&&G(this.shadowRoot)}_renderMetaRow(t){let i=this._lang,s=[];return t.area_id&&s.push([r("area",i),t.area_id]),t.manufacturer&&s.push([r("manufacturer",i),t.manufacturer]),t.model&&s.push([r("model",i),t.model]),t.serial_number&&s.push([r("serial_number_label",i),t.serial_number]),t.installation_date&&s.push([r("installed",i),t.installation_date]),t.warranty_expiry&&s.push([r("warranty",i),t.warranty_expiry]),t.documentation_url&&s.push([r("documentation_url_label",i),t.documentation_url]),s.length===0?d:a`
${s.map(([l,o])=>a`
${l} ${se(o)?a`${o}`:o}
`)}
`}};E.styles=[V,$` :host { display: contents; } .header { display: flex; flex-direction: column; gap: 6px; } .title { font-size: 20px; font-weight: 600; } .meta { display: flex; flex-direction: column; gap: 4px; padding-top: 4px; border-top: 1px solid var(--divider-color); } .meta-item { display: flex; gap: 8px; font-size: 12px; } .meta-label { color: var(--secondary-text-color); min-width: 100px; } .meta-value { color: var(--primary-text-color); flex: 1; word-break: break-word; } .meta-value a { color: var(--primary-color); } .tasks-section, .notes-section { display: flex; flex-direction: column; gap: 6px; } .section-header { display: flex; align-items: baseline; gap: 8px; } .count { font-size: 11px; color: var(--secondary-text-color); background: var(--secondary-background-color); padding: 2px 8px; border-radius: 999px; } .empty { color: var(--secondary-text-color); font-style: italic; font-size: 13px; padding: 8px 0; } .task-list { display: flex; flex-direction: column; gap: 4px; max-height: 200px; overflow: auto; } .task-row { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 6px; cursor: pointer; background: var(--secondary-background-color, rgba(255,255,255,0.03)); transition: background 0.12s; } .task-row:hover { background: var(--state-icon-color, rgba(255,255,255,0.06)); } .status-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; } .task-name { flex: 1; font-size: 14px; } .task-status { font-size: 11px; color: var(--secondary-text-color); text-transform: uppercase; } .notes-body { white-space: pre-wrap; font-size: 13px; padding: 8px; background: var(--secondary-background-color); border-radius: 6px; } .notes-body ha-markdown { white-space: normal; } .actions { display: flex; gap: 8px; padding-top: 8px; border-top: 1px solid var(--divider-color); } .actions .btn { flex: 1; } .btn { padding: 8px; font-size: 13px; border-radius: 6px; cursor: pointer; border: 1px solid var(--divider-color); background: var(--secondary-background-color, transparent); color: var(--primary-text-color); font-weight: 500; display: inline-flex; align-items: center; justify-content: center; gap: 6px; } .btn:hover { background: var(--state-icon-color, rgba(255,255,255,0.06)); } .btn[disabled] { opacity: 0.5; cursor: wait; } .btn.primary { background: var(--primary-color); color: var(--text-primary-color, white); border-color: var(--primary-color); } .btn.danger { color: var(--error-color); } .btn ha-icon { --mdc-icon-size: 16px; } .loading { padding: 24px; text-align: center; color: var(--secondary-text-color); } .error { padding: 8px; border-radius: 6px; background: rgba(211,47,47,0.1); color: var(--error-color); font-size: 13px; } `],p([T({attribute:!1})],E.prototype,"hass",2),p([u()],E.prototype,"_open",2),p([u()],E.prototype,"_entryId",2),p([u()],E.prototype,"_data",2),p([u()],E.prototype,"_busy",2),p([u()],E.prototype,"_error",2),p([u()],E.prototype,"_access",2);customElements.get("maintenance-object-quick-actions-dialog")||customElements.define("maintenance-object-quick-actions-dialog",E);var re="maintenance-object-dialog",ae="maintenance-task-dialog",Pe="maintenance-history-edit-dialog",He="maintenance-complete-dialog",Re="maintenance-qr-dialog",Ie="maintenance-task-quick-actions-dialog",Me="maintenance-object-quick-actions-dialog";function lt(){return document.querySelector("home-assistant")?.hass}function Ce(){return document.querySelector("home-assistant")?.shadowRoot??document.body}function R(e){let n=Ce(),t=n.querySelector(e)??document.body.querySelector(e);return t?t.parentNode!==n&&n.appendChild(t):(t=document.createElement(e),n.appendChild(t)),t}function I(e){let n=lt();if(!n)return!1;e.hass=n;let t=A(n);return xt(t)||$t(t).then(()=>{e.requestUpdate?.()}),wt(n.locale,n.config?.country),!0}function cs(e){return C(e).then(n=>n.rowActionStyle)}function ps(){zt()}function us(){let e=R(re);return I(e)?(e.openCreate(),!0):!1}function hs(e,n){let t=R(re);return I(t)?(t.openEdit(e,n),!0):!1}function ms(e="",n){let t=R(ae);if(!I(t))return!1;let i=lt();return i?((async()=>{let s=await C(i),l=t;oe(l,s),l.openCreate(e,n)})(),!0):!1}function oe(e,n){e.checklistsEnabled=n.features.checklists,e.scheduleTimeEnabled=n.features.schedule_time,e.completionActionsEnabled=n.features.completion_actions,e.adaptiveFeature=n.features.adaptive,e.seasonalFeature=n.features.seasonal,e.environmentalFeature=n.features.environmental,e.defaultWarningDays=n.defaultWarningDays}function _s(e,n){let t=R(ae);if(!I(t))return!1;let i=lt();return i?((async()=>{try{let[s,l]=await Promise.all([i.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:e}),C(i)]),o=(s.tasks||[]).find(h=>h.id===n);if(!o){console.warn(`openEditTaskDialog: task ${n} not found in entry ${e}`);return}let c=t;oe(c,l),await c.openEdit(e,o)}catch(s){console.warn("openEditTaskDialog: failed to load task/features",s)}})(),!0):!1}function fs(e){let n=R(Pe);return I(n)?(n.openEdit(e),!0):!1}function gs(e){let n=R(He);return I(n)?(Ut(n,e,A(lt())),!0):!1}function ys(e){let n=R(Re);return I(n)?(n.openForTask(e.entry_id,e.task_id,e.object_name,e.task_name),!0):!1}function vs(e,n){let t=R(Ie);return I(t)?(t.openFor(e,n),!0):!1}function bs(e){let n=R(Me);return I(n)?(n.openFor(e),!0):!1}export{se as a,ye as b,Kt as c,Ei as d,Yt as e,at as f,_e as g,fe as h,mt as i,Gt as j,Ut as k,_ as l,Gi as m,Ui as n,Bi as o,Ki as p,Yi as q,Zi as r,Ji as s,_t as t,wi as u,Wt as v,ft as w,Oi as x,zi as y,gt as z,Jt as A,Qt as B,Xt as C,te as D,ie as E,ne as F,cs as G,ps as H,us as I,hs as J,ms as K,_s as L,fs as M,gs as N,ys as O,vs as P,bs as Q};