UNPKG

@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) 5.81 kB
"use strict";const _=require("./Provider-Dxd1Q51u.cjs"),u=require("react"),b=require("@iconify/react"),v=require("lodash");require("./cjs/utils/light/index.js");const p=require("./cjs/utils/computeDomain.js");require("./cjs/hooks/useLocale/locales/index.js");require("./index-DKqwfDib.cjs");require("./cjs/HassConnect/HassContext.js");const q=require("./cjs/utils/colors.js"),y=require("./cjs/utils/time/time-ago.js"),S=require("./cjs/hooks/useService/index.js");require("use-debounce");require("home-assistant-js-websocket");const D=require("./cjs/hooks/useIcon/domains/binary_sensor.js"),E=require("./cjs/hooks/useIcon/domains/sensor.js"),N=require("./cjs/hooks/useIcon/domains/number.js"),O=require("./cjs/hooks/useIcon/domains/cover.js"),x=require("./cjs/hooks/useIcon/domains/alarm.js"),C=require("./cjs/hooks/useIcon/domains/weather.js"),d=require("./cjs/hooks/useIcon/domains/constants.js");require("./cjs/hooks/useIcon/domains/battery.js");const M=require("./cjs/hooks/useHistory/index.js"),z=require("./cjs/hooks/useSubscribeEntity/index.js"),F=require("./cjs/hooks/useStore/index.js"),h={returnNullIfNotFound:!1,historyOptions:{hoursToShow:24,significantChangesOnly:!0,minimalResponse:!0,disable:!0}};function A(r,t){const e=new Date,o=new Date(r.attributes.last_triggered??r.last_updated),n=y.timeAgo(o,t),s=Math.abs(e.getTime()-o.getTime()),m=n==="just now",{hexColor:c,rgbColor:a,brightness:l,brightnessValue:i,rgbaColor:g,color:f}=q.getCssColorValue(r),w=I(p.computeDomain(r.entity_id),r);return{...r,attributes:{...r.attributes,icon:r.attributes?.icon||w},custom:{color:f,relativeTime:n,timeDiff:s,active:m,hexColor:c,rgbColor:a,brightness:l,brightnessValue:i,rgbaColor:g}}}function k(r,t=h){const{returnNullIfNotFound:e,historyOptions:o}={...h,...t,historyOptions:{...h.historyOptions,...t.historyOptions}},s=z.useSubscribeEntity(r)(e),m=p.computeDomain(r),c=S.useService(m,r),a=M.useHistory(r,o),l=F.useStore(f=>f.config?.language),i=u.useMemo(()=>s?A(s,l):null,[s,l]);return u.useMemo(()=>i==null?null:{...i,service:c,history:a},[i,c,a])}function B(r,t){const e=u.useMemo(()=>{const o=v.snakeCase(r);return d.FIXED_DOMAIN_ICONS[o]?d.FIXED_DOMAIN_ICONS[o]:"mdi:information-outline"},[r]);return e===null?null:_.jsx(b.Icon,{style:{fontSize:t?.fontSize??"24px"},icon:e,...t})}function T(r,t){return u.useMemo(()=>r===null?null:_.jsx(b.Icon,{style:{fontSize:t?.fontSize??"24px"},icon:r||"octicon:info-24",...t}),[r,t])}function I(r,t){const e=t.state;switch(r){case"alarm_control_panel":return x.alarmPanelIcon(e);case"automation":return e==="unavailable"?"mdi:robot-confused":e==="off"?"mdi:robot-off":"mdi:robot";case"binary_sensor":return D.binarySensorIcon(t);case"button":switch(t.attributes.device_class){case"identify":return"mdi:crosshairs-question";case"restart":return"mdi:restart";case"update":return"mdi:package-up";default:return"mdi:button-pointer"}case"camera":return e==="off"?"mdi:video-off":"mdi:video";case"cover":return O.coverIcon(t);case"device_tracker":return t.attributes.source_type==="router"?e==="home"?"mdi:lan-connect":"mdi:lan-disconnect":["bluetooth","bluetooth_le"].includes(t.attributes.source_type)?e==="home"?"mdi:bluetooth-connect":"mdi:bluetooth":e==="not_home"?"mdi:account-arrow-right":"mdi:account";case"event":switch(t.attributes.device_class){case"doorbell":return"mdi:doorbell";case"button":return"mdi:gesture-tap-button";case"motion":return"mdi:motion-sensor";default:return"mdi:eye-check"}case"fan":return e==="off"?"mdi:fan-off":"mdi:fan";case"humidifier":return e==="off"?"mdi:air-humidifier-off":"mdi:air-humidifier";case"input_boolean":return e==="on"?"mdi:check-circle-outline":"mdi:close-circle-outline";case"input_datetime":if(!t.attributes.has_date)return"mdi:clock";if(!t.attributes.has_time)return"mdi:calendar";break;case"lock":switch(e){case"unlocked":return"mdi:lock-open";case"jammed":return"mdi:lock-alert";case"locking":case"unlocking":return"mdi:lock-clock";default:return"mdi:lock"}case"media_player":switch(t.attributes.device_class){case"speaker":switch(e){case"playing":return"mdi:speaker-play";case"paused":return"mdi:speaker-pause";case"off":return"mdi:speaker-off";default:return"mdi:speaker"}case"tv":switch(e){case"playing":return"mdi:television-play";case"paused":return"mdi:television-pause";case"off":return"mdi:television-off";default:return"mdi:television"}case"receiver":switch(e){case"off":return"mdi:audio-video-off";default:return"mdi:audio-video"}default:switch(e){case"playing":case"paused":return"mdi:cast-connected";case"off":return"mdi:cast-off";default:return"mdi:cast"}}case"number":{const o=N.numberIcon(t);if(o)return o;break}case"person":return e==="not_home"?"mdi:account-arrow-right":"mdi:account";case"switch":switch(t.attributes.device_class){case"outlet":return e==="on"?"mdi:power-plug":"mdi:power-plug-off";case"switch":return e==="on"?"mdi:toggle-switch-variant":"mdi:toggle-switch-variant-off";default:return"mdi:toggle-switch-variant"}case"sensor":{const o=E.sensorIcon(t);if(o)return o;break}case"sun":return t.state==="above_horizon"?"mdi:white-balance-sunny":"mdi:weather-night";case"switch_as_x":return"mdi:swap-horizontal";case"threshold":return"mdi:chart-sankey";case"update":return"mdi:package";case"water_heater":return e==="off"?"mdi:water-boiler-off":"mdi:water-boiler";case"weather":return C.weatherIcon(t.state)}if(r in d.FIXED_DOMAIN_ICONS)return d.FIXED_DOMAIN_ICONS[r]}function j(r,t){const e=k(r||"unknown",{returnNullIfNotFound:!0});return u.useMemo(()=>{if(e===null)return null;const n=e.attributes.icon??I(p.computeDomain(r),e);return n?_.jsx(b.Icon,{style:{fontSize:t?.fontSize??"24px"},icon:n,...t}):null},[e,r,t])}exports.getIconByEntity=I;exports.useEntity=k;exports.useIcon=T;exports.useIconByDomain=B;exports.useIconByEntity=j; //# sourceMappingURL=index-CqE3ydBk.cjs.map