UNPKG

iobroker.vis-2

Version:

Next generation graphical user interface for ioBroker.

2 lines 54.7 kB
import{a as Q}from"./_commonjsHelpers-_d1bhYXs.js";var M={},_={},N={};Object.defineProperty(N,"__esModule",{value:!0});N.StateType=N.Types=void 0;var L;(function(i){i.unknown="unknown",i.airCondition="airCondition",i.blind="blind",i.blindButtons="blindButtons",i.button="button",i.buttonSensor="buttonSensor",i.camera="camera",i.chart="chart",i.cie="cie",i.ct="ct",i.dimmer="dimmer",i.door="door",i.fireAlarm="fireAlarm",i.floodAlarm="floodAlarm",i.gate="gate",i.hue="hue",i.humidity="humidity",i.illuminance="illuminance",i.image="image",i.info="info",i.instance="instance",i.light="light",i.location="location",i.locationOne="locationOne",i.lock="lock",i.media="media",i.motion="motion",i.rgb="rgb",i.rgbSingle="rgbSingle",i.rgbwSingle="rgbwSingle",i.slider="slider",i.socket="socket",i.temperature="temperature",i.thermostat="thermostat",i.vacuumCleaner="vacuumCleaner",i.volume="volume",i.volumeGroup="volumeGroup",i.warning="warning",i.weatherCurrent="weatherCurrent",i.weatherForecast="weatherForecast",i.window="window",i.windowTilt="windowTilt"})(L||(N.Types=L={}));var D;(function(i){i.Number="number",i.String="string",i.Boolean="boolean"})(D||(N.StateType=D={}));var T={};Object.defineProperty(T,"__esModule",{value:!0});T.checkEnum=k;T.roleOrEnum=A;T.roleOrEnumLight=Z;T.roleOrEnumBlind=ee;T.roleOrEnumGate=te;T.roleOrEnumWindow=re;T.roleOrEnumDoor=ae;T.getEnums=le;T.getAllStatesInChannel=ie;T.getAllStatesInDevice=ne;T.getObjectsBelowId=j;T.getFunctionEnums=oe;T.getParentId=ue;function k(i,r){let l=!1;return i&&i.forEach(a=>{const n=a.lastIndexOf(".");n!==-1&&(a=a.substring(n+1));for(const o in r)if(Object.prototype.hasOwnProperty.call(r,o)&&r[o].find(u=>u.test(a)))return l=!0,!1}),l}function A(i,r,l,a){return i.common.role&&(l!=null&&l.includes(i.common.role))?!0:k(r,a)}const W={en:[/lights?/i,/lamps?/i,/ceilings?/i],de:[/licht(er)?/i,/lampen?/i,/beleuchtung(en)?/i],ru:[/свет/i,/ламп[аы]/i,/торшеры?/,/подсветк[аи]/i,/лампочк[аи]/i,/светильники?/i]},H=["switch.light","dimmer","value.dimmer","level.dimmer","sensor.light","state.light"];function Z(i,r){return A(i,r,H,W)}const B={en:[/blinds?/i,/windows?/i,/shutters?/i],de:[/rollladen?/i,/fenstern?/i,/beschattung(en)?/i,/jalousien?/i],ru:[/ставни/i,/рольставни/i,/окна|окно/,/жалюзи/i]},G=["blind","level.blind","value.blind","action.stop","button.stop","button.stop.blind","button.open.blind","button.close.blind","level.tilt","value.tilt","button.tilt.open","button.tilt.close","button.tilt.stop"];function ee(i,r){return A(i,r,G,B)}const F={en:[/gates?/i],de:[/^toren$/i,/^tor$/i],ru:[/ворота/i]},x=["gate","value.gate","switch.gate","action.stop","button.stop"];function te(i,r){return A(i,r,x,F)}const Y=["window","state.window","sensor.window","value.window"];function re(i,r){return A(i,r,Y,B)}const V={en:[/doors?/i,/gates?/i,/wickets?/i,/entry|entries/i],de:[/^türe?/i,/^tuere?/i,/^tore?$/i,/einfahrt(en)?/i,/pforten?/i],ru:[/двери|дверь/i,/ворота/i,/калитка|калитки/,/въезды?/i,/входы?/i]},K=["door","state.door","sensor.door"];function ae(i,r){return A(i,r,K,V)}function le(){return{door:{roles:K,words:V},window:{roles:Y,words:B},blind:{roles:G,words:B},gate:{roles:x,words:F},light:{roles:H,words:W}}}function ie(i,r){const l=[],a=new RegExp(`^${r.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+$`);return i.forEach(n=>a.test(n)&&l.push(n)),l}function ne(i,r){const l=[],a=new RegExp(`^${r.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+\\.[^.]+$`);return i.forEach(n=>a.test(n)&&l.push(n)),l}function j(i,r){const l=[];r+=".";let a=0,n=i.length-1,o=-1;for(;a<=n;){const u=Math.floor((a+n)/2);i[u]<r?a=u+1:(o=u,n=u-1)}if(o===-1||o>=i.length)return l;for(let u=o;u<i.length;u++){const d=i[u];if(d===r||d.startsWith(r))l.push(d);else break}return l}function oe(i,r){var l,a,n;const o=[],u=/^enum\.functions\./,d=j(r,"enum");for(const m of d)Object.prototype.hasOwnProperty.call(i,m)&&u.test(m)&&((l=i[m])===null||l===void 0?void 0:l.type)==="enum"&&(!((n=(a=i[m].common)===null||a===void 0?void 0:a.members)===null||n===void 0)&&n.length)&&o.push(m);return o}function ue(i){const r=i.lastIndexOf(".");return r!==-1?i.substring(0,r):i}var P={};Object.defineProperty(P,"__esModule",{value:!0});P.patterns=void 0;const e=N,f=T,t={working:{role:/^indicator\.working$/,indicator:!0,notSingle:!0,name:"WORKING",required:!1,defaultRole:"indicator.working",defaultType:e.StateType.Boolean},unreach:{role:/^indicator(\.maintenance)?\.unreach$/,indicator:!0,type:e.StateType.Boolean,notSingle:!0,name:"UNREACH",required:!1,defaultRole:"indicator.maintenance.unreach"},lowbat:{role:/^indicator(\.maintenance)?\.lowbat$|^indicator(\.maintenance)?\.battery$/,indicator:!0,type:e.StateType.Boolean,notSingle:!0,name:"LOWBAT",required:!1,defaultRole:"indicator.maintenance.lowbat"},maintain:{role:/^indicator\.maintenance$/,indicator:!0,type:e.StateType.Boolean,notSingle:!0,name:"MAINTAIN",required:!1,defaultRole:"indicator.maintenance"},error:{role:/^indicator\.error$/,indicator:!0,notSingle:!0,name:"ERROR",required:!1,defaultRole:"indicator.error",defaultType:e.StateType.String},direction:{role:/^indicator\.direction$/,indicator:!0,type:e.StateType.Boolean,notSingle:!0,name:"DIRECTION",required:!1,defaultRole:"indicator.direction"},direction_enum:{role:/^(indicator|value)\.direction$/,type:e.StateType.Number,notSingle:!0,name:"DIRECTION",required:!1,defaultStates:{0:"None",1:"Up/Open",2:"Down/Close",3:"Unknown"},defaultRole:"value.direction"},reachable:{role:/^indicator\.reachable$/,indicator:!0,type:e.StateType.Boolean,notSingle:!0,name:"CONNECTED",required:!1,defaultRole:"indicator.reachable",inverted:!0},battery:{role:/^value\.battery$/,indicator:!1,type:e.StateType.Number,write:!1,name:"BATTERY",required:!1,defaultRole:"value.battery",defaultUnit:"%"}},R={power:{role:/^value\.power$/,indicator:!1,type:e.StateType.Number,write:!1,name:"ELECTRIC_POWER",required:!1,defaultRole:"value.power",defaultUnit:"W"},current:{role:/^value\.current$/,indicator:!1,type:e.StateType.Number,write:!1,name:"CURRENT",required:!1,defaultRole:"value.current",defaultUnit:"mA"},voltage:{role:/^value\.voltage$/,indicator:!1,type:e.StateType.Number,write:!1,name:"VOLTAGE",required:!1,defaultRole:"value.voltage",defaultUnit:"V"},consumption:{role:/^value\.power\.consumption$/,indicator:!1,type:e.StateType.Number,write:!1,name:"CONSUMPTION",required:!1,defaultRole:"value.power.consumption",defaultUnit:"Wh"},frequency:{role:/^value\.frequency$/,indicator:!1,type:e.StateType.Number,write:!1,name:"FREQUENCY",required:!1,defaultRole:"value.frequency",defaultUnit:"Hz"}};P.patterns={chart:{states:[{objectType:"chart",name:"CHART"}],type:e.Types.chart},mediaPlayer:{states:[{role:/^media.state(\..*)?$/,indicator:!1,type:[e.StateType.Boolean,e.StateType.Number],name:"STATE",required:!0,defaultRole:"media.state"},{role:/^button.play(\..*)?$|^action.play(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"PLAY",required:!1,noSubscribe:!0,defaultRole:"button.play"},{role:/^button.pause(\..*)?$|^action.pause(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"PAUSE",required:!1,noSubscribe:!0,defaultRole:"button.pause"},{role:/^button.stop(\..*)?$|^action.stop(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"STOP",required:!1,noSubscribe:!0,defaultRole:"button.stop"},{role:/^button.next(\..*)?$|^action.next(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"NEXT",required:!1,noSubscribe:!0,defaultRole:"button.next"},{role:/^button.prev(\..*)?$|^action.prev(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"PREV",required:!1,noSubscribe:!0,defaultRole:"button.prev"},{role:/^media.mode.shuffle(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Boolean,name:"SHUFFLE",required:!1,noSubscribe:!0,defaultRole:"media.mode.shuffle"},{role:/^media.mode.repeat(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Number,name:"REPEAT",required:!1,noSubscribe:!0,defaultRole:"media.mode.repeat"},{role:/^media.artist(\..*)?$/,indicator:!1,write:!1,type:e.StateType.String,name:"ARTIST",required:!1,defaultRole:"media.artist"},{role:/^media.album(\..*)?$/,indicator:!1,write:!1,type:e.StateType.String,name:"ALBUM",required:!1,defaultRole:"media.album"},{role:/^media.title(\..*)?$/,indicator:!1,write:!1,type:e.StateType.String,name:"TITLE",required:!1,defaultRole:"media.title"},{role:/^media.cover$|^media.cover.big$/,indicator:!1,write:!1,type:e.StateType.String,name:"COVER",required:!1,notSingle:!0,defaultRole:"media.cover"},{role:/^media.cover(\..*)$/,indicator:!1,write:!1,type:e.StateType.String,name:"COVER",required:!1,notSingle:!0},{role:/^media.duration(\..*)?$/,indicator:!1,write:!1,type:e.StateType.Number,name:"DURATION",required:!1,noSubscribe:!0,defaultRole:"media.duration",defaultUnit:"sec"},{role:/^media.elapsed(\..*)?$/,indicator:!1,type:e.StateType.Number,name:"ELAPSED",required:!1,noSubscribe:!0,defaultRole:"media.elapsed",defaultUnit:"sec"},{role:/^media.seek(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Number,name:"SEEK",required:!1,noSubscribe:!0,defaultRole:"media.seek"},{role:/^media.track(\..*)?$/,indicator:!1,type:e.StateType.String,name:"TRACK",required:!1,noSubscribe:!0,defaultRole:"media.track"},{role:/^media.episode(\..*)?$/,indicator:!1,type:e.StateType.String,name:"EPISODE",required:!1,noSubscribe:!0,defaultRole:"media.episode"},{role:/^media.season(\..*)?$/,indicator:!1,type:e.StateType.String,name:"SEASON",required:!1,noSubscribe:!0,defaultRole:"media.season"},{role:/^level.volume?$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!0,name:"VOLUME",required:!1,notSingle:!0,noSubscribe:!0,defaultRole:"level.volume",defaultUnit:"%"},{role:/^value.volume?$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!1,name:"VOLUME_ACTUAL",required:!1,notSingle:!0,noSubscribe:!0,defaultRole:"value.volume",defaultUnit:"%"},{role:/^media.mute?$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"MUTE",required:!1,notSingle:!0,noSubscribe:!0,defaultRole:"media.mute"},{stateName:/\.paused$|\.playerState$/,indicator:!1,name:"IGNORE",required:!1,multiple:!0,noSubscribe:!0},t.reachable,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.media},weatherForecast:{states:[{role:/^weather.icon$|^weather.icon.forecast.0$/,indicator:!1,type:e.StateType.String,name:"ICON",required:!0,defaultRole:"weather.icon.forecast.0"},{role:/^value.temperature.min.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"TEMP_MIN",required:!0,defaultRole:"value.temperature.min.forecast.0"},{role:/^value.temperature.max.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"TEMP_MAX",required:!0,defaultRole:"value.temperature.max.forecast.0"},{role:/^value.precipitation$|^value.precipitation.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"PRECIPITATION_CHANCE",unit:"%",required:!1,defaultRole:"value.precipitation.forecast.0"},{role:/^value.precipitation$|^value.precipitation.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"PRECIPITATION",unit:"mm",required:!1,defaultRole:"value.precipitation.forecast.0"},{role:/^date$|^date.forecast.0$/,indicator:!1,type:e.StateType.String,name:"DATE",required:!1,defaultRole:"date.forecast.0"},{role:/^dayofweek$|^dayofweek.forecast.0$/,indicator:!1,type:e.StateType.String,name:"DOW",required:!1,defaultRole:"dayofweek.forecast.0"},{role:/^weather.state$|^weather.state.forecast.0$/,indicator:!1,type:e.StateType.String,name:"STATE",required:!1,defaultRole:"weather.state.forecast.0"},{role:/^value.temperature$|^value.temperature.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"TEMP",required:!1,defaultRole:"value.temperature.forecast.0"},{role:/^value.pressure$/,indicator:!1,type:e.StateType.Number,name:"PRESSURE",required:!1,defaultRole:"weather.icon.forecast.0"},{role:/^value.humidity$|value.humidity.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"HUMIDITY",required:!1,defaultRole:"value.humidity.forecast.0"},{role:/^(?:date|time).sunrise(?:.forecast\.0)?$/,indicator:!1,type:e.StateType.String,name:"TIME_SUNRISE",required:!1,defaultRole:"date.sunrise"},{role:/^(?:date|time).sunset(?:.forecast\.0)?$/,indicator:!1,type:e.StateType.String,name:"TIME_SUNSET",required:!1,defaultRole:"date.sunset"},{role:/^value.temperature.windchill$|^value.temperature.windchill.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"WIND_CHILL",required:!1,defaultRole:"value.temperature.windchill.forecast.0"},{role:/^value.temperature.feelslike$|^value.temperature.feelslike.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"FEELS_LIKE",required:!1,defaultRole:"value.temperature.feelslike.forecast.0"},{role:/^value.speed.wind$|^value.speed.wind.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"WIND_SPEED",required:!1,defaultRole:"value.speed.wind.forecast.0"},{role:/^value.direction.wind$|^value.direction.wind.forecast.0$/,indicator:!1,type:e.StateType.Number,name:"WIND_DIRECTION",required:!1,defaultRole:"value.direction.wind.forecast.0"},{role:/^weather.direction.wind$|^weather.direction.wind.forecast.0$/,indicator:!1,type:e.StateType.String,name:"WIND_DIRECTION_STR",required:!1,defaultRole:"weather.direction.wind.forecast.0"},{role:/^weather.icon.wind$|^weather.icon.wind.forecast.0$/,indicator:!1,type:e.StateType.String,name:"WIND_ICON",required:!1,defaultRole:"weather.icon.wind.forecast.0"},{role:/^weather.chart.url$/,indicator:!1,type:e.StateType.String,name:"HISTORY_CHART",required:!1,noSubscribe:!0,defaultRole:"weather.chart.url"},{role:/^weather.chart.url.forecast$/,indicator:!1,type:e.StateType.String,name:"FORECAST_CHART",required:!1,noSubscribe:!0,defaultRole:"weather.chart.url.forecast"},{role:/^location$/,indicator:!1,type:e.StateType.String,name:"LOCATION",required:!1,defaultRole:"location"},{role:/^weather.icon.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"ICON%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0,notSingle:!0},{role:/^value.temperature.min.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"TEMP_MIN%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.temperature.max.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"TEMP_MAX%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^date.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"DATE%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^dayofweek.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"DOW%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^weather.state.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"STATE%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.temperature.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"TEMP%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.humidity.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"HUMIDITY%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.humidity.max.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"HUMIDITY_MAX%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.precipitation.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,unit:"%",name:"PRECIPITATION_CHANCE%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.precipitation.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,unit:"mm",name:"PRECIPITATION%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.speed.wind.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"WIND_SPEED%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^value.direction.wind.forecast.(\d)$/,indicator:!1,type:e.StateType.Number,name:"WIND_DIRECTION%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^weather.direction.wind.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"WIND_DIRECTION_STR%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0},{role:/^weather.icon.wind.forecast.(\d)$/,indicator:!1,type:e.StateType.String,name:"WIND_ICON%d",required:!1,searchInParent:!0,multiple:!0,noSubscribe:!0}],type:e.Types.weatherForecast},rgb:{states:[{role:/^level\.color\.red$/,indicator:!1,type:e.StateType.Number,write:!0,name:"RED",required:!0,defaultRole:"level.color.red"},{role:/^level\.color\.green$/,indicator:!1,type:e.StateType.Number,write:!0,name:"GREEN",required:!0,defaultRole:"level.color.green"},{role:/^level\.color\.blue$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BLUE",required:!0,defaultRole:"level.color.blue"},{role:/^level\.color\.white$/,indicator:!1,type:e.StateType.Number,write:!0,name:"WHITE",required:!1,defaultRole:"level.color.white"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1},{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!1,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^switch(\.light)?$|^state$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.rgb},rgbwSingle:{states:[{role:/^level\.color\.rgbw$/,indicator:!1,type:e.StateType.String,write:!0,name:"RGBW",required:!0,defaultRole:"level.color.rgbw"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1,defaultUnit:"%"},{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!1,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^switch\.light$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^switch$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.rgbwSingle},rgbSingle:{states:[{role:/^level\.color\.rgb$/,indicator:!1,type:e.StateType.String,write:!0,name:"RGB",required:!0,defaultRole:"level.color.rgb"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1,defaultUnit:"%"},{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!1,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^switch\.light$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^switch$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.rgbSingle},cie:{states:[{role:/^level\.color\.cie$/,indicator:!1,type:e.StateType.String,write:!0,name:"CIE",required:!0,defaultRole:"level.color.cie"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1,defaultUnit:"%"},{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!1,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^switch(\.light)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.cie},hue:{states:[{role:/^level\.color\.hue$/,indicator:!1,type:e.StateType.Number,write:!0,name:"HUE",required:!0,defaultRole:"level.color.hue",defaultUnit:"°"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,searchInParent:!0,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1},{role:/^level\.color\.saturation$/,indicator:!1,type:e.StateType.Number,write:!0,name:"SATURATION",required:!1,defaultRole:"level.color.saturation",defaultUnit:"%"},{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!1,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^switch\.light$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^switch$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.hue},ct:{states:[{role:/^level\.color\.temperature$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TEMPERATURE",required:!0,defaultRole:"level.color.temperature",defaultUnit:"°K"},{role:/^level\.dimmer$/,indicator:!1,type:e.StateType.Number,write:!0,name:"DIMMER",required:!1,defaultRole:"level.dimmer",defaultUnit:"%"},{role:/^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,name:"BRIGHTNESS",required:!1},{role:/^switch\.light$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1,defaultRole:"switch.light"},{role:/^switch$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"ON",required:!1},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.ct},warning:{states:[{role:/^value\.warning$/,indicator:!1,name:"LEVEL",required:!0,defaultRole:"value.warning"},{role:/^weather\.title\.short$/,indicator:!1,type:e.StateType.String,name:"TITLE",required:!1,defaultRole:"weather.title.short"},{role:/^weather\.title$/,indicator:!1,type:e.StateType.String,name:"INFO",required:!1,defaultRole:"weather.title"},{role:/^date\.start$/,indicator:!1,type:e.StateType.String,name:"START",required:!1,defaultRole:"date.start"},{role:/^date\.end$/,indicator:!1,type:e.StateType.String,name:"END",required:!1,defaultRole:"date.end"},{role:/^date$/,indicator:!1,type:e.StateType.String,name:"START",required:!1},{role:/^weather\.chart\.url/,indicator:!1,type:e.StateType.String,name:"ICON",required:!1,defaultRole:"weather.chart.url"},{role:/^weather\.state$/,indicator:!1,type:e.StateType.String,name:"DESC",required:!1,noSubscribe:!0,defaultRole:"weather.state"}],type:e.Types.warning},airCondition:{states:[{role:/temperature(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Number,name:"SET",required:!0,defaultRole:"level.temperature",defaultUnit:"°C"},{role:/(level\.mode\.)?airconditioner$/,indicator:!1,write:!0,type:e.StateType.Number,searchInParent:!0,name:"MODE",required:!0,defaultRole:"level.mode.airconditioner",defaultStates:{0:"AUTO",3:"COOL",4:"DRY",5:"ECO",6:"FAN_ONLY",7:"HEAT",8:"OFF"}},{role:/(speed|mode)\.fan$/,indicator:!1,write:!0,type:e.StateType.Number,name:"SPEED",required:!1,defaultRole:"level.mode.fan",defaultStates:{0:"AUTO",1:"HIGH",2:"LOW",3:"MEDIUM",4:"QUIET",5:"TURBO"}},{role:/^switch\.power$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"POWER",required:!1,defaultRole:"switch.power"},{role:/^switch$/,indicator:!1,write:!0,type:e.StateType.Boolean,searchInParent:!0,name:"POWER",required:!1},{role:/temperature(\..*)?$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,name:"ACTUAL",required:!1,defaultRole:"value.temperature",defaultUnit:"°C"},{role:/humidity(\..*)?$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,name:"HUMIDITY",required:!1,defaultRole:"value.humidity",defaultUnit:"%"},{role:/^switch\.boost(\..*)?$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"BOOST",required:!1,defaultRole:"switch.boost"},{role:/swing$/,indicator:!1,write:!0,type:e.StateType.Number,searchInParent:!0,name:"SWING",required:!1,defaultRole:"level.mode.swing",defaultStates:{0:"AUTO",1:"HORIZONTAL",2:"STATIONARY",3:"VERTICAL"}},{role:/swing$/,indicator:!1,write:!0,type:e.StateType.Boolean,searchInParent:!0,name:"SWING",required:!1,defaultRole:"switch.mode.swing"},...Object.values(R),t.unreach,t.maintain,t.error],type:e.Types.airCondition},thermostat:{states:[{role:/temperature(\..*)?$/,indicator:!1,write:!0,type:e.StateType.Number,name:"SET",required:!0,defaultRole:"level.temperature",defaultUnit:"°C"},{role:/temperature(\..*)?$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,name:"ACTUAL",required:!1,defaultRole:"value.temperature",defaultUnit:"°C"},{role:/humidity(\..*)?$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,name:"HUMIDITY",required:!1,defaultRole:"value.humidity",defaultUnit:"%"},{role:/^switch(\.mode)?\.boost(\..*)?$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"BOOST",required:!1,defaultRole:"switch.mode.boost"},{role:/^switch(\.power)?$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"POWER",required:!1,defaultRole:"switch.power"},{role:/^switch(\.mode)?\.party$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"PARTY",required:!1,defaultRole:"switch.mode.party"},{role:/^level(\.mode)?\.thermostat$/,indicator:!1,write:!0,type:e.StateType.Number,searchInParent:!0,name:"MODE",required:!1,defaultRole:"level.mode.thermostat",defaultStates:{0:"AUTO",1:"MANUAL"}},t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.thermostat},vacuumCleaner:{states:[{role:/^switch\.power$/,indicator:!1,write:!0,type:[e.StateType.Boolean,e.StateType.Number],searchInParent:!0,name:"POWER",required:!0,defaultRole:"switch.power"},{role:/mode\.cleanup$/,indicator:!1,write:!0,type:e.StateType.Number,searchInParent:!0,name:"MODE",required:!0,defaultRole:"level.mode.cleanup",defaultStates:{0:"AUTO",1:"NORMAL",2:"QUIET",3:"ECO",4:"EXPRESS"}},{role:/vacuum\.map\.base64$/,indicator:!1,write:!1,type:e.StateType.String,searchInParent:!0,name:"MAP_BASE64",required:!1,defaultRole:"vacuum.map.base64"},{role:/vacuum\.map\.url$/,indicator:!1,write:!1,type:e.StateType.String,searchInParent:!0,name:"MAP_URL",required:!1},{role:/mode\.work$/,indicator:!1,write:!0,type:e.StateType.Number,searchInParent:!0,name:"WORK_MODE",required:!1,defaultRole:"level.mode.work",defaultStates:{0:"AUTO",1:"FAST",2:"MEDIUM",3:"SLOW",4:"TURBO"}},{role:/^value\.water$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,unit:"%",name:"WATER",required:!1,defaultRole:"value.water",defaultUnit:"%"},{role:/^value\.waste$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,unit:"%",name:"WASTE",required:!1,defaultRole:"value.waste",defaultUnit:"%"},{role:/^value\.battery$/,indicator:!1,write:!1,type:e.StateType.Number,searchInParent:!0,unit:"%",name:"BATTERY",required:!1,defaultRole:"value.battery",defaultUnit:"%"},{role:/^value\.state$/,indicator:!1,write:!1,type:[e.StateType.Number,e.StateType.String],searchInParent:!0,name:"STATE",required:!1,defaultRole:"value.state"},{role:/^switch\.pause$/,indicator:!1,write:!0,type:e.StateType.Boolean,searchInParent:!0,name:"PAUSE",required:!1,defaultRole:"switch.pause"},{role:/^indicator(\.maintenance)?\.waste$|^indicator(\.alarm)?\.waste/,indicator:!0,type:e.StateType.Boolean,searchInParent:!0,name:"WASTE_ALARM",required:!1,defaultRole:"indicator.maintenance.waste"},{role:/^indicator(\.maintenance)?\.water$|^indicator(\.alarm)?\.water/,indicator:!0,type:e.StateType.Boolean,searchInParent:!0,name:"WATER_ALARM",required:!1,defaultRole:"indicator.maintenance.water"},{role:/^value(\.usage)?\.filter/,indicator:!0,type:e.StateType.Number,searchInParent:!0,name:"FILTER",required:!1,defaultRole:"value.usage.filter",defaultUnit:"%"},{role:/^value(\.usage)?\.brush/,indicator:!0,type:e.StateType.Number,searchInParent:!0,name:"BRUSH",required:!1,defaultRole:"value.usage.brush",defaultUnit:"%"},{role:/^value(\.usage)?\.sensors/,indicator:!0,type:e.StateType.Number,searchInParent:!0,name:"SENSORS",required:!1,defaultRole:"value.usage.sensors",defaultUnit:"%"},{role:/^value(\.usage)?\.brush\.side/,indicator:!0,type:e.StateType.Number,searchInParent:!0,name:"SIDE_BRUSH",required:!1,defaultRole:"value.usage.brush.side",defaultUnit:"%"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.vacuumCleaner},blinds:{states:[{role:/^level(\.blind)?$/,indicator:!1,type:e.StateType.Number,write:!0,enums:f.roleOrEnumBlind,name:"SET",required:!0,defaultRole:"level.blind",defaultUnit:"%"},{role:/^value(\.blind)?$/,indicator:!1,type:e.StateType.Number,enums:f.roleOrEnumBlind,name:"ACTUAL",required:!1,defaultRole:"value.blind",defaultUnit:"%"},{role:/^button\.stop(\.blind)?$|^action\.stop$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"STOP",required:!1,noSubscribe:!0,defaultRole:"button.stop.blind"},{role:/^button\.open(\.blind)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"OPEN",required:!1,noSubscribe:!0,defaultRole:"button.open.blind"},{role:/^button\.close(\.blind)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"CLOSE",required:!1,noSubscribe:!0,defaultRole:"button.close.blind"},{role:/^level(\.open)?\.tilt$/,indicator:!1,type:e.StateType.Number,write:!0,enums:f.roleOrEnumBlind,name:"TILT_SET",required:!1,defaultRole:"level.tilt"},{role:/^value(\.open)?\.tilt$/,indicator:!1,type:e.StateType.Number,enums:f.roleOrEnumBlind,name:"TILT_ACTUAL",required:!1,defaultRole:"value.tilt"},{role:/^button\.stop\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_STOP",required:!1,noSubscribe:!0,defaultRole:"button.stop.tilt"},{role:/^button\.open\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_OPEN",required:!1,noSubscribe:!0,defaultRole:"button.open.tilt"},{role:/^button\.close\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_CLOSE",required:!1,noSubscribe:!0,defaultRole:"button.close.tilt"},t.direction,t.direction_enum,t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.blind},blindButtons:{states:[{role:/^button\.stop(\.blind)?$|^action\.stop$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"STOP",required:!0,noSubscribe:!0,defaultRole:"button.stop.blind"},{role:/^button\.open(\.blind)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"OPEN",required:!0,noSubscribe:!0,defaultRole:"button.open.blind"},{role:/^button\.close(\.blind)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"CLOSE",required:!0,noSubscribe:!0,defaultRole:"button.close.blind"},{role:/^level\.tilt$/,indicator:!1,type:e.StateType.Number,write:!0,enums:f.roleOrEnumBlind,name:"TILT_SET",required:!1,defaultRole:"level.tilt"},{role:/^value\.tilt$/,indicator:!1,type:e.StateType.Number,enums:f.roleOrEnumBlind,name:"TILT_ACTUAL",required:!1,defaultRole:"value.tilt"},{role:/^button\.stop\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_STOP",required:!1,noSubscribe:!0,defaultRole:"button.stop.tilt"},{role:/^button\.open\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_OPEN",required:!1,noSubscribe:!0,defaultRole:"button.open.tilt"},{role:/^button\.close\.tilt$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumBlind,name:"TILT_CLOSE",required:!1,noSubscribe:!0,defaultRole:"button.close.tilt"},t.direction,t.direction_enum,t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.blindButtons},gate:{states:[{role:/^switch(\.gate)?$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumGate,name:"SET",required:!0,defaultRole:"switch.gate"},{role:/^value(\.position)?|^value(\.gate)?$/,indicator:!1,type:e.StateType.Number,enums:f.roleOrEnumGate,name:"ACTUAL",required:!1,defaultRole:"value.blind",defaultUnit:"%"},{role:/^button\.stop$|^action\.stop$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumGate,name:"STOP",required:!1,noSubscribe:!0,defaultRole:"button.stop"},t.direction,t.direction_enum,t.working,t.unreach,t.maintain,t.error],type:e.Types.gate},weatherCurrent:{states:[{role:/^value(\.temperature)?$/,indicator:!1,type:e.StateType.Number,name:"ACTUAL",required:!0,defaultRole:"value.temperature",defaultUnit:"°C"},{role:/^weather\.icon$/,indicator:!1,name:"ICON",required:!0,defaultRole:"weather.icon"},{role:/^value\.precipitation\.chance$/,indicator:!1,type:e.StateType.Number,name:"PRECIPITATION_CHANCE",defaultRole:"value.precipitation.chance",defaultUnit:"%"},{role:/^value\.precipitation\.type$/,indicator:!1,type:e.StateType.Number,name:"PRECIPITATION_TYPE",defaultRole:"value.precipitation.type",defaultStates:{0:"NO",1:"RAIN",2:"SNOW",3:"HAIL"}},{role:/^value\.pressure$/,indicator:!1,type:e.StateType.Number,name:"PRESSURE",defaultRole:"value.pressure",defaultUnit:"mbar"},{role:/^value\.pressure\.tendency$/,indicator:!1,type:e.StateType.String,name:"PRESSURE_TENDENCY",defaultRole:"value.pressure.tendency"},{role:/^value\.temperature\.windchill$/,indicator:!1,type:e.StateType.Number,name:"REAL_FEEL_TEMPERATURE",defaultRole:"value.temperature.windchill",defaultUnit:"°C"},{role:/^value.humidity$/,indicator:!1,type:e.StateType.Number,name:"HUMIDITY",defaultRole:"value.humidity",defaultUnit:"%"},{role:/^value.uv$/,indicator:!1,type:e.StateType.Number,name:"UV",defaultRole:"value.uv"},{role:/^weather\.state$/,indicator:!1,type:e.StateType.String,name:"WEATHER",defaultRole:"weather.state"},{role:/^value\.direction\.wind$/,indicator:!1,type:e.StateType.String,name:"WIND_DIRECTION",defaultRole:"value.direction.wind",defaultUnit:"°"},{role:/^value\.speed\.wind\.gust$/,indicator:!1,type:e.StateType.Number,name:"WIND_GUST",defaultRole:"value.speed.wind.gust",defaultUnit:"km/h"},{role:/^value\.speed\.wind$/,indicator:!1,type:e.StateType.Number,name:"WIND_SPEED",defaultRole:"value.speed.wind$",defaultUnit:"km/h"},t.lowbat,t.unreach,t.maintain,t.error,t.battery],type:e.Types.weatherCurrent},camera:{states:[{role:/^link\.camera(\.\w+)?$/,indicator:!1,type:e.StateType.String,name:"URL",required:!0,defaultRole:"link.camera"},{role:/^switch(\.camera)?\.autofocus$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"AUTOFOCUS",required:!1,defaultRole:"switch.camera.autofocus"},{role:/^switch(\.camera)?\.autowhitebalance$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"AUTOWHITEBALANCE",required:!1,defaultRole:"switch.camera.autowhitebalance"},{role:/^switch(\.camera)?\.brightness$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"BRIGHTNESS",required:!1,defaultRole:"switch.camera.brightness"},{role:/^switch(\.camera)?\.nightmode$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"NIGHTMODE",required:!1,defaultRole:"switch.camera.nightmode"},{role:/^level(\.camera)?\.position$|^level(\.camera)?(\.ptz)$/,indicator:!1,type:e.StateType.Number,write:!0,name:"PTZ",required:!1,defaultRole:"level.camera.position"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.camera,enumRequired:!1},lock:{states:[{role:/^switch\.lock$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"SET",required:!0,defaultRole:"switch.lock"},{role:/^state$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ACTUAL",required:!1,defaultRole:"state"},{indicator:!1,type:e.StateType.Boolean,write:!0,read:!1,name:"OPEN",required:!1,noSubscribe:!0,defaultRole:"button"},{role:/^state(\.door)?$|^sensor(\.door)?/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"DOOR_STATE",required:!1,defaultRole:"sensor.door"},t.direction,t.direction_enum,t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.lock},motion:{states:[{role:/^(state\.)?motion$|^sensor\.motion$/,indicator:!1,type:e.StateType.Boolean,name:"ACTUAL",required:!0,defaultRole:"sensor.motion"},{role:/brightness$/,indicator:!1,type:e.StateType.Number,name:"SECOND",required:!1,defaultRole:"value.brightness",defaultUnit:"lux"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.motion},window:{states:[{role:/^state(\.window)?$|^sensor(\.window)?/,indicator:!1,type:e.StateType.Boolean,enums:f.roleOrEnumWindow,name:"ACTUAL",required:!0,defaultRole:"sensor.window"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.window},windowTilt:{states:[{role:/^state$|^value(\.window)?$/,indicator:!1,type:e.StateType.Number,enums:f.roleOrEnumWindow,name:"ACTUAL",required:!0,defaultRole:"value.window"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.windowTilt},fireAlarm:{states:[{role:/^(state|sensor|indicator)(\.alarm)?\.fire$/,indicator:!1,type:e.StateType.Boolean,name:"ACTUAL",required:!0,defaultRole:"sensor.alarm.fire",defaultChannelRole:"sensor.alarm.fire"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.fireAlarm,enumRequired:!1},floodAlarm:{states:[{role:/^(state|sensor|indicator)(\.alarm)?\.flood$/,indicator:!1,type:e.StateType.Boolean,name:"ACTUAL",required:!0,defaultRole:"sensor.alarm.flood",defaultChannelRole:"sensor.alarm.flood"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.floodAlarm},door:{states:[{role:/^state(\.door)?$|^sensor(\.door)?/,indicator:!1,type:e.StateType.Boolean,write:!1,enums:f.roleOrEnumDoor,name:"ACTUAL",required:!0,defaultRole:"sensor.door"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.door},dimmer:{states:[{role:/^level(\.dimmer)?$|^level\.brightness$/,indicator:!1,type:e.StateType.Number,write:!0,enums:f.roleOrEnumLight,name:"SET",required:!0,defaultRole:"level.dimmer",ignoreRole:/^level\.dimspeed$/,defaultUnit:"%"},{role:/^value(\.dimmer)?$/,indicator:!1,type:e.StateType.Number,write:!1,enums:f.roleOrEnumLight,name:"ACTUAL",required:!1,defaultRole:"value.dimmer",defaultUnit:"%"},{role:/^switch(\.light)?$|^state$/,indicator:!1,type:e.StateType.Boolean,write:!0,enums:f.roleOrEnumLight,name:"ON_SET",required:!1,defaultRole:"switch.light"},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,enums:f.roleOrEnumLight,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},{role:/^time(\.span|\.interval)$/,indicator:!1,type:e.StateType.Number,write:!0,enums:f.roleOrEnumLight,name:"TRANSITION_TIME",required:!1,defaultRole:"time.span",defaultUnit:"ms"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.dimmer},light:{states:[{role:/^switch(\.light)?$|^state$/,enums:f.roleOrEnumLight,indicator:!1,type:e.StateType.Boolean,write:!0,name:"SET",required:!0,defaultRole:"switch.light"},{role:/^(state|switch|sensor)\.light|switch$/,indicator:!1,type:e.StateType.Boolean,write:!1,enums:f.roleOrEnumLight,name:"ON_ACTUAL",required:!1,defaultRole:"sensor.light"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.light},volume:{states:[{role:/^level\.volume$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!0,name:"SET",required:!0,defaultRole:"level.volume",defaultUnit:"%"},{role:/^value\.volume$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!1,name:"ACTUAL",required:!1,defaultRole:"value.volume",defaultUnit:"%"},{role:/^media\.mute$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"MUTE",required:!1,defaultRole:"media.mute"},t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.volume},locationOne:{states:[{role:/^value\.gps$/,indicator:!1,type:e.StateType.String,write:!1,name:"GPS",required:!0,defaultRole:"value.gps"},{role:/^value\.gps\.elevation$/,indicator:!1,type:e.StateType.Number,write:!1,name:"ELEVATION",required:!1,defaultRole:"value.gps.elevation"},{role:/^value\.radius$|value\.gps\.radius$/,indicator:!1,type:e.StateType.Number,write:!1,name:"RADIUS",required:!1,defaultRole:"value.gps.radius"},{role:/^value\.accuracy$|^value\.gps\.accuracy$/,indicator:!1,type:e.StateType.Number,write:!1,name:"ACCURACY",required:!1,defaultRole:"value.gps.accuracy"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.locationOne},location:{states:[{role:/^value\.gps\.longitude$/,indicator:!1,type:e.StateType.Number,write:!1,name:"LONGITUDE",required:!0,defaultRole:"value.gps.longitude",defaultUnit:"°"},{role:/^value\.gps\.latitude$/,indicator:!1,type:e.StateType.Number,write:!1,name:"LATITUDE",required:!0,defaultRole:"value.gps.latitude",defaultUnit:"°"},{role:/^value\.gps\.elevation$/,indicator:!1,type:e.StateType.Number,write:!1,name:"ELEVATION",required:!1,defaultRole:"value.gps.elevation"},{role:/^value\.radius$|value\.gps\.radius$/,indicator:!1,type:e.StateType.Number,write:!1,name:"RADIUS",required:!1,defaultRole:"value.gps.radius"},{role:/^value\.accuracy$|^value\.gps\.accuracy$/,indicator:!1,type:e.StateType.Number,write:!1,name:"ACCURACY",required:!1,defaultRole:"value.gps.accuracy"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.location},volumeGroup:{states:[{role:/^level\.volume\.group?$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!0,name:"SET",required:!0,defaultRole:"level.volume.group",defaultUnit:"%"},{role:/^value\.volume\.group$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!1,name:"ACTUAL",required:!1,defaultRole:"value.volume.group",defaultUnit:"%"},{role:/^media\.mute\.group$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"MUTE",required:!1,defaultRole:"media.mute.group"},t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.volumeGroup},levelSlider:{states:[{role:/^level(\..*)?$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!0,name:"SET",required:!0,defaultRole:"level",defaultUnit:"%"},{role:/^value(\..*)?$/,indicator:!1,type:e.StateType.Number,min:e.StateType.Number,max:e.StateType.Number,write:!1,name:"ACTUAL",required:!1,defaultRole:"value",defaultUnit:"%"},t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.slider},socket:{states:[{role:/^switch$|^state$|^switch\.active$/,indicator:!1,type:e.StateType.Boolean,write:!0,name:"SET",required:!0,defaultRole:"switch"},{role:/^state(\.active)?$/,indicator:!1,type:e.StateType.Boolean,write:!1,name:"ACTUAL",required:!1,defaultRole:"sensor.switch"},...Object.values(R),t.working,t.unreach,t.lowbat,t.maintain,t.error],type:e.Types.socket},button:{states:[{role:/^button(\.[.\w]+)?$|^action(\.[.\w]+)?$/,indicator:!1,type:e.StateType.Boolean,read:!1,write:!0,name:"SET",required:!0,noSubscribe:!0,defaultRole:"button"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.button},buttonSensor:{states:[{role:/^button(\.[.\w]+)?$/,indicator:!1,type:e.StateType.Boolean,read:!0,write:!1,name:"PRESS",required:!0,defaultRole:"button.press"},{role:/^button\.long/,indicator:!1,type:e.StateType.Boolean,read:!0,write:!1,name:"PRESS_LONG",required:!1,defaultRole:"button.long"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.buttonSensor},temperature:{states:[{role:/temperature$/,indicator:!1,write:!1,type:e.StateType.Number,name:"ACTUAL",required:!0,defaultRole:"value.temperature",defaultUnit:"°C"},{role:/humidity$/,indicator:!1,write:!1,type:e.StateType.Number,name:"SECOND",required:!1,defaultRole:"value.humidity",defaultUnit:"%"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.temperature},humidity:{states:[{role:/humidity$/,indicator:!1,write:!1,type:e.StateType.Number,name:"ACTUAL",required:!0,defaultRole:"value.humidity",defaultUnit:"%"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.humidity},illuminance:{states:[{role:/brightness$/,indicator:!1,write:!1,type:e.StateType.Number,name:"ACTUAL",required:!0,defaultRole:"value.brightness",defaultUnit:"lux"},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.illuminance},image:{states:[{role:/\.icon$|^icon$|^icon\.|\.icon\.|\.chart\.url\.|\.chart\.url$|^url.icon$/,indicator:!1,write:!1,type:e.StateType.String,name:"URL",defaultRole:"icon",required:!0},t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.image},info:{states:[{indicator:!1,name:"ACTUAL",required:!0,multiple:!0,noDeviceDetection:!0,ignoreRole:/\.inhibit$/,defaultRole:"state"},t.working,t.unreach,t.lowbat,t.maintain,t.error,t.battery],type:e.Types.info}};Object.defineProperty(_,"__esModule",{value:!0});_.ChannelDetector=void 0;const O=N,g=T,E=P;let J=class ${constructor(){this.enums=null,this.cache={}}_applyPattern(r,l,a,n,o){var u,d;if(!((u=r[l])===null||u===void 0)&&u.common){let m=null;if(a.role&&(m=a.role.test(r[l].common.role||""),m&&a.channelRole)){const s=(0,g.getParentId)(l),b=((d=r[s])===null||d===void 0?void 0:d.common.role)||"";b&&(r[s].type==="channel"||r[s].type==="device")?m=a.channelRole.test(b):m=!1}if(m===!1)return!1;if(a.type){if(typeof a.type=="string"){if(a.type!==r[l].common.type)return!1}else if(Array.isArray(a.type)){let s=!1;for(let b=0;b<a.type.length;b++)if(a.type[b]===r[l].common.type){s=!0;break}if(!s)return!1}}if(a.objectType&&r[l].type!==a.objectType||a.stateName&&!a.stateName.test(l)||a.unit&&a.unit!==r[l].common.unit)return!1;if(a.ignoreRole){const s=r[l].common.role||"";if(s&&a.ignoreRole.test(s))return!1}if(a.indicator===!1&&(r[l].common.role||"").match(/^indicator(\.[.\w]+)?$/))return!1;if(a.state){const s=l.split(".").pop()||"";if(s&&!a.state.test(s))return!1}const h=a.defaultRole&&r[l].common.role===a.defaultRole,v=a.defaultUnit?r[l].common.unit===a.defaultUnit:!1;if(a.min===O.StateType.Number&&typeof r[l].common.min!==O.StateType.Number&&(!v||r[l].common.unit!=="%")||a.max===O.StateType.Number&&typeof r[l].common.max!==O.StateType.Number&&(!v||r[l].common.unit!=="%"))return!1;if(!h){if(a.write!==void 0&&a.write!==!!r[l].common.write||a.read!==void 0&&a.read!==(r[l].common.read===void 0?!0:r[l].common.read))return!1;if(a.enums&&typeof a.enums=="function"){const s=this._getEnumsForId(r,l,o);if(!n&&!a.enums(r[l],s||[]))return!1}}return!0}return!1}_getEnumsForId(r,l,a){var n;this.enums||(this.enums=(0,g.getFunctionEnums)(r,a));const o=[];if(this.enums.forEach(u=>{r[u].common.members.includes(l)&&o.push(u)}),!o.length&&((n=r[l])===null||n===void 0?void 0:n.type)==="state"){const u=(0,g.getParentId)(l);r[u]&&(r[u].type==="channel"||r[u].type==="device")&&this.enums.forEach(d=>{r[d].common.members.includes(u)&&o.push(d)})}return o.length?o:null}static copyState(r,l){const a=l||JSON.parse(JSON.stringify(r));return a.original=r.original||r,"enums"in r&&r.enums&&(a.enums=r.enums),"role"in r&&r.role&&(a.role=r.role),"channelRole"in r&&r.channelRole&&(a.channelRole=r.channelRole),a}_testOneState(r){const l=r.objects,a=r.pattern,n=r.state,o=r.channelStates,u=r.usedIds,d=r.usedInCurrentDevice,m=r.ignoreIndicators,h=r.ignoreEnums,v=r.sortedKeys;let s=r.result,b=!1;for(const S of o)if(!(n.name==="COVER"&&(s!=null&&s.states.find(c=>c.id&&c.name==="COVER")))){if(n.indicator&&m){const p=S.split(".").pop()||"";if(p&&m.includes(p))continue}if((n.indicator||!d.includes(S)&&(n.notSingle||!u.includes(S)))&&this._applyPattern(l,S,n,h,v)&&(n.indicator||d.push(S),s||(s=JSON.parse(JSON.stringify(E.patterns[a])),r.result=s,s==null||s.states.forEach((c,p)=>$.copyState(E.patterns[a].states[p],c))),s)){if(!s.states.find(c=>c.id===S)){let c=!1;for(let p=0;p<s.states.length;p++)if(s.states[p].name===n.name){s.states[p].id=S,c=!0;break}c||console.error(`Cannot find state for ${S}`)}b=!0,n.multiple&&o.length>1&&o.forEach(c=>{if(c!==S&&(n.indicator||!d.includes(c)&&(n.notSingle||!u.includes(c)))&&this._applyPattern(l,c,n,h,v)&&(n.indicator||d.push(c),s))if(Array.isArray(n)){const p=$.copyState(n[0]);p.id=c,s.states.push(p)}else{const p=$.copyState(n);p.id=c,s.states.push(p)}})}}return b}static findParentChannelOrDevice(r,l){if(!r[l])return null;const a=l.split(".");if(r[l].type==="state"&&(a.pop(),l=a.join(".")),a.length<=2)return l;const n=r[l];if(n.type==="device")return l;a.pop();const o=a.join("."),u=r[o];if(!u)return l;if(u.type==="device"||a.length<=2)return o;if(n.type==="channel")return l;a.pop();const d=a.join("."),m=r[d];return!m||m.type!=="device"&&m.type!=="channel"?o:d}static getChannelOrDeviceStates(r,l,a,n=!1){var o;const u=(o=r[l])===null||o===void 0?void 0:o.type;switch(u){case void 0:return[...(0,g.getObjectsBelowId)(a,l)];case"state":case"channel":case"device":case"folder":if(n&&u!=="device"){const d=$.findParentChannelOrDevice(r,l);return d?[...(0,g.getObjectsBelowId)(a,d)]:[l]}return u!=="state"?[...(0,g.getObjectsBelowId)(a,l)]:[l];default:return[l]}}static patternIsAllowed(r,l,a){if(!r)return!1;if(Array.isArray(r.type)){for(let n=0;n<r.type.length;n++)if(l&&!l.includes(r.type[n])||a&&a.includes(r.type[n]))return!1;return!0}return l&&!l.includes(r.type)?!1:!a||!a.includes(r.type)}static allRequiredStatesFound(r){if(!r.result)return!1;const l=r.result.states;for(let a=0;a<l.length;a++)if(l[a].required&&!l[a].id)return!1;return!0}static cleanState(r,l){var a,n;const o=((n=(a=l[r.id])===null||a===void 0?void 0:a.common)===null||n===void 0?void 0:n.role)||"";if(r.name.includes("%d")&&r.role&&r.id&&o){const u=r.role.exec(o);u&&(r.name=r.name.replace("%d",u[1]))}r.role&&delete r.role,r.enums&&delete r.enums,r.original&&delete r.original}sortTypes(r,l){return l.forEach(([a,n])=>{const o=r.indexOf(a),u=r.indexOf(n);if(o===-1||u===-1)return;const d=r.splice(o,1);r.splice(u,0,...d)}),r}_detectNext(r){var l,a,n;const{objects:o,id:u,_usedIdsOptional:d=[],ignoreIndicators:m,prioritizedTypes:h,detectParent:v,allowedTypes:s,excludedTypes:b,_keysOptional:S}=r;let{_patternList:c}=r;r._usedIdsOptional=d;const p=$.getChannelOrDeviceStates(o,u,S||[],v);if(!(!((l=o[u])===null||l===void 0)&&l.common)&&!p.length)return null;if(r._checkedPatterns=(a=r._checkedPatterns)!==null&&a!==void 0?a:[],!c){const q=Object.keys(E.patterns).filter(C=>$.patternIsAllowed(E.patterns[C],s,b));c=h?this.sortTypes(q,h):q,r._patternList=c}const y={objects:o,channelStates:p,usedIds:d,ignoreIndicators:m||[],result:null,pattern:O.Types.unknown,usedInCurrentDevice:[],state:{},ignoreEnums:!!r.ignoreEnums,sortedKeys:S},X=(n=o[u])===null||n===void 0?void 0:n.type;for(const q of c){if(r._checkedPatterns.includes(q))continue;r._checkedPatterns.push(q),y.result=null,y.pattern=q,y.usedInCurrentDevice=[];for(const w of E.patterns[q].states){let I=!1;if(y.state=w,this._testOneState(y)&&(I=!0),w.required&&!I){y.result=null;break}}if(!$.allRequiredStatesFound(y))continue;y.usedInCurrentDevice.forEach(w=>d.push(w));let C;if(X!=="device"){const w=(0,g.getParentId)(u);o[w]&&(o[w].type==="channel"||o[w].type==="device")&&y.result&&(C=(0,g.getObjectsBelowId)(S,w),C.forEach(I=>{y.result.states.forEach((U,z)=>{!U.id&&(U.indicator||U.searchInParent)&&!U.noDeviceDetection&&this._applyPattern(o,I,U.original,!!r.ignoreEnums,y.sortedKeys)&&y.result&&(y.result.states[z].id=I)})}))}if(y.result){const w=y.result;w==null||w.states.forEach(I=>$.cleanState(I,y.objects))}return y.result}return null}detect(r){var l;const{objects:a,id:n,ignoreCache:o,detectAllPossibleDevices:u}=r;let{_keysOptional:d,_usedIdsOptional:m}=r;if(!o&&this.cache[n]){const{allowedTypes:s=[],excludedTypes:b=[]}=r;if(!s.length&&!b.length)return this.cache[n];const S=this.cache[n].filter(({type:c})=>s.includes(c)&&!b.includes(c));if(S.length)return S}d?r._keysOptionalSorted||d.sort():(d=Object.keys(a),d.sort(),r._keysOptional=d),m&&!r.detectParent&&(m=[],r._usedIdsOptional=m),r.ignoreEnums===void 0&&((l=r.allowedTypes)===null||l===void 0?void 0:l.length)===1&&(r.ignoreEnums=!0),u&&(r.excludedTypes||(r.excludedTypes=[]),r.excludedTypes.includes(O.Types.info)||r.excludedTypes.push(O.Types.info)),r._checkedPatterns=[];const h=[];let v;for(;v=this._detectNext(r);)h.push(v),r.detectAllPossibleDevices&&(r._usedIdsOptional=[]);return this.cache[n]=h.length?h:null,this.cache[n]}static getPatterns(){const r={};return Object.keys(E.patterns).forEach(l=>{const a=JSON.parse(JSON.stringify(E.patterns[l]));a.states.forEach((n,o)=>{const u=E.patterns[l].states[o];u.role&&(a.states[o].role=u.role.toString()),u.enums&&(a.states[o].enums=!0)}),r[l]=a}),r}};_.ChannelDetector=J;J.getEnums=g.getEnums;(function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.StateType=i.Types=void 0;const r=_;i.default=r.ChannelDetector;var l=N;Object.defineProperty(i,"Types",{enumerable:!0,get:function(){return l.Types}}),Object.defineProperty(i,"StateType",{enumerable:!0,get:function(){return l.StateType}})})(M);const de=Q(M);export{de as C,M as t};