@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) • 3.04 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("./light/index.js");const T=require("./computeDomain.js"),c=require("../../index-DKqwfDib.cjs"),g=require("./number.js"),o=require("./date.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 l=new Set(["temperature","current_temperature","target_temperature","target_temp_temp","target_temp_high","target_temp_low","target_temp_step","min_temp","max_temp"]),p={light:{brightness:t=>Math.round(t/255*100).toString()},media_player:{volume_level:t=>Math.round(t*100).toString(),media_duration:t=>o.formatDuration(t.toString(),"s")}},d={climate:{humidity:"%",current_humidity:"%",target_humidity_low:"%",target_humidity_high:"%",target_humidity_step:"%",min_humidity:"%",max_humidity:"%"},cover:{current_position:"%",current_tilt_position:"%"},fan:{percentage:"%"},humidifier:{humidity:"%",current_humidity:"%",min_humidity:"%",max_humidity:"%"},light:{color_temp:"mired",max_mireds:"mired",min_mireds:"mired",color_temp_kelvin:"K",min_color_temp_kelvin:"K",max_color_temp_kelvin:"K",brightness:"%"},sun:{azimuth:"°",elevation:"°"},vacuum:{battery_level:"%"},valve:{current_position:"%"},sensor:{battery_level:"%"},media_player:{volume_level:"%"}},y=(t,n,u)=>{const r=t.unit_system.length||"";switch(u){case"visibility":return n.attributes.visibility_unit||r;case"precipitation":return n.attributes.precipitation_unit||(r==="km"?"mm":"in");case"pressure":return n.attributes.pressure_unit||(r==="km"?"hPa":"inHg");case"temperature":case"templow":return n.attributes.temperature_unit||t.unit_system.temperature;case"wind_speed":return n.attributes.wind_speed_unit||`${r}/h`;case"humidity":case"precipitation_probability":return"%";default:{const a=t.unit_system;return u in a?a[u]:""}}},h=(t,n,u,r,a)=>{const e=a!==void 0?a:t.attributes[r];if(e===null)return c.localize("unknown");if(typeof e=="number"){const i=T.computeDomain(t.entity_id),m=p[i]?.[r],_=m?m(e):g.formatNumber(e);let s=d[i]?.[r];return i==="weather"?s=y(n,t,r):l.has(r)&&(s=n.unit_system.temperature),s?`${_}${s}`:_}if(typeof e=="string"&&o.isDate(e,!0)){if(o.isTimestamp(e)){const m=new Date(e);if(o.checkValidDate(m))return new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hourCycle:"h12"}).format(m)}const i=new Date(e);if(o.checkValidDate(i))return new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"numeric"}).format(i)}return Array.isArray(e)&&e.some(i=>i instanceof Object)||!Array.isArray(e)&&e instanceof Object?JSON.stringify(e):Array.isArray(e)?e.map(i=>h(t,n,u,r,i)).join(", "):c.localize(e)};exports.DOMAIN_ATTRIBUTES_FORMATERS=p;exports.DOMAIN_ATTRIBUTES_UNITS=d;exports.TEMPERATURE_ATTRIBUTES=l;exports.computeAttributeValueDisplay=h;exports.getWeatherUnit=y;
//# sourceMappingURL=computeAttributeDisplay.js.map