UNPKG

@hakit/components

Version:
161 lines (147 loc) 306 kB
"use strict";const t=require("./emotion-react-jsx-runtime.browser.esm-CgJouFLh.cjs"),k=require("./emotion-styled-base.browser.esm-D0rcP917.cjs"),a=require("react"),ue=require("./cjs/ThemeProvider/breakpoints.js"),d=require("@hakit/core"),co=require("./cjs/Shared/Form/TextField.js"),pe=require("@emotion/react"),ln=require("use-long-press"),ie=require("lodash"),J=require("react-error-boundary"),xt=require("react-dom");require("@emotion/serialize");require("@emotion/utils");require("@emotion/is-prop-valid");const Be=require("./cjs/Shared/Entity/Alarm/AlarmControls/shared.js"),Le=require("use-debounce"),lo=require("./cjs/Shared/SvgGraph/index.js"),Y=require("./cjs/Shared/Row/index.js"),X=require("./cjs/Shared/Column/index.js"),xe=require("@iconify/react"),uo=require("./cjs/Cards/WeatherCard/helpers.js"),he=require("./cjs/Shared/Entity/Climate/ClimateControls/data.js"),ye=require("./cjs/Shared/Entity/Climate/ClimateControls/shared.js"),dn=require("./cjs/Shared/Entity/Climate/ClimateControls/BigNumber.js"),vt=require("@use-gesture/react"),po=require("@fullcalendar/react"),fo=require("@fullcalendar/daygrid"),ho=require("@fullcalendar/interaction"),mo=require("@fullcalendar/list"),lr=require("react-resize-detector"),go=require("autolinker"),un=require("./cjs/Cards/CameraCard/players/index.js"),Rr=require("./cjs/Shared/ControlSliderCircular/svg-arc.js"),dr=require("./cjs/Shared/PreloadImage/index.js"),qe=require("./cjs/Shared/Alert/index.js"),bo=require("./cjs/ThemeProvider/theme.js"),xo=require("./cjs/ThemeProvider/helpers.js"),fe=require("./cjs/ThemeProvider/constants.js"),Ge=require("./cjs/ThemeProvider/store.js"),vo=require("@emotion/cache"),ft=require("react/jsx-runtime"),ur=require("react-use"),pn=require("./cjs/Shared/Entity/Vacuum/VacuumControls/shared.js"),fn=require("./cjs/Shared/Entity/Vacuum/VacuumControls/VacuumImage.js"),tt=require("./cjs/Cards/MediaPlayerCard/constants.js"),yo=require("./cjs/Cards/MediaPlayerCard/Marquee.js"),wo=require("./cjs/Cards/MediaPlayerCard/Thumbnail.js"),So=require("./cjs/Cards/MediaPlayerCard/Clock.js"),Eo=require("./cjs/Cards/MediaPlayerCard/ProgressBar.js"),It=require("leaflet"),pr=require("react-leaflet"),hn=require("./cjs/Cards/TimeCard/formatter.js"),kt=require("./cjs/Cards/TimeCard/shared.js"),No=require("./cjs/Shared/AutoHeight/index.js"),Ir=require("./cjs/utils/isValidProp.js"),Ar=require("./cjs/Shared/SvgGraph/constants.js");function mn(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(r,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return r.default=e,Object.freeze(r)}const G=mn(a),Co=mn(xt);function lt(){const{useStore:e}=d.useHass(),r=Ge.useThemeStore(i=>i.breakpoints),n=e(i=>i.windowContext)??window,s=a.useMemo(()=>ue.getBreakpoints(r),[r]),[c,l]=a.useState(()=>Object.fromEntries(ue.allBreakpoints.map(i=>[i,!1])));return a.useEffect(()=>{const i=n||window,u=new Map,m=()=>{const h=Object.fromEntries(ue.allBreakpoints.map(b=>[b,!1]));for(const b of ue.allBreakpoints)if(typeof s[b]=="string"&&u.get(b)?.matches){h[b]=!0;break}l(h)};for(const h of ue.allBreakpoints){const b=s[h];if(typeof b=="string"){const v=i.matchMedia(b);if(!v)continue;u.set(h,v),v.addEventListener("change",m)}}return m(),()=>{for(const h of u.values())h&&h.removeEventListener("change",m)}},[s,n]),c}var ko=function(r){var o=new WeakMap;return function(n){if(o.has(n))return o.get(n);var s=r(n);return o.set(n,s),s}};function gn(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const jo=(e,r)=>r?k.createStyled(e,process.env.NODE_ENV==="production"?{target:"e1xe7ch93"}:{target:"e1xe7ch93",label:"getBaseElement"})():k.createStyled(e,process.env.NODE_ENV==="production"?{shouldForwardProp:o=>Ir.isValidProp(o),target:"e1xe7ch92"}:{shouldForwardProp:o=>Ir.isValidProp(o),target:"e1xe7ch92",label:"getBaseElement"})("outline:none;border:0;box-sizing:border-box;padding:0;position:relative;overflow:hidden;display:flex;width:100%;cursor:pointer;background-color:var(--ha-S300);box-shadow:0px 0px 0px rgba(0, 0, 0, 0);transform:scale(1) translate3d(0, 0, 0);transition:var(--ha-transition-duration) var(--ha-easing);transition-property:transform,background-color,background-image;color:var(--ha-S200-contrast);flex-shrink:1;user-select:none;svg{color:var(--ha-S200-contrast);transition:color var(--ha-transition-duration) var(--ha-easing);}.graph-element{position:absolute;bottom:0;left:0;right:0;}&:not(.disabled):not(:disabled):not(:focus):hover{background-color:var(--ha-S400);color:var(--ha-500-contrast);svg{color:var(--ha-S400-contrast);}}&:disabled,&.disabled{cursor:not-allowed;opacity:0.8;}&:active:not(.disable-scale-effect):not(.disabled):not(.unavailable){transform:scale(0.9) translate3d(0, 0, 0);}",o=>!o.disableActiveState&&` &.active, &:active { background-color: var(--ha-A400); color: var(--ha-900-contrast); svg { color: var(--ha-900-contrast); } &:not(:disabled):not(.disabled):hover { background-color: var(--ha-A700); color: var(--ha-900-contrast); } } `,";"),_o=k.createStyled(e=>t.jsx(vn,{...e}),process.env.NODE_ENV==="production"?{target:"e1xe7ch91"}:{target:"e1xe7ch91",label:"StyledRipples"})(process.env.NODE_ENV==="production"?{name:"1513zut",styles:"flex-shrink:1;width:100%;height:100%"}:{name:"1513zut",styles:"flex-shrink:1;width:100%;height:100%",toString:gn}),Tr=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1xe7ch90"}:{target:"e1xe7ch90",label:"Trigger"})(process.env.NODE_ENV==="production"?{name:"1rw17cg",styles:"width:100%;height:100%;&:has(.features){display:flex;flex-direction:column;}>.features{padding:0 1rem 1rem;>.fit-content>.button-group-inner>*{width:auto;flex-grow:1;>.button-bar-button{width:auto;flex-grow:1;}}}"}:{name:"1rw17cg",styles:"width:100%;height:100%;&:has(.features){display:flex;flex-direction:column;}>.features{padding:0 1rem 1rem;>.fit-content>.button-group-inner>*{width:auto;flex-grow:1;>.button-bar-button{width:auto;flex-grow:1;}}}",toString:gn}),zr={xxs:12,xs:6,sm:6,md:4,lg:4,xlg:3},Do=function({as:r="div",entity:o,title:n,active:s,service:c,serviceData:l,children:i,disabled:u,longPressCallback:m,onClick:h,modalProps:b,disableRipples:v=!1,disableScale:f=!1,disableActiveState:g=!1,onlyFunctionality:w=!1,id:p,className:C,cssStyles:N,style:x,borderRadius:R="16px",rippleProps:y,disableColumns:j,ref:E,key:T,relatedEntities:P,features:I,featureBarProps:O,graph:A,resizeDetectorProps:M,triggerClass:S,...D}){const z=a.useId(),{useStore:V}=d.useHass(),_=V(re=>re.globalComponentStyles),[$,L]=a.useState(!1),W=o?d.computeDomain(o):null,B=d.useEntity(o??"unknown",{returnNullIfNotFound:!0}),te=a.useRef(null),{width:U=0}=lr.useResizeDetector({refreshMode:"debounce",refreshRate:50,handleHeight:!1,skipOnMount:!1,targetRef:E??te,...M??{}}),Z=d.useEntity(A?.entity??"unknown",{returnNullIfNotFound:!0,historyOptions:{disable:!1,...A?.historyOptions}}),de=a.useMemo(()=>typeof B?.state=="string"?d.isUnavailableState(B.state):!1,[B?.state]),H=R,F=a.useMemo(()=>jo(r,w),[r,w]),q=ln.useLongPress(re=>{typeof m=="function"&&m(B!==null?B:null,re),typeof o=="string"&&!$&&L(!0)},{threshold:300,cancelOnMovement:!0,cancelOutsideElement:!0,filterEvents(re){return!("button"in re&&re.button===2)}}),Q=a.useCallback(re=>{if(!u){if(typeof c=="string"&&B&&!de){const Ee=B.service[c];Ee(l)}typeof h=="function"&&h(B!==null?B:null,re)}},[c,u,B,l,h,de]),ne=a.useMemo(()=>n||B?.attributes?.friendly_name||(W!==null?ie.startCase(ie.lowerCase(W)):null),[n,B,W]),ee=a.useMemo(()=>{const re=Object.entries(zr).reduce((Ee,[Fe,Jt])=>{const oe=D[Fe];return{...Ee,[Fe]:oe??Jt}},zr);return Object.entries(re).map(([Ee,Fe])=>`${Ee}-${Fe}`).join(" ")},[D.xxs,D.xs,D.sm,D.md,D.lg,D.xlg]),ce=a.Children.toArray(P).filter(re=>a.isValidElement(re)),se=a.Children.toArray(I).filter(re=>a.isValidElement(re)),ae=a.Children.map(se,(re,Ee)=>a.isValidElement(re)?a.cloneElement(re,{key:re.key||`${z}${Ee}`,...re.props}):re),me=se.length>0,ke=me&&t.jsx($e,{layoutType:"bubble",className:"features",fullWidth:!0,gap:"0.5rem",...O,children:ae});function Se(re){const Ee=Ar.SVG_WIDTH/Ar.SVG_HEIGHT;return`calc(${re/Ee}px - ${A?.adjustGraphSpaceBy??"0px"});`}const ge=Se(U),Ne=a.useMemo(()=>["card-base",C??"",j?"":ee,f?"disable-scale-effect":"",s?"active":"",de?"unavailable":"",u||de?"disabled":"",me?"has-features":"",Z?"has-graph":""].filter(re=>!!re).join(" "),[s,C,ee,f,j,u,Z,me,de]);return t.jsxs(t.Fragment,{children:[t.jsxs(F,{ref:E??te,id:p??"",className:Ne,css:pe.css("padding-bottom:",Z?ge:"inherit",";",_.cardBase??""," ",N??"",";"+(process.env.NODE_ENV==="production"?"":";label:CardBase;")),style:{...x??{},borderRadius:H},disableActiveState:g,disabled:de||u,...q(),...D,children:[Z&&t.jsx("div",{className:"graph-element history",children:Z.history.loading?t.jsx(qe.Alert,{className:"loading",description:d.localize("loading")}):Z.history.coordinates.length>0?t.jsx(lo.SvgGraph,{coordinates:Z.history.coordinates,...A?.props}):t.jsx(qe.Alert,{className:"no-state-history",description:d.localize("no_state_history_found")})}),v?t.jsxs(Tr,{className:`contents trigger-element ${S}`,onClick:Q,children:[i,ke]}):pe.createElement(_o,{...y,key:y?.key,borderRadius:H,disabled:u||de},t.jsxs(Tr,{className:`contents trigger-element ${S}`,onClick:Q,children:[i,ke]})),a.Children.map(ce,(re,Ee)=>a.isValidElement(re)?a.cloneElement(re,{key:re.key||`${z}${Ee}`,...re.props}):re)]},T),typeof o=="string"&&t.jsx(yr,{...b,entity:o,title:b?.title??ne??d.localize("unknown"),onClose:()=>{L(!1),b?.onClose&&b.onClose()},open:b?.open||$,id:z})]})},ve=a.memo(function(r){return t.jsx(J.ErrorBoundary,{...K({prefix:"CardBase"}),children:t.jsx(Do,{...r})})}),Oo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1q4f2q20"}:{target:"e1q4f2q20",label:"RelatedEntityEl"})("position:absolute;margin:",e=>e.margin||"1rem",";padding:",e=>e.padding||"0",";cursor:",e=>e.onClick?"pointer":"default",";",e=>{switch(e.position){case"left top":return"top: 0; left: 0;";case"left center":return"top: 50%; left: 0; transform: translateY(-50%);";case"left bottom":return"bottom: 0; left: 0;";case"center top":return"top: 0; left: 50%; transform: translateX(-50%);";case"center center":return"top: 50%; left: 50%; transform: translate(-50%, -50%);";case"center bottom":return"bottom: 0; left: 50%; transform: translateX(-50%);";case"right top":return"top: 0; right: 0;";case"right center":return"top: 50%; right: 0; transform: translateY(-50%);";case"right bottom":return"bottom: 0; right: 0;";default:return"top: 0; right: 0;"}},";");function Ro({entity:e,icon:r,iconProps:o,render:n,position:s,onClick:c,disabled:l,service:i,serviceData:u,...m}){const h=d.useEntity(e),b=d.useIcon(r??null,o),v=d.computeDomain(e),f=d.useIconByDomain(v===null?"unknown":v,o),g=d.useIconByEntity(e||"unknown",o),w=b??g??f,p=a.useMemo(()=>typeof h?.state=="string"?d.isUnavailableState(h.state):!1,[h?.state]),C=a.useCallback(N=>{if(!l){if(typeof i=="string"&&h&&!p){const x=h.service[i];x(u)}typeof c=="function"&&c(h!==null?h:null,N)}},[i,l,h,u,c,p]);return t.jsx(Oo,{position:s,onClick:C,...m,children:n?n(h,w):t.jsx(t.Fragment,{children:w})})}const Io=a.memo(function(r){return t.jsx(J.ErrorBoundary,{...K({prefix:"RelatedEntity"}),children:t.jsx(Ro,{...r})})});function Ao({children:e,active:r,...o}){return t.jsx(Ce,{as:"div",rippleProps:{preventPropagation:!0},active:r,cssStyles:` &.button-bar-button { .contents { > div { padding: 0.6rem; } } } `,...o,children:e})}const He=function(r){return t.jsx(J.ErrorBoundary,{...K({prefix:"FeatureEntity"}),children:t.jsx(Ao,{...r})})},To=k.createStyled("span",process.env.NODE_ENV==="production"?{target:"e9g8avo0"}:{target:"e9g8avo0",label:"TooltipSpan"})("position:fixed;top:0;left:0;background-color:var(--ha-S300);color:var(--ha-S100-contrast);padding:8px;border-radius:4px;box-shadow:0px 2px 4px var(--ha-S100);font-size:0.9rem;z-index:1000;visibility:hidden;opacity:0;transition:var(--ha-transition-duration) var(--ha-easing);transition-property:opacity,visibility;pointer-events:none;transform:",e=>{switch(e.placement){default:case"top":return"translateY(calc(-100% - 10px)) translateX(-50%)";case"right":return"translateX(10px) translateY(-50%)";case"bottom":return"translateY(10px) translateX(-50%)";case"left":return"translateX(calc(-100% - 10px)) translateY(-50%)"}},';&::before{content:"";position:absolute;width:0;height:0;border-style:solid;display:block;',e=>{switch(e.placement){default:case"top":return` border-width: 6px 6px 0 6px; border-color: var(--ha-S300) transparent transparent transparent; top: 100%; left: 50%; transform: translateX(-50%); `;case"right":return` border-width: 6px 6px 6px 0; border-color: transparent var(--ha-S300) transparent transparent; left: 0; top: 50%; transform: translate(-100%, -50%); `;case"bottom":return` border-width: 0 6px 6px 6px; border-color: transparent transparent var(--ha-S300) transparent; bottom: 100%; left: 50%; transform: translateX(-50%); `;case"left":return` border-width: 6px 0 6px 6px; border-color: transparent transparent transparent var(--ha-S300); right: 0; top: 50%; transform: translate(100%, -50%); `}},";}");function zo({placement:e="top",title:r=null,children:o,ref:n,...s}){const c=a.useRef(null),l=a.useRef(null),{useStore:i}=d.useHass(),u=i(p=>p.portalRoot),h=i(p=>p.windowContext)??window,[b,v]=a.useState(!1),f=a.useCallback(p=>{const C=l.current?.getBoundingClientRect();if(typeof C>"u")return;let N=0,x=0;switch(e){case"top":N=C.top,x=C.left+C.width/2;break;case"right":N=C.top+C.height/2,x=C.right;break;case"bottom":N=C.bottom,x=C.left+C.width/2;break;case"left":N=C.top+C.height/2,x=C.left;break}p.style.top=`${N}px`,p.style.left=`${x}px`,setTimeout(()=>{p.style.opacity="1",p.style.visibility="visible"},0)},[e]),g=a.useCallback(()=>{v(!0)},[]),w=a.useCallback(()=>{const p=c.current;p&&(p.style.opacity="0",p.style.visibility="hidden",p.setAttribute("aria-hidden","true"),setTimeout(()=>{v(!1)},250))},[]);return r===null||r===""?o:t.jsxs("div",{ref:l,onBlur:w,onTouchEnd:w,onTouchStart:g,onMouseUp:w,onMouseEnter:g,onMouseLeave:w,...s,children:[a.Children.map(o,(p,C)=>a.isValidElement(p)?a.cloneElement(p,{...p.props,onClick(N,x){p.props.onClick?.(N,x),s?.onClick?.(x)},ref:n,key:p.key??C}):p),typeof document<"u"&&xt.createPortal(b&&t.jsx(To,{className:"tooltip-inner",placement:e,ref:p=>{p&&(c.current=p,f(p))},"aria-hidden":"false",children:r}),u??h.document.body)]})}function be(e){return t.jsx(J.ErrorBoundary,{...K({prefix:"Tooltip"}),children:t.jsx(zo,{...e})})}const K=({prefix:e})=>({fallbackRender({error:r,resetErrorBoundary:o}){return t.jsx(qe.Alert,{className:"error-boundary-alert",title:`${e?`${e} - `:""}${d.localize("unknown_error")}`,description:r.message,type:"error",onClick:()=>o()})}});function dt(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const Mo=k.createStyled(ve,process.env.NODE_ENV==="production"?{target:"e1cw8oq38"}:{target:"e1cw8oq38",label:"StyledButtonCard"})(process.env.NODE_ENV==="production"?{name:"1uus07k",styles:"&.slim{justify-content:center;.fab-card-inner{width:3rem;height:3rem;}.button-card-trigger{align-items:center;>.contents{width:100%;}}}.button-card-trigger>.features{width:100%;}.button-card-trigger>.features>.fit-content{flex-basis:100%;}.children{width:100%;}&.slim-vertical{justify-content:center;.fab-card-inner{width:3rem;height:3rem;}.button-card-trigger{align-items:center;}}.footer>.title{text-align:left;}&:not(.disabled),&:not(:disabled){&:not(:focus):hover{.fab-card-inner:not(.custom){background-color:var(--ha-S500);color:var(--ha-S500-contrast);}}}"}:{name:"1uus07k",styles:"&.slim{justify-content:center;.fab-card-inner{width:3rem;height:3rem;}.button-card-trigger{align-items:center;>.contents{width:100%;}}}.button-card-trigger>.features{width:100%;}.button-card-trigger>.features>.fit-content{flex-basis:100%;}.children{width:100%;}&.slim-vertical{justify-content:center;.fab-card-inner{width:3rem;height:3rem;}.button-card-trigger{align-items:center;}}.footer>.title{text-align:left;}&:not(.disabled),&:not(:disabled){&:not(:focus):hover{.fab-card-inner:not(.custom){background-color:var(--ha-S500);color:var(--ha-S500-contrast);}}}",toString:dt}),Vo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq37"}:{target:"e1cw8oq37",label:"Contents"})(process.env.NODE_ENV==="production"?{name:"104hu76",styles:"padding:1rem;display:flex;flex-direction:column;align-items:center;justify-content:stretch;height:100%"}:{name:"104hu76",styles:"padding:1rem;display:flex;flex-direction:column;align-items:center;justify-content:stretch;height:100%",toString:dt}),Po=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq36"}:{target:"e1cw8oq36",label:"ToggleState"})("background-color:var(--ha-100);border-radius:100%;width:16px;height:16px;position:absolute;top:2px;left:0;box-shadow:0px 0px 4px rgba(0, 0, 0, 0.5);transition:var(--ha-transition-duration) var(--ha-easing);transition-property:left,transform;left:",e=>e.active?"100%":"0px",";transform:",e=>e.active?"translate3d(calc(-100% - 2px), 0, 0)":"translate3d(calc(0% + 2px), 0, 0)",";"),$o=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq35"}:{target:"e1cw8oq35",label:"Toggle"})("position:relative;background-color:",e=>e.active?"var(--ha-A400)":"var(--ha-S100)",";border-radius:10px;width:40px;height:20px;flex-grow:0;flex-shrink:0;transition:background-color var(--ha-transition-duration) var(--ha-easing);margin-left:20px;"),Fo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq34"}:{target:"e1cw8oq34",label:"Fab"})("border-radius:100%;padding:6px;width:2rem;height:2rem;display:flex;flex-shrink:0;align-items:center;justify-content:center;box-shadow:0px 1px 4px rgba(0, 0, 0, 0.2);",e=>e.brightness&&` filter: ${e.brightness}; `," transition:var(--ha-transition-duration) var(--ha-easing);transition-property:background-color,color,filter;svg{transition:var(--ha-transition-duration) var(--ha-easing);transition-property:color;}"),Bo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq33"}:{target:"e1cw8oq33",label:"LayoutBetween"})(process.env.NODE_ENV==="production"?{name:"1fkysi1",styles:"display:flex;align-items:center;justify-content:space-between;flex-direction:row;gap:10px;width:100%;&.vertical{flex-direction:column;height:100%;}"}:{name:"1fkysi1",styles:"display:flex;align-items:center;justify-content:space-between;flex-direction:row;gap:10px;width:100%;&.vertical{flex-direction:column;height:100%;}",toString:dt}),Lo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq32"}:{target:"e1cw8oq32",label:"Footer"})(process.env.NODE_ENV==="production"?{name:"1cgwlg6",styles:"display:flex;align-items:flex-start;justify-content:flex-start;flex-direction:column;margin-top:20px;width:100%"}:{name:"1cgwlg6",styles:"display:flex;align-items:flex-start;justify-content:flex-start;flex-direction:column;margin-top:20px;width:100%",toString:dt}),Mr=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq31"}:{target:"e1cw8oq31",label:"Title"})(process.env.NODE_ENV==="production"?{name:"ph2n02",styles:"color:var(--ha-S100-contrast);font-size:0.9rem;font-weight:bold;margin-bottom:0.25rem"}:{name:"ph2n02",styles:"color:var(--ha-S100-contrast);font-size:0.9rem;font-weight:bold;margin-bottom:0.25rem",toString:dt}),jt=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1cw8oq30"}:{target:"e1cw8oq30",label:"Description"})(process.env.NODE_ENV==="production"?{name:"2pojne",styles:"color:var(--ha-S300-contrast);font-size:0.7rem;margin:2px 0;text-align:left;width:100%;&.center{text-align:center;}&.secondary{color:var(--ha-S500-contrast);}&.slim-vertical{text-align:center;}"}:{name:"2pojne",styles:"color:var(--ha-S300-contrast);font-size:0.7rem;margin:2px 0;text-align:left;width:100%;&.center{text-align:center;}&.secondary{color:var(--ha-S500-contrast);}&.slim-vertical{text-align:center;}",toString:dt});function qo({entity:e,service:r,serviceData:o,iconProps:n,icon:s,fabProps:c,active:l,onClick:i,description:u,title:m,layoutType:h,disabled:b=!1,className:v,hideIcon:f=!1,hideState:g=!1,hideLastUpdated:w=!1,children:p,hideDetails:C=!1,cssStyles:N,key:x,hideToggle:R=!1,unitOfMeasurement:y,customRenderState:j,...E}){const{useStore:T}=d.useHass(),P=T(U=>U.globalComponentStyles),I=e?d.computeDomain(e):null,O=d.useEntity(e||"unknown",{returnNullIfNotFound:!0}),A=typeof s<"u"&&typeof s!="string"?s:null,M=d.useIconByDomain(I===null?"unknown":I,{...n??{}}),S=d.useIconByEntity(e||"unknown",{...n??{}}),D=h==="default"||h===void 0,z=h==="slim"||h==="slim-vertical",V=typeof O?.state=="string"?d.isUnavailableState(O.state):!1,_=O?O.state!=="off"&&!V&&!b:l||!1,$=d.useIcon(typeof s=="string"?s:null,{...n??{}}),L=a.useMemo(()=>m===null?null:m||O?.attributes.friendly_name||O?.entity_id||null,[m,O]),W=a.useMemo(()=>u||(I!==null&&e?d.computeDomainTitle(e,O?.attributes?.device_class):null),[u,I,O,e]);function B(){return g?null:j&&O?j(O):typeof l=="boolean"?l?`${d.localize(d.ON)}`:`${d.localize(d.OFF)}`:V?d.localize("unavailable"):O&&O.state===d.ON&&I==="light"?`${O.custom.brightnessValue}%`:O?O.attributes.unit_of_measurement?`${d.localize(O.state)}${y??O.attributes.unit_of_measurement}`:`${d.localize(O.state)}`:null}const te=a.Children.toArray(E?.features).filter(U=>a.isValidElement(U)).length>0;return t.jsx(Mo,{as:"button",service:r,serviceData:o,active:l,entity:e,title:L??void 0,disabled:b||V,onClick:i,className:`${v??""} ${h??"default"} button-card`,triggerClass:"button-card-trigger",cssStyles:` ${P.buttonCard??""} ${N??""} `,...E,children:t.jsxs(Vo,{className:`contents ${te?"has-features":""}`,children:[t.jsxs(Bo,{className:`layout-between ${h==="slim-vertical"?"vertical":""}`,children:[!f&&t.jsx(Fo,{brightness:_&&O?.custom.brightness||"brightness(100%)",...c,className:`fab-card-inner icon ${c?.className} ${c?.style?"custom":""}`,style:{...c?.style,backgroundColor:c?.style?.backgroundColor??(_?I==="light"?O?.custom?.rgbaColor??"var(--ha-A400)":"var(--ha-A400)":"var(--ha-S400)"),color:c?.style?.color??(O?_?O.custom.rgbColor:"var(--ha-S500-contrast)":_?"var(--ha-A400)":"var(--ha-S500-contrast)")},children:A??$??S??M}),D&&!R&&t.jsx($o,{active:_,className:"toggle",children:!V&&t.jsx(Po,{active:_,className:"toggle-state"})}),z&&t.jsxs(X.Column,{fullWidth:!0,alignItems:h==="slim-vertical"?"center":"flex-start",children:[L&&t.jsx(Mr,{className:"title",children:L}),!C&&W&&t.jsxs(jt,{className:`description ${h??""}`,children:[W," ",g?"":` - ${B()}`]}),O&&!w&&t.jsxs(jt,{className:`description secondary ${h==="slim-vertical"?"center":""}`,children:[d.localize("last_updated"),": ",O.custom.relativeTime]})]})]}),D&&t.jsxs(Lo,{className:"footer",children:[L&&t.jsx(Mr,{className:"title",children:L}),!C&&W&&t.jsxs(jt,{className:"description",children:[W,O&&!g?` - ${B()}`:""]}),!C&&O&&!w&&t.jsxs(jt,{className:"description secondary",children:[d.localize("last_updated"),": ",O.custom.relativeTime]})]}),p&&t.jsx("div",{className:"children",children:p})]})},x)}function fr(e){const r={xxs:12,xs:6,sm:4,md:3,lg:2,xlg:2};return t.jsx(J.ErrorBoundary,{...K({prefix:"ButtonCard"}),children:t.jsx(qo,{...r,...e})})}function bn(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const Wo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"eu3ltb74"}:{target:"eu3ltb74",label:"RangeSliderParent"})(),Ho=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"eu3ltb73"}:{target:"eu3ltb73",label:"StyledRange"})(e=>` min-width: 6rem; width: 100%; position: relative; isolation: isolate; ${ue.mq(["xxs","xs","sm"],` min-width: 0; `)} z-index: 1; .range-slider-range { position: relative; -webkit-appearance: none; width: 100%; height: 0.7rem; border-radius: 5px; background: var(--ha-S400); outline: none; padding: 0; margin: 0; z-index: 1; &::-webkit-slider-thumb { appearance: none; width: ${e.handleSize}px; height: ${e.handleSize}px; border-radius: 50%; background: var(--ha-A400); cursor: pointer; transition: background var(--ha-transition-duration) var(--ha-easing); position: relative; z-index: 1; &:hover { background: var(--ha-A200); } } &:active::-webkit-slider-thumb { background: var(--ha-A400); } &::-moz-range-thumb { width: ${e.handleSize}px; height: ${e.handleSize}px; border: 0; border-radius: 50%; background: var(--ha-A400); cursor: pointer; transition: background var(--ha-transition-duration) var(--ha-easing); z-index: 1; &:hover { background: var(--ha-A200); } } &:active::-moz-range-thumb { background: var(--ha-A400); } &:focus { &::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--ha-A100); } } } // Firefox Overrides ::-moz-range-track { background: var(--ha-S400); border: 0; } input::-moz-focus-inner, input::-moz-focus-outer { border: 0; } &:hover, &.active { .tooltip-holder { > div { transform: translate(-50%, -1rem) rotate(-45deg) scale(1); opacity: 1; } } } `,";"),Uo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"eu3ltb72"}:{target:"eu3ltb72",label:"Tooltip"})("opacity:0;position:absolute;bottom:100%;width:",({size:e})=>`${e}rem`,";height:",({size:e})=>`${e}rem`,";border-radius:50% 50% 50% 0;left:0;transform:translate(-50%, 1rem) rotate(-45deg) scale(0);transition:var(--ha-transition-duration) var(--ha-easing);transition-property:transform,opacity;background-color:var(--ha-A400);white-space:nowrap;pointer-events:none;z-index:0;&:after{content:attr(data-title);font-size:0.7rem;display:flex;align-items:center;justify-content:center;color:white;transform:rotate(45deg);position:absolute;inset:0;border-radius:50%;}"),Go=k.createStyled("label",process.env.NODE_ENV==="production"?{target:"eu3ltb71"}:{target:"eu3ltb71",label:"Label"})(process.env.NODE_ENV==="production"?{name:"1cboe98",styles:"display:block;margin-bottom:0.5rem;font-size:0.9rem;color:var(--ha-S50-contrast)"}:{name:"1cboe98",styles:"display:block;margin-bottom:0.5rem;font-size:0.9rem;color:var(--ha-S50-contrast)",toString:bn}),Yo=k.createStyled("span",process.env.NODE_ENV==="production"?{target:"eu3ltb70"}:{target:"eu3ltb70",label:"Description"})(process.env.NODE_ENV==="production"?{name:"imenuv",styles:"display:block;font-size:0.8rem;margin-bottom:0.5rem;color:var(--ha-S500-contrast)"}:{name:"imenuv",styles:"display:block;font-size:0.8rem;margin-bottom:0.5rem;color:var(--ha-S500-contrast)",toString:bn});function Qo({value:e,onChange:r,formatTooltipValue:o,hideTooltip:n,label:s,description:c,className:l,style:i,tooltipSize:u=2,handleSize:m=15,min:h=0,max:b=100,step:v=1,debounceThrottleValue:f=300,debounceType:g="debounce",onChangeComplete:w,cssStyles:p,...C}){const[N,x]=a.useState(e??0),[R,y]=a.useState(!1),j=a.useRef(null),E=a.useRef(null),T=a.useRef(null);a.useEffect(()=>{typeof e=="number"&&x(e)},[e]),a.useEffect(()=>{if(!j.current||n)return;const O=parseFloat(`${h??0}`),A=parseFloat(`${b??100}`),M=parseFloat(`${v??1}`),S=parseFloat(j.current.valueAsNumber.toFixed(M<1?Math.abs(Math.log10(M)):0)),D=(j.current.valueAsNumber-O)/(A-O)*100;if(T.current){T.current.style.left=`${D}%`;const z=typeof o=="function"?o(S):S;T.current.setAttribute("data-title",`${z}`)}},[N,h,b,v,o,n]);const I=(g==="debounce"?Le.useDebouncedCallback:Le.useThrottledCallback)(O=>{typeof w=="function"&&w(O.target.valueAsNumber,O),y(!1)},f,{leading:!0,trailing:!0});return t.jsxs(Wo,{className:`${l??""} ${R?"active":""} range-slider`,style:{position:"relative",...i??{}},css:pe.css(p??"",";"+(process.env.NODE_ENV==="production"?"":";label:InternalRangeSlider;")),children:[s&&t.jsx(Go,{className:"label",children:s}),c&&t.jsx(Yo,{className:"description",children:c}),t.jsxs(Ho,{ref:E,handleSize:m,className:`range-slider-inner ${R?"active":""}`,children:[t.jsx("input",{...C,min:h,max:b,step:v,ref:j,type:"range",className:"range-slider-range",value:N,onInput:O=>{x(O.target.valueAsNumber),R||y(!0)},onChange:O=>{typeof r=="function"&&r(O.target.valueAsNumber,O),I(O)}}),!n&&t.jsx("div",{className:"tooltip-holder",style:{position:"absolute",top:0,left:m/2,right:m/2},children:t.jsx(Uo,{size:u,ref:T})})]})]})}function Ue(e){return t.jsx(J.ErrorBoundary,{...K({prefix:"RangeSlider"}),children:t.jsx(Qo,{...e})})}function Xo(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const Ko={position:"relative",display:"inline-flex",overflow:"hidden"},Jo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"ekpqrw61"}:{target:"ekpqrw61",label:"StyledRipple"})(process.env.NODE_ENV==="production"?{name:"zomlrg",styles:"position:absolute;border-radius:50%;opacity:0;width:35px;height:35px;transform:translate(-50%, -50%);pointer-events:none;flex-shrink:0"}:{name:"zomlrg",styles:"position:absolute;border-radius:50%;opacity:0;width:35px;height:35px;transform:translate(-50%, -50%);pointer-events:none;flex-shrink:0",toString:Xo}),Zo=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"ekpqrw60"}:{target:"ekpqrw60",label:"ParentRipple"})(e=>e.borderRadius&&` border-radius: ${e.borderRadius}; overflow: hidden; display: inline-flex; `,";"),xn=a.memo(({duration:e=600,color:r="rgba(0, 0, 0, .3)",borderRadius:o="none",onClick:n,children:s,disabled:c,preventPropagation:l=!1,style:i,className:u,cssStyles:m,id:h,...b})=>{const v=a.useRef(null),f=a.useRef(null),{useStore:g}=d.useHass(),p=g(N=>N.windowContext)??window;a.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[]);const C=a.useCallback(N=>{if(N.stopPropagation(),c)return;f.current!==null&&clearTimeout(f.current);const{pageX:x,pageY:R,currentTarget:y}=N,j=y.getBoundingClientRect();let E=1;typeof p<"u"&&(E=p.scrollX);let T=1;typeof p<"u"&&(T=p.scrollY);const P=x-(j.left+E),I=R-(j.top+T),O=Math.max(j.width,j.height);if(v.current){const A={left:isNaN(P)?"0px":`${P}px`,top:isNaN(I)?"0px":`${I}px`,opacity:1,transform:"translate(-50%, -50%)",transition:"initial",backgroundColor:r};Object.assign(v.current.style,A)}f.current=setTimeout(()=>{if(v.current){const A={opacity:0,transform:`scale(${O/9})`,transition:`all ${e}ms`};Object.assign(v.current.style,A)}f.current=null},50),typeof n=="function"&&n(N)},[r,e,c,n,p]);return t.jsx(Zo,{borderRadius:o,id:h??"",className:`ripple-parent ${u??""}`,css:pe.css(m??"",";"),style:{...i??{}},children:t.jsxs("div",{className:"ripple-inner",onPointerDownCapture:N=>{l&&N.stopPropagation()},...b,style:{width:"100%",...Ko,borderRadius:o},onClick:C,children:[s,t.jsx(Jo,{ref:v})]})})});xn.displayName="_Ripples";function vn(e){return t.jsx(J.ErrorBoundary,{...K({prefix:"Ripples"}),children:t.jsx(xn,{...e})})}function $t(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const es=k.createStyled(ve,process.env.NODE_ENV==="production"?{target:"e17tod368"}:{target:"e17tod368",label:"StyledTriggerCard"})(),ts=k.createStyled("span",process.env.NODE_ENV==="production"?{target:"e17tod367"}:{target:"e17tod367",label:"ToggleMessage"})("font-size:0.6rem;display:flex;align-items:center;justify-content:flex-end;height:100%;padding:0 0.4rem 0 0.8rem;transition:var(--ha-transition-duration) var(--ha-easing);transition-property:justify-content,color;justify-content:",e=>e.active?"flex-start":"flex-end",";color:",e=>e.active?"var(--ha-300-contrast)":"var(--ha-300)",";",e=>e.hideArrow&&"padding-right: 0.8rem;",";"),rs=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod366"}:{target:"e17tod366",label:"ToggleState"})("background-color:var(--ha-S200);border-radius:100%;width:1.9rem;height:1.9rem;position:absolute;top:5px;left:0px;display:flex;align-items:center;justify-content:center;transition:var(--ha-transition-duration) var(--ha-easing);transition-property:left,transform;left:",e=>e.active?"100%":"0px",";transform:",e=>e.active?"translate3d(calc(-100% - 5px), 0, 0)":"translate3d(calc(0% + 5px), 0, 0)",";svg{color:",e=>e.active?"var(--ha-A400)":"var(--ha-200)",";font-size:40px;}"),ns=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod365"}:{target:"e17tod365",label:"Gap"})(process.env.NODE_ENV==="production"?{name:"rhxkjj",styles:"height:20px"}:{name:"rhxkjj",styles:"height:20px",toString:$t}),os=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod364"}:{target:"e17tod364",label:"Toggle"})("position:relative;background-color:",e=>e.active?"var(--ha-300)":"var(--ha-S200)",";border-radius:3rem;width:10rem;height:2.5rem;flex-grow:0;flex-shrink:0;transition:background-color var(--ha-transition-duration) var(--ha-easing);margin-left:1.5rem;overflow:hidden;"),ss=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod363"}:{target:"e17tod363",label:"Contents"})(process.env.NODE_ENV==="production"?{name:"dpr5ta",styles:"padding:1rem;height:100%;display:flex;flex-direction:column;justify-content:center"}:{name:"dpr5ta",styles:"padding:1rem;height:100%;display:flex;flex-direction:column;justify-content:center",toString:$t}),Vr=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod362"}:{target:"e17tod362",label:"LayoutBetween"})(process.env.NODE_ENV==="production"?{name:"fycgd8",styles:"display:flex;align-items:center;justify-content:space-between;flex-direction:row"}:{name:"fycgd8",styles:"display:flex;align-items:center;justify-content:space-between;flex-direction:row",toString:$t}),as=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod361"}:{target:"e17tod361",label:"Description"})(process.env.NODE_ENV==="production"?{name:"bme980",styles:"color:var(--ha-S500-contrast);font-size:0.7rem;text-align:left"}:{name:"bme980",styles:"color:var(--ha-S500-contrast);font-size:0.7rem;text-align:left",toString:$t}),is=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e17tod360"}:{target:"e17tod360",label:"Title"})("color:var(--ha-S300-contrast);font-size:0.9rem;font-weight:bold;",e=>e.disabled&&"color: var(--ha-S50-contrast);"," text-align:left;span{display:block;width:100%;color:var(--ha-S50-contrast);margin-top:0.3rem;line-height:1rem;font-size:0.7rem;}");function cs({entity:e,title:r,description:o,onClick:n,disabled:s,icon:c,iconProps:l,sliderIconProps:i,sliderIcon:u,sliderTextActive:m,sliderTextInactive:h,activeStateDuration:b=5e3,hideArrow:v=!1,className:f,service:g,serviceData:w,key:p,cssStyles:C,...N}){const{useStore:x}=d.useHass(),R=x($=>$.globalComponentStyles),y=d.computeDomain(e),j=d.useEntity(e),E=d.useIconByEntity(e,l),T=d.useIconByDomain(y,l),P=a.useRef(null),[I,O]=a.useState(!1),A=d.useIcon(c??null,l),M=d.useIcon(u??null,i),S=d.useIcon("mdi:power",l),D=d.useIcon("mingcute:arrows-right-line",{...l,style:{fontSize:"16px",...l?.style}}),z=d.isUnavailableState(j.state),V=s||z,_=a.useCallback($=>{O(!0),typeof n=="function"&&!z&&n(j,$),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{O(!1)},b)},[j,n,b,z]);return t.jsx(es,{as:"button",className:`${f??""} trigger-card`,disabled:V,entity:e,service:g,serviceData:w,onClick:_,cssStyles:` ${R?.triggerCard??""} ${C??""} `,...N,children:t.jsxs(ss,{children:[t.jsxs(Vr,{className:"layout-between",children:[t.jsxs(is,{disabled:V,className:"description",children:[r||j.attributes.friendly_name||e,o&&t.jsx("span",{children:o})]}),A??E??T]}),t.jsx(ns,{className:"gap"}),t.jsxs(Vr,{className:"layout-between",children:[t.jsxs(as,{className:"title",children:[j.custom.relativeTime,V?` - ${j.state}`:""]}),t.jsx(os,{active:V?!1:I,className:"toggle",children:V?null:t.jsxs(t.Fragment,{children:[t.jsx(rs,{active:I,className:"toggle-state",children:M??S}),t.jsxs(ts,{hideArrow:v,active:I,className:"toggle-message",children:[I?m??d.localize("triggered_name",{search:" {name}",replace:""}):h??`${d.localize("run")} ${d.computeDomainTitle(e,j?.attributes?.device_class)}`," ",!I&&!v&&D]})]})})]})]})},p)}function ls(e){const r={xxs:12,xs:6,sm:6,md:4,lg:4,xlg:3};return t.jsx(J.ErrorBoundary,{...K({prefix:"TriggerCard"}),children:t.jsx(cs,{...r,...e})})}function yn(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const ds=k.createStyled(ve,process.env.NODE_ENV==="production"?{target:"e16eobz13"}:{target:"e16eobz13",label:"StyledGroup"})("background-color:var(--ha-S200);color:var(--ha-S200-contrast);padding:",({collapsed:e})=>e?"0 2rem":"0 2rem 2rem",";transition:var(--ha-transition-duration) var(--ha-easing);transition-property:height,padding,background-color;&.expanded{height:calc-size(auto);}width:100%;>div.contents>.header-title{cursor:pointer;padding:",({collapsed:e})=>e?"1.5rem 0":"2rem 0",";>h3{color:var(--ha-S100-contrast);margin:0;display:flex;align-items:center;transition:padding var(--ha-transition-duration) var(--ha-easing);",({collapsible:e,collapsed:r})=>e&&`&:before { content: "${r?"+":"-"}"; display: inline-block; color: var(--ha-A400); width: 1rem; }`,";}}",({collapsed:e})=>` ${ue.mq(["xxs","xs"],` padding: ${e?"1rem 0rem":"1.5rem 1rem 1rem"}; `)} `,";"),us=k.createStyled("span",process.env.NODE_ENV==="production"?{target:"e16eobz12"}:{target:"e16eobz12",label:"Description"})(process.env.NODE_ENV==="production"?{name:"qzd1ts",styles:"color:var(--ha-S300-contrast);font-size:0.9rem;margin:0.5rem 0 0;width:100%;display:block;padding-left:1rem"}:{name:"qzd1ts",styles:"color:var(--ha-S300-contrast);font-size:0.9rem;margin:0.5rem 0 0;width:100%;display:block;padding-left:1rem",toString:yn}),ps=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e16eobz11"}:{target:"e16eobz11",label:"Header"})(process.env.NODE_ENV==="production"?{name:"dslko4",styles:"transition:padding var(--ha-transition-duration) var(--ha-easing)"}:{name:"dslko4",styles:"transition:padding var(--ha-transition-duration) var(--ha-easing)",toString:yn}),fs=k.createStyled("h3",process.env.NODE_ENV==="production"?{target:"e16eobz10"}:{target:"e16eobz10",label:"Title"})();function hs({title:e,description:r,children:o,gap:n="0.5rem",justifyContent:s="center",alignItems:c="center",layout:l="row",collapsed:i=!1,collapsible:u=!0,className:m,onClick:h,...b}){const[v,f]=a.useState(i),g={gap:n,justifyContent:s,alignItems:c};return t.jsxs(ds,{onlyFunctionality:!0,disableScale:!0,disableActiveState:!0,disableRipples:!0,borderRadius:"16px",className:`${m??""} ${v?"collapsed":"expanded"} group`,collapsed:v,collapsible:u,...b,children:[t.jsxs(ps,{onClick:w=>{u&&f(!v),h&&h(w)},className:"header-title",children:[t.jsx(fs,{className:"title",children:e}),r&&t.jsx(us,{children:r})]}),t.jsx(No.AutoHeight,{isOpen:!v||!u,className:"content",onCollapseComplete:()=>f(!0),children:l==="row"?t.jsx(Y.Row,{className:"row",...g,children:o}):t.jsx(X.Column,{className:"column",...g,children:o})})]})}function hr(e){const r={xxs:12,xs:12,sm:12,md:12,lg:12,xlg:12};return t.jsx(J.ErrorBoundary,{...K({prefix:"Group"}),children:t.jsx(hs,{...r,...e})})}function Re(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const ms=k.createStyled(ve,process.env.NODE_ENV==="production"?{target:"e15e1idt11"}:{target:"e15e1idt11",label:"Card"})(),gs=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt10"}:{target:"e15e1idt10",label:"Contents"})(process.env.NODE_ENV==="production"?{name:"a4fcxv",styles:"padding:1rem;gap:1rem;flex-direction:column;display:flex;width:100%;height:100%"}:{name:"a4fcxv",styles:"padding:1rem;gap:1rem;flex-direction:column;display:flex;width:100%;height:100%",toString:Re}),bs=k.createStyled("h4",process.env.NODE_ENV==="production"?{target:"e15e1idt9"}:{target:"e15e1idt9",label:"Title"})(process.env.NODE_ENV==="production"?{name:"jwzzvx",styles:"all:unset;font-family:var(--ha-font-family);font-size:0.8rem;color:var(--ha-S100-contrast);display:flex;align-items:center;justify-content:flex-start"}:{name:"jwzzvx",styles:"all:unset;font-family:var(--ha-font-family);font-size:0.8rem;color:var(--ha-S100-contrast);display:flex;align-items:center;justify-content:flex-start",toString:Re}),xs=k.createStyled("h4",process.env.NODE_ENV==="production"?{target:"e15e1idt8"}:{target:"e15e1idt8",label:"SubTitle"})(process.env.NODE_ENV==="production"?{name:"p73dxp",styles:"all:unset;font-family:var(--ha-font-family);font-size:1rem;color:var(--ha-S500-contrast);margin-top:0.3rem;margin-left:1.1rem"}:{name:"p73dxp",styles:"all:unset;font-family:var(--ha-font-family);font-size:1rem;color:var(--ha-S500-contrast);margin-top:0.3rem;margin-left:1.1rem",toString:Re}),vs=k.createStyled(xe.Icon,process.env.NODE_ENV==="production"?{target:"e15e1idt7"}:{target:"e15e1idt7",label:"StyledIcon"})(process.env.NODE_ENV==="production"?{name:"1d2jak5",styles:"font-size:3rem;color:var(--ha-A100)!important"}:{name:"1d2jak5",styles:"font-size:3rem;color:var(--ha-A100)!important",toString:Re}),ys=k.createStyled(xe.Icon,process.env.NODE_ENV==="production"?{target:"e15e1idt6"}:{target:"e15e1idt6",label:"LocationIcon"})(process.env.NODE_ENV==="production"?{name:"1nqb1ni",styles:"font-size:1rem;color:var(--ha-A400)!important;margin-right:0.2rem"}:{name:"1nqb1ni",styles:"font-size:1rem;color:var(--ha-A400)!important;margin-right:0.2rem",toString:Re});function ws(e,r){const o={timeZone:r,weekday:"short",month:"short",day:"numeric",hour:"numeric",hour12:!0};return new Intl.DateTimeFormat("en-US",o).format(new Date(e))}function Ss(e,r,o){const n=r*o,s=e.slice(0,n),c=[];let l=0;for(let i=0;i<r;i++){const u=Math.min(Math.ceil((s.length-l)/(r-i)),o);c.push(s.slice(l,l+u)),l+=u}return c}const Es=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt5"}:{target:"e15e1idt5",label:"Forecast"})(process.env.NODE_ENV==="production"?{name:"lywmg8",styles:"display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:0.5rem;height:100%"}:{name:"lywmg8",styles:"display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:0.5rem;height:100%",toString:Re}),Ns=k.createStyled(xe.Icon,process.env.NODE_ENV==="production"?{target:"e15e1idt4"}:{target:"e15e1idt4",label:"ForecastIcon"})(process.env.NODE_ENV==="production"?{name:"18ku6o8",styles:"font-size:1.5rem;color:var(--ha-A100)!important"}:{name:"18ku6o8",styles:"font-size:1.5rem;color:var(--ha-A100)!important",toString:Re}),Cs=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt3"}:{target:"e15e1idt3",label:"Day"})(process.env.NODE_ENV==="production"?{name:"2pu5xu",styles:"color:var(--ha-S50-contrast)"}:{name:"2pu5xu",styles:"color:var(--ha-S50-contrast)",toString:Re}),ks=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt2"}:{target:"e15e1idt2",label:"Time"})(process.env.NODE_ENV==="production"?{name:"1syrqdo",styles:"color:var(--ha-S200-contrast);font-size:0.8rem"}:{name:"1syrqdo",styles:"color:var(--ha-S200-contrast);font-size:0.8rem",toString:Re}),js=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt1"}:{target:"e15e1idt1",label:"Temperature"})(process.env.NODE_ENV==="production"?{name:"1pdq2t8",styles:"color:var(--ha-S50-contrast);font-size:0.8rem"}:{name:"1pdq2t8",styles:"color:var(--ha-S50-contrast);font-size:0.8rem",toString:Re}),_s=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e15e1idt0"}:{target:"e15e1idt0",label:"TemperatureLow"})(process.env.NODE_ENV==="production"?{name:"1wvg1a4",styles:"color:var(--ha-S500-contrast);font-size:0.75rem"}:{name:"1wvg1a4",styles:"color:var(--ha-S500-contrast);font-size:0.75rem",toString:Re}),Ds=50;function Os({entity:e,title:r,icon:o,iconProps:n,temperatureSuffix:s,includeTitle:c=!0,includeForecast:l=!0,includeCurrent:i=!0,includeTime:u=!0,includeDay:m=!0,details:h=[],apparentTemperatureAttribute:b="apparent_temperature",className:v,service:f,serviceData:g,forecastType:w="daily",forecastRows:p=1,allowForecastToggle:C=!0,cssStyles:N,key:x,...R}){const{useStore:y,getConfig:j}=d.useHass(),[E,T]=a.useState(0),P=y(F=>F.globalComponentStyles),I=Math.floor(E/Ds),[O,A]=a.useState("UTC"),[M,S]=a.useState(w),D=d.useWeather(e,{type:M}),z=d.isUnavailableState(D.state),V=d.getIconByEntity("weather",D),{attributes:{friendly_name:_,temperature:$,temperature_unit:L}}=D,W=L.slice(0,-1);a.useEffect(()=>{async function F(){const q=await j();q&&A(q.time_zone)}F()},[j]);const B=a.useMemo(()=>d.getSupportedForecastTypes(D),[D]);a.useEffect(()=>{S(w)},[w]);const te=a.useMemo(()=>{const{humidity:F,temperature:q,wind_speed:Q,wind_speed_unit:ne,temperature_unit:ee}=D.attributes,ce=uo.getAdditionalWeatherInformation(q,ee,Q,ne,F);return{apparent_temperature:D.attributes[b]??null,...D.attributes,...ce??{}}},[D.attributes,b]),U=te.apparent_temperature??te.feelsLike,Z=U===$?null:U,de=Ss(D.forecast?.forecast??[],p,I),H=()=>t.jsx(t.Fragment,{children:de.map((F,q)=>t.jsx(Y.Row,{className:"row",fullHeight:!0,style:{justifyContent:"space-between"},children:F.map((Q,ne)=>{const ee=ws(Q.datetime,O),[ce,,se]=ee.split(",");return t.jsxs(Es,{className:"forecast",children:[m&&t.jsx(Cs,{className:"day",children:ce}),u&&t.jsx(ks,{className:"time",children:se}),t.jsx(Ns,{className:"icon forecast-icon",icon:d.getIconByEntity("weather",{...D,state:Q.condition}),...n??{}}),t.jsxs(js,{className:"temperature",children:[Q.temperature,s||W]}),Q.templow&&t.jsxs(_s,{className:"temperature-low",children:[Q.templow,s||W]})]},ne)})},`weather-${q}`))});return t.jsx(ms,{title:r,entity:e,service:f,serviceData:g,className:`${v??""} weather-card`,resizeDetectorProps:{refreshRate:50,refreshMode:"throttle",onResize({width:F}){F&&T(F)}},cssStyles:` ${P?.weatherCard??""} ${N??""} `,...R,children:t.jsxs(gs,{children:[i&&!z&&t.jsxs(Y.Row,{className:"row",justifyContent:"space-between",fullWidth:!0,children:[t.jsxs(Y.Row,{wrap:"nowrap",children:[t.jsx(vs,{icon:V,className:"icon"}),t.jsxs(X.Column,{className:"column",children:[c&&t.jsxs(bs,{className:"title",children:[t.jsx(ys,{className:"location-icon icon",icon:o||"mdi:location"}),r||_]}),t.jsxs(xs,{className:"sub-title",children:[$,s||W,", ",ie.capitalize(D.state),Z?`, Feels like: ${Math.round(Z)}${s||W}`:""]})]})]}),l&&C&&t.jsx($e,{children:B.map((F,q)=>{const Q=F==="daily"?"mdi:view-day":F==="twice_daily"?"mdi:hours-12":"mdi:hourglass";return t.jsx(Ce,{onClick:()=>{S(F)},icon:Q,noIcon:!1,title:F,active:M===F,rippleProps:{preventPropagation:!0}},q)})})]}),h&&h.length>0&&t.jsx(Y.Row,{gap:"0.5rem",className:"row",children:a.Children.map(h,(F,q)=>a.isValidElement(F)?a.cloneElement(F,{key:F.key||q}):F)}),l&&!z&&E>0&&H(),z&&D.state]})},x)}function wn(e){const r={xxs:12,xs:6,sm:6,md:4,lg:4,xlg:3};return t.jsx(J.ErrorBoundary,{...K({prefix:"WeatherCard"}),children:t.jsx(Os,{...r,...e})})}function Rs(){return"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."}const Is=k.createStyled(Y.Row,process.env.NODE_ENV==="production"?{target:"e1jqhbrg1"}:{target:"e1jqhbrg1",label:"DetailsRow"})("width:calc(50% - 1rem);",ue.mq(["xxs"],` width: 100%; `),";"),As=k.createStyled("div",process.env.NODE_ENV==="production"?{target:"e1jqhbrg0"}:{target:"e1jqhbrg0",label:"State"})(process.env.NODE_ENV==="production"?{name:"jljpb8",styles:"color:var(--ha-S500-contrast);font-size:0.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"}:{name:"jljpb8",styles:"color:var(--ha-S500-contrast);font-size:0.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis",toString:Rs});function Ts({icon:e,iconProps:r,entity:o,title:n,suffix:s,render:c,...l}){const i=d.useEntity(o),u=n??i.attributes.friendly_name??"";return t.jsx(Is,{className:"details",gap:"0rem",justifyContent:"flex-start",...l,children:t.jsx(be,{title:u??d.localize("unknown"),children:t.jsxs(Y.Row,{className:"row",fullWidth:!0,gap:"0.5rem",justifyContent:"flex-start",children:[t.jsx(xe.Icon,{className:"icon",icon:e??i.attributes.icon??"mdi:info",...r??{}}),t.jsx(As,{className:"state",c