@hakit/core
Version:
A collection of React hooks and helpers for Home Assistant to easily communicate with the Home Assistant WebSocket API.
3 lines (2 loc) • 1.67 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),b=require("../useSubscribeEntity/index.js"),S=require("../../../index-iGClY3ec.cjs"),f=require("./history.js"),H=require("./coordinates.js"),C=(i,e)=>{const a=S.useHass(t=>t.connection),o=n.useRef(!1),l=b.useSubscribeEntity(i),[c,h]=n.useState({}),[m,y]=n.useState({loading:!e?.disable,timeline:[],entityHistory:[],coordinates:[]}),s=n.useMemo(()=>({disable:e?.disable,significantChangesOnly:e?.significantChangesOnly,minimalResponse:e?.minimalResponse,hoursToShow:e?.hoursToShow,limits:e?.limits,forceNumeric:e?.forceNumeric,splitDeviceClasses:e?.splitDeviceClasses}),[e?.disable,e?.significantChangesOnly,e?.minimalResponse,e?.hoursToShow,e?.limits,e?.forceNumeric,e?.splitDeviceClasses]);return n.useEffect(()=>{if(!a||s?.disable)return;let t=!0,u=null;return f.subscribeHistory({connection:a,entityIds:[i],significantChangesOnly:s?.significantChangesOnly,minimalResponse:s?.minimalResponse,hoursToShow:s?.hoursToShow,callbackFunction:r=>{t&&(o.current=!0,h(r))}}).then(r=>{u=r}).catch(()=>{u?.(),o.current=!1}),()=>{t=!1,u?.(),o.current=!1}},[i,s,a]),n.useEffect(()=>{if(!s?.disable&&o.current){const t=l(!0);if(!t)return;const r=f.computeHistory(t,c,s.forceNumeric,s?.splitDeviceClasses).timeline.filter(({entity_id:g})=>g===i),d=H.coordinatesMinimalResponseCompressedState(c[i],s?.hoursToShow??24,500,typeof s?.significantChangesOnly>"u"||s?.significantChangesOnly===!0?1:2,s?.limits)??[];y({loading:!1,timeline:r.length>0?r[0].data:[],entityHistory:c[i],coordinates:d})}},[i,s,l,c]),n.useMemo(()=>m,[m])};exports.useHistory=C;
//# sourceMappingURL=index.js.map