From 8d7ea04a4c9f5b90ea584af9a0c0676d87717b99 Mon Sep 17 00:00:00 2001 From: Dennis Hinzpeter Date: Mon, 4 Apr 2022 18:39:04 +0200 Subject: [PATCH] v0.3.18 --- README.md | 2 +- docs/new_webif/css/app.87927479.css | 1 + docs/new_webif/js/app.6816231c.js | 2 ++ docs/new_webif/js/app.6816231c.js.map | 1 + src/PixelIt.ino | 2 +- src/Webinterface.h | 2 +- 6 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 docs/new_webif/css/app.87927479.css create mode 100644 docs/new_webif/js/app.6816231c.js create mode 100644 docs/new_webif/js/app.6816231c.js.map diff --git a/README.md b/README.md index df4340e..9e162eb 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Thanks to these great people for supporting this project. ### **WORK IN PROGRESS** --> -### **WORK IN PROGRESS** +### 0.3.18 (2022-04-04) - (o0shojo0o) added option to change the start of the week (internal clock) - (o0shojo0o) added option to change date format (internal clock) diff --git a/docs/new_webif/css/app.87927479.css b/docs/new_webif/css/app.87927479.css new file mode 100644 index 0000000..49cf834 --- /dev/null +++ b/docs/new_webif/css/app.87927479.css @@ -0,0 +1 @@ +::-webkit-scrollbar{width:20px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#8c8c8c;border-radius:20px;border:6px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background-color:#a8a8a8}.container[data-v-449ca0b3]{max-width:100vw;padding:10px}.message[data-v-449ca0b3]{color:orange}[log-text]{line-height:1.4rem!important;font-size:14px;color:#000;resize:none}.name{font-weight:600;font-size:16px!important}.updateMessage[data-v-fa1e1466]{color:#f60;font-weight:700}.editor{background:#2d2d2d;color:#ccc;font-family:Fira code,Fira Mono,Consolas,Menlo,Courier,monospace;font-size:14px;line-height:1.5;padding:5px;min-height:200px;border-radius:5px}.header{font-weight:500;font-size:16px;text-indent:10px}.details{text-indent:20px;font-size:13px}.downloads{text-indent:0;margin-left:5px;font-size:11px;background-color:#4caf50;color:#fff;border-radius:40%;height:13px;width:22px;line-height:13px;display:inline-block;text-align:center}.smallInfo{text-indent:20px;font-size:13px;font-weight:300}.pointer{cursor:pointer}canvas[data-v-cfe8119c]{padding-left:0;padding-right:0;margin-left:auto;margin-right:auto;display:block;border:1px solid;border-color:grey}div.pixel[data-v-8f1ad808]{border:1px solid #5a5a5a;height:40px;width:40px;float:left}#art[data-v-be91b556]{border:1px solid #5a5a5a}#art[data-v-64088c90],.v-color-picker[data-v-64088c90]{padding-left:0;padding-right:0;margin-left:auto;margin-right:auto;display:block} \ No newline at end of file diff --git a/docs/new_webif/js/app.6816231c.js b/docs/new_webif/js/app.6816231c.js new file mode 100644 index 0000000..41bac4b --- /dev/null +++ b/docs/new_webif/js/app.6816231c.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var i,o,r=t[0],l=t[1],c=t[2],d=0,f=[];d1){s&&clearInterval(s),s=setInterval((function(){r.length==l&&(l=0),f(r[l]),l++}),200);var c,u=Object(o["a"])(r);try{for(u.s();!(c=u.n()).done;){var d=c.value;f(d)}}catch(v){u.e(v)}finally{u.f()}}else f(r[0]);function f(t){var n=e.getContext("2d"),s=e.width,o=e.height,r=s/i;n.clearRect(0,0,s,o);for(var l=i,c=8==i?a:a+6,u=0,d=8==i?0:6;d>11&31)+23>>6,n=259*(e>>5&63)+33>>6,i=527*(31&e)+23>>6;return[t,n,i]}function mt(e,t,n){var i=n|t<<8|e<<16;return"#"+(16777216+i).toString(16).slice(1)}var pt=vt,bt=Object(f["a"])(pt,dt,ft,!1,null,null,null),ht=bt.exports,xt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-dialog",{attrs:{width:"500"},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({staticClass:"float-left",attrs:{icon:"",title:"More information"}},"v-btn",a,!1),i),[n("v-icon",[e._v("mdi-information-outline")])],1)]}}]),model:{value:e.dialog,callback:function(t){e.dialog=t},expression:"dialog"}},[n("v-card",[n("v-card-title",[n("div",{staticClass:"text-center"},[e._v(" "+e._s(e.bmp.name)+" ")])]),n("v-divider"),n("v-card-text",[n("BmpCanvas",{staticClass:"float-right",attrs:{bmp:e.bmp,height:"80",width:8==e.bmp.sizeX?"80":"160"}}),n("p"),e._v(" Added by: "+e._s(e.bmp.username)),n("br"),e._v(" Added on: "+e._s(e.bmp.dateTime.split("T")[0])),n("br"),e._v(" Animated: "+e._s(e.bmp.animated?"Yes":"No")),n("br"),n("br"),n("v-textarea",{attrs:{filled:"",outlined:"",readonly:"",rows:"8"},model:{value:e.bmp.rgB565Array,callback:function(t){e.$set(e.bmp,"rgB565Array",t)},expression:"bmp.rgB565Array"}})],1),n("v-divider"),n("v-card-actions",[n("v-spacer"),n("v-btn",{attrs:{color:"primary",text:""},on:{click:function(t){e.dialog=!1}}},[e._v(" close ")])],1)],1)],1)},kt=[],wt={props:{bmp:{type:Object,required:!0}},components:{BmpCanvas:ht},data:function(){return{dialog:!1}}},yt=wt,Ct=n("169a9"),Mt=Object(f["a"])(yt,xt,kt,!1,null,null,null),Dt=Mt.exports;g()(Mt,{VBtn:_["a"],VCard:ne["a"],VCardActions:ie["a"],VCardText:ie["b"],VCardTitle:ie["c"],VDialog:Ct["a"],VDivider:tt["a"],VIcon:m["a"],VSpacer:$["a"],VTextarea:H["a"]});var At={name:"Home",created:function(){St(this.$store.state)},data:function(){return{message:""}},components:{BmpCanvas:ht,BmpDialog:Dt},methods:{sendBitmap:function(e,t){e.endsWith(",")&&(e=e.slice(0,-1)),8==t?this.$socket.sendObj({setScreen:{bitmapAnimation:{data:JSON.parse("[".concat(e,"]")),animationDelay:200}}}):this.$socket.sendObj({setScreen:{bitmap:{data:JSON.parse(e),position:{x:0,y:0},size:{width:t,height:8}}}})}},computed:{getBMPs:function(){var e=this;return this.$store.state.bmpsFromAPI.filter((function(t){return t.name.toLowerCase().includes(e.message.toLowerCase())||t.id==e.message}))},isLoading:function(){return 0==this.$store.state.bmpsFromAPI.length}}};function St(e){return Pt.apply(this,arguments)}function Pt(){return Pt=Object(r["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("https://pixelit.bastelbunker.de/api/GetBMPAll");case 3:return e.next=5,e.sent.json();case 5:t.bmpsFromAPI=e.sent,e.next=12;break;case 8:e.prev=8,e.t0=e["catch"](0),console.log("getBMPsFromAPI: error (".concat(e.t0,")")),t.bmpsFromAPI=[];case 12:case"end":return e.stop()}}),e,null,[[0,8]])}))),Pt.apply(this,arguments)}var _t=At,Bt=(n("b9b5"),Object(f["a"])(_t,ct,ut,!1,null,"cfe8119c",null)),It=Bt.exports;g()(Bt,{VBtn:_["a"],VCard:ne["a"],VCol:ae["a"],VContainer:se["a"],VIcon:m["a"],VRow:oe["a"],VTextField:be["a"]});var Et=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-container",{staticClass:"gallery"},[n("v-row",[n("v-col",{attrs:{cols:"12",lg:"12"}},[n("v-bottom-navigation",{attrs:{value:e.pixelMode,color:"primary"}},[n("v-btn",{on:{click:function(t){return e.changePixelModeTo8x8()}}},[n("span",[e._v("8x8 Pixel")]),n("v-icon",[e._v("mdi-grid")])],1),n("v-btn",{on:{click:function(t){return e.changePixelModeTo8x32()}}},[n("span",[e._v("8x32 Pixel")]),n("v-icon",[e._v("mdi-grid")])],1)],1)],1)],1),0==e.pixelMode?n("v-row",[n("v-col",{attrs:{cols:"12",lg:"3","offset-lg":"3"}},[n("v-card",{staticClass:"pa-3",attrs:{elevation:"4"}},[n("Art",{attrs:{colors:e.colors,pixelCount:"64",func:e.onclick}}),n("p"),n("v-textarea",{attrs:{filled:"",outlined:"",rows:"5","hide-details":""},model:{value:e.array8x8String,callback:function(t){e.array8x8String=t},expression:"array8x8String"}}),n("v-switch",{attrs:{label:"Live draw","hide-details":"",dense:""},model:{value:e.livedraw,callback:function(t){e.livedraw=t},expression:"livedraw"}})],1)],1),n("v-col",{attrs:{cols:"12",lg:"3"}},[n("v-card",{staticClass:"pa-3",attrs:{elevation:"4"}},[n("v-color-picker",{attrs:{mode:"hexa","dot-size":"20","show-swatches":"","swatches-max-height":"240"},model:{value:e.colors,callback:function(t){e.colors=t},expression:"colors"}})],1)],1)],1):e._e(),1==e.pixelMode?n("v-row",[n("v-col",{attrs:{cols:"12",lg:"7","offset-lg":"1"}},[n("v-card",{staticClass:"pa-3",attrs:{elevation:"4"}},[n("Art",{attrs:{colors:e.colors,pixelCount:"256",func:e.onclick}}),n("p"),n("v-textarea",{attrs:{filled:"",outlined:"",rows:"5","hide-details":""},model:{value:e.array8x32String,callback:function(t){e.array8x32String=t},expression:"array8x32String"}}),n("v-switch",{attrs:{label:"Live draw",disabled:!e.sockedIsConnected,"hide-details":"",dense:""},model:{value:e.livedraw,callback:function(t){e.livedraw=t},expression:"livedraw"}})],1)],1),n("v-col",{attrs:{cols:"12",lg:"3"}},[n("v-card",{staticClass:"pa-3",attrs:{elevation:"4"}},[n("v-color-picker",{attrs:{mode:"hexa","dot-size":"20","show-swatches":"","swatches-max-height":"250"},model:{value:e.colors,callback:function(t){e.colors=t},expression:"colors"}})],1)],1)],1):e._e()],1)},$t=[],Vt=(n("07ac"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:{width:e.getWidth(),height:e.getHeight()},attrs:{id:"art"}},e._l(e.getPixelCount(),(function(t){return n("Pixel",{key:t,attrs:{coloring:e.color,id:t,func:e.func,pixelDimensions:e.getPixelDimensions()}})})),1)}),jt=[],Ft=(n("a9e3"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"pixel",style:{background:e.activeBackground,height:e.getPixel(),width:e.getPixel()},on:{click:e.changeColor}})}),Gt=[],Rt={data:function(){return{activeBackground:"#000"}},created:function(){this.func(this.id,this.activeBackground)},props:{coloring:{type:String,required:!0},id:{type:Number,required:!0},func:{type:Function,required:!0},pixelDimensions:{type:String,required:!0}},methods:{changeColor:function(){this.activeBackground==this.coloring?this.activeBackground="#000":this.activeBackground=this.coloring,this.func(this.id,this.activeBackground)},getPixel:function(){return this.pixelDimensions+"px"}}},Tt=Rt,Lt=(n("e15b"),Object(f["a"])(Tt,Ft,Gt,!1,null,"8f1ad808",null)),Ot=Lt.exports,qt={computed:{color:function(){return this.colors}},props:{colors:{type:String,required:!0},pixelCount:{type:String,required:!0},func:{type:Function,required:!0}},components:{Pixel:Ot},methods:{getPixelCount:function(){return Number(this.pixelCount)},getWidth:function(){return 64==this.pixelCount?"322px":"802px"},getHeight:function(){return 64==this.pixelCount?"322px":"202px"},getPixelDimensions:function(){return 64==this.pixelCount?"40":"25"}}},Yt=qt,Ht=(n("f454"),Object(f["a"])(Yt,Vt,jt,!1,null,"be91b556",null)),Nt=Ht.exports,Ut={data:function(){return{colors:"#F44336",pixelMode:0,active8x8Background:{},active8x32Background:{},array8x8String:"",array8x32String:"",livedraw:!1}},components:{Art:Nt},methods:{onclick:function(e,t){if(0==this.pixelMode){this.active8x8Background[e]=t.replace("#",""),this.array8x8String="[";for(var n=0,i=Object.values(this.active8x8Background);n>3)}function zt(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(t,(function(e,t,n,i){return t+t+n+n+i+i}));var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null}var Kt=Ut,Xt=(n("efb3"),n("b81c")),Zt=Object(f["a"])(Kt,Et,$t,!1,null,"64088c90",null),Jt=Zt.exports;g()(Zt,{VBottomNavigation:Xt["a"],VBtn:_["a"],VCard:ne["a"],VCol:ae["a"],VColorPicker:me["a"],VContainer:se["a"],VIcon:m["a"],VRow:oe["a"],VSwitch:Be["a"],VTextarea:H["a"]}),i["a"].use(G["a"]);var Wt,en=[{path:"/",name:"Home",component:le},{path:"/options",name:"Options",component:Ee},{path:"/sensorsbuttons",name:"Sensors & Buttons",component:Re},{path:"/testarea",name:"TestArea",component:Qe},{path:"/update",name:"Update",component:lt},{path:"/gallery",name:"Gallery",component:It},{path:"/creator",name:"Creator",component:Jt}],tn=new G["a"]({routes:en}),nn=tn,an=(n("7db0"),n("b680"),n("498a"),n("2f62"));i["a"].use(an["a"]);var sn=new an["a"].Store({state:{socket:{isConnected:!1,reconnectError:!1},testarea:{brightness:0,json:JSON.stringify({text:{textString:"Pixel it 😀",scrollText:"auto",bigFont:!1,centerText:!1,scrollTextDelay:40,hexColor:"#FFFFFF",position:{x:0,y:1}}},null,4),text:"€ ← ↑ → ↓ ★ 📁 ♥ ↧ 🚗 😀",image:"[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,65535,0,44373,44373,65535,0,33808,33808,65535,0,33808,33808,65535,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,0,65535,44373,44373,0,65535,33808,33808,0,65535,33808,33808,0,65535,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,65535,0,44373,44373,65535,0,33808,33808,65535,0,33808,33808,65535,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,44373,44373,44373,44373,44373,44373,33808,33808,44373,44373,44373,44373,44373,44373,33808,33808,0,0,33808,33808,0,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0]"},newVersionAvailable:!1,version:null,gitVersion:null,gitDownloadUrl:null,gitReleases:[],pixelItIpAdress:null,logData:[],sensorData:[],buttonData:[],sysInfoData:[],configData:{},rules:{required:function(e){return!!e||"0"==e||"Required."},max20Chars:function(e){return e.length<=20||"Max 20 characters"},email:function(e){var t=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return t.test(e)||"Invalid e-mail."},min0:function(e){return e>=0||"Must be greater than or equal to 0"},max255:function(e){return e<=255||"Must be less than or equal to 255"},minMinus12:function(e){return e>=-12||"Must be greater than or equal to -12"},max14:function(e){return e<=14||"Must be less than or equal to 14"},portRange:function(e){return e>0&&e<=65535||"Must be between 1 and 65535"},volumeRange:function(e){return e>0&&e<=30||"Must be between 1 and 30"}},navLinks:[{title:"Dashboard",icon:"mdi-memory",page:"/"},{title:"Options",icon:"mdi-tune-vertical",page:"/options"},{title:"Sensors & Buttons",icon:"mdi-gesture-tap-button",page:"/sensorsbuttons"},{title:"Test Area",icon:"mdi-cube-outline",page:"/testarea"},{title:"Update",icon:"mdi-tray-arrow-up",page:"/update"},{title:"Pixel Gallery",icon:"mdi-image-outline",page:"/gallery"},{title:"Pixel Creator",icon:"mdi-pencil-box-outline",url:"https://pixelit.bastelbunker.de/PixelCreator",target:"_blank"},{title:"Forum",icon:"mdi-forum-outline",url:"https://github.com/o0shojo0o/PixelIt/discussions",target:"_blank"},{title:"Blog",icon:"mdi-post-outline",url:"https://www.bastelbunker.de/pixel-it/",target:"_blank"},{title:"Documentation",icon:"mdi-book-open-page-variant-outline",url:"https://docs.bastelbunker.de/pixelit/",target:"_blank"},{title:"GitHub",icon:"mdi-github",url:"https://github.com/o0shojo0o/PixelIt",target:"_blank"}],matrixTypes:[{text:"Type 1 - Colum major",value:1},{text:"Type 2 - Row major",value:2},{text:"Type 3 - Tiled 4x 8x8 CJMCU",value:3}],matrixCorrection:[{text:"Default",value:"default"},{text:"Typical SMD 5050",value:"typicalsmd5050"},{text:"Typical 8mm Pixel",value:"typical8mmpixel"},{text:"Tungsten 40W",value:"tungsten40w"},{text:"Tungsten 100W",value:"tungsten100w"},{text:"Halogen",value:"halogen"},{text:"Carbon Arc",value:"carbonarc"},{text:"High Noon Sun",value:"highnoonsun"},{text:"Direct Sunlight",value:"directsunlight"},{text:"Overcast Sky",value:"overcastsky"},{text:"Clear Blue Sky",value:"clearbluesky"},{text:"Warm Fluorescent",value:"warmfluorescent"},{text:"Standard Fluorescent",value:"standardfluorescent"},{text:"Cool White Fluorescent",value:"coolwhitefluorescent"},{text:"Full Spectrum Fluorescent",value:"fullspectrumfluorescent"},{text:"Grow Light Fluorescent",value:"growlightfluorescent"},{text:"Black Light Fluorescent",value:"blacklightfluorescent"},{text:"Mercury Vapor",value:"mercuryvapor"},{text:"Sodium Vapor",value:"sodiumvapor"},{text:"Metal Halide",value:"metalhalide"},{text:"High Pressure Sodium",value:"highpressuresodium"}],autoFallbackAnimation:[{text:"None",value:0},{text:"Fade",value:1},{text:"Colored Bar Wipe",value:2},{text:"ZigZag Wipe",value:3},{text:"Random Wipe",value:4}],temperatureUnits:[{text:"Celsius °C",value:0},{text:"Fahrenheit °F",value:1}],ldrDevices:[{text:"GL5516",value:"GL5516"},{text:"GL5528",value:"GL5528"},{text:"GL5537_1",value:"GL5537_1"},{text:"GL5537_2",value:"GL5537_2"},{text:"GL5539",value:"GL5539"},{text:"GL5549",value:"GL5549"}],pinsESP8266:[{text:"Pin D0",value:"Pin_D0"},{text:"Pin D1",value:"Pin_D1"},{text:"Pin D3",value:"Pin_D3"},{text:"Pin D4",value:"Pin_D4"},{text:"Pin D5",value:"Pin_D5"},{text:"Pin D6",value:"Pin_D6"},{text:"Pin D7",value:"Pin_D7"},{text:"Pin D8",value:"Pin_D8"}],btnLowHigh:[{text:"Active low",value:0},{text:"Active high",value:1}],btnActions:[{text:"None (only send to MQTT and API)",value:0},{text:"Go to Clock",value:1},{text:"Toggle Sleep Mode",value:2},{text:"MP3: Toggle Play/Pause",value:3},{text:"MP3: Previous track",value:4},{text:"MP3: Next track",value:5}],bmpsFromAPI:[],pixelCreatorPixel:{}},mutations:{SOCKET_ONOPEN:function(e,t){i["a"].prototype.$socket=t.currentTarget,e.socket.isConnected=!0,Wt=setInterval((function(){i["a"].prototype.$socket.send(9)}),1e3)},SOCKET_ONCLOSE:function(e){e.socket.isConnected=!1,clearInterval(Wt)},SOCKET_ONERROR:function(e,t){console.error(e,t)},SOCKET_ONMESSAGE:function(e,t){t.log?on(t.log,e):t.sensor?rn(t.sensor,e):t.buttons?ln(t.buttons,e):t.config?cn(t.config,e):t.sysinfo&&un(t.sysinfo,e)},SOCKET_RECONNECT:function(e,t){console.info(e,t)},SOKE:function(e){e.socket.reconnectError=!0},SOCKET_RECONNECT_ERROR:function(e){e.socket.reconnectError=!0}},actions:{},modules:{}});function on(e,t){t.logData.unshift("[".concat(e.timeStamp,"] ").concat(e.function,": ").concat(e.message)),t.logData.length>100&&(t.logData=t.logData.slice(0,100))}function rn(e,t){var n=function(n){var i=t.sensorData.find((function(e){return e.name==dn(n)}));i?i.value=fn(n,e[n]):t.sensorData.push({name:dn(n),value:fn(n,e[n])})};for(var i in e)n(i)}function ln(e,t){var n=function(n){var i=t.buttonData.find((function(e){return e.name==dn(n)}));i?i.value=fn(n,e[n]):t.buttonData.push({name:dn(n),value:fn(n,e[n])})};for(var i in e)n(i)}function cn(e,t){t.configData=e,t.testarea.brightness=e.matrixBrightness}function un(e,t){var n=function(n){var i=t.sysInfoData.find((function(e){return e.name===dn(n)}));i?i.value=fn(n,e[n]):t.sysInfoData.push({name:dn(n),value:fn(n,e[n])}),"pixelitVersion"===n&&(t.version=e[n])};for(var i in e)n(i)}function dn(e){switch(e){case"lux":e="Luminance";break;case"temperature":e="Temperature";break;case"humidity":e="Humidity";break;case"gas":e="Gas";break;case"pressure":e="Pressure";break;case"pixelitVersion":e="PixelIt version";break;case"hostname":e="Hostname";break;case"note":e="Note";break;case"sketchSize":e="Sketch size";break;case"freeSketchSpace":e="Free sketch space";break;case"wifiRSSI":e="Wifi RSSI";break;case"wifiQuality":e="Wifi quality";break;case"wifiSSID":e="Wifi SSID";break;case"ipAddress":e="IP-Address";break;case"freeHeap":e="Free heap";break;case"chipID":e="ChipID";break;case"cpuFreqMHz":e="CPU freq.";break;case"sleepMode":e="Sleep mode";break;case"button0":e="Left button";break;case"button1":e="Middle button";break;case"button2":e="Right button";break}return e}function fn(e,t){switch(e){case"lux":"number"==typeof t&&(t=t.toFixed(3)+" lux");break;case"note":t.trim()||(t="---");break;case"sketchSize":case"freeSketchSpace":case"freeHeap":t=vn(t,!0);break;case"wifiRSSI":t+=" dBm";break;case"wifiQuality":t+=" %";break;case"cpuFreqMHz":t+=" MHz";break;case"sleepMode":t=t?"On":"Off";break;case"temperature":"number"==typeof t&&(t=t.toFixed(1)+" °C");break;case"humidity":"number"==typeof t&&(t=t.toFixed(1)+" %");break;case"pressure":"number"==typeof t&&(t=Math.round(t)+" hPa");break;case"gas":"number"==typeof t&&(t=Math.round(t)+" kOhm");break}return t}function vn(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=t?1e3:1024;if(Math.abs(e)=i&&s\r\n \r\n \r\n \r\n {{ item.icon }}\r\n \r\n\r\n \r\n {{ item.title }}\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavLinks.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavLinks.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NavLinks.vue?vue&type=template&id=5b77ebef&\"\nimport script from \"./NavLinks.vue?vue&type=script&lang=js&\"\nexport * from \"./NavLinks.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VIcon,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle})\n","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=449ca0b3&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&id=449ca0b3&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"449ca0b3\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VApp,VAppBar,VAppBarNavIcon,VBtn,VIcon,VImg,VMain,VNavigationDrawer,VSpacer,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"home\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"3\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"System\")])]),_c('hr'),_c('br'),(_vm.newVersionAvailable)?_c('div',{staticClass:\"text-center updateMessage\"},[_c('a',{staticClass:\"updateMessage\",attrs:{\"href\":_vm.gitUpdateURL,\"target\":\"_blank\"}},[_vm._v(\"Update to version \"+_vm._s(_vm.gitVersion)+\" available!\")]),_vm._v(\" \"),_c('v-icon',{staticClass:\"updateMessage\",attrs:{\"size\":\"16px\"}},[_vm._v(\"mdi-open-in-new\")])],1):_vm._e(),_c('ListInfo',{attrs:{\"items\":_vm.systemItems}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"3\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Sensors\")])]),_c('hr'),_c('br'),_c('ListInfo',{attrs:{\"items\":_vm.sensorItems}})],1),_c('br'),_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Buttons\")])]),_c('hr'),_c('br'),_c('ListInfo',{attrs:{\"items\":_vm.buttonItems}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Logs\")])]),_c('hr'),_c('br'),_c('Log',{attrs:{\"log\":_vm.log}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Log\",attrs:{\"log-field\":\"\"}},[_c('v-textarea',{staticClass:\"log\",attrs:{\"filled\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"log-text\":\"\",\"rows\":\"20\"},model:{value:(_vm.log),callback:function ($$v) {_vm.log=$$v},expression:\"log\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Log.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Log.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Log.vue?vue&type=template&id=faa47d60&\"\nimport script from \"./Log.vue?vue&type=script&lang=js&\"\nexport * from \"./Log.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Log.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-simple-table',[[_c('tbody',_vm._l((_vm.items),function(item){return _c('tr',{key:item.title},[_c('td',{staticClass:\"name\"},[_vm._v(_vm._s(item.name)+\":\")]),_c('td',[_vm._v(\" \"+_vm._s(item.value)+\" \")])])}),0)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ListInfo.vue?vue&type=template&id=6951578f&\"\nimport script from \"./ListInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./ListInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ListInfo.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=fa1e1466&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=fa1e1466&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa1e1466\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VIcon,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"options\"},[_c('v-row',[_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"lg\":\"12\"}},[_c('ButtonCondition',{attrs:{\"color\":\"success\",\"condition\":_vm.isValid && _vm.sockedIsConnected,\"text\":\"Save config\",\"onclick\":_vm.save,\"icon\":\"mdi-content-save\"}})],1)],1),_c('v-form',{model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-1\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Defaults\")])]),_c('hr'),_c('br'),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Matrix start brightness\",\"hint\":\"0 to 255\",\"rules\":[_vm.rules.required, _vm.rules.min0, _vm.rules.max255]},model:{value:(_vm.config.matrixBrightness),callback:function ($$v) {_vm.$set(_vm.config, \"matrixBrightness\", $$v)},expression:\"config.matrixBrightness\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Scrolltext delay\",\"hint\":\"larger number is slower\",\"suffix\":\"milliseconds\",\"rules\":[_vm.rules.required, _vm.rules.min0]},model:{value:(_vm.config.scrollTextDefaultDelay),callback:function ($$v) {_vm.$set(_vm.config, \"scrollTextDefaultDelay\", $$v)},expression:\"config.scrollTextDefaultDelay\"}}),_c('v-text-field',{attrs:{\"label\":\"Hostname\"},model:{value:(_vm.config.hostname),callback:function ($$v) {_vm.$set(_vm.config, \"hostname\", $$v)},expression:\"config.hostname\"}}),_c('v-text-field',{attrs:{\"label\":\"Note\"},model:{value:(_vm.config.note),callback:function ($$v) {_vm.$set(_vm.config, \"note\", $$v)},expression:\"config.note\"}}),_c('v-switch',{attrs:{\"label\":\"Bootsceen active\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.config.bootScreenAktiv),callback:function ($$v) {_vm.$set(_vm.config, \"bootScreenAktiv\", $$v)},expression:\"config.bootScreenAktiv\"}})],1),_c('br'),_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Matrix\")])]),_c('hr'),_c('br'),_c('v-select',{attrs:{\"items\":_vm.matrixTypes,\"label\":\"Matrix type\"},model:{value:(_vm.config.matrixType),callback:function ($$v) {_vm.$set(_vm.config, \"matrixType\", $$v)},expression:\"config.matrixType\"}}),_c('v-select',{attrs:{\"items\":_vm.matrixCorrection,\"label\":\"Matrix correction\"},model:{value:(_vm.config.matrixTempCorrection),callback:function ($$v) {_vm.$set(_vm.config, \"matrixTempCorrection\", $$v)},expression:\"config.matrixTempCorrection\"}})],1),_c('br'),_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Auto brightness\")])]),_c('hr'),_c('v-switch',{attrs:{\"label\":\"Auto brightness active\",\"dense\":\"\"},model:{value:(_vm.config.matrixBrightnessAutomatic),callback:function ($$v) {_vm.$set(_vm.config, \"matrixBrightnessAutomatic\", $$v)},expression:\"config.matrixBrightnessAutomatic\"}}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Min bright\",\"hint\":\"0 to 255\",\"type\":\"number\",\"disabled\":!_vm.config.matrixBrightnessAutomatic,\"rules\":_vm.config.matrixBrightnessAutomatic ? [_vm.rules.required, _vm.rules.min0, _vm.rules.max255] : [],\"dense\":\"\"},model:{value:(_vm.config.mbaDimMin),callback:function ($$v) {_vm.$set(_vm.config, \"mbaDimMin\", $$v)},expression:\"config.mbaDimMin\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Max bright\",\"hint\":\"0 to 255\",\"type\":\"number\",\"disabled\":!_vm.config.matrixBrightnessAutomatic,\"rules\":_vm.config.matrixBrightnessAutomatic ? [_vm.rules.required, _vm.rules.min0, _vm.rules.max255] : [],\"dense\":\"\"},model:{value:(_vm.config.mbaDimMax),callback:function ($$v) {_vm.$set(_vm.config, \"mbaDimMax\", $$v)},expression:\"config.mbaDimMax\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"From lux\",\"type\":\"number\",\"disabled\":!_vm.config.matrixBrightnessAutomatic,\"rules\":_vm.config.matrixBrightnessAutomatic ? [_vm.rules.required, _vm.rules.min0] : [],\"dense\":\"\"},model:{value:(_vm.config.mbaLuxMin),callback:function ($$v) {_vm.$set(_vm.config, \"mbaLuxMin\", $$v)},expression:\"config.mbaLuxMin\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"To lux\",\"type\":\"number\",\"disabled\":!_vm.config.matrixBrightnessAutomatic,\"rules\":_vm.config.matrixBrightnessAutomatic ? [_vm.rules.required, _vm.rules.min0] : [],\"dense\":\"\"},model:{value:(_vm.config.mbaLuxMax),callback:function ($$v) {_vm.$set(_vm.config, \"mbaLuxMax\", $$v)},expression:\"config.mbaLuxMax\"}})],1)],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Clock\")])]),_c('hr'),_c('br'),_c('v-text-field',{attrs:{\"label\":\"NTP-Server\",\"hint\":\"domain or ip address\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.ntpServer),callback:function ($$v) {_vm.$set(_vm.config, \"ntpServer\", $$v)},expression:\"config.ntpServer\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"UTC offset\",\"hint\":\"your UTC time offset\",\"rules\":[_vm.rules.required, _vm.rules.minMinus12, _vm.rules.max14]},model:{value:(_vm.config.clockTimeZone),callback:function ($$v) {_vm.$set(_vm.config, \"clockTimeZone\", $$v)},expression:\"config.clockTimeZone\"}}),_c('ColorPickerTextfield'),_c('v-switch',{attrs:{\"label\":\"Daylight saving\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.clockDayLightSaving),callback:function ($$v) {_vm.$set(_vm.config, \"clockDayLightSaving\", $$v)},expression:\"config.clockDayLightSaving\"}}),_c('v-switch',{attrs:{\"label\":\"24 Hours\",\"persistent-hint\":\"\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.clock24Hours),callback:function ($$v) {_vm.$set(_vm.config, \"clock24Hours\", $$v)},expression:\"config.clock24Hours\"}}),_c('v-switch',{attrs:{\"label\":\"Clock with sek\",\"disabled\":!_vm.config.clock24Hours,\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.clockWithSeconds),callback:function ($$v) {_vm.$set(_vm.config, \"clockWithSeconds\", $$v)},expression:\"config.clockWithSeconds\"}}),_c('v-switch',{attrs:{\"label\":\"Switch clock/date active\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.clockSwitchAktiv),callback:function ($$v) {_vm.$set(_vm.config, \"clockSwitchAktiv\", $$v)},expression:\"config.clockSwitchAktiv\"}}),_c('v-switch',{attrs:{\"label\":\"Monday as start of the week\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.clockDayOfWeekFirstMonday),callback:function ($$v) {_vm.$set(_vm.config, \"clockDayOfWeekFirstMonday\", $$v)},expression:\"config.clockDayOfWeekFirstMonday\"}}),_c('v-switch',{attrs:{\"label\":\"Date format DD.MM.\",\"dense\":\"\"},model:{value:(_vm.config.clockDateDayMonth),callback:function ($$v) {_vm.$set(_vm.config, \"clockDateDayMonth\", $$v)},expression:\"config.clockDateDayMonth\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Switch clock/date time\",\"hint\":\"the unit is seconds (s)\",\"suffix\":\"seconds\",\"disabled\":!_vm.config.clockSwitchAktiv,\"rules\":_vm.config.clockSwitchAktiv ? [_vm.rules.required, _vm.rules.min0] : []},model:{value:(_vm.config.clockSwitchSec),callback:function ($$v) {_vm.$set(_vm.config, \"clockSwitchSec\", $$v)},expression:\"config.clockSwitchSec\"}}),_c('v-switch',{attrs:{\"label\":\"Clock auto fallback\",\"dense\":\"\"},model:{value:(_vm.config.clockAutoFallbackActive),callback:function ($$v) {_vm.$set(_vm.config, \"clockAutoFallbackActive\", $$v)},expression:\"config.clockAutoFallbackActive\"}}),_c('v-select',{attrs:{\"items\":_vm.autoFallbackAnimation,\"label\":\"Fallback Animation\",\"disabled\":!_vm.config.clockAutoFallbackActive},model:{value:(_vm.config.clockAutoFallbackAnimation),callback:function ($$v) {_vm.$set(_vm.config, \"clockAutoFallbackAnimation\", $$v)},expression:\"config.clockAutoFallbackAnimation\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Fallback time\",\"hint\":\"the unit is seconds (s)\",\"suffix\":\"seconds\",\"disabled\":!_vm.config.clockAutoFallbackActive,\"rules\":_vm.config.clockSwitchAktiv ? [_vm.rules.required, _vm.rules.min0] : []},model:{value:(_vm.config.clockAutoFallbackTime),callback:function ($$v) {_vm.$set(_vm.config, \"clockAutoFallbackTime\", $$v)},expression:\"config.clockAutoFallbackTime\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-1\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"MQTT\")])]),_c('hr'),_c('v-switch',{attrs:{\"label\":\"MQTT active\",\"dense\":\"\"},model:{value:(_vm.config.mqttAktiv),callback:function ($$v) {_vm.$set(_vm.config, \"mqttAktiv\", $$v)},expression:\"config.mqttAktiv\"}}),_c('v-text-field',{attrs:{\"label\":\"Server\",\"hint\":\"domain or ip address\",\"disabled\":!_vm.config.mqttAktiv,\"rules\":_vm.config.mqttAktiv ? [_vm.rules.required] : []},model:{value:(_vm.config.mqttServer),callback:function ($$v) {_vm.$set(_vm.config, \"mqttServer\", $$v)},expression:\"config.mqttServer\"}}),_c('v-text-field',{attrs:{\"label\":\"Port\",\"type\":\"number\",\"disabled\":!_vm.config.mqttAktiv,\"rules\":_vm.config.mqttAktiv ? [_vm.rules.required, _vm.rules.portRange] : []},model:{value:(_vm.config.mqttPort),callback:function ($$v) {_vm.$set(_vm.config, \"mqttPort\", $$v)},expression:\"config.mqttPort\"}}),_c('v-text-field',{attrs:{\"label\":\"User\",\"hint\":\"optional\",\"disabled\":!_vm.config.mqttAktiv},model:{value:(_vm.config.mqttUser),callback:function ($$v) {_vm.$set(_vm.config, \"mqttUser\", $$v)},expression:\"config.mqttUser\"}}),_c('v-text-field',{attrs:{\"label\":\"Passsword\",\"hint\":\"optional\",\"disabled\":!_vm.config.mqttAktiv},model:{value:(_vm.config.mqttPassword),callback:function ($$v) {_vm.$set(_vm.config, \"mqttPassword\", $$v)},expression:\"config.mqttPassword\"}}),_c('v-text-field',{attrs:{\"label\":\"Master topic\",\"disabled\":!_vm.config.mqttAktiv,\"rules\":_vm.config.mqttAktiv ? [_vm.rules.required] : []},model:{value:(_vm.config.mqttMasterTopic),callback:function ($$v) {_vm.$set(_vm.config, \"mqttMasterTopic\", $$v)},expression:\"config.mqttMasterTopic\"}})],1),_c('br'),_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Sound\")])]),_c('hr'),_c('br'),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Start volume\",\"hint\":\"Between 1 and 30\",\"rules\":[_vm.rules.required, _vm.rules.volumeRange]},model:{value:(_vm.config.initialVolume),callback:function ($$v) {_vm.$set(_vm.config, \"initialVolume\", $$v)},expression:\"config.initialVolume\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"DFPlayer RX pin (ESP8266 only)\",\"disabled\":!_vm.config.isESP8266},model:{value:(_vm.config.dfpRXpin),callback:function ($$v) {_vm.$set(_vm.config, \"dfpRXpin\", $$v)},expression:\"config.dfpRXpin\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"DFPlayer TX pin (ESP8266 only)\",\"disabled\":!_vm.config.isESP8266},model:{value:(_vm.config.dfpTXpin),callback:function ($$v) {_vm.$set(_vm.config, \"dfpTXpin\", $$v)},expression:\"config.dfpTXpin\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-text-field',{attrs:{\"label\":\"Color\",\"readonly\":\"\",\"hint\":\"click left on the box\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-menu',{attrs:{\"top\":\"\",\"nudge-bottom\":\"100\",\"nudge-left\":\"16\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"elevation-1\",style:(_vm.swatchStyle)},on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-card',[_c('v-card-text',{staticClass:\"pa-0\"},[_c('v-color-picker',{model:{value:(_vm.config.clockColor),callback:function ($$v) {_vm.$set(_vm.config, \"clockColor\", $$v)},expression:\"config.clockColor\"}})],1)],1)],1)]},proxy:true}]),model:{value:(_vm.config.clockColor),callback:function ($$v) {_vm.$set(_vm.config, \"clockColor\", $$v)},expression:\"config.clockColor\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerTextfield.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerTextfield.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ColorPickerTextfield.vue?vue&type=template&id=0a85b654&\"\nimport script from \"./ColorPickerTextfield.vue?vue&type=script&lang=js&\"\nexport * from \"./ColorPickerTextfield.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCard,VCardText,VColorPicker,VMenu,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-btn',{attrs:{\"color\":_vm.color,\"elevation\":\"4\",\"disabled\":!_vm.condition},on:{\"click\":_vm.onclick}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.icon))]),_vm._v(\" \"+_vm._s(_vm.text)+\" \")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonCondition.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonCondition.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ButtonCondition.vue?vue&type=template&id=fe1d7af8&\"\nimport script from \"./ButtonCondition.vue?vue&type=script&lang=js&\"\nexport * from \"./ButtonCondition.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Options.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Options.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Options.vue?vue&type=template&id=63849390&\"\nimport script from \"./Options.vue?vue&type=script&lang=js&\"\nexport * from \"./Options.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VForm,VRow,VSelect,VSwitch,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"options\"},[_c('v-row',[_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"lg\":\"12\"}},[_c('ButtonCondition',{attrs:{\"color\":\"success\",\"condition\":_vm.isValid && _vm.sockedIsConnected,\"text\":\"Save config\",\"onclick\":_vm.save,\"icon\":\"mdi-content-save\"}})],1)],1),_c('v-form',{model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Sensor units and offsets\")])]),_c('hr'),_c('br'),_c('v-select',{attrs:{\"items\":_vm.temperatureUnits,\"label\":\"Temperature unit\"},model:{value:(_vm.config.temperatureUnit),callback:function ($$v) {_vm.$set(_vm.config, \"temperatureUnit\", $$v)},expression:\"config.temperatureUnit\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Temperature sensor offset\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.temperatureOffset),callback:function ($$v) {_vm.$set(_vm.config, \"temperatureOffset\", $$v)},expression:\"config.temperatureOffset\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Humidity sensor offset\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.humidityOffset),callback:function ($$v) {_vm.$set(_vm.config, \"humidityOffset\", $$v)},expression:\"config.humidityOffset\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Pressure sensor offset\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.pressureOffset),callback:function ($$v) {_vm.$set(_vm.config, \"pressureOffset\", $$v)},expression:\"config.pressureOffset\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Gas sensor offset\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.gasOffset),callback:function ($$v) {_vm.$set(_vm.config, \"gasOffset\", $$v)},expression:\"config.gasOffset\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Lux sensor offset\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.luxOffset),callback:function ($$v) {_vm.$set(_vm.config, \"luxOffset\", $$v)},expression:\"config.luxOffset\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Number of historic LDR readings to be used for linear smoothing (LDR only)\",\"hint\":\"Enter any value when using BH1750\",\"rules\":[_vm.rules.required, _vm.rules.min0]},model:{value:(_vm.config.ldrSmoothing),callback:function ($$v) {_vm.$set(_vm.config, \"ldrSmoothing\", $$v)},expression:\"config.ldrSmoothing\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Sensor hardware\")])]),_c('hr'),_c('br'),_c('h3',[_vm._v(\"I²C sensors\")]),_c('small',[_vm._v(\"If you use BH1750, BME280 or BME680 sensors, these need two pins to communicate. You can use both Lux and Temperature sensors at the same time: just connect them in parallel. If there are no sensors at all, just select any two open pins.\")]),_c('br'),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"SCL pin (ESP8266 only)\",\"hint\":\"Pick any value when using no I²C sensors\",\"disabled\":!_vm.config.isESP8266},model:{value:(_vm.config.SCLPin),callback:function ($$v) {_vm.$set(_vm.config, \"SCLPin\", $$v)},expression:\"config.SCLPin\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"SDA pin (ESP8266 only)\",\"hint\":\"Pick any value when using no I²C sensors\",\"disabled\":!_vm.config.isESP8266},model:{value:(_vm.config.SDAPin),callback:function ($$v) {_vm.$set(_vm.config, \"SDAPin\", $$v)},expression:\"config.SDAPin\"}}),_c('br'),_c('h3',[_vm._v(\"OneWire sensors\")]),_c('small',[_vm._v(\" If you use OneWire sensors like DHT22, they need one pin to communicate. If there are no I²C sensors (see above), you can re-use one of the pins above. If there is no OneWire sensor, just select any open pin.\")]),_c('br'),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"DHT sensor pin (ESP8266 only)\",\"hint\":\"Pick any value when using no OneWire sensors\",\"disabled\":!_vm.config.isESP8266},model:{value:(_vm.config.onewirePin),callback:function ($$v) {_vm.$set(_vm.config, \"onewirePin\", $$v)},expression:\"config.onewirePin\"}}),_c('h3',[_vm._v(\"LDR\")]),_c('small',[_vm._v(\" If you use no BH1750, but an LDR (light dependend resistor) connected to the A0 pin, you can define its type and the pulldown resistor here. Select any values if there is no LDR.\")]),_c('br'),_c('v-select',{attrs:{\"items\":_vm.ldrDevices,\"type\":\"number\",\"label\":\"Lux sensor type\",\"hint\":\"Pick any value when using BH1750 or no lux sensor at all\"},model:{value:(_vm.config.ldrDevice),callback:function ($$v) {_vm.$set(_vm.config, \"ldrDevice\", $$v)},expression:\"config.ldrDevice\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Value of pulldown resistor for LDR\",\"suffix\":\"Ohm\",\"hint\":\"Enter any value when using BH1750 or no lux sensor at all\",\"rules\":[_vm.rules.required]},model:{value:(_vm.config.ldrPulldown),callback:function ($$v) {_vm.$set(_vm.config, \"ldrPulldown\", $$v)},expression:\"config.ldrPulldown\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Button hardware\")])]),_c('hr'),_c('br'),_c('v-switch',{attrs:{\"label\":\"Left button enabled\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.btn0Enabled),callback:function ($$v) {_vm.$set(_vm.config, \"btn0Enabled\", $$v)},expression:\"config.btn0Enabled\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"Pin for left button (ESP8266 only)\",\"disabled\":(!_vm.config.isESP8266, !_vm.config.btn0Enabled)},model:{value:(_vm.config.btn0Pin),callback:function ($$v) {_vm.$set(_vm.config, \"btn0Pin\", $$v)},expression:\"config.btn0Pin\"}}),_c('v-select',{attrs:{\"items\":_vm.btnLowHigh,\"type\":\"number\",\"label\":\"Left button signal type\",\"disabled\":!_vm.config.btn0Enabled},model:{value:(_vm.config.btn0PressedLevel),callback:function ($$v) {_vm.$set(_vm.config, \"btn0PressedLevel\", $$v)},expression:\"config.btn0PressedLevel\"}}),_c('br'),_c('v-switch',{attrs:{\"label\":\"Middle button enabled\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.btn1Enabled),callback:function ($$v) {_vm.$set(_vm.config, \"btn1Enabled\", $$v)},expression:\"config.btn1Enabled\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"Pin for middle button (ESP8266 only)\",\"disabled\":(!_vm.config.isESP8266, !_vm.config.btn1Enabled)},model:{value:(_vm.config.btn1Pin),callback:function ($$v) {_vm.$set(_vm.config, \"btn1Pin\", $$v)},expression:\"config.btn1Pin\"}}),_c('v-select',{attrs:{\"items\":_vm.btnLowHigh,\"type\":\"number\",\"label\":\"Middle button signal type\",\"disabled\":!_vm.config.btn1Enabled},model:{value:(_vm.config.btn1PressedLevel),callback:function ($$v) {_vm.$set(_vm.config, \"btn1PressedLevel\", $$v)},expression:\"config.btn1PressedLevel\"}}),_c('br'),_c('v-switch',{attrs:{\"label\":\"Right button enabled\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.config.btn2Enabled),callback:function ($$v) {_vm.$set(_vm.config, \"btn2Enabled\", $$v)},expression:\"config.btn2Enabled\"}}),_c('v-select',{attrs:{\"items\":_vm.pinsESP8266,\"type\":\"number\",\"label\":\"Pin for right button (ESP8266 only)\",\"disabled\":(!_vm.config.isESP8266, !_vm.config.btn2Enabled)},model:{value:(_vm.config.btn2Pin),callback:function ($$v) {_vm.$set(_vm.config, \"btn2Pin\", $$v)},expression:\"config.btn2Pin\"}}),_c('v-select',{attrs:{\"items\":_vm.btnLowHigh,\"type\":\"number\",\"label\":\"Right button signal type\",\"disabled\":!_vm.config.btn2Enabled},model:{value:(_vm.config.btn2PressedLevel),callback:function ($$v) {_vm.$set(_vm.config, \"btn2PressedLevel\", $$v)},expression:\"config.btn2PressedLevel\"}})],1),_c('br'),_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Button actions\")])]),_c('hr'),_c('br'),_c('v-select',{attrs:{\"items\":_vm.btnActions,\"type\":\"number\",\"label\":\"Left button action\",\"disabled\":!_vm.config.btn0Enabled},model:{value:(_vm.config.btn0Action),callback:function ($$v) {_vm.$set(_vm.config, \"btn0Action\", $$v)},expression:\"config.btn0Action\"}}),_c('v-select',{attrs:{\"items\":_vm.btnActions,\"type\":\"number\",\"label\":\"Middle button action\",\"disabled\":!_vm.config.btn1Enabled},model:{value:(_vm.config.btn1Action),callback:function ($$v) {_vm.$set(_vm.config, \"btn1Action\", $$v)},expression:\"config.btn1Action\"}}),_c('v-select',{attrs:{\"items\":_vm.btnActions,\"type\":\"number\",\"label\":\"Right button action\",\"disabled\":!_vm.config.btn2Enabled},model:{value:(_vm.config.btn2Action),callback:function ($$v) {_vm.$set(_vm.config, \"btn2Action\", $$v)},expression:\"config.btn2Action\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SensorsButtons.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SensorsButtons.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SensorsButtons.vue?vue&type=template&id=24e701a5&\"\nimport script from \"./SensorsButtons.vue?vue&type=script&lang=js&\"\nexport * from \"./SensorsButtons.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VForm,VRow,VSelect,VSwitch,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"home\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"JSON String\")])]),_c('hr'),_c('br'),_c('prism-editor',{staticClass:\"editor\",attrs:{\"highlight\":_vm.highlighter,\"line-numbers\":\"\"},model:{value:(_vm.testarea.json),callback:function ($$v) {_vm.$set(_vm.testarea, \"json\", $$v)},expression:\"testarea.json\"}}),_c('br'),_c('div',{staticClass:\"text-center\"},[_c('ButtonCondition',{attrs:{\"color\":\"info\",\"condition\":_vm.sockedIsConnected,\"text\":\"Send JSON\",\"icon\":\"mdi-cloud-upload\",\"onclick\":_vm.sendJson}})],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Text / Brightness\")])]),_c('hr'),_c('br'),_c('span',{staticClass:\"text-h2 font-weight-light\",domProps:{\"textContent\":_vm._s(_vm.testarea.brightness)}}),_c('span',{staticClass:\"subheading font-weight-light mr-1\"},[_vm._v(\"Brightness\")]),_c('v-slider',{attrs:{\"max\":\"255\",\"min\":\"0\"},on:{\"end\":_vm.sendBrightness},model:{value:(_vm.testarea.brightness),callback:function ($$v) {_vm.$set(_vm.testarea, \"brightness\", $$v)},expression:\"testarea.brightness\"}}),_c('v-text-field',{attrs:{\"label\":\"Text to send\"},model:{value:(_vm.testarea.text),callback:function ($$v) {_vm.$set(_vm.testarea, \"text\", $$v)},expression:\"testarea.text\"}}),_c('div',{staticClass:\"text-center\"},[_c('ButtonCondition',{attrs:{\"color\":\"info\",\"condition\":_vm.sockedIsConnected,\"text\":\"Send Text\",\"icon\":\"mdi-cloud-upload\",\"onclick\":_vm.sendText}})],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Bitmap Array\")])]),_c('hr'),_c('br'),_c('prism-editor',{staticClass:\"editor\",attrs:{\"highlight\":_vm.highlighter},model:{value:(_vm.testarea.image),callback:function ($$v) {_vm.$set(_vm.testarea, \"image\", $$v)},expression:\"testarea.image\"}}),_c('br'),_c('div',{staticClass:\"text-center\"},[_c('ButtonCondition',{attrs:{\"color\":\"info\",\"condition\":_vm.sockedIsConnected,\"text\":\"Send Bitmap\",\"icon\":\"mdi-cloud-upload\",\"onclick\":_vm.sendBitmap}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TestArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TestArea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TestArea.vue?vue&type=template&id=392b45dd&\"\nimport script from \"./TestArea.vue?vue&type=script&lang=js&\"\nexport * from \"./TestArea.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TestArea.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VRow,VSlider,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"home\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Firmware\")])]),_c('hr'),_c('br'),_c('div',{staticClass:\"text-center\"},[_c('v-file-input',{attrs:{\"prepend-icon\":\"mdi-file-powerpoint-outline\",\"show-size\":\"\",\"filled\":\"\",\"accept\":\".bin\",\"label\":\"Select firmware upload\",\"dense\":\"\"},model:{value:(_vm.firmwareFile),callback:function ($$v) {_vm.firmwareFile=$$v},expression:\"firmwareFile\"}}),_c('ButtonCondition',{attrs:{\"color\":\"success\",\"condition\":_vm.sockedIsConnected,\"text\":\"Update Firmware\",\"icon\":\"mdi-file-upload\",\"onclick\":_vm.uploadFirmware}})],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Filesystem\")])]),_c('hr'),_c('br'),_c('div',{staticClass:\"text-center\"},[_c('v-file-input',{attrs:{\"prepend-icon\":\"mdi-file-powerpoint-outline\",\"show-size\":\"\",\"filled\":\"\",\"accept\":\".bin\",\"label\":\"Select filesystem upload\",\"dense\":\"\"},model:{value:(_vm.filesystemFile),callback:function ($$v) {_vm.filesystemFile=$$v},expression:\"filesystemFile\"}}),_c('ButtonCondition',{attrs:{\"color\":\"success\",\"condition\":_vm.sockedIsConnected,\"text\":\"Update Filesystem\",\"icon\":\"mdi-file-upload\",\"onclick\":_vm.uploadFilesystem}})],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('v-card-title',[_c('h2',[_vm._v(\"Download Stats\")]),_c('span',{staticClass:\"smallInfo\"},[_vm._v(\"( last 4 versions )\")])]),_c('hr'),_c('DownloadStats',{attrs:{\"items\":_vm.gitReleases}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.items),function(item){return _c('v-list',{key:item.version,staticClass:\"pa-2\"},[_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"pointer\",on:{\"click\":function($event){return _vm.gotToURL(item.downloadURL)}}},[_c('v-badge',{attrs:{\"color\":\"green\",\"content\":item.downloads,\"inline\":\"\"}},[_c('h3',[_vm._v(_vm._s(item.version)+\" (\"+_vm._s(item.date)+\")\")])])],1),_c('span',{staticClass:\"header\"},[_vm._v(\"Downloads:\")]),_c('br'),_vm._l((item.fwdownloads),function(fwdownload){return _c('v-list-item-subtitle',{key:fwdownload.name,staticClass:\"details\"},[_vm._v(\" • \"+_vm._s(fwdownload.name)+\" \"),_c('span',{staticClass:\"downloads\"},[_vm._v(_vm._s(fwdownload.downloads))])])}),_c('span',{staticClass:\"header\"},[_vm._v(\"Release notes:\")]),_c('br'),_vm._l((item.releaseNoteArray),function(releaseNote){return _c('v-list-item-subtitle',{key:releaseNote,staticClass:\"details\"},[_vm._v(\" • \"+_vm._s(releaseNote)+\" \")])})],2),_c('v-divider',{attrs:{\"inset\":false}})],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadStats.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadStats.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DownloadStats.vue?vue&type=template&id=7969e820&\"\nimport script from \"./DownloadStats.vue?vue&type=script&lang=js&\"\nexport * from \"./DownloadStats.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DownloadStats.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VBadge,VDivider,VList,VListItemContent,VListItemSubtitle,VListItemTitle})\n","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=5fe93dec&\"\nimport script from \"./Update.vue?vue&type=script&lang=js&\"\nexport * from \"./Update.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VFileInput,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"gallery\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.isLoading,\"single-line\":\"\",\"outlined\":\"\",\"filled\":\"\",\"hide-details\":\"\",\"auto-grow\":\"\",\"label\":\"Live search based on name or id\",\"type\":\"text\"},model:{value:(_vm.message),callback:function ($$v) {_vm.message=$$v},expression:\"message\"}})],1),(_vm.isLoading)?_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('fold',{attrs:{\"loading\":_vm.isLoading}}),_vm._v(\" Loading... \")],1):_vm._e(),_vm._l((_vm.getBMPs),function(bmp){return _c('v-col',{key:bmp.id,attrs:{\"cols\":\"6\",\"lg\":\"2\"}},[_c('v-card',{staticClass:\"pa-2\",attrs:{\"elevation\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(bmp.name)+\" \")]),_c('hr'),_c('p'),_c('BmpCanvas',{attrs:{\"bmp\":bmp}}),_c('p'),_c('hr'),_c('div',{staticClass:\"text-center\"},[_c('BmpDialog',{attrs:{\"bmp\":bmp}}),_vm._v(\" ID: \"+_vm._s(bmp.id)+\" \"),_c('v-btn',{staticClass:\"float-right\",attrs:{\"icon\":\"\",\"title\":\"Send to Pixel It\"},on:{\"click\":function($event){return _vm.sendBitmap(bmp.rgB565Array, bmp.sizeX)}}},[_c('v-icon',[_vm._v(\"mdi-cloud-upload\")])],1)],1)],1)],1)})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('canvas',{directives:[{name:\"insertbmp\",rawName:\"v-insertbmp\",value:(_vm.bmp),expression:\"bmp\"}],attrs:{\"height\":_vm.height ? _vm.height : 150,\"width\":_vm.width ? _vm.width : _vm.bmp.sizeX == 8 ? 150 : 230}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BmpCanvas.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BmpCanvas.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BmpCanvas.vue?vue&type=template&id=6c7c9044&\"\nimport script from \"./BmpCanvas.vue?vue&type=script&lang=js&\"\nexport * from \"./BmpCanvas.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"500\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"float-left\",attrs:{\"icon\":\"\",\"title\":\"More information\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-information-outline\")])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.bmp.name)+\" \")])]),_c('v-divider'),_c('v-card-text',[_c('BmpCanvas',{staticClass:\"float-right\",attrs:{\"bmp\":_vm.bmp,\"height\":\"80\",\"width\":_vm.bmp.sizeX == 8 ? '80' : '160'}}),_c('p'),_vm._v(\" Added by: \"+_vm._s(_vm.bmp.username)),_c('br'),_vm._v(\" Added on: \"+_vm._s(_vm.bmp.dateTime.split(\"T\")[0])),_c('br'),_vm._v(\" Animated: \"+_vm._s(_vm.bmp.animated ? \"Yes\" : \"No\")),_c('br'),_c('br'),_c('v-textarea',{attrs:{\"filled\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"rows\":\"8\"},model:{value:(_vm.bmp.rgB565Array),callback:function ($$v) {_vm.$set(_vm.bmp, \"rgB565Array\", $$v)},expression:\"bmp.rgB565Array\"}})],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\" close \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BmpDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BmpDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BmpDialog.vue?vue&type=template&id=67996cc8&\"\nimport script from \"./BmpDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./BmpDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VDivider,VIcon,VSpacer,VTextarea})\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gallery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Gallery.vue?vue&type=template&id=cfe8119c&scoped=true&\"\nimport script from \"./Gallery.vue?vue&type=script&lang=js&\"\nexport * from \"./Gallery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gallery.vue?vue&type=style&index=0&id=cfe8119c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfe8119c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCol,VContainer,VIcon,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"gallery\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"12\"}},[_c('v-bottom-navigation',{attrs:{\"value\":_vm.pixelMode,\"color\":\"primary\"}},[_c('v-btn',{on:{\"click\":function($event){return _vm.changePixelModeTo8x8()}}},[_c('span',[_vm._v(\"8x8 Pixel\")]),_c('v-icon',[_vm._v(\"mdi-grid\")])],1),_c('v-btn',{on:{\"click\":function($event){return _vm.changePixelModeTo8x32()}}},[_c('span',[_vm._v(\"8x32 Pixel\")]),_c('v-icon',[_vm._v(\"mdi-grid\")])],1)],1)],1)],1),(_vm.pixelMode == 0)?_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"3\",\"offset-lg\":\"3\"}},[_c('v-card',{staticClass:\"pa-3\",attrs:{\"elevation\":\"4\"}},[_c('Art',{attrs:{\"colors\":_vm.colors,\"pixelCount\":\"64\",\"func\":_vm.onclick}}),_c('p'),_c('v-textarea',{attrs:{\"filled\":\"\",\"outlined\":\"\",\"rows\":\"5\",\"hide-details\":\"\"},model:{value:(_vm.array8x8String),callback:function ($$v) {_vm.array8x8String=$$v},expression:\"array8x8String\"}}),_c('v-switch',{attrs:{\"label\":\"Live draw\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.livedraw),callback:function ($$v) {_vm.livedraw=$$v},expression:\"livedraw\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"3\"}},[_c('v-card',{staticClass:\"pa-3\",attrs:{\"elevation\":\"4\"}},[_c('v-color-picker',{attrs:{\"mode\":\"hexa\",\"dot-size\":\"20\",\"show-swatches\":\"\",\"swatches-max-height\":\"240\"},model:{value:(_vm.colors),callback:function ($$v) {_vm.colors=$$v},expression:\"colors\"}})],1)],1)],1):_vm._e(),(_vm.pixelMode == 1)?_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"7\",\"offset-lg\":\"1\"}},[_c('v-card',{staticClass:\"pa-3\",attrs:{\"elevation\":\"4\"}},[_c('Art',{attrs:{\"colors\":_vm.colors,\"pixelCount\":\"256\",\"func\":_vm.onclick}}),_c('p'),_c('v-textarea',{attrs:{\"filled\":\"\",\"outlined\":\"\",\"rows\":\"5\",\"hide-details\":\"\"},model:{value:(_vm.array8x32String),callback:function ($$v) {_vm.array8x32String=$$v},expression:\"array8x32String\"}}),_c('v-switch',{attrs:{\"label\":\"Live draw\",\"disabled\":!_vm.sockedIsConnected,\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.livedraw),callback:function ($$v) {_vm.livedraw=$$v},expression:\"livedraw\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"3\"}},[_c('v-card',{staticClass:\"pa-3\",attrs:{\"elevation\":\"4\"}},[_c('v-color-picker',{attrs:{\"mode\":\"hexa\",\"dot-size\":\"20\",\"show-swatches\":\"\",\"swatches-max-height\":\"250\"},model:{value:(_vm.colors),callback:function ($$v) {_vm.colors=$$v},expression:\"colors\"}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:({ width: _vm.getWidth(), height: _vm.getHeight() }),attrs:{\"id\":\"art\"}},_vm._l((_vm.getPixelCount()),function(n){return _c('Pixel',{key:n,attrs:{\"coloring\":_vm.color,\"id\":n,\"func\":_vm.func,\"pixelDimensions\":_vm.getPixelDimensions()}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pixel\",style:({ background: _vm.activeBackground, height: _vm.getPixel(), width: _vm.getPixel() }),on:{\"click\":_vm.changeColor}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pixel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pixel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pixel.vue?vue&type=template&id=8f1ad808&scoped=true&\"\nimport script from \"./Pixel.vue?vue&type=script&lang=js&\"\nexport * from \"./Pixel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Pixel.vue?vue&type=style&index=0&id=8f1ad808&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8f1ad808\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Art.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Art.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Art.vue?vue&type=template&id=be91b556&scoped=true&\"\nimport script from \"./Art.vue?vue&type=script&lang=js&\"\nexport * from \"./Art.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Art.vue?vue&type=style&index=0&id=be91b556&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"be91b556\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Creator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Creator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Creator.vue?vue&type=template&id=64088c90&scoped=true&\"\nimport script from \"./Creator.vue?vue&type=script&lang=js&\"\nexport * from \"./Creator.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Creator.vue?vue&type=style&index=0&id=64088c90&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64088c90\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBottomNavigation } from 'vuetify/lib/components/VBottomNavigation';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBottomNavigation,VBtn,VCard,VCol,VColorPicker,VContainer,VIcon,VRow,VSwitch,VTextarea})\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport Home from '../views/Home.vue'\r\nimport Options from '../views/Options.vue'\r\nimport SensorsButtons from '../views/SensorsButtons.vue'\r\nimport TestArea from '../views/TestArea.vue'\r\nimport Update from '../views/Update.vue'\r\nimport Gallery from '../views/Gallery.vue'\r\nimport Creator from '../views/Creator.vue'\r\n\r\nVue.use(VueRouter)\r\n\r\nconst routes = [{\r\n path: '/',\r\n name: 'Home',\r\n component: Home\r\n },\r\n {\r\n path: '/options',\r\n name: 'Options',\r\n component: Options\r\n },\r\n {\r\n path: '/sensorsbuttons',\r\n name: 'Sensors & Buttons',\r\n component: SensorsButtons\r\n },\r\n {\r\n path: '/testarea',\r\n name: 'TestArea',\r\n component: TestArea\r\n },\r\n {\r\n path: '/update',\r\n name: 'Update',\r\n component: Update\r\n },\r\n {\r\n path: '/gallery',\r\n name: 'Gallery',\r\n component: Gallery\r\n },\r\n {\r\n path: '/creator',\r\n name: 'Creator',\r\n component: Creator\r\n },\r\n]\r\n\r\nconst router = new VueRouter({\r\n routes\r\n})\r\n\r\nexport default router","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\n\r\nlet pingInterval;\r\n\r\nVue.use(Vuex);\r\n\r\nexport default new Vuex.Store({\r\n state: {\r\n socket: {\r\n isConnected: false,\r\n reconnectError: false,\r\n },\r\n testarea: {\r\n brightness: 0,\r\n json: JSON.stringify(\r\n {\r\n text: {\r\n textString: \"Pixel it 😀\",\r\n scrollText: \"auto\",\r\n bigFont: false,\r\n centerText: false,\r\n scrollTextDelay: 40,\r\n hexColor: \"#FFFFFF\",\r\n position: {\r\n x: 0,\r\n y: 1,\r\n },\r\n },\r\n },\r\n null,\r\n 4\r\n ),\r\n text: \"€ ← ↑ → ↓ ★ 📁 ♥ ↧ 🚗 😀\",\r\n image: \"[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,65535,0,44373,44373,65535,0,33808,33808,65535,0,33808,33808,65535,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,0,65535,44373,44373,0,65535,33808,33808,0,65535,33808,33808,0,65535,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,65535,65535,44373,44373,65535,65535,33808,33808,65535,0,44373,44373,65535,0,33808,33808,65535,0,33808,33808,65535,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0],[33808,0,0,0,0,0,0,33808,43680,33808,0,0,0,0,33808,43680,43680,33808,44373,44373,44373,44373,33808,43680,33808,44373,44373,44373,44373,44373,44373,33808,33808,44373,44373,44373,44373,44373,44373,33808,33808,0,0,33808,33808,0,0,33808,0,33808,33808,43680,43680,33808,33808,0,0,0,33808,33808,33808,33808,0,0]\",\r\n },\r\n newVersionAvailable: false,\r\n version: null,\r\n gitVersion: null,\r\n gitDownloadUrl: null,\r\n gitReleases: [],\r\n pixelItIpAdress: null,\r\n logData: [],\r\n sensorData: [],\r\n buttonData: [],\r\n sysInfoData: [],\r\n configData: {},\r\n rules: {\r\n required: (value) => !!value || value == \"0\" || \"Required.\",\r\n max20Chars: (value) => value.length <= 20 || \"Max 20 characters\",\r\n email: (value) => {\r\n const pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return pattern.test(value) || \"Invalid e-mail.\";\r\n },\r\n min0: (value) => value >= 0 || \"Must be greater than or equal to 0\",\r\n max255: (value) => value <= 255 || \"Must be less than or equal to 255\",\r\n minMinus12: (value) => value >= -12 || \"Must be greater than or equal to -12\",\r\n max14: (value) => value <= 14 || \"Must be less than or equal to 14\",\r\n portRange: (value) => (value > 0 && value <= 65535) || \"Must be between 1 and 65535\",\r\n volumeRange: (value) => (value > 0 && value <= 30) || \"Must be between 1 and 30\",\r\n // Can not be solved like this, we do not have access to the store.\r\n // noPinDuplicates: value => (( //dirty code, but creating an array and running a loop seems to be over-engineering\r\n // this.config.DFPRXpin!=this.config.DFPTXpin && this.config.DFPRXpin!=this.config.BMESDAPin && this.config.DFPRXpin!=this.config.BMESCLPin && this.config.DFPRXpin!=this.config.DHTPin\r\n // && this.config.DFPTXpin!=this.config.BMESDAPin && this.config.DFPTXpin!=this.config.BMESCLPin && this.config.DFPTXpin!=this.config.DHTPin\r\n // && this.config.BMESDAPin!=this.config.BMESCLPin && this.config.BMESDAPin!=this.config.DHTPin\r\n // //DHT pin and BME-SCL-pin may be identical!\r\n // ) || 'Pin assignment must be unique'),\r\n },\r\n navLinks: [\r\n { title: \"Dashboard\", icon: \"mdi-memory\", page: \"/\" },\r\n { title: \"Options\", icon: \"mdi-tune-vertical\", page: \"/options\" },\r\n { title: \"Sensors & Buttons\", icon: \"mdi-gesture-tap-button\", page: \"/sensorsbuttons\" },\r\n { title: \"Test Area\", icon: \"mdi-cube-outline\", page: \"/testarea\" },\r\n { title: \"Update\", icon: \"mdi-tray-arrow-up\", page: \"/update\" },\r\n //{ title: \"Pixel Gallery\", icon: \"mdi-image-outline\", url: \"https://pixelit.bastelbunker.de/PixelGallery\", target: \"_blank\" },\r\n { title: \"Pixel Gallery\", icon: \"mdi-image-outline\", page: \"/gallery\" },\r\n { title: \"Pixel Creator\", icon: \"mdi-pencil-box-outline\", url: \"https://pixelit.bastelbunker.de/PixelCreator\", target: \"_blank\" },\r\n //{ title: \"Pixel Creator\", icon: \"mdi-pencil-box-outline\", page: \"/creator\" },\r\n { title: \"Forum\", icon: \"mdi-forum-outline\", url: \"https://github.com/o0shojo0o/PixelIt/discussions\", target: \"_blank\" },\r\n { title: \"Blog\", icon: \"mdi-post-outline\", url: \"https://www.bastelbunker.de/pixel-it/\", target: \"_blank\" },\r\n { title: \"Documentation\", icon: \"mdi-book-open-page-variant-outline\", url: \"https://docs.bastelbunker.de/pixelit/\", target: \"_blank\" },\r\n { title: \"GitHub\", icon: \"mdi-github\", url: \"https://github.com/o0shojo0o/PixelIt\", target: \"_blank\" },\r\n ],\r\n matrixTypes: [\r\n { text: \"Type 1 - Colum major\", value: 1 },\r\n { text: \"Type 2 - Row major\", value: 2 },\r\n { text: \"Type 3 - Tiled 4x 8x8 CJMCU\", value: 3 },\r\n ],\r\n matrixCorrection: [\r\n { text: \"Default\", value: \"default\" },\r\n { text: \"Typical SMD 5050\", value: \"typicalsmd5050\" },\r\n { text: \"Typical 8mm Pixel\", value: \"typical8mmpixel\" },\r\n { text: \"Tungsten 40W\", value: \"tungsten40w\" },\r\n { text: \"Tungsten 100W\", value: \"tungsten100w\" },\r\n { text: \"Halogen\", value: \"halogen\" },\r\n { text: \"Carbon Arc\", value: \"carbonarc\" },\r\n { text: \"High Noon Sun\", value: \"highnoonsun\" },\r\n { text: \"Direct Sunlight\", value: \"directsunlight\" },\r\n { text: \"Overcast Sky\", value: \"overcastsky\" },\r\n { text: \"Clear Blue Sky\", value: \"clearbluesky\" },\r\n { text: \"Warm Fluorescent\", value: \"warmfluorescent\" },\r\n { text: \"Standard Fluorescent\", value: \"standardfluorescent\" },\r\n { text: \"Cool White Fluorescent\", value: \"coolwhitefluorescent\" },\r\n { text: \"Full Spectrum Fluorescent\", value: \"fullspectrumfluorescent\" },\r\n { text: \"Grow Light Fluorescent\", value: \"growlightfluorescent\" },\r\n { text: \"Black Light Fluorescent\", value: \"blacklightfluorescent\" },\r\n { text: \"Mercury Vapor\", value: \"mercuryvapor\" },\r\n { text: \"Sodium Vapor\", value: \"sodiumvapor\" },\r\n { text: \"Metal Halide\", value: \"metalhalide\" },\r\n { text: \"High Pressure Sodium\", value: \"highpressuresodium\" },\r\n ],\r\n // matrixColorOrder:[\r\n // { text: \"RGB - Red, Green, Blue\", value: 0 },\r\n // { text: \"RBG - Red, Blue, Green\", value: 1 },\r\n // { text: \"GRB - Green, Red, Blue\", value: 2 },\r\n // { text: \"GBR - Green, Blue, Red\", value: 3 },\r\n // { text: \"BRG - Blue, Red, Green\", value: 4 },\r\n // { text: \"BGR - Blue, Green, Red\", value: 5 },\r\n // ],\r\n autoFallbackAnimation: [\r\n { text: \"None\", value: 0 },\r\n { text: \"Fade\", value: 1 },\r\n { text: \"Colored Bar Wipe\", value: 2 },\r\n { text: \"ZigZag Wipe\", value: 3 },\r\n { text: \"Random Wipe\", value: 4 },\r\n ],\r\n temperatureUnits: [\r\n { text: \"Celsius °C\", value: 0 },\r\n { text: \"Fahrenheit °F\", value: 1 },\r\n ],\r\n ldrDevices: [\r\n { text: \"GL5516\", value: \"GL5516\" },\r\n { text: \"GL5528\", value: \"GL5528\" },\r\n { text: \"GL5537_1\", value: \"GL5537_1\" },\r\n { text: \"GL5537_2\", value: \"GL5537_2\" },\r\n { text: \"GL5539\", value: \"GL5539\" },\r\n { text: \"GL5549\", value: \"GL5549\" },\r\n ],\r\n pinsESP8266: [\r\n { text: \"Pin D0\", value: \"Pin_D0\" },\r\n { text: \"Pin D1\", value: \"Pin_D1\" },\r\n { text: \"Pin D3\", value: \"Pin_D3\" },\r\n { text: \"Pin D4\", value: \"Pin_D4\" },\r\n { text: \"Pin D5\", value: \"Pin_D5\" },\r\n { text: \"Pin D6\", value: \"Pin_D6\" },\r\n { text: \"Pin D7\", value: \"Pin_D7\" },\r\n { text: \"Pin D8\", value: \"Pin_D8\" },\r\n ],\r\n btnLowHigh: [\r\n { text: \"Active low\", value: 0 },\r\n { text: \"Active high\", value: 1 },\r\n ],\r\n btnActions: [\r\n { text: \"None (only send to MQTT and API)\", value: 0 },\r\n { text: \"Go to Clock\", value: 1 },\r\n { text: \"Toggle Sleep Mode\", value: 2 },\r\n { text: \"MP3: Toggle Play/Pause\", value: 3 },\r\n { text: \"MP3: Previous track\", value: 4 },\r\n { text: \"MP3: Next track\", value: 5 },\r\n ],\r\n bmpsFromAPI: [],\r\n pixelCreatorPixel: {},\r\n },\r\n mutations: {\r\n SOCKET_ONOPEN(state, event) {\r\n Vue.prototype.$socket = event.currentTarget;\r\n state.socket.isConnected = true;\r\n // Send Ping!?\r\n pingInterval = setInterval(() => {\r\n Vue.prototype.$socket.send(0x9);\r\n }, 1000);\r\n },\r\n SOCKET_ONCLOSE(state) {\r\n state.socket.isConnected = false;\r\n clearInterval(pingInterval);\r\n },\r\n SOCKET_ONERROR(state, event) {\r\n console.error(state, event);\r\n },\r\n // default handler called for all methods\r\n SOCKET_ONMESSAGE(state, message) {\r\n //console.log(message);\r\n // Log\r\n if (message.log) {\r\n addToLogData(message.log, state);\r\n }\r\n // Sensor\r\n else if (message.sensor) {\r\n addToSensorData(message.sensor, state);\r\n }\r\n // Buttons\r\n else if (message.buttons) {\r\n addToButtonData(message.buttons, state);\r\n }\r\n // Config\r\n else if (message.config) {\r\n addToConfigData(message.config, state);\r\n }\r\n // SystemInfo\r\n else if (message.sysinfo) {\r\n addToSysInfoData(message.sysinfo, state);\r\n }\r\n },\r\n // mutations for reconnect methods\r\n SOCKET_RECONNECT(state, count) {\r\n console.info(state, count);\r\n },\r\n SOKE(state) {\r\n state.socket.reconnectError = true;\r\n },\r\n SOCKET_RECONNECT_ERROR(state) {\r\n state.socket.reconnectError = true;\r\n },\r\n },\r\n actions: {},\r\n modules: {},\r\n});\r\n\r\nfunction addToLogData(obj, state) {\r\n state.logData.unshift(`[${obj.timeStamp}] ${obj.function}: ${obj.message}`);\r\n if (state.logData.length > 100) {\r\n state.logData = state.logData.slice(0, 100);\r\n }\r\n}\r\n\r\nfunction addToSensorData(obj, state) {\r\n for (const key in obj) {\r\n const oldEntry = state.sensorData.find((x) => x.name == getDisplayName(key));\r\n if (oldEntry) {\r\n oldEntry.value = getDisplayValue(key, obj[key]);\r\n } else {\r\n state.sensorData.push({ name: getDisplayName(key), value: getDisplayValue(key, obj[key]) });\r\n }\r\n }\r\n}\r\n\r\nfunction addToButtonData(obj, state) {\r\n for (const key in obj) {\r\n const oldEntry = state.buttonData.find((x) => x.name == getDisplayName(key));\r\n if (oldEntry) {\r\n oldEntry.value = getDisplayValue(key, obj[key]);\r\n } else {\r\n state.buttonData.push({ name: getDisplayName(key), value: getDisplayValue(key, obj[key]) });\r\n }\r\n }\r\n}\r\n\r\nfunction addToConfigData(obj, state) {\r\n state.configData = obj;\r\n state.testarea.brightness = obj.matrixBrightness;\r\n}\r\n\r\nfunction addToSysInfoData(obj, state) {\r\n for (const key in obj) {\r\n const oldEntry = state.sysInfoData.find((x) => x.name === getDisplayName(key));\r\n if (oldEntry) {\r\n oldEntry.value = getDisplayValue(key, obj[key]);\r\n } else {\r\n state.sysInfoData.push({ name: getDisplayName(key), value: getDisplayValue(key, obj[key]) });\r\n }\r\n if (key === \"pixelitVersion\") {\r\n state.version = obj[key];\r\n }\r\n }\r\n}\r\n\r\nfunction getDisplayName(key) {\r\n switch (key) {\r\n case \"lux\":\r\n key = \"Luminance\";\r\n break;\r\n case \"temperature\":\r\n key = \"Temperature\";\r\n break;\r\n case \"humidity\":\r\n key = \"Humidity\";\r\n break;\r\n case \"gas\":\r\n key = \"Gas\";\r\n break;\r\n case \"pressure\":\r\n key = \"Pressure\";\r\n break;\r\n case \"pixelitVersion\":\r\n key = \"PixelIt version\";\r\n break;\r\n case \"hostname\":\r\n key = \"Hostname\";\r\n break;\r\n case \"note\":\r\n key = \"Note\";\r\n break;\r\n case \"sketchSize\":\r\n key = \"Sketch size\";\r\n break;\r\n case \"freeSketchSpace\":\r\n key = \"Free sketch space\";\r\n break;\r\n case \"wifiRSSI\":\r\n key = \"Wifi RSSI\";\r\n break;\r\n case \"wifiQuality\":\r\n key = \"Wifi quality\";\r\n break;\r\n case \"wifiSSID\":\r\n key = \"Wifi SSID\";\r\n break;\r\n case \"ipAddress\":\r\n key = \"IP-Address\";\r\n break;\r\n case \"freeHeap\":\r\n key = \"Free heap\";\r\n break;\r\n case \"chipID\":\r\n key = \"ChipID\";\r\n break;\r\n case \"cpuFreqMHz\":\r\n key = \"CPU freq.\";\r\n break;\r\n case \"sleepMode\":\r\n key = \"Sleep mode\";\r\n break;\r\n case \"button0\":\r\n key = \"Left button\";\r\n break;\r\n case \"button1\":\r\n key = \"Middle button\";\r\n break;\r\n case \"button2\":\r\n key = \"Right button\";\r\n break;\r\n }\r\n return key;\r\n}\r\n\r\nfunction getDisplayValue(key, value) {\r\n switch (key) {\r\n case \"lux\":\r\n if (typeof value == \"number\") {\r\n value = value.toFixed(3) + \" lux\";\r\n }\r\n break;\r\n case \"note\":\r\n if (!value.trim()) {\r\n value = \"---\";\r\n }\r\n break;\r\n case \"sketchSize\":\r\n case \"freeSketchSpace\":\r\n case \"freeHeap\":\r\n value = humanFileSize(value, true);\r\n break;\r\n case \"wifiRSSI\":\r\n value += \" dBm\";\r\n break;\r\n case \"wifiQuality\":\r\n value += \" %\";\r\n break;\r\n case \"cpuFreqMHz\":\r\n value += \" MHz\";\r\n break;\r\n case \"sleepMode\":\r\n value = value ? \"On\" : \"Off\";\r\n break;\r\n case \"temperature\":\r\n if (typeof value == \"number\") {\r\n value = value.toFixed(1) + \" °C\";\r\n }\r\n break;\r\n case \"humidity\":\r\n if (typeof value == \"number\") {\r\n value = value.toFixed(1) + \" %\";\r\n }\r\n break;\r\n case \"pressure\":\r\n if (typeof value == \"number\") {\r\n value = Math.round(value) + \" hPa\";\r\n }\r\n break;\r\n case \"gas\":\r\n if (typeof value == \"number\") {\r\n value = Math.round(value) + \" kOhm\";\r\n }\r\n break;\r\n }\r\n return value;\r\n}\r\n\r\nfunction humanFileSize(bytes, si = false, dp = 1) {\r\n const thresh = si ? 1000 : 1024;\r\n\r\n if (Math.abs(bytes) < thresh) {\r\n return bytes + \" B\";\r\n }\r\n\r\n const units = si ? [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"] : [\"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\r\n let u = -1;\r\n const r = 10 ** dp;\r\n\r\n do {\r\n bytes /= thresh;\r\n ++u;\r\n } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\r\n\r\n return bytes.toFixed(dp) + \" \" + units[u];\r\n}\r\n","import Vue from 'vue';\r\nimport Vuetify from 'vuetify/lib/framework';\r\n\r\nVue.use(Vuetify);\r\n\r\nexport default new Vuetify({\r\n});\r\n","import '@babel/polyfill'\r\nimport 'mutationobserver-shim'\r\nimport Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport vuetify from './plugins/vuetify'\r\nimport VueCookies from 'vue-cookies'\r\nimport VueNativeSock from 'vue-native-websocket'\r\nimport VueSpinners from 'vue-spinners'\r\n\r\n\r\nlet url;\r\nif (location.host.includes(\":\")) {\r\n url = \"192.168.3.5\";\r\n} else {\r\n url = location.host;\r\n}\r\n\r\nVue.use(VueSpinners);\r\nVue.use(VueCookies);\r\nVue.use(VueNativeSock, `ws://${url}:81`, { store: store, reconnection: true, format: 'json' });\r\nVue.$cookies.config('10y');\r\nVue.config.productionTip = false;\r\nnew Vue({\r\n router,\r\n store,\r\n vuetify,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&id=449ca0b3&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gallery.vue?vue&type=style&index=0&id=cfe8119c&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAECCAIAAACaLU4HAAAGmElEQVR42u3dsY0cVgxF0VUVUjPSAq7H5bgeAyM1I3dhw+uU5EvGoIbnBhs+JnswP5r59P3xeJNu9wkD6T8G397fn3TgY//P929P2v/t8f2fv1+ftv/j3/2f7389af/L4/ML7D/7/+fZ+xgMYZDsYxCdwaAKgz4MojDYsI9BdAaDKgz6MIjCYMM+BtEZDKow6MMgCoMN+xhEZzCowqAPgygMNuxjEJ3BoAqDPgyiMNiwj0F0BoMqDPowiMJgwz4G0RkMqjDowyAKgw37GERnMKjCoA+DKAw27GMQncGgCoM+DKIw2LCPQXQGgyoM+jCIwmDDPgbRGQyqMOjDIAqDDfsYRGcwqMKgD4MoDDbsYxCdwaAKgz4MojDYsI9BdAaDKgz6MIjCYMP+izCQLoeB5FE09fEo+tU/9J+9//WPZz26fvz+fzy6MBjCINnHIDqDQRUGfRhEYbBhH4PoDAZVGPRhEIXBhn0MojMYVGHQh0EUBhv2MYjOYFCFQR8GURhs2McgOoNBFQZ9GERhsGEfg+gMBlUY9GEQhcGGfQyiMxhUYdCHQRQGG/YxiM5gUIVBHwZRGGzYxyA6g0EVBn0YRGGwYR+D6AwGVRj0YRCFwYZ9DKIzGFRh0IdBFAYb9jGIzmBQhUEfBlEYbNjHIDqDQRUGfRhEYbBhH4PoDAZVGPRhEIXBhv0XYSBdDgPJo2jKoyjZf5FHEQZVGCT7GERnMKjCoA+DKAw27GMQncGgCoM+DKIw2LCPQXQGgyoM+jCIwmDDPgbRGQyqMOjDIAqDDfsYRGcwqMKgD4MoDDbsYxCdwaAKgz4MojDYsI9BdAaDKgz6MIjCYMM+BtEZDKow6MMgCoMN+xhEZzCowqAPgygMNuxjEJ3BoAqDPgyiMNiwj0F0BoMqDPowiMJgwz4G0RkMqjDowyAKgw37GERnMKjCoA+DKAw27GMQncGgCoM+DKIw2LD/Igyky2EgeRRNeRQl+y/yKMKgCoNkH4PoDAZVGPRhEIXBhn0MojMYVGHQh0EUBhv2MYjOYFCFQR8GURhs2McgOoNBFQZ9GERhsGEfg+gMBlUY9GEQhcGGfQyiMxhUYdCHQRQGG/YxiM5gUIVBHwZRGGzYxyA6g0EVBn0YRGGwYR+D6AwGVRj0YRCFwYZ9DKIzGFRh0IdBFAYb9jGIzmBQhUEfBlEYbNjHIDqDQRUGfRhEYbBhH4PoDAZVGPRhEIXBhn0MojMYVGHQh0EUBhv2X4SBdDkMJI+iqY9H0c/3Z33of3l8foH9X/1Rh8EQBsk+BtEZDKow6MMgCoMN+xhEZzCowqAPgygMNuxjEJ3BoAqDPgyiMNiwj0F0BoMqDPowiMJgwz4G0RkMqjDowyAKgw37GERnMKjCoA+DKAw27GMQncGgCoM+DKIw2LCPQXQGgyoM+jCIwmDDPgbRGQyqMOjDIAqDDfsYRGcwqMKgD4MoDDbsYxCdwaAKgz4MojDYsI9BdAaDKgz6MIjCYMM+BtEZDKow6MMgCoMN+xhEZzCowqAPgygMNuy/CAPpchhIHkVTfvTpwj4GQxhc2MdgCIML+xgMYXBhH4MhDC7sYzCEwYV9DIYwuLCPwRAGF/YxGMLgwj4GQxhc2MdgCIML+xgMYXBhH4MhDC7sYzCEwYV9DIYwuLCPwRAGF/YxGMLgwj4GQxhc2MdgCIML+xgMYXBhH4MhDC7sYzCEwYV9DIYwuLCPwRAGF/YxGMLgwj4GQxhc2MdgCIML+xgMYXBhH4MhDC7sYzCEwYV9X+wuYSB5FI15FF3Yx2AIgwv7GAxhcGEfgyEMLuxjMITBhX0MhjC4sI/BEAYX9jEYwuDCPgZDGFzYx2AIgwv7GAxhcGEfgyEMLuxjMITBhX0MhjC4sI/BEAYX9jEYwuDCPgZDGFzYx2AIgwv7GAxhcGEfgyEMLuxjMITBhX0MhjC4sI/BEAYX9jEYwuDCPgZDGFzYx2AIgwv7GAxhcGEfgyEMLuxjMITBhX0MhjC4sO+L3SUMJI+iMY+iC/sYDGFwYR+DIQwu7GMwhMGFfQyGMLiwj8EQBhf2MRjC4MI+BkMYXNjHYAiDC/sYDGFwYR+DIQwu7GMwhMGFfQyGMLiwj8EQBhf2MRjC4MI+BkMYXNjHYAiDC/sYDGFwYR+DIQwu7GMwhMGFfQyGMLiwj8EQBhf2MRjC4MI+BkMYXNjHYAiDC/sYDGFwYR+DIQwu7GMwhMGFfQyGMLiwj8EQBhf2fbG7hIH09vY31+XK8xFpessAAAAASUVORK5CYII=\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pixel.vue?vue&type=style&index=0&id=8f1ad808&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Log.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Creator.vue?vue&type=style&index=0&id=64088c90&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Art.vue?vue&type=style&index=0&id=be91b556&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/src/PixelIt.ino b/src/PixelIt.ino index 4c7892a..da9e3a4 100644 --- a/src/PixelIt.ino +++ b/src/PixelIt.ino @@ -45,7 +45,7 @@ #include "Webinterface.h" #include "Tools.h" -#define VERSION "0.3.17_format" +#define VERSION "0.3.18" void FadeOut(int = 10, int = 0); void FadeIn(int = 10, int = 0); diff --git a/src/Webinterface.h b/src/Webinterface.h index 77f13a9..e6f63bd 100644 --- a/src/Webinterface.h +++ b/src/Webinterface.h @@ -1 +1 @@ -const char mainPage[] PROGMEM = R"=====(Pixel It the Matrix Display
)====="; \ No newline at end of file +const char mainPage[] PROGMEM = R"=====(Pixel It the Matrix Display
)====="; \ No newline at end of file