node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 1.69 kB
JavaScript
;var f=Object.create;var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var C=(t,s)=>{for(var e in s)u(t,e,{get:s[e],enumerable:!0})},l=(t,s,e,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of h(s))!A.call(t,i)&&i!==e&&u(t,i,{get:()=>s[i],enumerable:!(n=m(s,i))||n.enumerable});return t};var x=(t,s,e)=>(e=t!=null?f(E(t)):{},l(s||!t||!t.__esModule?u(e,"default",{value:t,enumerable:!0}):e,t)),c=t=>l(u({},"__esModule",{value:!0}),t);var b={};C(b,{default:()=>a});module.exports=c(b);var d=require("../../homeAssistant"),p=x(require("../events/Events"));function a(t){return class extends t{setExposeAsConfigNode(e){this.exposeAsConfigNode=e,e&&(this.exposeAsConfigEvents=new p.default({node:this.node,emitter:e}),this.exposeAsConfigEvents.addListener(d.HaEvent.AutomationTriggered,this.#t.bind(this)))}get isEnabled(){return this.exposeAsConfigNode?.state?.isEnabled()??!0}get#e(){return"wires"in this.node&&Array.isArray(this.node.wires)?this.node.wires.length:0}#t(e){if(!this.isEnabled)return;const n=this.#e;if(n===0)return;const i=e.output_path.split(",").map(r=>Number(r)).filter(r=>r<=n);if(i.length===0)return;let o;i.length===1&&i.includes(1)?o=e.message:i.includes(0)?o=new Array(n).fill([e.message]):o=new Array(n).fill(0).map((r,g)=>i.includes(g+1)?e.message:null),this.status.setSuccess("home-assistant.status.triggered"),this.node.send(o)}getExposeAsConfigEvents(){return this.exposeAsConfigEvents}enableExposeAs(e=!0){this.exposeAsConfigNode?.integration.updateStateAndAttributes(e,{}),this.exposeAsConfigNode?.state.setEnabled(e)}}}