UNPKG

iobroker.lovelace

Version:

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

1 lines 26.7 kB
export const __rspack_esm_id=68507;export const __rspack_esm_ids=[68507];export const __webpack_modules__={81836(t,e,i){i.d(e,{d:()=>s,p:()=>a});const s=(t,e,i=1e3)=>t||window.setInterval(e,i),a=t=>{t&&clearInterval(t)}},58274(t,e,i){i.d(e,{m:()=>s});class s{get isInteracting(){return this._touchDragging||this._dragging}setStep(t){this._options.step=t}_getVolumeFromTouch(t){const e=this._options.getSlider();if(!e)return 0;const i=e.getBoundingClientRect(),s=Math.min(Math.max(t-i.left,0),i.width)/i.width*100;return this._roundVolumeValue(s)}_roundVolumeValue(t){return Math.min(Math.max(Math.round(t/this._options.step)*this._options.step,0),100)}_getSliderValue(){const t=this._options.getSlider();return t?Number(t.value):this._lastValue}_updateValue(t){this._lastValue=t,this._options.onValueUpdated?.(t);const e=this._options.getSlider();e&&(e.value=t)}_showTooltip(){const t=this._options.getSlider();t?.showTooltip?.()}_hideTooltip(){const t=this._options.getSlider();t?.hideTooltip?.()}constructor(t){this._touchStartX=0,this._touchStartY=0,this._touchStartValue=0,this._touchDragging=!1,this._touchScrolling=!1,this._dragging=!1,this._lastValue=0,this.handleInput=t=>{t.stopPropagation();const e=Number(t.target.value);this._dragging=!0,this._updateValue(e),this._options.onSetVolumeDebounced?.(e)},this.handleChange=t=>{t.stopPropagation();const e=Number(t.target.value);this._dragging=!1,this._updateValue(e),this._options.onSetVolume(e)},this.handleTouchStart=t=>{t.stopPropagation();const e=t.touches[0];this._touchStartX=e.clientX,this._touchStartY=e.clientY,this._touchStartValue=this._getSliderValue(),this._touchDragging=!1,this._touchScrolling=!1,this._showTooltip()},this.handleTouchMove=t=>{if(this._touchScrolling)return;const e=t.touches[0],i=e.clientX-this._touchStartX,s=e.clientY-this._touchStartY,a=Math.abs(i),o=Math.abs(s);if(!this._touchDragging){if(o>10&&o>2*a)return void(this._touchScrolling=!0);a>8&&(this._touchDragging=!0)}if(this._touchDragging){t.preventDefault();const i=this._getVolumeFromTouch(e.clientX);this._updateValue(i)}},this.handleTouchEnd=t=>{if(this._touchScrolling)return this._touchScrolling=!1,void this._hideTooltip();const e=t.changedTouches[0];if(this._touchDragging){const t=this._getVolumeFromTouch(e.clientX);this._updateValue(t),this._options.onSetVolume(t)}else{const t=this._getVolumeFromTouch(e.clientX)>this._touchStartValue?this._options.step:-this._options.step,i=this._roundVolumeValue(this._touchStartValue+t);this._updateValue(i),this._options.onSetVolume(i)}this._touchDragging=!1,this._dragging=!1,this._hideTooltip()},this.handleTouchCancel=()=>{this._touchDragging=!1,this._touchScrolling=!1,this._dragging=!1,this._updateValue(this._touchStartValue),this._hideTooltip()},this.handleWheel=t=>{t.preventDefault(),t.stopPropagation();const e=t.deltaY>0?-1:1,i=this._getSliderValue(),s=this._roundVolumeValue(i+e*this._options.step);this._updateValue(s),this._options.onSetVolume(s)},this._options=t}}},28732(t,e,i){var s=i(62826),a=i(27686),o=i(7731),r=i(5124),n=i(22441);class l extends a.J{renderRipple(){return this.noninteractive?"":super.renderRipple()}static get styles(){return[o.R,r.AH`:host{padding-left:var(--mdc-list-side-padding-left,var(--mdc-list-side-padding,20px));padding-inline-start:var(--mdc-list-side-padding-left,var(--mdc-list-side-padding,20px));padding-right:var(--mdc-list-side-padding-right,var(--mdc-list-side-padding,20px));padding-inline-end:var(--mdc-list-side-padding-right,var(--mdc-list-side-padding,20px))}:host([graphic=avatar]:not([twoLine])),:host([graphic=icon]:not([twoLine])){height:48px}span.material-icons:first-of-type{margin-inline-start:0px!important;margin-inline-end:var(--mdc-list-item-graphic-margin,16px)!important;direction:var(--direction)!important}span.material-icons:last-of-type{margin-inline-start:auto!important;margin-inline-end:0px!important;direction:var(--direction)!important}.mdc-deprecated-list-item__meta{display:var(--mdc-list-item-meta-display);align-items:center;flex-shrink:0}:host([graphic=icon]:not([twoline])) .mdc-deprecated-list-item__graphic{margin-inline-end:var(--mdc-list-item-graphic-margin,20px)!important}:host([multiline-secondary]){height:auto}:host([multiline-secondary]) .mdc-deprecated-list-item__text{padding:8px 0}:host([multiline-secondary]) .mdc-deprecated-list-item__secondary-text{text-overflow:initial;white-space:normal;overflow:auto;display:inline-block;margin-top:10px}:host([multiline-secondary]) .mdc-deprecated-list-item__primary-text{margin-top:10px}:host([multiline-secondary]) .mdc-deprecated-list-item__secondary-text::before{display:none}:host([multiline-secondary]) .mdc-deprecated-list-item__primary-text::before{display:none}:host([disabled]){color:var(--disabled-text-color)}:host([noninteractive]){pointer-events:unset}`,"rtl"===document.dir?r.AH`span.material-icons:first-of-type,span.material-icons:last-of-type{direction:rtl!important;--direction:rtl}`:r.AH``]}}l=(0,s.Cg)([(0,n.EM)("ha-list-item")],l)},35046(t,e,i){var s=i(62826),a=i(5124),o=i(22441);class r extends a.WF{firstUpdated(t){super.firstUpdated(t),this._setupAnimation()}updated(t){super.updated(t),t.has("text")&&this._setupAnimation()}disconnectedCallback(){super.disconnectedCallback(),this._animationFrame&&cancelAnimationFrame(this._animationFrame),this._pauseTimeout&&(clearTimeout(this._pauseTimeout),this._pauseTimeout=void 0)}render(){return a.qy` <div class="marquee-container" @mouseenter="${this._handleMouseEnter}" @mouseleave="${this._handleMouseLeave}" @touchstart="${this._handleMouseEnter}" @touchend="${this._handleMouseLeave}"> <span class="marquee-text"><slot></slot></span> </div> `}_setupAnimation(){this._container&&this._textSpan&&(this._position=0,this._direction="left",this._maxOffset=Math.max(0,this._textSpan.offsetWidth-this._container.offsetWidth),this._textSpan.style.transform="translateX(0px)",this._animationFrame&&cancelAnimationFrame(this._animationFrame),this._pauseTimeout&&(clearTimeout(this._pauseTimeout),this._pauseTimeout=void 0),this._animate())}_handleMouseEnter(){this.pauseOnHover&&this._animationFrame&&(cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0),this.pauseOnHover&&this._pauseTimeout&&(clearTimeout(this._pauseTimeout),this._pauseTimeout=void 0)}_handleMouseLeave(){!this.pauseOnHover||this._animationFrame||this._pauseTimeout||this._animate()}constructor(...t){super(...t),this.speed=15,this.pauseDuration=1e3,this.pauseOnHover=!1,this._direction="left",this._position=0,this._maxOffset=0,this._animate=()=>{if(!this._container||!this._textSpan)return;const t=this.speed*(1/60);let e=!1;"left"===this._direction?(this._position-=t,this._position<=-this._maxOffset&&(this._position=-this._maxOffset,this._direction="right",e=!0)):(this._position+=t,this._position>=0&&(this._position=0,this._direction="left",e=!0)),this._textSpan.style.transform=`translateX(${this._position}px)`,e?this._pauseTimeout=window.setTimeout(()=>{this._pauseTimeout=void 0,this._animationFrame=requestAnimationFrame(this._animate)},this.pauseDuration):this._animationFrame=requestAnimationFrame(this._animate)}}}r.styles=a.AH`:host{display:block;overflow:hidden;width:100%}.marquee-container{width:100%;white-space:nowrap;overflow:hidden;user-select:none;cursor:default}.marquee-text{display:inline-block;vertical-align:middle;will-change:transform;font-size:1em;pointer-events:none}`,(0,s.Cg)([(0,o.MZ)({type:Number})],r.prototype,"speed",void 0),(0,s.Cg)([(0,o.MZ)({type:Number,attribute:"pause-duration"})],r.prototype,"pauseDuration",void 0),(0,s.Cg)([(0,o.MZ)({type:Boolean,attribute:"pause-on-hover"})],r.prototype,"pauseOnHover",void 0),(0,s.Cg)([(0,o.P)(".marquee-container")],r.prototype,"_container",void 0),(0,s.Cg)([(0,o.P)(".marquee-text")],r.prototype,"_textSpan",void 0),(0,s.Cg)([(0,o.Ls)({passive:!0})],r.prototype,"_handleMouseEnter",null),r=(0,s.Cg)([(0,o.EM)("ha-marquee-text")],r)},36358(t,e,i){i.d(e,{g:()=>a});var s=i(1087);const a=(t,e)=>{(0,s.r)(t,"show-dialog",{dialogTag:"dialog-join-media-players",dialogImport:()=>i.e(59671).then(i.bind(i,93725)),dialogParams:e})}},95287(t,e,i){i.d(e,{O:()=>a});var s=i(1087);const a=(t,e)=>{(0,s.r)(t,"show-dialog",{dialogTag:"dialog-media-player-browse",dialogImport:()=>Promise.all([i.e(39763),i.e(32450),i.e(46095),i.e(7305),i.e(92769),i.e(34995),i.e(3283),i.e(80131),i.e(70183),i.e(99812),i.e(78198),i.e(26092),i.e(8851),i.e(91845),i.e(8283),i.e(71486)]).then(i.bind(i,93565)),dialogParams:e})}},70294(t,e,i){i.a(t,async function(t,s){try{i.r(e);i(18111),i(20116),i(61701);var a=i(62826),o=i(5124),r=i(22441),n=i(6412),l=i(63672),h=i(1087),d=i(47129),u=i(82286),c=i(9899),p=i(81836),_=i(58274),m=(i(34296),i(18350)),g=i(29823),v=(i(70947),i(26300)),b=(i(28732),i(35046),i(606)),y=(i(67094),i(34127)),f=i(36358),$=i(95287),V=i(22675),S=i(53072),x=i(29986),O=t([m,g,v,b,y]);[m,g,v,b,y]=O.then?(await O)():O;const w="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z",j="M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z",C="M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z",M="M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,14.5V5.5L18,10L12,14.5Z",T="M14,10A3,3 0 0,0 11,13A3,3 0 0,0 14,16A3,3 0 0,0 17,13A3,3 0 0,0 14,10M14,18A5,5 0 0,1 9,13A5,5 0 0,1 14,8A5,5 0 0,1 19,13A5,5 0 0,1 14,18M14,2A2,2 0 0,1 16,4A2,2 0 0,1 14,6A2,2 0 0,1 12,4A2,2 0 0,1 14,2M19,0H9A2,2 0 0,0 7,2V18A2,2 0 0,0 9,20H19A2,2 0 0,0 21,18V2A2,2 0 0,0 19,0M5,22H17V24H5A2,2 0 0,1 3,22V4H5",H="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z",k="M3,9H7L12,4V20L7,15H3V9M14,11H22V13H14V11Z",P="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z",q="M3,9H7L12,4V20L7,15H3V9M14,11H17V8H19V11H22V13H19V16H17V13H14V11Z";class A extends o.WF{connectedCallback(){super.connectedCallback(),this._syncProgressInterval()}disconnectedCallback(){super.disconnectedCallback(),this._clearProgressInterval()}firstUpdated(t){this._positionSlider&&(this._positionSlider.valueFormatter=t=>this._formatDuration(t))}_formatDuration(t){return(0,S.Xm)(t)}_renderVolumeControl(){if(!this.stateObj)return o.s6;const t=(0,u.$)(this.stateObj,S.vj.VOLUME_MUTE),e=(0,u.$)(this.stateObj,S.vj.VOLUME_SET);return o.qy`${((0,u.$)(this.stateObj,S.vj.VOLUME_SET)||(0,u.$)(this.stateObj,S.vj.VOLUME_STEP))&&(0,d.a)(this.stateObj)?o.qy` <div class="volume"> ${t?o.qy` <ha-icon-button .path="${this.stateObj.attributes.is_volume_muted?P:H}" .label="${this.hass.localize("ui.card.media_player."+(this.stateObj.attributes.is_volume_muted?"media_volume_unmute":"media_volume_mute"))}" @click="${this._toggleMute}"></ha-icon-button> `:""} ${(0,u.$)(this.stateObj,S.vj.VOLUME_STEP)&&!e?o.qy` <ha-icon-button action="volume_down" .path="${k}" .label="${this.hass.localize("ui.card.media_player.media_volume_down")}" @click="${this._handleClick}"></ha-icon-button> <ha-icon-button action="volume_up" .path="${q}" .label="${this.hass.localize("ui.card.media_player.media_volume_up")}" @click="${this._handleClick}"></ha-icon-button> `:o.s6} ${e?o.qy` ${t?o.s6:o.qy`<ha-svg-icon .path="${H}"></ha-svg-icon>`} <div class="volume-slider-container" @touchstart="${this._handleVolumePointerDown}" @touchmove="${this._volumeController.handleTouchMove}" @touchend="${this._handleVolumePointerUp}" @touchcancel="${this._handleVolumePointerUp}" @pointerdown="${this._handleVolumePointerDown}" @pointerup="${this._handleVolumePointerUp}" @wheel="${this._volumeController.handleWheel}"> <ha-slider class="volume-slider" labeled id="input" .value="${100*Number(this.stateObj.attributes.volume_level)}" .step="${this._volumeStep}" @input="${this._handleVolumeInput}" @change="${this._handleVolumeChange}"></ha-slider> </div> `:o.s6} </div> `:o.s6}`}_renderSourceControl(){if(!this.stateObj||!(0,u.$)(this.stateObj,S.vj.SELECT_SOURCE))return o.s6;const t=this.stateObj.attributes.source_list||[];return o.qy`<ha-tooltip for="source-button"> ${this.hass.localize("ui.card.media_player.source")} </ha-tooltip> <ha-dropdown @wa-select="${this._handleSourceChange}"> <ha-icon-button id="source-button" slot="trigger" .label="${this.hass.localize("ui.card.media_player.source")}" .path="${w}"> </ha-icon-button> ${t.map(t=>o.qy`<ha-dropdown-item .value="${t}" .selected="${t===this.stateObj?.attributes.source}"> ${this.hass.formatEntityAttributeValue(this.stateObj,"source",t)} </ha-dropdown-item>`)} </ha-dropdown>`}_renderSoundMode(){return this.stateObj&&(0,u.$)(this.stateObj,S.vj.SELECT_SOUND_MODE)&&this.stateObj.attributes.sound_mode_list?.length?o.qy`<ha-tooltip for="sound-mode-button"> ${this.hass.localize("ui.card.media_player.sound_mode")} </ha-tooltip> <ha-dropdown @wa-select="${this._handleSoundModeChange}"> <ha-icon-button slot="trigger" id="sound-mode-button" .path="${C}" hide-title> </ha-icon-button> ${this.stateObj.attributes.sound_mode_list.map(t=>o.qy`<ha-dropdown-item .value="${t}" .selected="${t===this.stateObj?.attributes.sound_mode}"> ${this.hass.formatEntityAttributeValue(this.stateObj,"sound_mode",t)} </ha-dropdown-item>`)} </ha-dropdown>`:o.s6}_renderGrouping(){if(!this.stateObj||this.stateObj.state===V.Hh||!(0,u.$)(this.stateObj,S.vj.GROUPING))return o.s6;const t=this.stateObj.attributes.group_members,e=t&&t?.length>1;return o.qy`<ha-icon-button @click="${this._showGroupMediaPlayers}" .title="${this.hass.localize("ui.card.media_player.join")}" id="grouping-button"> <div class="grouping"> <ha-svg-icon .path="${T}"></ha-svg-icon> ${e?o.qy`<span class="badge">${t?.length||4}</span>`:o.s6} </div> </ha-icon-button> <ha-tooltip for="grouping-button"> ${this.hass.localize("ui.card.media_player.join")} </ha-tooltip>`}_renderEmptyCover(t,e){return o.qy` <div class="cover-container"> <div class="cover-image empty-cover" role="img" aria-label="${t}"> ${e?o.qy`<ha-svg-icon .path="${e}"></ha-svg-icon>`:t} </div> </div> `}render(){if(!this.stateObj)return o.s6;if(this.stateObj.state===V.Hh)return this._renderEmptyCover(this.hass.formatEntityState(this.stateObj));const t=this.stateObj,e=(0,S.Un)(t,!0),i=t.attributes.entity_picture_local||t.attributes.entity_picture||"",s=i?this.hass.hassUrl(i):"",a=new x.A(this.hass,this.stateObj),r=Math.max(Math.floor(a.currentProgress||0),0),h=Math.max(t.attributes.media_duration||0,0),c=this._formatDuration(r),p=this._formatDuration(h),_=(0,S.HN)(t.attributes.media_title),m=(0,S.mm)(t),g=e?.find(t=>"turn_on"===t.action),v=e?.find(t=>"turn_off"===t.action);return o.qy` ${s?o.qy`<div class="cover-container"> <img class="${(0,n.H)({"cover-image":!0,"cover-image--playing":"playing"===t.state})}" src="${s}" alt="${(0,l.J)(_)}"> </div>`:this._renderEmptyCover(this.hass.formatEntityState(this.stateObj),j)} ${_||m?o.qy`<div class="media-info-row"> ${_?o.qy`<ha-marquee-text class="media-title" speed="30" pause-on-hover> ${_} </ha-marquee-text>`:o.s6} ${m?o.qy`<ha-marquee-text class="media-artist" speed="30" pause-on-hover> ${m} </ha-marquee-text>`:o.s6} </div>`:o.s6} ${h&&h>0?o.qy` <div class="position-bar"> <ha-slider id="position-slider" min="0" max="${h}" step="1" .value="${r}" aria-label="${this.hass.localize("ui.card.media_player.track_position")}" @change="${this._handleMediaSeekChanged}" ?disabled="${!(0,d.a)(t)||!(0,u.$)(t,S.vj.SEEK)}"> <span class="position-time" slot="reference">${c}</span> <span class="position-time" slot="reference">${p}</span> </ha-slider> </div> `:o.s6} <div class="bottom-controls"> ${e&&e.length>0?o.qy`<div class="main-controls"> ${["repeat_set","media_previous_track"].map(t=>{const i=e?.find(e=>e.action===t);return i?o.qy`<ha-icon-button action="${t}" @click="${this._handleClick}" .path="${i.icon}" .label="${this.hass.localize(`ui.card.media_player.${i.action}`)}"> </ha-icon-button>`:o.qy`<span class="spacer"></span>`})} ${["media_play_pause","media_pause","media_play","media_stop"].map(t=>{const i=e?.find(e=>e.action===t);return i?o.qy`<ha-button variant="brand" appearance="filled" size="medium" action="${t}" @click="${this._handleClick}" class="center-control"> <ha-svg-icon .path="${i.icon}" aria-label="${this.hass.localize(`ui.card.media_player.${i.action}`)}"></ha-svg-icon> </ha-button>`:o.s6})} ${["media_next_track","shuffle_set"].map(t=>{const i=e?.find(e=>e.action===t);return i?o.qy`<ha-icon-button action="${t}" @click="${this._handleClick}" .path="${i.icon}" .label="${this.hass.localize(`ui.card.media_player.${i.action}`)}"> </ha-icon-button>`:o.qy`<span class="spacer"></span>`})} </div>`:o.s6} ${this._renderVolumeControl()} <div class="controls-row"> ${t.state!==V.Hh&&(0,u.$)(t,S.vj.BROWSE_MEDIA)?this._renderControlButton("browse_media",this.hass.localize("ui.card.media_player.browse_media"),M,this._showBrowseMedia):o.s6} ${this._renderGrouping()} ${this._renderSourceControl()} ${this._renderSoundMode()} ${g?this._renderControlButton("turn_on",this.hass.localize(`ui.card.media_player.${g.action}`),g.icon,this._handleClick,g.action):o.s6} ${v?this._renderControlButton("turn_off",this.hass.localize(`ui.card.media_player.${v.action}`),v.icon,this._handleClick,v.action):o.s6} </div> </div> `}_renderControlButton(t,e,i,s,a){return o.qy` <ha-icon-button .id="${`media-control-row-button-${t}`}" hide-title action="${(0,l.J)(a)}" @click="${s}" .label="${e}" .path="${i}"> </ha-icon-button> <ha-tooltip for="${`media-control-row-button-${t}`}"> ${e} </ha-tooltip> `}_handleClick(t){(0,S.ce)(this.hass,this.stateObj,t.currentTarget.getAttribute("action"))}updated(t){super.updated(t),t.has("stateObj")&&this._syncProgressInterval()}_syncProgressInterval(){this._shouldUpdateProgress()?this._progressInterval=(0,p.d)(this._progressInterval,()=>this.requestUpdate()):this._clearProgressInterval()}_clearProgressInterval(){this._progressInterval=(0,p.p)(this._progressInterval)}_shouldUpdateProgress(){const t=this.stateObj;return!!t&&"playing"===t.state&&Number(t.attributes.media_duration)>0&&"media_position"in t.attributes&&"media_position_updated_at"in t.attributes}_toggleMute(){this.hass.callService("media_player","volume_mute",{entity_id:this.stateObj.entity_id,is_volume_muted:!this.stateObj.attributes.is_volume_muted})}_setVolume(t){this.hass.callService("media_player","volume_set",{entity_id:this.stateObj.entity_id,volume_level:t/100})}_handleSourceChange(t){const e=t.detail.item.value;e&&this.stateObj.attributes.source!==e&&this.hass.callService("media_player","select_source",{entity_id:this.stateObj.entity_id,source:e})}_handleSoundModeChange(t){const e=t.detail.item.value;e&&this.stateObj.attributes.sound_mode!==e&&this.hass.callService("media_player","select_sound_mode",{entity_id:this.stateObj.entity_id,sound_mode:e})}_showBrowseMedia(){(0,$.O)(this,{action:"play",entityId:this.stateObj.entity_id,mediaPickedCallback:t=>(0,S.ie)(this.hass,this.stateObj.entity_id,t.item.media_content_id,t.item.media_content_type)})}_showGroupMediaPlayers(){(0,f.g)(this,{entityId:this.stateObj.entity_id})}async _handleMediaSeekChanged(t){if(!this.stateObj)return;const e=t.target.value;this.hass.callService("media_player","media_seek",{entity_id:this.stateObj.entity_id,seek_position:e})}constructor(...t){super(...t),this._volumeStep=2,this._debouncedVolumeSet=(0,c.s)(t=>{this._setVolume(t)},100),this._volumeController=new _.m({getSlider:()=>this._volumeSlider,step:this._volumeStep,onSetVolume:t=>this._setVolume(t),onSetVolumeDebounced:t=>this._debouncedVolumeSet(t)}),this._handleVolumePointerDown=t=>{"touchstart"===t.type&&this._volumeController.handleTouchStart(t),this._volumeController.isInteracting||(0,h.r)(this,"slider-interaction-start")},this._handleVolumePointerUp=t=>{"touchend"!==t.type&&"touchcancel"!==t.type||this._volumeController.handleTouchEnd(t),setTimeout(()=>{(0,h.r)(this,"slider-interaction-stop")},100)},this._handleVolumeInput=t=>{this._volumeController.handleInput(t)},this._handleVolumeChange=t=>{this._volumeController.handleChange(t)}}}A.styles=o.AH`:host{display:flex;flex-direction:column;gap:var(--ha-space-6);margin-top:0}.cover-container{display:flex;justify-content:center;align-items:center;height:320px;width:100%}.cover-image{width:240px;height:240px;max-width:100%;max-height:100%;object-fit:cover;border-radius:var(--ha-border-radius-sm);box-shadow:0 2px 8px rgba(0,0,0,.15);position:relative;display:flex;align-items:center;justify-content:center;transition:width .3s,height .3s}.cover-image--playing{width:320px;height:320px}@media (max-height:750px){.cover-container{height:120px}.cover-image{width:100px;height:100px}.cover-image--playing{width:120px;height:120px}}.empty-cover{background-color:var(--secondary-background-color);font-size:1.5em;color:var(--secondary-text-color)}.main-controls{display:flex;align-items:center;justify-content:space-between}.center-control{--ha-button-height:56px}.spacer{width:48px}.main-controls,.position-bar,.volume{direction:ltr}.position-bar ha-slider,.volume ha-slider{width:100%}.volume{display:flex;align-items:center;justify-content:center;gap:var(--ha-space-3);padding-inline:var(--ha-space-2)}.volume-slider-container{width:100%}.volume ha-svg-icon{padding:var(--ha-space-1);height:16px;width:16px}.volume ha-icon-button{--ha-icon-button-size:32px;--mdc-icon-size:16px}.badge{position:absolute;top:-10px;left:var(--ha-space-4);display:flex;justify-content:center;align-items:center;height:16px;min-width:var(--ha-space-2);border-radius:var(--ha-border-radius-md);font-weight:var(--ha-font-weight-normal);font-size:var(--ha-font-size-xs);background-color:var(--primary-color);padding:0 var(--ha-space-1);color:var(--text-primary-color)}.position-bar{display:flex;flex-direction:column}.position-bar ha-slider::part(references){color:var(--secondary-text-color)}.position-time{margin-top:var(--ha-space-2)}.media-info-row{display:flex;flex-direction:column;justify-content:space-between;margin:var(--ha-space-2) 0 var(--ha-space-2) var(--ha-space-2)}.media-title{font-size:var(--ha-font-size-xl);font-weight:var(--ha-font-weight-bold);margin-bottom:var(--ha-space-1)}.media-artist{font-size:var(--ha-font-size-l);font-weight:var(--ha-font-weight-normal);color:var(--secondary-text-color)}.controls-row{display:flex;align-items:center;justify-content:space-around}.controls-row ha-icon-button{color:var(--secondary-text-color);background:var(--ha-color-fill-neutral-quiet-resting);border-radius:var(--ha-border-radius-circle)}.controls-row ha-svg-icon{color:var(--ha-color-on-neutral-quiet)}.grouping{position:relative}.bottom-controls{display:flex;flex-direction:column;gap:var(--ha-space-6);align-self:center;width:320px}`,(0,a.Cg)([(0,r.MZ)({attribute:!1})],A.prototype,"hass",void 0),(0,a.Cg)([(0,r.MZ)({attribute:!1})],A.prototype,"stateObj",void 0),(0,a.Cg)([(0,r.P)("#position-slider")],A.prototype,"_positionSlider",void 0),(0,a.Cg)([(0,r.P)(".volume-slider")],A.prototype,"_volumeSlider",void 0),A=(0,a.Cg)([(0,r.EM)("more-info-media_player")],A),s()}catch(t){s(t)}})},29986(t,e,i){i.d(e,{A:()=>o});var s=i(82286),a=i(53072);class o{get isOff(){return"off"===this.stateObj.state}get isIdle(){return"idle"===this.stateObj.state}get isMuted(){return this._attr.is_volume_muted}get isPaused(){return"paused"===this.stateObj.state}get isPlaying(){return"playing"===this.stateObj.state}get isMusic(){return"music"===this._attr.media_content_type}get isTVShow(){return"tvshow"===this._attr.media_content_type}get hasMediaControl(){return-1!==["playing","paused","unknown","on"].indexOf(this.stateObj.state)}get volumeSliderValue(){return 100*this._attr.volume_level}get showProgress(){return(this.isPlaying||this.isPaused)&&"media_duration"in this.stateObj.attributes&&"media_position"in this.stateObj.attributes&&"media_position_updated_at"in this.stateObj.attributes}get currentProgress(){let t=this._attr.media_position;return this.isPlaying&&(t+=(Date.now()-new Date(this._attr.media_position_updated_at).getTime())/1e3),t}get supportsPause(){return(0,s.$)(this.stateObj,1)}get supportsVolumeSet(){return(0,s.$)(this.stateObj,4)}get supportsVolumeMute(){return(0,s.$)(this.stateObj,8)}get supportsPreviousTrack(){return(0,s.$)(this.stateObj,16)}get supportsNextTrack(){return(0,s.$)(this.stateObj,32)}get supportsTurnOn(){return(0,s.$)(this.stateObj,128)}get supportsTurnOff(){return(0,s.$)(this.stateObj,256)}get supportsPlayMedia(){return(0,s.$)(this.stateObj,512)}get supportsVolumeButtons(){return(0,s.$)(this.stateObj,1024)}get supportsSelectSource(){return(0,s.$)(this.stateObj,2048)}get supportsSelectSoundMode(){return(0,s.$)(this.stateObj,65536)}get supportsPlay(){return(0,s.$)(this.stateObj,16384)}get primaryTitle(){return(0,a.HN)(this._attr.media_title)}get secondaryTitle(){if(this.isMusic)return this._attr.media_artist;if(this.isTVShow){let t=this._attr.media_series_title;return this._attr.media_season&&(t+=" S"+this._attr.media_season,this._attr.media_episode&&(t+="E"+this._attr.media_episode)),t}return this._attr.app_name?this._attr.app_name:""}get source(){return this._attr.source}get sourceList(){return this._attr.source_list}get soundMode(){return this._attr.sound_mode}get soundModeList(){return this._attr.sound_mode_list}mediaPlayPause(){this.callService("media_play_pause")}nextTrack(){this.callService("media_next_track")}playbackControl(){this.callService("media_play_pause")}previousTrack(){this.callService("media_previous_track")}setVolume(t){this.callService("volume_set",{volume_level:t})}togglePower(){this.isOff?this.turnOn():this.turnOff()}turnOff(){this.callService("turn_off")}turnOn(){this.callService("turn_on")}volumeDown(){this.callService("volume_down")}volumeMute(t){if(!this.supportsVolumeMute)throw new Error("Muting volume not supported");this.callService("volume_mute",{is_volume_muted:t})}volumeUp(){this.callService("volume_up")}selectSource(t){this.callService("select_source",{source:t})}selectSoundMode(t){this.callService("select_sound_mode",{sound_mode:t})}callService(t,e={}){e.entity_id=this.stateObj.entity_id,this.hass.callService("media_player",t,e)}constructor(t,e){this.hass=t,this.stateObj=e,this._attr=e.attributes}}}};