@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) • 2.32 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("./light/index.js");const N=require("./computeDomain.js"),d=require("../../index-DKqwfDib.cjs"),o=require("./number.js"),c=require("./date.js"),f=require("../data/entity.js");require("../HassConnect/HassContext.js");require("react");require("@iconify/react");require("use-debounce");require("home-assistant-js-websocket");require("../hooks/useLocale/locales/index.js");const q=(i,u,m,_,r)=>{const e=_?.[i.entity_id];return D(u,m,e,i.entity_id,i.attributes,r!==void 0?r:i.state)};let a;const v=async i=>a||(a=i.sendMessagePromise({type:"sensor/numeric_device_classes"}),a);let p=[];const D=(i,u,m,_,r,e)=>{if(e===f.UNKNOWN||e===f.UNAVAILABLE)return d.localize(e);const t=N.computeDomain(_);if(v(i).then(n=>p=n?.numeric_device_classes??[]),o.isNumericFromAttributes(r,t==="sensor"?p:[])){const n=r.unit_of_measurement;if(r.device_class==="duration"&&r.unit_of_measurement&&c.UNIT_TO_MILLISECOND_CONVERT[n]&&m?.display_precision===void 0)try{return c.formatDuration(e,n)}catch{}if(r.device_class==="monetary")try{return o.formatNumber(e,{style:"currency",currency:r.unit_of_measurement,minimumFractionDigits:2,...o.getNumberFormatOptions({state:e,attributes:r},m)})}catch{}const s=o.formatNumber(e,o.getNumberFormatOptions({state:e,attributes:r},m)),l=r.unit_of_measurement;return l?`${s}${l}`:s}if(t==="datetime"){const n=new Date(e);return c.formatDateTime(n,u)}if(["date","input_datetime","time"].includes(t))try{const n=e.split(" ");if(n.length===2)return c.formatDateTime(new Date(n.join("T")),u);if(n.length===1){if(e.includes("-"))return c.formatDate(new Date(`${e}T00:00`),u);if(e.includes(":")){const s=new Date;return c.formatTime(new Date(`${s.toISOString().split("T")[0]}T${e}`),u)}}return e}catch{return e}if(t==="counter"||t==="number"||t==="input_number")return o.formatNumber(e,o.getNumberFormatOptions({state:e,attributes:r},m));if(["button","conversation","event","image","input_button","notify","scene","stt","tag","tts","wake_word"].includes(t)||t==="sensor"&&r.device_class==="timestamp")try{return c.formatDateTime(new Date(e),u)}catch{return e}return d.localize(e)};exports.computeStateDisplay=q;exports.computeStateDisplayFromEntityAttributes=D;
//# sourceMappingURL=computeStateDisplay.js.map