UNPKG

iobroker.lovelace

Version:

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

11 lines 39.2 kB
/*! For license information please see 10734.16abe561accc3264.js.LICENSE.txt */ export const __rspack_esm_id=10734;export const __rspack_esm_ids=[10734];export const __webpack_modules__={44241(t,e,a){a.d(e,{G:()=>s});var i=a(5124);const s=t=>t("ui.common.supports_markdown",{markdown_help_link:i.qy`<a href="${"https://commonmark.org/help/"}" target="_blank" rel="noreferrer">${t("ui.common.markdown")}</a>`})},32656(t,e,a){a.a(t,async function(t,e){try{a(74423);var i=a(62826),s=a(5124),o=a(22441),r=a(63672),l=a(1087),n=a(57237),h=a(26300),d=(a(3449),a(606)),p=a(91485),u=t([h,d,p]);[h,d,p]=u.then?(await u)():u;const c="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";class m extends s.WF{reportValidity(){const t=this._inputs;return!t||[...t].every(t=>t.reportValidity())}render(){return s.qy` ${this.label?s.qy`<label>${this.label}${this.required?" *":""}</label>`:s.s6} <div class="time-input-wrap-wrap"> <div class="time-input-wrap"> ${this.enableDay?s.qy` <ha-input id="day" type="number" inputmode="numeric" .value="${this.days.toFixed()}" .label="${this.placeholderLabels?"":this.dayLabel}" .placeholder="${this.placeholderLabels?this.dayLabel:""}" name="days" @change="${this._valueChanged}" @focusin="${this._onFocus}" without-spin-buttons .required="${this.required}" .autoValidate="${this.autoValidate}" min="0" .disabled="${this.disabled}"> </ha-input> <div class="time-separator">:</div> `:s.s6} <ha-input id="hour" type="number" inputmode="numeric" .value="${this.hours.toFixed()}" .label="${this.placeholderLabels?"":this.hourLabel}" .placeholder="${this.placeholderLabels?this.hourLabel:""}" name="hours" @change="${this._valueChanged}" @focusin="${this._onFocus}" without-spin-buttons .required="${this.required}" .autoValidate="${this.autoValidate}" maxlength="2" max="${(0,r.J)(this._hourMax)}" min="0" .disabled="${this.disabled}"> </ha-input> <div class="time-separator">:</div> <ha-input id="min" type="number" inputmode="numeric" .value="${this._formatValue(this.minutes)}" .label="${this.placeholderLabels?"":this.minLabel}" .placeholder="${this.placeholderLabels?this.minLabel:""}" @change="${this._valueChanged}" @focusin="${this._onFocus}" name="minutes" without-spin-buttons .required="${this.required}" .autoValidate="${this.autoValidate}" maxlength="2" max="59" min="0" .disabled="${this.disabled}"> </ha-input> ${this.enableSecond?s.qy`<div class="time-separator">:</div>`:s.s6} ${this.enableSecond?s.qy`<ha-input id="sec" type="number" inputmode="decimal" step="any" .value="${this._formatValue(this.seconds)}" .label="${this.placeholderLabels?"":this.secLabel}" .placeholder="${this.placeholderLabels?this.secLabel:""}" @change="${this._valueChanged}" @focusin="${this._onFocus}" name="seconds" without-spin-buttons .required="${this.required}" .autoValidate="${this.autoValidate}" max="59" min="0" .disabled="${this.disabled}"> </ha-input> ${this.enableMillisecond?s.qy`<div class="time-separator">:</div>`:s.s6}`:s.s6} ${this.enableMillisecond?s.qy`<ha-input id="millisec" type="number" .value="${this._formatValue(this.milliseconds,3)}" .label="${this.placeholderLabels?"":this.millisecLabel}" .placeholder="${this.placeholderLabels?this.millisecLabel:""}" @change="${this._valueChanged}" @focusin="${this._onFocus}" name="milliseconds" without-spin-buttons .required="${this.required}" .autoValidate="${this.autoValidate}" maxlength="3" max="999" min="0" .disabled="${this.disabled}"> </ha-input>`:s.s6} ${24===this.format?s.s6:s.qy`<ha-select .required="${this.required}" .value="${this.amPm}" .disabled="${this.disabled}" .name="${"amPm"}" @selected="${this._valueChanged}" @wa-after-hide="${n.d}" @wa-hide="${n.d}" .options="${["AM","PM"]}"> </ha-select>`} ${!this.clearable||this.required||this.disabled?s.s6:s.qy`<ha-icon-button label="clear" @click="${this._clearValue}" .path="${c}"></ha-icon-button>`} </div> </div> ${this.helper?s.qy`<ha-input-helper-text .disabled="${this.disabled}">${this.helper}</ha-input-helper-text>`:s.s6} `}_clearValue(){(0,l.r)(this,"value-changed")}_valueChanged(t){const e=t.currentTarget;this[e.name||""]="amPm"===e.name?t.detail.value:Number(e.value);const a={hours:this.hours,minutes:this.minutes,seconds:this.seconds,milliseconds:this.milliseconds};this.enableDay&&(a.days=this.days),12===this.format&&(a.amPm=this.amPm),(0,l.r)(this,"value-changed",{value:a})}_onFocus(t){t.currentTarget.select()}_formatValue(t,e=2){const a=t.toString();return a.includes(".")?a:a.padStart(e,"0")}get _hourMax(){if(!this.noHoursLimit)return 12===this.format?12:23}constructor(...t){super(...t),this.autoValidate=!1,this.required=!1,this.format=12,this.disabled=!1,this.days=0,this.hours=0,this.minutes=0,this.seconds=0,this.milliseconds=0,this.dayLabel="",this.hourLabel="",this.minLabel="",this.secLabel="",this.millisecLabel="",this.enableSecond=!1,this.enableMillisecond=!1,this.enableDay=!1,this.noHoursLimit=!1,this.amPm="AM",this.placeholderLabels=!1}}m.shadowRootOptions={...s.WF.shadowRootOptions,delegatesFocus:!0},m.styles=s.AH`:host([clearable]){position:relative}.time-input-wrap-wrap{display:flex}.time-input-wrap{display:flex;flex:var(--time-input-flex,unset);border-radius:var(--mdc-shape-small,var(--ha-border-radius-sm)) var(--mdc-shape-small,var(--ha-border-radius-sm)) var(--ha-border-radius-square) var(--ha-border-radius-square);overflow:hidden;position:relative;direction:ltr;padding-right:3px}ha-input{height:56px;padding:0;width:60px;flex-grow:1}ha-input:first-child{--text-field-border-top-left-radius:var(--mdc-shape-medium)}ha-input:last-child{--text-field-border-top-right-radius:var(--mdc-shape-medium)}ha-input::part(wa-base){padding:var(--ha-space-1)}ha-input:first-child::part(wa-base){padding-inline-start:var(--ha-space-4)}ha-input:last-child::part(wa-base){padding-inline-end:var(--ha-space-4)}ha-input::part(wa-hint){height:0}ha-input::part(wa-input){text-align:center}.time-separator,ha-icon-button{background-color:var(--ha-color-form-background);color:var(--ha-color-text-secondary);border-bottom:1px solid var(--ha-color-border-neutral-loud);box-sizing:border-box;height:56px;margin-inline-start:calc(var(--ha-space-1) * -1)}.time-separator{width:12px;margin-inline-end:calc(var(--ha-space-1) * -1);display:flex;align-items:center;justify-content:center}:host([clearable]) .mdc-select__anchor{padding-inline-end:var(--select-selected-text-padding-end,12px)}ha-icon-button{position:relative;--ha-icon-button-size:36px;border-start-end-radius:var(--ha-border-radius-sm);--mdc-icon-size:20px;direction:var(--direction);display:flex;align-items:center}ha-select{margin-inline:calc(var(--ha-space-1) * -1)}label{-moz-osx-font-smoothing:var(--ha-moz-osx-font-smoothing);-webkit-font-smoothing:var(--ha-font-smoothing);font-family:var( --mdc-typography-body2-font-family, var(--mdc-typography-font-family, var(--ha-font-family-body)) );font-size:var(--mdc-typography-body2-font-size, var(--ha-font-size-s));line-height:var( --mdc-typography-body2-line-height, var(--ha-line-height-condensed) );font-weight:var(--mdc-typography-body2-font-weight,var(--ha-font-weight-normal));letter-spacing:var( --mdc-typography-body2-letter-spacing, .0178571429em );text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-transform:var(--mdc-typography-body2-text-transform,inherit);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));padding-left:4px;padding-inline-start:4px;padding-inline-end:initial}ha-input-helper-text{padding-top:8px;line-height:var(--ha-line-height-condensed)}`,(0,i.Cg)([(0,o.MZ)()],m.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)()],m.prototype,"helper",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"auto-validate",type:Boolean})],m.prototype,"autoValidate",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],m.prototype,"required",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"format",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],m.prototype,"disabled",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"days",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"hours",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"minutes",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"seconds",void 0),(0,i.Cg)([(0,o.MZ)({type:Number})],m.prototype,"milliseconds",void 0),(0,i.Cg)([(0,o.MZ)({type:String,attribute:"day-label"})],m.prototype,"dayLabel",void 0),(0,i.Cg)([(0,o.MZ)({type:String,attribute:"hour-label"})],m.prototype,"hourLabel",void 0),(0,i.Cg)([(0,o.MZ)({type:String,attribute:"min-label"})],m.prototype,"minLabel",void 0),(0,i.Cg)([(0,o.MZ)({type:String,attribute:"sec-label"})],m.prototype,"secLabel",void 0),(0,i.Cg)([(0,o.MZ)({type:String,attribute:"ms-label"})],m.prototype,"millisecLabel",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"enable-second",type:Boolean})],m.prototype,"enableSecond",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"enable-millisecond",type:Boolean})],m.prototype,"enableMillisecond",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"enable-day",type:Boolean})],m.prototype,"enableDay",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"no-hours-limit",type:Boolean})],m.prototype,"noHoursLimit",void 0),(0,i.Cg)([(0,o.MZ)({attribute:!1})],m.prototype,"amPm",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,reflect:!0})],m.prototype,"clearable",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"placeholder-labels",type:Boolean})],m.prototype,"placeholderLabels",void 0),(0,i.Cg)([(0,o.YG)("ha-input")],m.prototype,"_inputs",void 0),m=(0,i.Cg)([(0,o.EM)("ha-base-time-input")],m),e()}catch(t){e(t)}})},19463(t,e,a){a.a(t,async function(t,e){try{a(74423);var i=a(62826),s=a(5124),o=a(22441),r=a(380),l=a(72487),n=a(1087),h=a(46927),d=(a(67094),a(91485)),p=t([d,l]);[d,l]=p.then?(await p)():p;const u="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z",c=()=>Promise.all([a.e(80827),a.e(17481),a.e(90923)]).then(a.bind(a,64080)),m=(t,e)=>{(0,n.r)(t,"show-dialog",{dialogTag:"ha-dialog-date-picker",dialogImport:c,dialogParams:e})};class b extends s.WF{reportValidity(){return this._input?.reportValidity()??!0}render(){return s.qy`<ha-input .label="${this.label??""}" .hint="${this.helper??""}" .disabled="${this.disabled}" readonly="readonly" @click="${this._openDialog}" @keydown="${this._keyDown}" .value="${this.value?(0,l.zB)(new Date(`${this.value.split("T")[0]}T00:00:00`),{...this.locale,time_zone:h.Wj.local},{}):""}" .required="${this.required}"> <ha-svg-icon slot="end" .path="${u}"></ha-svg-icon> </ha-input>`}_openDialog(){this.disabled||m(this,{min:this.min||"1970-01-01",max:this.max,value:this.value,canClear:this.canClear,onChange:t=>this._valueChanged(t),locale:this.locale.language,firstWeekday:(0,r.P)(this.locale)})}_keyDown(t){if(["Space","Enter"].includes(t.code))return t.preventDefault(),t.stopPropagation(),void this._openDialog();this.canClear&&["Backspace","Delete"].includes(t.key)&&this._valueChanged(void 0)}_valueChanged(t){this.value!==t&&(this.value=t,(0,n.r)(this,"change"),(0,n.r)(this,"value-changed",{value:t}))}constructor(...t){super(...t),this.disabled=!1,this.required=!1,this.canClear=!1}}b.styles=s.AH`:host{min-width:0px}ha-svg-icon{color:var(--secondary-text-color)}`,(0,i.Cg)([(0,o.MZ)({attribute:!1})],b.prototype,"locale",void 0),(0,i.Cg)([(0,o.MZ)()],b.prototype,"value",void 0),(0,i.Cg)([(0,o.MZ)()],b.prototype,"min",void 0),(0,i.Cg)([(0,o.MZ)()],b.prototype,"max",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],b.prototype,"disabled",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],b.prototype,"required",void 0),(0,i.Cg)([(0,o.MZ)()],b.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)()],b.prototype,"helper",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"can-clear",type:Boolean})],b.prototype,"canClear",void 0),(0,i.Cg)([(0,o.P)("ha-input",!0)],b.prototype,"_input",void 0),b=(0,i.Cg)([(0,o.EM)("ha-date-input")],b),e()}catch(t){e(t)}})},56304(t,e,a){a.a(t,async function(t,e){try{var i=a(62826),s=a(99324),o=a(92070),r=a(5124),l=a(22441),n=a(6412),h=a(63672),d=a(57237),p=a(53305),u=t([s]);s=(u.then?(await u)():u)[0];class c extends((0,p.w)(r.WF)){get _formControl(){return this._textarea}setFocused(t){t?this.toggleAttribute("focused",!0):this.removeAttribute("focused")}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",d.d)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",d.d)}async firstUpdated(t){super.firstUpdated(t),this.autofocus&&(await(this._textarea?.updateComplete),this._textarea?.focus())}focus(t){this._textarea?.focus(t)}render(){const t=!this.label&&this._hasSlotController.test("label"),e=!this.hint&&this._hasSlotController.test("hint");return r.qy` <wa-textarea .value="${this.value??null}" .placeholder="${this.placeholder}" .readonly="${this.readonly}" .required="${this.required}" .rows="${this.rows??4}" .resize="${this.resize}" .disabled="${this.disabled}" name="${(0,h.J)(this.name)}" autocapitalize="${(0,h.J)(this.autocapitalize||void 0)}" autocomplete="${(0,h.J)(this.autocomplete)}" .autofocus="${this.autofocus}" .spellcheck="${this.spellcheck}" inputmode="${(0,h.J)(this.inputmode||void 0)}" enterkeyhint="${(0,h.J)(this.enterkeyhint||void 0)}" minlength="${(0,h.J)(this.minlength)}" maxlength="${(0,h.J)(this.maxlength)}" class="${(0,n.H)({input:!0,invalid:this.invalid||this._invalid,"label-raised":void 0!==this.value&&""!==this.value||this.label&&this.placeholder,"no-label":!this.label,"hint-hidden":!(this.hint||e||this.required||this._invalid||this.invalid)})}" @input="${this._handleInput}" @change="${this._handleChange}" @blur="${this._handleBlur}" @wa-invalid="${this._handleInvalid}" exportparts="base:wa-base, hint:wa-hint, textarea:wa-textarea"> ${this.label||t?r.qy`<slot name="label" slot="label">${this.label?this._renderLabel(this.label,this.required):r.s6}</slot>`:r.s6} <div slot="hint" class="${(0,n.H)({error:this.invalid||this._invalid})}" role="${(0,h.J)(this.invalid||this._invalid?"alert":void 0)}" aria-live="polite"> ${this._invalid||this.invalid?this.validationMessage||this._textarea?.validationMessage:this.hint||(e?r.qy`<slot name="hint"></slot>`:r.s6)} </div> </wa-textarea> `}constructor(...t){super(...t),this.resize="none",this._hasSlotController=new o.X(this,"label","hint"),this._requiredMarkerCSSVar="--ha-textarea-required-marker"}}c.styles=[p.N,r.AH`:host{display:flex;align-items:flex-start;padding-bottom:var(--ha-textarea-padding-bottom)}wa-textarea::part(label){width:calc(100% - var(--ha-space-2));background-color:var(--ha-color-form-background);transition:all var(--wa-transition-normal) ease-in-out,background-color var(--wa-transition-normal) ease-in-out;padding-inline-start:var(--ha-space-3);padding-inline-end:var(--ha-space-3);margin:var(--ha-space-1) var(--ha-space-1) 0;padding-top:var(--ha-space-4);white-space:nowrap;overflow:hidden}:host(:focus-within) wa-textarea::part(label),:host([focused]) wa-textarea::part(label){color:var(--primary-color)}:host(:focus-within) wa-textarea::part(label),:host([focused]) wa-textarea::part(label),wa-textarea.label-raised::part(label){padding-top:var(--ha-space-2);font-size:var(--ha-font-size-xs)}wa-textarea.no-label::part(label){height:0;padding:0}wa-textarea::part(base){min-height:56px;padding-top:var(--ha-space-6);padding-bottom:var(--ha-space-2)}wa-textarea.no-label::part(base){padding-top:var(--ha-space-3)}wa-textarea::part(base)::after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background-color:var(--ha-color-border-neutral-loud);transition:height var(--wa-transition-normal) ease-in-out,background-color var(--wa-transition-normal) ease-in-out}:host(:focus-within) wa-textarea::part(base)::after,:host([focused]) wa-textarea::part(base)::after{height:2px;background-color:var(--primary-color)}:host(:focus-within) wa-textarea.invalid::part(base)::after,wa-textarea.invalid:not([disabled])::part(base)::after{background-color:var(--ha-color-border-danger-normal)}wa-textarea::part(textarea){padding:0 var(--ha-space-4);font-family:var(--ha-font-family-body);font-size:var(--ha-font-size-m)}:host([resize=auto]) wa-textarea::part(textarea){max-height:var(--ha-textarea-max-height,200px);overflow-y:auto}wa-textarea:hover::part(base),wa-textarea:hover::part(label){background-color:var(--ha-color-form-background-hover)}wa-textarea[disabled]::part(textarea){cursor:not-allowed}wa-textarea[disabled]::part(base),wa-textarea[disabled]::part(label){background-color:var(--ha-color-form-background-disabled)}`],(0,i.Cg)([(0,l.MZ)({type:Number})],c.prototype,"rows",void 0),(0,i.Cg)([(0,l.MZ)()],c.prototype,"resize",void 0),(0,i.Cg)([(0,l.P)("wa-textarea")],c.prototype,"_textarea",void 0),c=(0,i.Cg)([(0,l.EM)("ha-textarea")],c),e()}catch(t){e(t)}})},50286(t,e,a){a.a(t,async function(t,e){try{var i=a(62826),s=a(5124),o=a(22441),r=a(69543),l=a(1087),n=a(32656),h=t([n]);n=(h.then?(await h)():h)[0];class d extends s.WF{reportValidity(){return this._input?.reportValidity()??!0}render(){const t=(0,r.J)(this.locale);let e=NaN,a=NaN,i=NaN,o=0;if(this.value){const s=this.value?.split(":")||[];a=s[1]?Number(s[1]):0,i=s[2]?Number(s[2]):0,e=s[0]?Number(s[0]):0,o=e,o&&t&&o>12&&o<24&&(e=o-12),t&&0===o&&(e=12)}return s.qy` <ha-base-time-input .label="${this.label}" .hours="${e}" .minutes="${a}" .seconds="${i}" .format="${t?12:24}" .amPm="${t&&o>=12?"PM":"AM"}" .disabled="${this.disabled}" @value-changed="${this._timeChanged}" .enableSecond="${this.enableSecond}" .required="${this.required}" .clearable="${this.clearable&&void 0!==this.value}" .helper="${this.helper}" .placeholderLabels="${this.placeholderLabels}" .autoValidate="${this.autoValidate}" day-label="dd" hour-label="hh" min-label="mm" sec-label="ss" ms-label="ms"></ha-base-time-input> `}_timeChanged(t){t.stopPropagation();const e=t.detail.value,a=(0,r.J)(this.locale);let i,s=0;if(!(void 0===e||isNaN(e.hours)&&isNaN(e.minutes)&&isNaN(e.seconds))){let t=e.hours||0;e&&a&&(s=t>=12&&t<24?t-12:0===t?12:0,"PM"===e.amPm&&t<12&&(t+=12),"AM"===e.amPm&&12===t&&(t=0)),i=`${t.toString().padStart(2,"0")}:${e.minutes?e.minutes.toString().padStart(2,"0"):"00"}:${e.seconds?e.seconds.toString().padStart(2,"0"):"00"}`}s&&this.updateComplete.then(()=>{const t=this._input;t&&(t.hours=s)}),i!==this.value&&(this.value=i,(0,l.r)(this,"change"),(0,l.r)(this,"value-changed",{value:i}))}constructor(...t){super(...t),this.disabled=!1,this.required=!1,this.autoValidate=!1,this.enableSecond=!1,this.placeholderLabels=!1}}(0,i.Cg)([(0,o.MZ)({attribute:!1})],d.prototype,"locale",void 0),(0,i.Cg)([(0,o.MZ)()],d.prototype,"value",void 0),(0,i.Cg)([(0,o.MZ)()],d.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)()],d.prototype,"helper",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],d.prototype,"disabled",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],d.prototype,"required",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"auto-validate",type:Boolean})],d.prototype,"autoValidate",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,attribute:"enable-second"})],d.prototype,"enableSecond",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,reflect:!0})],d.prototype,"clearable",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"placeholder-labels",type:Boolean})],d.prototype,"placeholderLabels",void 0),(0,i.Cg)([(0,o.P)("ha-base-time-input")],d.prototype,"_input",void 0),d=(0,i.Cg)([(0,o.EM)("ha-time-input")],d),e()}catch(t){e(t)}})},54653(t,e,a){a.a(t,async function(t,i){try{a.r(e);a(74423);var s=a(62826),o=a(31886),r=a(5124),l=a(22441),n=a(22786),h=a(95747),d=a(8480),p=a(1087),u=a(28978),c=a(82286),m=a(44241),b=a(38962),v=a(18350),g=(a(9503),a(19463)),y=a(72554),_=(a(93444),a(56304)),f=a(50286),w=a(91485),$=a(65590),x=a(65063),C=a(14503),k=t([b,v,g,y,_,f,w,d,h,o]);[b,v,g,y,_,f,w,d,h,o]=k.then?(await k)():k;class M extends r.WF{showDialog(t){if(this._error=void 0,this._params=t,this._open=!0,this._timeZone=(0,d.wj)(this.hass.locale.time_zone,this.hass.config.time_zone),t.item){const e=t.item;this._checked=e.status===$.aO.Completed,this._summary=e.summary,this._description=e.description||"",this._completedTime=e.completed?new Date(e.completed):void 0,this._hasTime=e.due?.includes("T")||!1,this._due=e.due?new Date(this._hasTime?e.due:`${e.due}T00:00:00`):void 0}else this._hasTime=!1,this._checked=!1,this._due=void 0}closeDialog(){this._params&&(this._open=!1)}_dialogClosed(){this._open=!1,this._error=void 0,this._params=void 0,this._due=void 0,this._summary="",this._description="",this._hasTime=!1,(0,p.r)(this,"dialog-closed",{dialog:this.localName})}render(){if(!this._params)return r.s6;const t=void 0===this._params.item||!("uid"in this._params.item),e=this._params.entity in this.hass.states?(0,u.u)(this.hass.states[this._params.entity]):this._params.entity,{dueDate:a,dueTime:i}=this._getLocaleStrings(this._due),s=this._todoListSupportsFeature($.Ed.UPDATE_TODO_ITEM);return r.qy` <ha-dialog .open="${this._open}" header-title="${this.hass.localize("ui.components.todo.item."+(t?"add":"edit"))}" header-subtitle="${e}" prevent-scrim-close @closed="${this._dialogClosed}"> <div class="content"> ${this._error?r.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:""} <div class="flex"> <ha-checkbox .checked="${this._checked}" @change="${this._checkedCanged}" .disabled="${t||!s}"></ha-checkbox> <ha-input class="summary" name="summary" .label="${this.hass.localize("ui.components.todo.item.summary")}" .value="${this._summary}" required autofocus @input="${this._handleSummaryChanged}" .validationMessage="${this.hass.localize("ui.common.error_required")}" .disabled="${!s}"></ha-input> </div> ${this._completedTime?r.qy`<div class="italic"> ${this.hass.localize("ui.components.todo.item.completed_time",{datetime:(0,h.CL)(this._completedTime,this.hass.locale,this.hass.config)})} </div>`:r.s6} ${this._todoListSupportsFeature($.Ed.SET_DESCRIPTION_ON_ITEM)?r.qy`<ha-textarea class="description" name="description" .label="${this.hass.localize("ui.components.todo.item.description")}" .hint="${(0,m.G)(this.hass.localize)}" .value="${this._description}" @input="${this._handleDescriptionChanged}" resize="auto" .disabled="${!s}"></ha-textarea>`:r.s6} ${this._todoListSupportsFeature($.Ed.SET_DUE_DATE_ON_ITEM)||this._todoListSupportsFeature($.Ed.SET_DUE_DATETIME_ON_ITEM)?r.qy`<div> <span class="label">${this.hass.localize("ui.components.todo.item.due")}:</span> <div class="flex"> <ha-date-input .value="${a}" .locale="${this.hass.locale}" .disabled="${!s}" @value-changed="${this._dueDateChanged}" can-clear></ha-date-input> ${this._todoListSupportsFeature($.Ed.SET_DUE_DATETIME_ON_ITEM)?r.qy`<ha-time-input .value="${i}" .locale="${this.hass.locale}" .disabled="${!s}" @value-changed="${this._dueTimeChanged}"></ha-time-input>`:r.s6} </div> </div>`:r.s6} </div> <ha-dialog-footer slot="footer"> ${t?r.qy` <ha-button slot="primaryAction" @click="${this._createItem}" .disabled="${this._submitting}"> ${this.hass.localize("ui.components.todo.item.add")} </ha-button> `:r.qy` <ha-button slot="primaryAction" @click="${this._saveItem}" .disabled="${!s||this._submitting}"> ${this.hass.localize("ui.components.todo.item.save")} </ha-button> ${this._todoListSupportsFeature($.Ed.DELETE_TODO_ITEM)?r.qy` <ha-button slot="secondaryAction" variant="danger" appearance="plain" @click="${this._deleteItem}" .disabled="${this._submitting}"> ${this.hass.localize("ui.components.todo.item.delete")} </ha-button> `:""} `} </ha-dialog-footer> </ha-dialog> `}_todoListSupportsFeature(t){if(!this._params?.entity)return!1;const e=this.hass.states[this._params?.entity];return e&&(0,c.$)(e,t)}_formatDate(t,e=this._timeZone){return new o.BB(t,e).toISOString().split("T")[0]}_formatTime(t,e=this._timeZone){if(!this._hasTime)return;return new o.BB(t,e).toISOString().split("T")[1].split(".")[0]}_parseDate(t){if(!t.includes("T"))return new Date(t+"T00:00:00");const e=new o.BB(t,this._timeZone);return new Date(e.getTime())}_checkedCanged(t){this._checked=t.target.checked}_handleSummaryChanged(t){this._summary=t.target.value??""}_handleDescriptionChanged(t){this._description=t.target.value}_dueDateChanged(t){if(!t.detail.value)return void(this._due=void 0);const e=this._due?this._formatTime(this._due):void 0;this._due=this._parseDate(`${t.detail.value}${e?`T${e}`:""}`)}_dueTimeChanged(t){this._hasTime=!0,this._due=this._parseDate(`${this._formatDate(this._due||new Date)}T${t.detail.value}`)}async _createItem(){if(this._summary){this._submitting=!0;try{await(0,$.wE)(this.hass,this._params.entity,{summary:this._summary,description:this._description,due:this._due?this._hasTime?this._due.toISOString():this._formatDate(this._due):void 0})}catch(t){return void(this._error=t?t.message:"Unknown error")}finally{this._submitting=!1}this.closeDialog()}else this._error=this.hass.localize("ui.components.todo.item.not_all_required_fields")}async _saveItem(){if(!this._summary)return void(this._error=this.hass.localize("ui.components.todo.item.not_all_required_fields"));this._submitting=!0;const t=this._params.item;try{await(0,$.fk)(this.hass,this._params.entity,{...t,summary:this._summary,description:this._description||(this._todoListSupportsFeature($.Ed.SET_DESCRIPTION_ON_ITEM)?null:void 0),due:this._due?this._hasTime?this._due.toISOString():this._formatDate(this._due):this._todoListSupportsFeature($.Ed.SET_DUE_DATETIME_ON_ITEM)||this._todoListSupportsFeature($.Ed.SET_DUE_DATE_ON_ITEM)?null:void 0,status:this._checked?$.aO.Completed:$.aO.NeedsAction})}catch(t){return void(this._error=t?t.message:"Unknown error")}finally{this._submitting=!1}this.closeDialog()}async _deleteItem(){this._submitting=!0;const t=this._params.item;if(await(0,x.dk)(this,{title:this.hass.localize("ui.components.todo.item.confirm_delete.delete"),text:this.hass.localize("ui.components.todo.item.confirm_delete.prompt"),destructive:!0,confirmText:this.hass.localize("ui.common.delete"),dismissText:this.hass.localize("ui.common.cancel")})){try{await(0,$.K1)(this.hass,this._params.entity,[t.uid])}catch(t){return void(this._error=t?t.message:"Unknown error")}finally{this._submitting=!1}this.closeDialog()}else this._submitting=!1}static get styles(){return[C.nA,r.AH`ha-alert{display:block;margin-bottom:16px}ha-input{width:100%}ha-textarea{display:block;width:100%}ha-checkbox{margin-bottom:28px;justify-content:center}ha-textarea{margin-bottom:16px}ha-date-input{flex-grow:1}ha-time-input{margin-left:16px;margin-inline-start:16px;margin-inline-end:initial}.flex{display:flex;justify-content:space-between}.label{font-size:var(--ha-font-size-s);font-weight:var(--ha-font-weight-medium);color:var(--input-label-ink-color)}.date-range-details-content{display:inline-block}ha-svg-icon{width:40px;margin-right:8px;margin-inline-end:16px;margin-inline-start:initial;direction:var(--direction);vertical-align:top}.key{display:inline-block;vertical-align:top}.value{display:inline-block;vertical-align:top}.italic{font-style:italic}`]}constructor(...t){super(...t),this._summary="",this._description="",this._checked=!1,this._hasTime=!1,this._submitting=!1,this._open=!1,this._getLocaleStrings=(0,n.A)(t=>({dueDate:t?this._formatDate(t):void 0,dueTime:t?this._formatTime(t):void 0}))}}(0,s.Cg)([(0,l.MZ)({attribute:!1})],M.prototype,"hass",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_error",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_params",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_summary",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_description",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_due",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_completedTime",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_checked",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_hasTime",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_submitting",void 0),(0,s.Cg)([(0,l.wk)()],M.prototype,"_open",void 0),M=(0,s.Cg)([(0,l.EM)("dialog-todo-item-editor")],M),i()}catch(t){i(t)}})},99324(t,e,a){a.a(t,async function(t,e){try{var i=a(5124),s=a(22441),o=a(6412),r=a(63672),l=a(34514),n=a(40991),h=a(92070),d=a(41268),p=a(9395),u=a(62676),c=a(15477),m=a(31896),b=a(32565),v=a(17060),g=a(9054),y=t([v]);v=(y.then?(await y)():y)[0];var _=Object.defineProperty,f=Object.getOwnPropertyDescriptor,w=(t,e,a,i)=>{for(var s,o=i>1?void 0:i?f(e,a):e,r=t.length-1;r>=0;r--)(s=t[r])&&(o=(i?s(e,a,o):s(o))||o);return i&&o&&_(e,a,o),o};let $=class extends u.q{static get validators(){return[...super.validators,(0,d.i)()]}get value(){return this.valueHasChanged?this._value:this._value??this.defaultValue}set value(t){this._value!==t&&(this.valueHasChanged=!0,this._value=t)}handleSizeChange(){(0,n.b)(this.localName,this.size)}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{if(this.setTextareaDimensions(),this.updateResizeObserver(),this.didSSR&&this.input&&this.value!==this.input.value){const t=this.input.value;this.value=t}})}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this.countAnnounceTimeout),this.resizeObserver?.disconnect(),this.resizeObserver=void 0}updateResizeObserver(){const t="none"!==this.resize;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=void 0),t&&this.input&&("auto"===this.resize?(this.resizeObserver=new ResizeObserver(t=>{const e=t[0]?.contentRect.width??0;e!==this.lastObservedWidth&&(this.lastObservedWidth=e,requestAnimationFrame(()=>this.setTextareaDimensions()))}),this.resizeObserver.observe(this)):(this.resizeObserver=new ResizeObserver(()=>this.setTextareaDimensions()),this.resizeObserver.observe(this.input)))}handleBlur(){this.checkValidity()}handleChange(t){this.valueHasChanged=!0,this.value=this.input.value,this.setTextareaDimensions(),this.checkValidity(),this.relayNativeEvent(t,{bubbles:!0,composed:!0})}handleInput(t){this.valueHasChanged=!0,this.value=this.input.value,this.relayNativeEvent(t,{bubbles:!0,composed:!0}),this.scheduleCountAnnouncement()}scheduleCountAnnouncement(){clearTimeout(this.countAnnounceTimeout),this.countAnnounceTimeout=setTimeout(()=>{const t=(this.value??"").length;this.announcedCountText=null!=this.maxlength?this.localize.term("numCharactersRemaining",this.maxlength-t):this.localize.term("numCharacters",t)},1e3)}setTextareaDimensions(){if("none"===this.resize)return this.base.style.width="",void(this.base.style.height="");if("auto"===this.resize){this.sizeAdjuster.style.height=`${this.input.clientHeight}px`,this.input.style.height="auto";const t=this.input.scrollHeight;return this.input.style.height=`${t}px`,this.sizeAdjuster.style.height=`${t}px`,this.base.style.width="",void(this.base.style.height="")}if(this.input.style.width){const t=Number(this.input.style.width.split(/px/)[0])+2;this.base.style.width=`${t}px`}if(this.input.style.height){const t=Number(this.input.style.height.split(/px/)[0])+2;this.base.style.height=`${t}px`}}handleRowsChange(){this.setTextareaDimensions()}async handleValueChange(){await this.updateComplete,this.checkValidity(),this.setTextareaDimensions()}updated(t){t.has("resize")&&(this.setTextareaDimensions(),this.updateResizeObserver()),super.updated(t),t.has("value")&&this.customStates.set("blank",!this.value)}focus(t){this.input.focus(t)}blur(){this.input.blur()}select(){this.input.select()}scrollPosition(t){return t?("number"==typeof t.top&&(this.input.scrollTop=t.top),void("number"==typeof t.left&&(this.input.scrollLeft=t.left))):{top:this.input.scrollTop,left:this.input.scrollTop}}setSelectionRange(t,e,a="none"){this.input.setSelectionRange(t,e,a)}setRangeText(t,e,a,i="preserve"){const s=e??this.input.selectionStart,o=a??this.input.selectionEnd;this.input.setRangeText(t,s,o,i),this.value!==this.input.value&&(this.value=this.input.value,this.setTextareaDimensions())}formResetCallback(){this._value=null,this.input&&(this.input.value=this.value||""),super.formResetCallback()}render(){const t=this.hasUpdated?this.hasSlotController.test("label"):this.withLabel,e=this.hasUpdated?this.hasSlotController.test("hint"):this.withHint,a=!!this.label||!!t,s=!!this.hint||!!e,n=(this.value??"").length,h=null!=this.maxlength?this.localize.term("numCharactersRemaining",this.maxlength-n):this.localize.term("numCharacters",n);return i.qy` <label part="form-control-label label" class="${(0,o.H)({label:!0,"has-label":a})}" for="input" aria-hidden="${a?"false":"true"}"> <slot name="label">${this.label}</slot> </label> <div part="base" class="textarea"> <textarea part="textarea" id="input" class="control" title="${this.title}" name="${(0,r.J)(this.name)}" .value="${(0,l.V)(this.value)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${(0,r.J)(this.placeholder)}" rows="${(0,r.J)(this.rows)}" minlength="${(0,r.J)(this.minlength)}" maxlength="${(0,r.J)(this.maxlength)}" autocapitalize="${(0,r.J)(this.autocapitalize)}" autocorrect="${(0,r.J)(this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${(0,r.J)(this.spellcheck)}" enterkeyhint="${(0,r.J)(this.enterkeyhint)}" inputmode="${(0,r.J)(this.inputmode)}" aria-describedby="hint" @change="${this.handleChange}" @input="${this.handleInput}" @blur="${this.handleBlur}"></textarea> <div part="textarea-adjuster" class="size-adjuster" ?hidden="${"auto"!==this.resize}"></div> </div> <div class="${(0,o.H)({footer:!0,"has-count":this.withCount})}"> <slot id="hint" name="hint" part="hint" aria-hidden="${s?"false":"true"}" class="${(0,o.H)({"has-slotted":s})}">${this.hint}</slot> ${this.withCount?i.qy` <div part="count" class="count" aria-hidden="true">${h}</div> <div class="wa-visually-hidden-force" aria-live="polite">${this.announcedCountText}</div> `:""} </div> `}constructor(){super(...arguments),this.assumeInteractionOn=["blur","input"],this.hasSlotController=new h.X(this,"hint","label"),this.localize=new v.c(this),this.announcedCountText="",this.title="",this.name=null,this._value=null,this.defaultValue=this.getAttribute("value")??"",this.size="m",this.appearance="outlined",this.label="",this.hint="",this.placeholder="",this.rows=4,this.resize="vertical",this.disabled=!1,this.readonly=!1,this.required=!1,this.spellcheck=!0,this.withLabel=!1,this.withHint=!1,this.withCount=!1,this.lastObservedWidth=0}};$.css=[g.A,c.A,m.A,b.A],w([(0,s.wk)()],$.prototype,"announcedCountText",2),w([(0,s.P)(".control")],$.prototype,"input",2),w([(0,s.P)('[part~="base"]')],$.prototype,"base",2),w([(0,s.P)(".size-adjuster")],$.prototype,"sizeAdjuster",2),w([(0,s.MZ)()],$.prototype,"title",2),w([(0,s.MZ)({reflect:!0})],$.prototype,"name",2),w([(0,s.wk)()],$.prototype,"value",1),w([(0,s.MZ)({attribute:"value",reflect:!0})],$.prototype,"defaultValue",2),w([(0,s.MZ)({reflect:!0})],$.prototype,"size",2),w([(0,p.w)("size")],$.prototype,"handleSizeChange",1),w([(0,s.MZ)({reflect:!0})],$.prototype,"appearance",2),w([(0,s.MZ)()],$.prototype,"label",2),w([(0,s.MZ)({attribute:"hint"})],$.prototype,"hint",2),w([(0,s.MZ)()],$.prototype,"placeholder",2),w([(0,s.MZ)({type:Number})],$.prototype,"rows",2),w([(0,s.MZ)({reflect:!0})],$.prototype,"resize",2),w([(0,s.MZ)({type:Boolean})],$.prototype,"disabled",2),w([(0,s.MZ)({type:Boolean,reflect:!0})],$.prototype,"readonly",2),w([(0,s.MZ)({type:Boolean,reflect:!0})],$.prototype,"required",2),w([(0,s.MZ)({type:Number})],$.prototype,"minlength",2),w([(0,s.MZ)({type:Number})],$.prototype,"maxlength",2),w([(0,s.MZ)()],$.prototype,"autocapitalize",2),w([(0,s.MZ)({type:Boolean,converter:{fromAttribute:t=>!(!t||"off"===t),toAttribute:t=>t?"on":"off"}})],$.prototype,"autocorrect",2),w([(0,s.MZ)()],$.prototype,"autocomplete",2),w([(0,s.MZ)({type:Boolean})],$.prototype,"autofocus",2),w([(0,s.MZ)()],$.prototype,"enterkeyhint",2),w([(0,s.MZ)({type:Boolean,converter:{fromAttribute:t=>!(!t||"false"===t),toAttribute:t=>t?"true":"false"}})],$.prototype,"spellcheck",2),w([(0,s.MZ)()],$.prototype,"inputmode",2),w([(0,s.MZ)({attribute:"with-label",type:Boolean})],$.prototype,"withLabel",2),w([(0,s.MZ)({attribute:"with-hint",type:Boolean})],$.prototype,"withHint",2),w([(0,s.MZ)({attribute:"with-count",type:Boolean,reflect:!0})],$.prototype,"withCount",2),w([(0,p.w)("rows",{waitUntilFirstUpdate:!0})],$.prototype,"handleRowsChange",1),w([(0,p.w)("value",{waitUntilFirstUpdate:!0})],$.prototype,"handleValueChange",1),$=w([(0,s.EM)("wa-textarea")],$),$.disableWarning?.("change-in-update"),e()}catch(t){e(t)}})},9054(t,e,a){a.d(e,{A:()=>i});var i=a(5124).AH`:host{border-width:0}.textarea{display:grid;align-items:center;margin:0;border:none;outline:0;cursor:inherit;font:inherit;background-color:var(--wa-form-control-background-color);border-color:var(--wa-form-control-border-color);border-radius:var(--wa-form-control-border-radius);border-style:var(--wa-form-control-border-style);border-width:var(--wa-form-control-border-width);-webkit-appearance:none;outline:var(--wa-focus-ring-style) var(--wa-focus-ring-width) transparent;outline-offset:var(--wa-focus-ring-offset)}.textarea:focus-within{outline-color:var(--wa-color-focus)}:host([appearance=outlined]) .textarea{background-color:var(--wa-form-control-background-color);border-color:var(--wa-form-control-border-color)}:host([appearance=filled]) .textarea{background-color:var(--wa-color-neutral-fill-quiet);border-color:var(--wa-color-neutral-fill-quiet)}:host([appearance=filled-outlined]) .textarea{background-color:var(--wa-color-neutral-fill-quiet);border-color:var(--wa-form-control-border-color)}textarea{display:block;width:100%;border:none;background:0 0;font:inherit;color:inherit;padding:calc(var(--wa-form-control-padding-block) - ((1lh - 1em)/ 2)) var(--wa-form-control-padding-inline);min-height:calc(var(--wa-form-control-height) - var(--border-width) * 2);box-shadow:none;margin:0}textarea::placeholder{color:var(--wa-form-control-placeholder-color);user-select:none;-webkit-user-select:none}textarea:autofill,textarea:autofill:active,textarea:autofill:focus,textarea:autofill:hover{box-shadow:none;caret-color:var(--wa-form-control-value-color)}textarea:focus{outline:0}.control,.size-adjuster{grid-area:1/1/2/2}.size-adjuster{visibility:hidden;pointer-events:none;opacity:0;padding:0}textarea::-webkit-search-cancel-button,textarea::-webkit-search-decoration,textarea::-webkit-search-results-button,textarea::-webkit-search-results-decoration{-webkit-appearance:none}:host([resize=none]) textarea{resize:none}:host([resize=vertical]) textarea,textarea{resize:vertical}:host([resize=horizontal]) textarea{resize:horizontal}:host([resize=both]) textarea{resize:both}:host([resize=auto]) textarea{height:auto;resize:none;overflow-y:hidden}.footer{display:flex;align-items:baseline;gap:1em}.footer.has-count [part=hint]{flex:1 1 auto;min-width:0}.count{flex:0 0 auto;color:var(--wa-form-control-hint-color);font-weight:var(--wa-form-control-hint-font-weight);line-height:var(--wa-form-control-hint-line-height);margin-block-start:0.5em;font-size:var(--wa-font-size-smaller);margin-inline-start:auto}`},32565(t,e,a){a.d(e,{A:()=>i});var i=a(5124).AH`.wa-visually-hidden-force,.wa-visually-hidden-hint::part(hint),.wa-visually-hidden-label::part(form-control-label),.wa-visually-hidden-label::part(label),.wa-visually-hidden:not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;border:none!important;overflow:hidden!important;white-space:nowrap!important;padding:0!important}`}};