import{dN as i,dO as t,dP as e,dQ as n,dD as s,dR as r,s as o,_ as h,n as a,t as d,a as _,d7 as l,x as C,d9 as u,r as c}from"./card-b98d578d.js"; /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */const g={},m=i(class extends t{constructor(){super(...arguments),this.ot=g}render(i,t){return t()}update(i,[t,n]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every(((i,t)=>i===this.ot[t])))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}});class f{constructor(i){this._dimensionsConfig=null,this._innerContainer=null,this._outerContainer=null,this.resize=s(this._resize.bind(this),100,{trailing:!0}),this._resizeObserver=new ResizeObserver(this.resize),this._mediaDimensions=null,this._mediaLoadedHandler=i=>{this._mediaDimensions?.width===i.detail.width&&this._mediaDimensions.height===i.detail.height||(this._mediaDimensions={width:i.detail.width,height:i.detail.height},this.resize())},this._setMaxSize=i=>this._setSize(i,{width:"100%",height:"100%"}),this._setIntrinsicSize=i=>this._setSize(i,{width:"max-content",height:"max-content"}),this._setWidthBoundIntrinsicSize=i=>this._setSize(i,{width:"100%",height:"auto"}),this._setHeightBoundIntrinsicSize=i=>this._setSize(i,{width:"auto",height:"100%"}),this._setInvisible=i=>{i.style.visibility="hidden"},this._setVisible=i=>{i.style.visibility=""},this._host=i,this._host.addController(this)}hostConnected(){this._resizeObserver.observe(this._host),this._addInnerContainerListeners()}hostDisconnected(){this._resizeObserver.disconnect(),this._removeInnerContainerListeners()}_removeInnerContainerListeners(){this._innerContainer&&(this._innerContainer.removeEventListener("slotchange",this.resize),this._innerContainer.removeEventListener("advanced-camera-card:media:loaded",this._mediaLoadedHandler))}_addInnerContainerListeners(){this._host.isConnected&&this._innerContainer&&(this._innerContainer.addEventListener("slotchange",this.resize),this._innerContainer.addEventListener("advanced-camera-card:media:loaded",this._mediaLoadedHandler))}setConfig(i){i!==this._dimensionsConfig&&(this._dimensionsConfig=i??null,this._setInnerContainerProperties())}setContainers(i,t){(i??null)===this._innerContainer&&(t??null)===this._outerContainer||(this._removeInnerContainerListeners(),this._innerContainer=i??null,this._outerContainer=t??null,this._addInnerContainerListeners(),this._setInnerContainerProperties(),this._resize())}_hasFixedAspectRatio(){return 2===this._dimensionsConfig?.aspect_ratio?.length}_requiresRotation(){return!!this._dimensionsConfig?.rotation}_requiresContainerRotation(){return 90===this._dimensionsConfig?.rotation||270===this._dimensionsConfig?.rotation}_setInnerContainerProperties(){this._innerContainer&&(n(this._innerContainer,this._requiresRotation(),"--advanced-camera-card-media-rotation",`${this._dimensionsConfig?.rotation}deg`),this._innerContainer.style.aspectRatio=r({ratio:this._dimensionsConfig?.aspect_ratio}),((i,t)=>{n(i,!!t?.fit,"--advanced-camera-card-media-layout-fit",t?.fit);for(const e of["x","y"])n(i,!!t?.position?.[e],`--advanced-camera-card-media-layout-position-${e}`,`${t?.position?.[e]}%`);for(const e of["top","bottom","left","right"])n(i,!!t?.view_box?.[e],`--advanced-camera-card-media-layout-view-box-${e}`,`${t?.view_box?.[e]}%`)})(this._innerContainer,this._dimensionsConfig?.layout))}_setSize(i,t){const e=i=>"number"==typeof i?`${i}px`:i;void 0!==t.width&&(i.style.width=e(t.width)),i.style.height=e(t.height)}_setRotation(i,t){o(i,t,"rotated")}_resize(){this._requiresRotation()?this._resizeAndRotate():this._hasFixedAspectRatio()?this._resizeWithFixedAspectRatio():this._resizeDefault()}_resizeDefault(){this._innerContainer&&this._outerContainer&&(this._setMaxSize(this._innerContainer),this._setMaxSize(this._outerContainer),this._setRotation(this._host,!1),this._setVisible(this._innerContainer))}_resizeWithFixedAspectRatio(){if(!this._innerContainer||!this._outerContainer)return;this._setInvisible(this._innerContainer),this._setWidthBoundIntrinsicSize(this._innerContainer),this._setMaxSize(this._outerContainer),this._setRotation(this._host,!1);const i=this._host.getBoundingClientRect(),t=this._innerContainer.getBoundingClientRect();this._resizeDefaultIfInvalidSizes([i,t])||(t.height>i.height&&this._setHeightBoundIntrinsicSize(this._innerContainer),this._setVisible(this._innerContainer))}_hasValidSize(i){return i.width>0&&i.height>0}_resizeDefaultIfInvalidSizes(i){return!!i.some((i=>!this._hasValidSize(i)))&&(this._resizeDefault(),!0)}_resizeAndRotate(){if(!this._innerContainer||!this._outerContainer)return;if(!this._requiresContainerRotation())return this._resizeDefault(),void this._setRotation(this._host,!0);this._setInvisible(this._innerContainer),this._setIntrinsicSize(this._innerContainer),this._setMaxSize(this._outerContainer),this._setRotation(this._host,!1);let i=this._host.getBoundingClientRect(),t=this._innerContainer.getBoundingClientRect();if(this._resizeDefaultIfInvalidSizes([i,t]))return;const e=t.width/t.height;this._setRotation(this._host,!0),this._setSize(this._innerContainer,{width:i.width*e,height:i.width}),this._setSize(this._outerContainer,{height:i.width*e}),t=this._innerContainer.getBoundingClientRect(),i=this._host.getBoundingClientRect(),this._resizeDefaultIfInvalidSizes([i,t])||(t.height>i.height&&(this._setSize(this._innerContainer,{width:i.height,height:i.height/e}),this._setSize(this._outerContainer,{height:i.height})),this._setVisible(this._innerContainer))}}let z=class extends _{constructor(){super(...arguments),this._controller=new f(this),this._refInnerContainer=l(),this._refOuterContainer=l()}willUpdate(i){i.has("dimensionsConfig")&&this._controller.setConfig(this.dimensionsConfig)}render(){return C`
`}static get styles(){return c(":host,\n.outer {\n display: flex;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n\n.inner {\n display: block;\n flex-shrink: 0;\n}\n\n:host([rotated]) .inner {\n transform: rotate(var(--advanced-camera-card-media-rotation, 0deg));\n}")}updated(){this._controller.setContainers(this._refInnerContainer.value,this._refOuterContainer.value)}};h([a({attribute:!1})],z.prototype,"dimensionsConfig",void 0),z=h([d("advanced-camera-card-media-dimensions-container")],z);export{m as i};