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.67 kB
"use strict";const m=require("./index-iGClY3ec.cjs"),u=require("react"),b=require("@iconify/react"),v=require("lodash"),p=require("./cjs/utils/computeDomain.js");require("./cjs/hooks/useLocale/locales/index.js");require("home-assistant-js-websocket");require("./cjs/utils/date.js");const q=require("./cjs/utils/colors.js"),y=require("./cjs/utils/time/time-ago.js"),D=require("./cjs/hooks/useService/index.js");require("use-debounce");const S=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"),_={returnNullIfNotFound:!1,historyOptions:{hoursToShow:24,significantChangesOnly:!0,minimalResponse:!0,disable:!0}};function F(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()),f=n==="just now",{hexColor:c,rgbColor:a,brightness:l,brightnessValue:i,rgbaColor:g,color:h}=q.getCssColorValue(r),w=I(p.computeDomain(r.entity_id),r);return{...r,attributes:{...r.attributes,icon:r.attributes?.icon||w},custom:{color:h,relativeTime:n,timeDiff:s,active:f,hexColor:c,rgbColor:a,brightness:l,brightnessValue:i,rgbaColor:g}}}function k(r,t=_){const{returnNullIfNotFound:e,historyOptions:o}={..._,...t,historyOptions:{..._.historyOptions,...t.historyOptions}},s=z.useSubscribeEntity(r)(e),f=p.computeDomain(r),c=D.useService(f,r),a=M.useHistory(r,o),l=m.useHass(h=>h.config?.language),i=u.useMemo(()=>s?F(s,l):null,[s,l]);return u.useMemo(()=>i==null?null:{...i,service:c,history:a},[i,c,a])}function A(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:m.jsx(b.Icon,{style:{fontSize:t?.fontSize??"24px"},icon:e,...t})}function B(r,t){return u.useMemo(()=>r===null?null:m.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 S.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 T(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?m.jsx(b.Icon,{style:{fontSize:t?.fontSize??"24px"},icon:n,...t}):null},[e,r,t])}exports.getIconByEntity=I;exports.useEntity=k;exports.useIcon=B;exports.useIconByDomain=A;exports.useIconByEntity=T; //# sourceMappingURL=index-kv21QUm0.cjs.map