export const ids=["9965"];export const modules={90842:function(e,t,i){i.d(t,{t:function(){return o}});i(92745),i(39527),i(41360),i(88972);class s{constructor(e=window.localStorage){this.storage=void 0,this._storage={},this._listeners={},this.storage=e,e===window.localStorage&&window.addEventListener("storage",(e=>{e.key&&this.hasKey(e.key)&&(this._storage[e.key]=e.newValue?JSON.parse(e.newValue):e.newValue,this._listeners[e.key]&&this._listeners[e.key].forEach((t=>t(e.oldValue?JSON.parse(e.oldValue):e.oldValue,this._storage[e.key]))))}))}addFromStorage(e){if(!this._storage[e]){const t=this.storage.getItem(e);t&&(this._storage[e]=JSON.parse(t))}}subscribeChanges(e,t){return this._listeners[e]?this._listeners[e].push(t):this._listeners[e]=[t],()=>{this.unsubscribeChanges(e,t)}}unsubscribeChanges(e,t){if(!(e in this._listeners))return;const i=this._listeners[e].indexOf(t);-1!==i&&this._listeners[e].splice(i,1)}hasKey(e){return e in this._storage}getValue(e){return this._storage[e]}setValue(e,t){const i=this._storage[e];this._storage[e]=t;try{void 0===t?this.storage.removeItem(e):this.storage.setItem(e,JSON.stringify(t))}catch(e){}finally{this._listeners[e]&&this._listeners[e].forEach((e=>e(i,t)))}}}const n={},o=e=>t=>{const i=e.storage||"localStorage";let o;i&&i in n?o=n[i]:(o=new s(window[i]),n[i]=o);const a=String(t.key),r=e.key||String(t.key),d=t.initializer?t.initializer():void 0;o.addFromStorage(r);const l=!1!==e.subscribe?e=>o.subscribeChanges(r,((i,s)=>{e.requestUpdate(t.key,i)})):void 0,c=()=>o.hasKey(r)?e.deserializer?e.deserializer(o.getValue(r)):o.getValue(r):d;return{kind:"method",placement:"prototype",key:t.key,descriptor:{set(i){((i,s)=>{let n;e.state&&(n=c()),o.setValue(r,e.serializer?e.serializer(s):s),e.state&&i.requestUpdate(t.key,n)})(this,i)},get:()=>c(),enumerable:!0,configurable:!0},finisher(i){if(e.state&&e.subscribe){const e=i.prototype.connectedCallback,t=i.prototype.disconnectedCallback;i.prototype.connectedCallback=function(){e.call(this),this[`__unbsubLocalStorage${a}`]=l?.(this)},i.prototype.disconnectedCallback=function(){t.call(this),this[`__unbsubLocalStorage${a}`]?.(),this[`__unbsubLocalStorage${a}`]=void 0}}e.state&&i.createProperty(t.key,{noAccessor:!0,...e.stateOptions})}}}},43527:function(e,t,i){var s=i(44249),n=i(72621),o=(i(39527),i(41360),i(22997),i(57243)),a=i(50778),r=i(13089),d=i(24067);(0,s.Z)([(0,a.Mo)("ha-button-menu")],(function(e,t){class i extends t{constructor(...t){super(...t),e(this)}}return{F:i,d:[{kind:"field",key:d.gA,value:void 0},{kind:"field",decorators:[(0,a.Cb)()],key:"corner",value:()=>"BOTTOM_START"},{kind:"field",decorators:[(0,a.Cb)({attribute:"menu-corner"})],key:"menuCorner",value:()=>"START"},{kind:"field",decorators:[(0,a.Cb)({type:Number})],key:"x",value:()=>null},{kind:"field",decorators:[(0,a.Cb)({type:Number})],key:"y",value:()=>null},{kind:"field",decorators:[(0,a.Cb)({type:Boolean})],key:"multi",value:()=>!1},{kind:"field",decorators:[(0,a.Cb)({type:Boolean})],key:"activatable",value:()=>!1},{kind:"field",decorators:[(0,a.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,a.Cb)({type:Boolean})],key:"fixed",value:()=>!1},{kind:"field",decorators:[(0,a.Cb)({type:Boolean,attribute:"no-anchor"})],key:"noAnchor",value:()=>!1},{kind:"field",decorators:[(0,a.IO)("mwc-menu",!0)],key:"_menu",value:void 0},{kind:"get",key:"items",value:function(){return this._menu?.items}},{kind:"get",key:"selected",value:function(){return this._menu?.selected}},{kind:"method",key:"focus",value:function(){this._menu?.open?this._menu.focusItemAtIndex(0):this._triggerButton?.focus()}},{kind:"method",key:"render",value:function(){return o.dy`
`}},{kind:"method",key:"firstUpdated",value:function(e){(0,n.Z)(i,"firstUpdated",this,3)([e]),"rtl"===r.E.document.dir&&this.updateComplete.then((()=>{this.querySelectorAll("mwc-list-item").forEach((e=>{const t=document.createElement("style");t.innerHTML="span.material-icons:first-of-type { margin-left: var(--mdc-list-item-graphic-margin, 32px) !important; margin-right: 0px !important;}",e.shadowRoot.appendChild(t)}))}))}},{kind:"method",key:"_handleClick",value:function(){this.disabled||(this._menu.anchor=this.noAnchor?null:this,this._menu.show())}},{kind:"get",key:"_triggerButton",value:function(){return this.querySelector('ha-icon-button[slot="trigger"], mwc-button[slot="trigger"]')}},{kind:"method",key:"_setTriggerAria",value:function(){this._triggerButton&&(this._triggerButton.ariaHasPopup="menu")}},{kind:"get",static:!0,key:"styles",value:function(){return o.iv`:host{display:inline-block;position:relative}::slotted([disabled]){color:var(--disabled-text-color)}`}}]}}),o.oi)},31762:function(e,t,i){i.d(t,{rM:function(){return n},zt:function(){return s}});let s=function(e){return e[e.CONTROL=1]="CONTROL",e}({});const n=(e,t,i)=>e.callWS({type:"conversation/agent/list",language:t,country:i})},78579:function(e,t,i){i.r(t),i.d(t,{HaVoiceCommandDialog:()=>y});var s=i("44249"),n=(i("31622"),i("57243")),o=i("50778"),a=i("90842"),r=i("11297"),d=i("81036"),l=(i("20095"),i("43527"),i("44118"),i("28906"),i("59897"),i("74064"),i("17949"),i("72621")),c=(i("92745"),i("26200"),i("25754"),i("22246"),i("71375"),i("15524"),i("20267"),i("13334"),i("35359")),h=i("4855"),u=i("4468"),p=i("31762");i("75656"),i("50100"),i("18084");class _{constructor(e){this._active=!1,this._callback=void 0,this._context=void 0,this._stream=void 0,this._source=void 0,this._recorder=void 0,this._callback=e}get active(){return this._active}get sampleRate(){return this._context?.sampleRate}static get isSupported(){return window.isSecureContext&&(window.AudioContext||window.webkitAudioContext)}async start(){if(this._context&&this._stream&&this._source&&this._recorder)this._stream.getTracks()[0].enabled=!0,await this._context.resume(),this._active=!0;else try{await this._createContext()}catch(e){console.error(e),this._active=!1}}async stop(){this._active=!1,this._stream&&(this._stream.getTracks()[0].enabled=!1),await(this._context?.suspend())}close(){this._active=!1,this._stream?.getTracks()[0].stop(),this._recorder&&(this._recorder.port.onmessage=null),this._source?.disconnect(),this._context?.close(),this._stream=void 0,this._source=void 0,this._recorder=void 0,this._context=void 0}async _createContext(){const e=new(AudioContext||webkitAudioContext);this._stream=await navigator.mediaDevices.getUserMedia({audio:!0}),await e.audioWorklet.addModule(new URL(i.p+i.u("6961"),i.b)),this._context=e,this._source=this._context.createMediaStreamSource(this._stream),this._recorder=new AudioWorkletNode(this._context,"recorder-worklet"),this._recorder.port.onmessage=e=>{this._active&&this._callback(e.data)},this._active=!0,this._source.connect(this._recorder)}}i("70596");var g=i("26205"),m=i("4557");(0,s.Z)([(0,o.Mo)("ha-assist-chat")],(function(e,t){class i extends t{constructor(...t){super(...t),e(this)}}return{F:i,d:[{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"pipeline",value:void 0},{kind:"field",decorators:[(0,o.Cb)({type:Boolean,attribute:!1})],key:"startListening",value:void 0},{kind:"field",decorators:[(0,o.IO)("#message-input")],key:"_messageInput",value:void 0},{kind:"field",decorators:[(0,o.IO)("#scroll-container")],key:"_scrollContainer",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_conversation",value:()=>[]},{kind:"field",decorators:[(0,o.SB)()],key:"_showSendButton",value:()=>!1},{kind:"field",decorators:[(0,o.SB)()],key:"_processing",value:()=>!1},{kind:"field",key:"_conversationId",value:()=>null},{kind:"field",key:"_audioRecorder",value:void 0},{kind:"field",key:"_audioBuffer",value:void 0},{kind:"field",key:"_audio",value:void 0},{kind:"field",key:"_stt_binary_handler_id",value:void 0},{kind:"method",key:"willUpdate",value:function(e){this.hasUpdated&&!e.has("pipeline")||(this._conversation=[{who:"hass",text:this.hass.localize("ui.dialogs.voice_command.how_can_i_help")}])}},{kind:"method",key:"firstUpdated",value:function(e){(0,l.Z)(i,"firstUpdated",this,3)([e]),this.startListening&&this.pipeline&&this.pipeline.stt_engine&&_.isSupported&&this._toggleListening(),setTimeout((()=>this._messageInput.focus()),0)}},{kind:"method",key:"updated",value:function(e){(0,l.Z)(i,"updated",this,3)([e]),e.has("_conversation")&&this._scrollMessagesBottom()}},{kind:"method",key:"disconnectedCallback",value:function(){(0,l.Z)(i,"disconnectedCallback",this,3)([]),this._audioRecorder?.close(),this._audioRecorder=void 0,this._audio?.pause(),this._conversation=[],this._conversationId=null}},{kind:"method",key:"render",value:function(){const e=!!this.pipeline&&(this.pipeline.prefer_local_intents||!this.hass.states[this.pipeline.conversation_engine]||(0,u.e)(this.hass.states[this.pipeline.conversation_engine],p.zt.CONTROL)),t=_.isSupported,i=this.pipeline?.stt_engine;return n.dy` ${e?n.Ld:n.dy` ${this.hass.localize("ui.dialogs.voice_command.conversation_no_control")} `} `}},{kind:"method",key:"_scrollMessagesBottom",value:function(){const e=this._scrollContainer;e&&e.scrollTo(0,e.scrollHeight)}},{kind:"method",key:"_handleKeyUp",value:function(e){const t=e.target;!this._processing&&"Enter"===e.key&&t.value&&(this._processText(t.value),t.value="",this._showSendButton=!1)}},{kind:"method",key:"_handleInput",value:function(e){const t=e.target.value;t&&!this._showSendButton?this._showSendButton=!0:!t&&this._showSendButton&&(this._showSendButton=!1)}},{kind:"method",key:"_handleSendMessage",value:function(){this._messageInput.value&&(this._processText(this._messageInput.value.trim()),this._messageInput.value="",this._showSendButton=!1)}},{kind:"method",key:"_handleListeningButton",value:function(e){e.stopPropagation(),e.preventDefault(),this._toggleListening()}},{kind:"method",key:"_toggleListening",value:async function(){_.isSupported?this._audioRecorder?.active?this._stopListening():this._startListening():this._showNotSupportedMessage()}},{kind:"method",key:"_addMessage",value:function(e){this._conversation=[...this._conversation,e]}},{kind:"method",key:"_showNotSupportedMessage",value:async function(){this._addMessage({who:"hass",text:n.dy`${this.hass.localize("ui.dialogs.voice_command.not_supported_microphone_browser")} ${this.hass.localize("ui.dialogs.voice_command.not_supported_microphone_documentation",{documentation_link:n.dy`${this.hass.localize("ui.dialogs.voice_command.not_supported_microphone_documentation_link")}`})}`})}},{kind:"method",key:"_startListening",value:async function(){this._processing=!0,this._audio?.pause(),this._audioRecorder||(this._audioRecorder=new _((e=>{this._audioBuffer?this._audioBuffer.push(e):this._sendAudioChunk(e)}))),this._stt_binary_handler_id=void 0,this._audioBuffer=[];const e={who:"user",text:"…"};await this._audioRecorder.start(),this._addMessage(e),this.requestUpdate("_audioRecorder");const t={who:"hass",text:"…"};try{const i=await(0,h.Xp)(this.hass,(s=>{if("run-start"===s.type&&(this._stt_binary_handler_id=s.data.runner_data.stt_binary_handler_id),"stt-start"===s.type&&this._audioBuffer){for(const e of this._audioBuffer)this._sendAudioChunk(e);this._audioBuffer=void 0}if("stt-end"===s.type&&(this._stt_binary_handler_id=void 0,this._stopListening(),e.text=s.data.stt_output.text,this.requestUpdate("_conversation"),this._addMessage(t)),"intent-end"===s.type){this._conversationId=s.data.intent_output.conversation_id;const e=s.data.intent_output.response.speech?.plain;e&&(t.text=e.speech),this.requestUpdate("_conversation")}if("tts-end"===s.type){const e=s.data.tts_output.url;this._audio=new Audio(e),this._audio.play(),this._audio.addEventListener("ended",this._unloadAudio),this._audio.addEventListener("pause",this._unloadAudio),this._audio.addEventListener("canplaythrough",this._playAudio),this._audio.addEventListener("error",this._audioError)}"run-end"===s.type&&(this._stt_binary_handler_id=void 0,i()),"error"===s.type&&(this._stt_binary_handler_id=void 0,"…"===e.text?(e.text=s.data.message,e.error=!0):(t.text=s.data.message,t.error=!0),this._stopListening(),this.requestUpdate("_conversation"),i())}),{start_stage:"stt",end_stage:this.pipeline?.tts_engine?"tts":"intent",input:{sample_rate:this._audioRecorder.sampleRate},pipeline:this.pipeline?.id,conversation_id:this._conversationId})}catch(e){await(0,m.Ys)(this,{title:"Error starting pipeline",text:e.message||e}),this._stopListening()}finally{this._processing=!1}}},{kind:"method",key:"_stopListening",value:function(){if(this._audioRecorder?.stop(),this.requestUpdate("_audioRecorder"),this._stt_binary_handler_id){if(this._audioBuffer)for(const e of this._audioBuffer)this._sendAudioChunk(e);this._sendAudioChunk(new Int16Array),this._stt_binary_handler_id=void 0}this._audioBuffer=void 0}},{kind:"method",key:"_sendAudioChunk",value:function(e){if(this.hass.connection.socket.binaryType="arraybuffer",null==this._stt_binary_handler_id)return;const t=new Uint8Array(1+2*e.length);t[0]=this._stt_binary_handler_id,t.set(new Uint8Array(e.buffer),1),this.hass.connection.socket.send(t)}},{kind:"field",key:"_playAudio",value(){return()=>{this._audio?.play()}}},{kind:"field",key:"_audioError",value(){return()=>{(0,m.Ys)(this,{title:"Error playing audio."}),this._audio?.removeAttribute("src")}}},{kind:"field",key:"_unloadAudio",value(){return()=>{this._audio?.removeAttribute("src"),this._audio=void 0}}},{kind:"method",key:"_processText",value:async function(e){this._processing=!0,this._audio?.pause(),this._addMessage({who:"user",text:e});const t={who:"hass",text:"…"};this._addMessage(t);try{const i=await(0,h.Xp)(this.hass,(e=>{if("intent-end"===e.type){this._conversationId=e.data.intent_output.conversation_id;const s=e.data.intent_output.response.speech?.plain;s&&(t.text=s.speech),this.requestUpdate("_conversation"),i()}"error"===e.type&&(t.text=e.data.message,t.error=!0,this.requestUpdate("_conversation"),i())}),{start_stage:"intent",input:{text:e},end_stage:"intent",pipeline:this.pipeline?.id,conversation_id:this._conversationId})}catch{t.text=this.hass.localize("ui.dialogs.voice_command.error"),t.error=!0,this.requestUpdate("_conversation")}finally{this._processing=!1}}},{kind:"get",static:!0,key:"styles",value:function(){return n.iv`:host{flex:1;display:flex;flex-direction:column;min-height:var(--ha-assist-chat-min-height,415px)}ha-textfield{display:block;margin:0 24px 16px}.messages{flex:1;display:block;box-sizing:border-box;position:relative}.messages-container{position:absolute;bottom:0px;right:0px;left:0px;padding:24px;box-sizing:border-box;overflow-y:auto;max-height:100%}.message{white-space:pre-line;font-size:18px;clear:both;margin:8px 0;padding:8px;border-radius:15px}@media all and (max-width:450px),all and (max-height:500px){.message{font-size:16px}}.message p{margin:0}.message p:not(:last-child){margin-bottom:8px}.message.user{margin-left:24px;margin-inline-start:24px;margin-inline-end:initial;float:var(--float-end);text-align:right;border-bottom-right-radius:0px;background-color:var(--primary-color);color:var(--text-primary-color);direction:var(--direction)}.message.hass{margin-right:24px;margin-inline-end:24px;margin-inline-start:initial;float:var(--float-start);border-bottom-left-radius:0px;background-color:var(--secondary-background-color);color:var(--primary-text-color);direction:var(--direction)}.message.user a{color:var(--text-primary-color)}.message.hass a{color:var(--primary-text-color)}.message.error{background-color:var(--error-color);color:var(--text-primary-color)}.bouncer{width:48px;height:48px;position:absolute}.double-bounce1,.double-bounce2{width:48px;height:48px;border-radius:50%;background-color:var(--primary-color);opacity:.2;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.listening-icon{position:relative;color:var(--secondary-text-color);margin-right:-24px;margin-inline-end:-24px;margin-inline-start:initial;direction:var(--direction);transform:scaleX(var(--scale-direction))}.listening-icon[active]{color:var(--primary-color)}.unsupported{color:var(--error-color);position:absolute;--mdc-icon-size:16px;right:5px;inset-inline-end:5px;inset-inline-start:initial;top:0px}`}}]}}),n.oi);i("90977");var v=i("66193");let y=(0,s.Z)([(0,o.Mo)("ha-voice-command-dialog")],(function(e,t){return{F:class extends t{constructor(...t){super(...t),e(this)}},d:[{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_opened",value:()=>!1},{kind:"field",decorators:[(0,a.t)({key:"AssistPipelineId",state:!0,subscribe:!1})],key:"_pipelineId",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_pipeline",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_pipelines",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_preferredPipeline",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_errorLoadAssist",value:void 0},{kind:"field",key:"_startListening",value:()=>!1},{kind:"method",key:"showDialog",value:async function(e){"preferred"===e.pipeline_id||"last_used"===e.pipeline_id&&!this._pipelineId?(await this._loadPipelines(),this._pipelineId=this._preferredPipeline):["last_used","preferred"].includes(e.pipeline_id)||(this._pipelineId=e.pipeline_id),this._startListening=e.start_listening,this._opened=!0}},{kind:"method",key:"closeDialog",value:async function(){this._opened=!1,this._pipelines=void 0,(0,r.B)(this,"dialog-closed",{dialog:this.localName})}},{kind:"method",key:"render",value:function(){return this._opened?n.dy` ${this._pipeline?n.dy` `:n.dy`
`} ${this._errorLoadAssist?n.dy` ${this.hass.localize(`ui.dialogs.voice_command.${this._errorLoadAssist}_error_load_assist`)} `:n.Ld} `:n.Ld}},{kind:"method",key:"willUpdate",value:function(e){(e.has("_pipelineId")||e.has("_opened")&&!0===this._opened&&this._pipelineId)&&this._getPipeline()}},{kind:"method",key:"_loadPipelines",value:async function(){if(this._pipelines)return;const{pipelines:e,preferred_pipeline:t}=await(0,h.SC)(this.hass);this._pipelines=e,this._preferredPipeline=t||void 0}},{kind:"method",key:"_selectPipeline",value:async function(e){this._pipelineId=e.currentTarget.pipeline,await this.updateComplete}},{kind:"method",key:"_getPipeline",value:async function(){try{this._pipeline=await(0,h.PA)(this.hass,this._pipelineId)}catch(e){"not_found"===e.code?this._errorLoadAssist="not_found":(this._errorLoadAssist="unknown",console.error(e))}}},{kind:"get",static:!0,key:"styles",value:function(){return[v.yu,n.iv`ha-dialog{--mdc-dialog-max-width:500px;--mdc-dialog-max-height:500px;--dialog-content-padding:0}ha-dialog-header a{color:var(--primary-text-color)}div[slot=title]{display:flex;flex-direction:column;margin:-4px 0}ha-button-menu{--mdc-theme-on-primary:var(--text-primary-color);--mdc-theme-primary:var(--primary-color);margin-top:-8px;margin-bottom:0;margin-right:0;margin-inline-end:0;margin-left:-8px;margin-inline-start:-8px}ha-button-menu ha-button{--mdc-theme-primary:var(--secondary-text-color);--mdc-typography-button-text-transform:none;--mdc-typography-button-font-size:unset;--mdc-typography-button-font-weight:400;--mdc-typography-button-letter-spacing:var(
--mdc-typography-headline6-letter-spacing,
0.0125em
);--mdc-typography-button-line-height:var(
--mdc-typography-headline6-line-height,
2rem
);--button-height:auto}ha-button-menu ha-button ha-svg-icon{height:28px;margin-left:4px;margin-inline-start:4px;margin-inline-end:initial;direction:var(--direction)}ha-list-item{--mdc-list-item-meta-size:16px}ha-list-item ha-svg-icon{margin-left:4px;margin-inline-start:4px;margin-inline-end:initial;direction:var(--direction);display:block}ha-button-menu a{text-decoration:none}.pipelines-loading{display:flex;justify-content:center}`]}}]}}),n.oi)}};
//# sourceMappingURL=9965.49f3c402d28d24de.js.map