/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/node-red-contrib-light-transition@1.9.1/light-transition.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
module.exports=function(t){let i=require("loop"),r=[{unit:"Millisecond",multiplier:1,duration:1},{unit:"Second",multiplier:1e3,get duration(){return r[0].duration*r[1].multiplier}},{unit:"Minute",multiplier:60,get duration(){return r[1].duration*r[2].multiplier}},{unit:"Hour",multiplier:60,get duration(){return r[2].duration*r[3].multiplier}},{unit:"Day",multiplier:24,get duration(){return r[3].duration*r[4].multiplier}}];function n(t,i){return r.find((i=>i.unit===t)).duration*i}function e(i){let r=parseInt(i)/1e3;return r<=90?Math.round(10*r)/10+" "+(r>1?t._("node-red:delay.secs"):t._("node-red:delay.sec")):r/60<=59?Math.round(r/6)/10+" "+(r/60>1?t._("node-red:delay.mins"):t._("node-red:delay.min")):Math.round(r/360)/10+" "+(r/3600>1?t._("node-red:delay.hours"):t._("node-red:delay.hour"))}function s(t){let i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function o(t,i=[0,100],r=[0,255]){const[n,e]=r,[s,o]=i,a=(t-s)/(o-s)*(e-n)+n;return Math.round(a)}t.nodes.registerType("light-transition",(function(r){t.nodes.createNode(this,r);let a=this,l=null,d=null,h=!1,g=null,u=null,p=new RegExp("^(#(?:(?:[A-F0-9]{2}){3,4}|[A-F0-9]{3})|)$","i");this.on("input",(function(f){if(l=i(),this.nodeduration=r.nodeduration||1,this.nodemaxtimeout=r.nodemaxtimeout||1,this.startRGB=r.startRGB||"#ff0000",this.transitionRGB=r.transitionRGB||this.startRGB,this.endRGB=r.endRGB||"#ffffff",this.startMired=parseInt(r.startMired)||200,this.endMired=parseInt(r.endMired)||600,this.transitionTime=parseInt(r.transitionTime)||15,this.transitionTimeUnits=r.transitionTimeUnits||"Minute",this.steps=parseInt(r.steps)||30,this.startBright=parseInt(r.startBright)||0,this.endBright=parseInt(r.endBright)||0,this.brightnessType=r.brightnessType||"Percent",this.transitionType=r.transitionType||"Linear",this.colorTransitionType=r.colorTransitionType||"Weighted",this.transitionTime<=1&&(this.transitionTime=1),null!=f.transition){if(null!=f.transition.startRGB){if(!p.test(f.transition.startRGB))return a.status({fill:"red",shape:"ring",text:"msg.transition.startRGB "+t._("light-transition.errors.formatted")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.startRGB - "+t._("light-transition.errors.formatted"));a.startRGB=f.transition.startRGB}if(null!=f.transition.transitionRGB){if(!p.test(f.transition.transitionRGB))return a.status({fill:"red",shape:"ring",text:"msg.transition.transitionRGB "+t._("light-transition.errors.formatted")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.transitionRGB - "+t._("light-transition.errors.formatted"));a.transitionRGB=f.transition.transitionRGB}if(null!=f.transition.endRGB){if(!p.test(f.transition.endRGB))return a.status({fill:"red",shape:"ring",text:"msg.transition.endRGB "+t._("light-transition.errors.formatted")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.endRGB - "+t._("light-transition.errors.formatted"));a.endRGB=f.transition.endRGB}if(null!=f.transition.startMired){if(!("number"==typeof f.transition.startMired&&f.transition.startMired>0))return a.status({fill:"red",shape:"ring",text:"msg.transition.startMired "+t._("light-transition.errors.posInt")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.startMired - "+t._("light-transition.errors.posInt"));a.startMired=parseInt(f.transition.startMired)}if(null!=f.transition.endMired){if(!("number"==typeof f.transition.endMired&&f.transition.endMired>0))return a.status({fill:"red",shape:"ring",text:"msg.transition.endMired "+t._("light-transition.errors.posInt")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.endMired - "+t._("light-transition.errors.posInt"));a.endMired=parseInt(f.transition.endMired)}if(null!=f.transition.duration){if(!("number"==typeof f.transition.duration&&f.transition.duration>0))return a.status({fill:"red",shape:"ring",text:"msg.transition.duration "+t._("light-transition.errors.posInt")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.duration - "+t._("light-transition.errors.posInt"));a.transitionTime=parseInt(f.transition.duration)}if(null!=f.transition.steps){if(!("number"==typeof f.transition.steps&&f.transition.steps>0))return a.status({fill:"red",shape:"ring",text:"msg.transition.steps "+t._("light-transition.errors.posInt")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.steps - "+t._("light-transition.errors.posInt"));a.steps=parseInt(f.transition.steps)}if(null!=f.transition.startBright){if(!("number"==typeof f.transition.startBright&&f.transition.startBright>=0&&f.transition.startBright<=255))return a.status({fill:"red",shape:"ring",text:"msg.transition.startBright "+t._("light-transition.errors.brightnessVal")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.startBright - "+t._("light-transition.errors.brightnessVal"));a.startBright=parseInt(f.transition.startBright)}if(null!=f.transition.endBright){if(!("number"==typeof f.transition.endBright&&f.transition.endBright>=0&&f.transition.endBright<=255))return a.status({fill:"red",shape:"ring",text:"msg.transition.endBright "+t._("light-transition.errors.brightnessVal")}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.endBright - "+t._("light-transition.errors.brightnessVal"));a.endBright=parseInt(f.transition.endBright)}if(null!=f.transition.units){if("Second"!==f.transition.units&&"Minute"!==f.transition.units&&"Hour"!==f.transition.units)return a.status({fill:"red",shape:"ring",text:t._("light-transition.errors.invalidA")+" msg.transition.units"}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.units, "+t._("light-transition.errors.allowedVals")+" Second, Minute, and Hour");a.transitionTimeUnits=f.transition.units}if(null!=f.transition.brightnessType){if("Percent"!==f.transition.brightnessType&&"Integer"!==f.transition.brightnessType)return a.status({fill:"red",shape:"ring",text:t._("light-transition.errors.invalidA")+" msg.transition.brightnessType"}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.brightnessType, "+t._("light-transition.errors.allowedVals")+" Percent or Integer");a.brightnessType=f.transition.brightnessType}if(null!=f.transition.transitionType){if("Linear"!==f.transition.transitionType&&"Exponential"!==f.transition.transitionType)return a.status({fill:"red",shape:"ring",text:t._("light-transition.errors.invalidA")+" msg.transition.transitionType"}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.transitionType, "+t._("light-transition.errors.allowedVals")+" Linear or Exponential");a.transitionType=f.transition.transitionType}if(null!=f.transition.colorTransitionType){if("Weighted"!==f.transition.colorTransitionType&&"Half"!==f.transition.colorTransitionType&&"None"!==f.transition.colorTransitionType)return a.status({fill:"red",shape:"ring",text:t._("light-transition.errors.invalidA")+" msg.transition.colorTransitionType"}),void a.error(t._("light-transition.errors.invalidA")+": msg.transition.colorTransitionType, "+t._("light-transition.errors.allowedVals")+" Weighted, Half or None");a.colorTransitionType=f.transition.colorTransitionType}}switch(a.nodeduration=n(a.transitionTimeUnits,a.transitionTime/a.steps),a.nodemaxtimeout=n(a.transitionTimeUnits,a.transitionTime+5),l.setTimeout(a.nodemaxtimeout),l.setMaxLoop(a.steps-1),a.startBright<0&&(a.startBright=0),a.endBright<0&&(a.endBright=0),a.brightnessType){case"Percent":a.startBright>100&&(a.startBright=100),a.endBright>100&&(a.endBright=100);break;case"Integer":a.startBright>255&&(a.startBright=255),a.endBright>255&&(a.endBright=255),a.startBright=o(a.startBright,[0,255],[0,100]),a.endBright=o(a.endBright,[0,255],[0,100])}let m=[],B=[],c=[],_=[];if(m.push(s(a.startRGB)),m.push(s(a.transitionRGB)),m.push(s(a.endRGB)),!1===h||!0!==f._timerpass)if(h=!1,clearTimeout(d),d=null,void 0!==f.payload&&"stop"===f.payload.toString().toLowerCase())a.status({fill:"red",shape:"ring",text:"node-red:inject.stopped"}),h=!0,g=t.util.cloneMessage(f),g.payload="stopped",delete g._timerpass,a.send([null,g]),h=!1;else{let i=t.util.cloneMessage(f);delete i._timerpass,i.payload={brightness_pct:a.startBright,brightness:o(a.startBright),rgb_color:m[0],color_temp:a.startMired,color_temp_kelvin:Math.round(1e6/a.startMired)},a.send([i,null]),f._timerpass=!0,l.run((function(i,r,n){a.status({fill:"green",shape:"ring",text:`${t._("light-transition.description.running")} ${n+1}/${a.steps} - ${t._("light-transition.description.every")} ${e(a.nodeduration)}`}),n++,d=setTimeout((function(){if(!1===h)if(n==a.steps-1){let r=t.util.cloneMessage(f);delete r._timerpass,r.payload={brightness_pct:a.endBright,brightness:o(a.endBright),rgb_color:m[2],color_temp:a.endMired,color_temp_kelvin:Math.round(1e6/a.endMired)},u=t.util.cloneMessage(f),u.payload="complete",delete u._timerpass,a.send([r,u]);let n=new Date,e=n.toDateString().split(" "),s=n.toTimeString().split(":"),l=e[1]+" "+e[2]+", "+s[0]+":"+s[1];a.status({fill:"green",shape:"dot",text:`${t._("light-transition.description.completed")} ${l}`}),d=null,i("break")}else if(a.status({}),n*a.nodeduration<=a.nodemaxtimeout){let r=[0,0,0];for(let t=0;t<r.length;t++)switch(a.colorTransitionType){case"Weighted":for(let t=0;t<2;t++)B[t]=[m[t][0]-m[t+1][0],m[t][1]-m[t+1][1],m[t][2]-m[t+1][2]],c[t]=(m[t][0]+m[t+1][0])/2,_[t]=Math.sqrt((2+c[t]/256)*B[t][0]*B[t][0]+4*B[t][1]*B[t][1]+(255-c[t]/256+2)*B[t][2]*B[t][2]);let i=Math.trunc(a.steps*_[0]/(_[0]+_[1])),e=[],o=[];for(let t=0;t<3;t++)e[t]=(m[1][t]-m[0][t])/i,o[t]=(m[2][t]-m[1][t])/(a.steps-i);r[t]=n<i?Math.trunc(m[0][t]+n*e[t]):n===i?m[1][t]:Math.trunc(m[1][t]+(n-i)*o[t]);break;case"Half":let l=Math.floor((a.steps-1)/2);n==l?r=s(a.transitionRGB):r[t]=n<=l?m[0][t]-Math.floor((m[0][t]-m[1][t])/l*n):m[1][t]-Math.floor((m[1][t]-m[2][t])/(a.steps-l-1)*(n-l));break;case"None":r[t]=m[0][t]-Math.floor((m[0][t]-m[2][t])/a.steps*n)}let e=Math.floor((a.endMired-a.startMired)/(a.steps-1)*n+a.startMired),l=0;switch(a.transitionType){case"Exponential":const t=0===a.endBright?1:a.endBright,i=0===a.startBright?1:a.startBright;let r=0;a.startBright<=a.endBright?(r=Math.log(a.endBright/i)/(a.steps-1),l=Math.floor(i*Math.exp(r*n))):(r=Math.log(i/t)/(a.steps-1),l=i-Math.floor(t*Math.exp(r*n))+t);break;case"Linear":l=Math.trunc((a.endBright-a.startBright)/(a.steps-1)*n+a.startBright)}let h=t.util.cloneMessage(f);delete h._timerpass,h.payload={brightness_pct:l,brightness:o(l),rgb_color:r,color_temp:e,color_temp_kelvin:Math.round(1e6/e)},a.send([h,null]),d=null,(n+1)*a.nodeduration>a.nodemaxtimeout?i("break"):i(void 0,n)}else d=null,i("break");else d=null,i("break")}),a.nodeduration)}),0)}})),this.on("close",(function(){h=!1,d&&clearTimeout(d),a.status({})}))}))};
//# sourceMappingURL=/sm/b079a494a965657894f7712a203bad55bb3107cb69cee9478ee354fd47c3b6cf.map