From a3b253665d7a89731fd5d6164bc6515d4cc3e869 Mon Sep 17 00:00:00 2001 From: pcbbc Date: Tue, 24 May 2022 11:21:34 +0100 Subject: [PATCH] Updated documentation --- README.md | 29 +++++++++++++++++++++++++++++ data/js/controls.js | 3 +++ data/js/controls.min.js | 1 + docs/ui_inputtypes.png | Bin 0 -> 23953 bytes src/dataControlsJS.h | 3 ++- 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 docs/ui_inputtypes.png diff --git a/README.md b/README.md index 8fb2e27..59df026 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ The Library runs on any kind of **ESP8266** and **ESP32** (NodeMCU, AI Thinker, - Transport layer rework by @iangray001 - Time control by @iangray001 - Vertical controls by @iangray001 +- Time/date/password/color input types by @pcbbc ## Roadmap @@ -289,6 +290,34 @@ Events: - `T_VALUE` - Fired when a text value changes. +#### Date, Time, Colour and Password Input + +![text](docs/ui_inputtypes.png) + +As an extension to the text input control, you can also specify the type attribute to be used for the HTML input element. +This allows you to easily create input controls for Date, Time, Colour and Passwords, or indeed any other +[HTML Input Types](https://www.w3schools.com/html/html_form_input_types.asp) supported by your browser. + +``` +text_date = ESPUI.text("Date", callback, ControlColor::Dark, "2022-05-24"); +ESPUI.setInputType(text_date, "date"); + +text_time = ESPUI.text("Time", callback, ControlColor::Dark, "13:00"); +ESPUI.setInputType(text_time, "time"); + +text_colour = ESPUI.text("Colour", callback, ControlColor::Dark, "#FF0000"); +ESPUI.setInputType(text_colour, "color"); + +text_password = ESPUI.text("Password", callback, ControlColor::Dark, "tiddles123"); +ESPUI.setInputType(text_password, "password"); +``` + +Note that not all browsers support all input types, and that the control displayed to edit the input is browser dependent. + +However even with a type set, user input should still be validated +because it is easy to bypass client-side checks. Never trust user input. + + #### Select control ![option1](docs/ui_select1.png) diff --git a/data/js/controls.js b/data/js/controls.js index 46a61ce..fb791ac 100644 --- a/data/js/controls.js +++ b/data/js/controls.js @@ -532,6 +532,9 @@ function start() { if(data.hasOwnProperty('elementStyle')) { $("#text" + data.id).attr("style", data.elementStyle); } + if(data.hasOwnProperty('inputType')) { + $("#text" + data.id).attr("type", data.inputType); + } break; case UPDATE_SELECT: diff --git a/data/js/controls.min.js b/data/js/controls.min.js index a37a4b7..556be82 100644 --- a/data/js/controls.min.js +++ b/data/js/controls.min.js @@ -36,6 +36,7 @@ break;case UPDATE_SLIDER:$("#sl"+data.id).attr("value",data.value) slider_move($("#id"+data.id),data.value,"100",false);if(data.hasOwnProperty('elementStyle')){$("#sl"+data.id).attr("style",data.elementStyle);} break;case UPDATE_NUMBER:$("#num"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#num"+data.id).attr("style",data.elementStyle);} break;case UPDATE_TEXT_INPUT:$("#text"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#text"+data.id).attr("style",data.elementStyle);} +if(data.hasOwnProperty('inputType')){$("#text"+data.id).attr("type",data.inputType);} break;case UPDATE_SELECT:$("#select"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#select"+data.id).attr("style",data.elementStyle);} break;case UPDATE_BUTTON:$("#btn"+data.id).val(data.value);$("#btn"+data.id).text(data.value);if(data.hasOwnProperty('elementStyle')){$("#btn"+data.id).attr("style",data.elementStyle);} break;case UPDATE_PAD:case UPDATE_CPAD:break;case UPDATE_GAUGE:$("#gauge"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#gauge"+data.id).attr("style",data.elementStyle);} diff --git a/docs/ui_inputtypes.png b/docs/ui_inputtypes.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed67b6ff2a3895deee8be751d643f489a4f80fe GIT binary patch literal 23953 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� z*q2Y)h;_RXC)1mr+KKX&xSqi`w%CJmUZzSwAP z-XP!uFWAY-KPTft73K}q&q{e<_`GwZ6GLDV62q{P(yZ+eS|HQqkNfbUF>GJs>A0@Z zorx`^Xxa`ZnhSue&8`-Tstwxc$-1ia4_(T|Ithlqxc%cFVB=)!wAMdJKL6Uxx}PZZaT>#?qcUACCi!0wib)=sdOzKxf)P9%fdsDKpco4T4^ za>9gOtAY~AmqBaE*f3lt)j zjTT*CVev3N#K?ER25Lj^vO@tV3)m{=E{9{U_~pAA!OtXDD=ay$4|k~wg<);)s$DdM zi;BvOdodVx?>(rj)A)X&?g!*LKISu4k9FJ#D)U&xg`T3RsVU1Nt1S^OcCjDxK?dt=m>THBn{?HM`_|}5 z&pS!WSXelI=79aF*H`S9l$iQSkL&Uwv+~2w1myC*R|6JO`OwhF#tyPi{YYK1Gpn$? zMZmzhzHHBY198F|#%%P)B;FNAy@?iNvXs%_njuV$5aFw&{f&vNjOePZl->t-5@i!% zEgq*IIc_O!28@<^3Ac(bHuo}r)W8t(f2|$E_84k10pBAFv;}?%SOpIC(HR8+-CG_nbE(f@eO69S5kthU#u^0j?b*g7X;m5HaPqv^ipuYp(+| z)RJs+ACe262d&oB;9UgsZ}Q0)@||;(mc?v;nw=m^NRI9nKQLUoepU!D6g`!}PcGcBiy|{xvS~^ZRRf$Zl&4=YT;Z54`{3r&ov}^C* z*^A|fK+>9%awLrlm79e}=Da{OE@{7;NCxhnEdbSC!Ios@SIhMv_Jtc4_duOH!pPJag1xg>ADJ6Jt4#%e$>DkBlzBXYVxw)c|;NbkjiJ^8;9>h8u>_HRt zS7pdk5M?exAoCaqP)3Ty@%uUvj~27u%^Ssu+BRY})(U=+HW3Xt?^R sMBH?lCS)_02ee>&QP*Z=?k literal 0 HcmV?d00001 diff --git a/src/dataControlsJS.h b/src/dataControlsJS.h index 93c2d54..4a5dfea 100644 --- a/src/dataControlsJS.h +++ b/src/dataControlsJS.h @@ -37,6 +37,7 @@ break;case UPDATE_SLIDER:$("#sl"+data.id).attr("value",data.value) slider_move($("#id"+data.id),data.value,"100",false);if(data.hasOwnProperty('elementStyle')){$("#sl"+data.id).attr("style",data.elementStyle);} break;case UPDATE_NUMBER:$("#num"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#num"+data.id).attr("style",data.elementStyle);} break;case UPDATE_TEXT_INPUT:$("#text"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#text"+data.id).attr("style",data.elementStyle);} +if(data.hasOwnProperty('inputType')){$("#text"+data.id).attr("type",data.inputType);} break;case UPDATE_SELECT:$("#select"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#select"+data.id).attr("style",data.elementStyle);} break;case UPDATE_BUTTON:$("#btn"+data.id).val(data.value);$("#btn"+data.id).text(data.value);if(data.hasOwnProperty('elementStyle')){$("#btn"+data.id).attr("style",data.elementStyle);} break;case UPDATE_PAD:case UPDATE_CPAD:break;case UPDATE_GAUGE:$("#gauge"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#gauge"+data.id).attr("style",data.elementStyle);} @@ -104,4 +105,4 @@ break;case UI_SLIDER:case UPDATE_SLIDER:$("#sl"+data.id).prop("disabled",!data.e break;}} )====="; -const uint8_t JS_CONTROLS_GZIP[4200] PROGMEM = { 31,139,8,0,143,181,138,98,2,255,197,27,105,119,218,72,242,187,127,133,172,228,5,177,198,6,114,77,6,44,231,17,76,18,118,124,173,141,39,243,54,147,245,19,208,24,61,11,73,35,9,31,227,240,223,183,186,250,80,183,14,32,120,102,247,75,140,170,171,171,171,171,170,187,174,206,40,240,227,196,184,236,95,245,79,250,131,126,231,232,234,211,101,223,126,217,104,180,71,98,224,188,119,116,218,57,4,88,83,192,206,14,59,131,222,213,233,199,143,23,189,129,221,84,113,123,191,13,122,39,135,140,70,83,129,15,250,131,222,145,173,0,206,128,98,134,30,130,210,69,250,87,93,10,121,169,35,117,25,214,203,20,235,195,229,96,112,122,98,191,210,241,56,180,217,120,149,98,30,117,62,0,19,175,117,68,6,108,54,94,167,120,23,95,250,131,238,231,222,185,253,70,71,149,240,102,227,141,130,125,212,63,4,216,219,12,46,131,54,27,111,83,204,147,203,227,15,0,251,73,199,228,208,102,227,39,69,92,32,71,80,200,217,229,192,126,167,99,43,35,205,198,187,116,198,167,243,206,217,103,251,103,14,232,28,30,50,200,213,217,105,255,132,162,242,129,238,81,175,115,206,145,155,141,159,149,21,59,31,236,102,70,33,12,166,40,228,162,119,212,235,2,181,140,78,4,184,169,104,229,244,108,208,167,242,207,168,69,128,155,138,90,142,251,0,200,104,5,97,77,69,39,199,157,223,236,102,70,31,8,107,170,170,24,244,206,236,102,86,19,8,108,42,122,248,212,185,252,212,179,155,25,61,112,104,83,81,67,167,219,165,182,145,81,1,135,54,223,169,130,57,235,156,119,6,167,160,198,159,179,178,145,35,77,85,220,253,227,30,156,168,140,188,41,176,169,64,229,129,57,60,253,114,34,143,203,81,239,227,64,30,139,243,254,167,207,3,105,252,221,222,201,0,108,73,200,173,123,53,184,60,255,215,229,105,255,162,39,73,117,175,122,199,189,243,206,81,122,252,186,87,103,61,152,117,222,255,21,166,190,148,192,47,189,65,231,226,236,115,231,72,33,127,117,113,121,242,241,232,244,139,182,70,183,115,126,126,58,144,135,165,123,213,57,234,255,187,115,14,26,124,43,65,135,157,243,95,164,225,119,175,78,78,79,96,251,111,222,180,111,157,200,184,142,156,112,122,232,36,142,237,147,59,163,19,69,206,131,85,197,145,169,19,119,70,35,226,217,19,199,139,9,130,98,207,29,147,168,27,248,137,235,207,131,121,204,135,38,115,127,148,184,129,111,140,2,47,136,186,158,19,199,22,254,236,143,171,143,252,135,125,50,159,13,73,36,225,237,248,206,77,70,83,5,207,137,137,42,179,86,68,146,121,228,155,240,207,31,243,192,141,137,217,230,40,92,132,2,129,204,72,228,120,99,57,156,202,83,96,132,36,33,81,228,222,146,72,34,165,242,21,72,119,36,113,226,112,234,120,137,68,146,242,22,56,241,220,159,120,193,157,66,135,137,95,140,143,156,40,10,210,249,66,21,98,216,241,220,63,157,200,245,37,2,85,76,139,255,166,90,17,136,99,39,186,49,219,99,50,113,230,94,34,128,102,123,177,216,162,90,184,35,195,56,24,221,180,149,223,160,18,159,140,18,50,206,106,36,34,127,204,73,156,156,70,46,241,19,135,130,206,72,52,115,227,24,126,89,213,199,197,150,196,140,157,91,242,73,24,3,12,121,193,200,241,46,146,32,114,174,201,94,76,146,126,66,102,150,73,226,112,238,162,205,196,102,237,159,23,167,39,123,113,2,59,186,118,39,15,150,52,165,106,181,173,16,142,96,253,32,82,104,187,160,109,180,38,88,113,140,166,167,173,117,93,184,86,74,188,237,78,44,57,117,219,246,231,158,87,125,76,105,33,83,161,19,197,36,197,170,182,153,12,211,37,191,186,227,111,192,36,3,127,253,150,229,215,137,18,16,193,115,107,28,140,230,51,144,92,117,207,25,143,45,243,31,102,117,47,152,76,224,128,60,183,204,103,81,112,7,223,211,100,230,89,166,89,109,115,85,236,141,188,0,214,6,3,103,84,84,210,112,2,47,64,11,243,184,7,118,18,193,10,37,234,163,212,37,46,172,17,145,89,112,75,216,193,50,241,196,236,94,71,132,248,102,53,135,10,124,106,120,17,25,23,96,49,166,145,11,163,110,156,4,6,231,128,50,249,226,217,187,183,175,222,180,11,102,165,91,215,160,190,245,56,242,220,209,77,139,75,174,182,208,54,61,117,252,177,71,126,117,99,119,232,122,110,242,208,5,192,53,8,232,17,244,184,157,21,192,139,23,219,66,230,123,83,119,60,38,126,245,81,42,132,30,128,212,94,185,146,36,58,236,188,119,11,63,142,220,56,33,62,92,53,230,173,92,115,132,107,154,181,98,94,106,40,117,52,172,59,215,31,7,119,123,212,32,233,42,123,97,16,37,219,182,105,126,255,94,60,242,174,81,54,242,250,245,43,169,95,188,91,191,144,225,5,252,38,137,101,222,197,173,122,221,220,201,78,156,6,113,226,59,51,178,99,182,242,131,148,234,142,89,191,3,145,183,23,4,248,221,152,56,167,177,37,12,54,240,131,144,248,182,144,172,69,110,19,122,109,251,113,224,17,152,127,13,36,25,166,65,241,214,176,185,50,219,76,200,61,240,39,117,157,158,153,212,254,147,104,78,218,139,118,202,26,158,166,117,120,67,68,32,153,61,99,26,53,66,97,75,168,81,64,17,5,230,15,169,237,160,137,173,162,64,209,199,153,203,8,6,246,198,120,23,209,81,98,75,187,29,6,227,7,132,141,224,139,68,96,108,194,55,82,244,189,228,33,36,220,59,234,121,66,171,224,14,162,160,196,25,198,190,115,91,4,6,70,225,104,36,234,16,216,60,46,147,117,237,112,165,102,157,125,33,30,216,17,194,41,233,40,240,226,189,73,16,245,28,96,158,120,132,110,207,62,192,187,30,60,217,61,19,221,35,69,111,101,92,7,71,174,214,22,109,69,204,150,156,5,58,72,89,77,130,196,241,196,122,7,150,190,188,71,252,235,100,186,219,172,202,195,7,206,203,135,187,123,238,6,55,112,172,74,209,97,35,195,136,56,55,109,33,234,52,155,106,253,127,119,200,228,78,175,59,56,210,228,126,103,163,29,175,51,63,47,3,150,125,182,178,119,73,68,188,192,25,195,201,208,177,49,207,108,73,195,78,220,196,35,204,106,60,103,72,60,52,195,153,227,250,159,137,3,54,36,172,48,69,200,210,195,236,176,37,190,88,170,38,63,211,92,76,130,88,42,36,63,49,167,80,6,121,46,208,18,82,70,247,224,145,42,92,95,131,224,243,224,248,200,98,231,83,103,130,229,178,185,73,143,217,89,116,115,195,196,55,119,16,13,98,28,116,140,73,48,31,77,81,246,173,244,206,168,62,146,189,48,34,84,237,135,44,198,163,162,156,39,9,189,238,192,145,90,156,68,141,222,134,160,148,26,82,1,157,110,66,131,251,182,5,243,202,250,222,68,78,189,122,119,236,70,2,167,42,200,50,116,199,67,6,51,100,105,153,64,202,157,254,94,75,120,225,100,99,217,133,206,152,109,250,242,172,182,169,236,138,104,168,178,67,22,189,167,179,72,19,200,167,51,169,81,201,177,25,61,157,77,76,109,159,206,167,78,38,199,232,240,233,140,210,236,252,233,124,106,84,114,108,142,158,206,38,43,14,60,157,209,12,157,165,167,27,171,96,171,15,95,68,99,224,11,244,235,214,118,46,14,200,145,29,116,62,228,105,234,129,135,19,134,232,129,246,61,247,96,223,49,2,127,6,148,200,60,180,43,128,195,246,33,37,186,99,86,43,198,52,34,19,187,66,41,40,240,202,1,255,192,107,102,199,220,175,59,7,251,117,32,89,24,209,200,53,199,238,173,225,142,113,41,141,216,126,29,70,232,92,58,207,6,2,123,58,1,248,26,146,113,151,125,91,144,255,6,97,139,170,105,81,197,184,205,50,157,208,101,43,59,128,61,113,61,8,214,44,169,54,154,166,96,138,249,220,74,166,110,12,252,36,9,164,32,116,99,102,213,182,109,136,132,233,190,119,147,96,151,221,165,144,206,163,49,153,8,55,107,170,1,208,120,2,216,177,195,40,152,133,16,50,15,156,161,145,4,6,155,72,127,89,62,86,83,12,72,223,192,38,223,179,56,110,155,238,103,143,33,193,12,11,62,33,38,112,60,18,81,18,83,39,161,52,141,113,64,98,195,15,18,131,220,67,162,100,180,126,255,29,147,129,2,155,43,48,41,86,65,148,234,135,200,22,102,116,89,36,193,216,102,32,42,222,103,49,196,60,163,132,235,64,71,109,179,207,84,105,65,136,73,29,213,27,251,105,238,108,9,221,109,153,21,3,77,192,174,8,40,179,8,58,32,32,108,49,66,177,15,4,12,131,10,0,236,215,25,205,3,51,191,163,227,126,233,118,0,252,220,170,60,139,189,74,209,22,120,220,68,77,191,28,135,25,193,204,245,77,221,97,210,252,205,224,244,65,149,171,23,40,69,42,91,33,183,207,206,111,127,255,62,157,251,37,251,164,217,223,234,21,202,177,228,26,12,253,239,150,104,110,47,185,235,117,208,59,91,243,36,184,227,162,83,176,99,26,174,31,206,19,118,122,249,137,136,221,63,137,5,199,86,28,16,100,38,78,72,184,130,27,236,42,172,190,235,101,25,237,43,63,93,223,236,92,125,78,184,186,54,112,0,190,0,7,46,110,175,173,252,220,154,137,176,212,59,234,199,43,211,8,105,225,181,22,219,199,78,50,221,139,130,57,28,124,90,186,0,138,176,99,90,246,27,184,51,248,85,111,54,26,141,34,78,247,194,121,60,181,30,239,91,73,92,123,104,165,210,128,123,42,83,188,220,132,115,133,111,165,79,211,42,16,216,215,111,127,241,122,162,217,65,213,39,170,238,85,54,46,139,240,88,24,89,237,202,151,150,123,51,151,159,210,130,195,90,130,26,220,166,153,25,55,56,177,52,48,116,122,231,159,69,65,8,110,229,193,170,240,188,246,34,121,240,72,165,202,2,1,149,144,48,96,24,230,22,172,206,40,102,73,166,37,75,178,14,240,168,13,243,125,163,213,252,49,214,226,39,243,198,130,170,18,90,200,154,118,82,183,88,64,117,69,11,184,150,118,23,192,44,5,177,102,130,217,155,74,37,242,127,183,37,158,88,83,90,112,41,42,196,128,177,141,109,64,167,180,9,91,74,130,143,209,30,56,134,191,136,183,12,169,141,204,128,149,26,114,97,206,83,89,203,17,219,132,57,94,178,200,87,36,178,156,229,49,176,68,187,41,243,58,169,77,56,79,11,7,233,131,131,86,30,141,85,118,232,146,215,206,252,154,252,69,178,207,210,218,100,3,236,30,47,48,230,254,113,15,253,95,116,107,43,78,47,9,250,23,167,23,88,36,180,210,14,18,43,223,37,224,13,91,230,78,116,139,237,128,140,223,16,189,65,81,122,198,194,182,101,94,250,55,126,112,231,27,180,104,76,147,3,140,232,77,49,105,177,37,11,140,48,126,96,139,146,221,139,23,18,184,175,61,47,129,48,36,10,70,36,142,123,190,3,254,102,204,189,76,142,142,58,71,35,166,21,172,89,88,36,170,166,217,187,176,84,85,161,227,19,79,83,148,58,173,64,75,233,4,149,213,44,89,238,67,41,77,142,242,85,194,190,85,183,114,235,196,211,224,14,116,68,227,204,252,224,20,238,120,43,43,24,219,214,124,6,228,245,108,235,122,59,143,249,135,93,217,230,230,77,246,93,222,214,22,159,105,15,91,64,210,134,181,128,200,246,180,0,176,126,180,248,146,237,103,186,11,34,122,102,58,27,230,142,210,195,231,117,98,248,174,138,158,83,225,22,82,222,5,211,10,183,42,155,146,63,206,216,50,142,74,249,216,42,177,73,154,209,99,41,99,151,187,220,43,252,130,92,157,208,106,189,146,169,243,20,253,107,227,27,143,37,244,156,157,57,113,122,59,50,168,79,239,68,30,18,21,98,178,84,89,105,51,205,128,61,231,154,216,74,165,95,237,136,50,254,88,79,146,103,242,236,108,0,61,91,184,116,14,199,27,45,123,53,196,30,174,12,215,2,252,197,235,129,99,183,127,88,8,122,224,146,149,12,47,2,72,206,217,50,75,56,71,183,191,140,117,191,140,115,101,21,234,132,150,172,193,220,247,178,69,146,117,22,17,149,168,194,37,104,237,104,233,10,206,112,141,53,152,55,95,166,104,238,238,151,42,123,141,133,212,194,63,27,174,185,241,24,60,1,94,110,252,167,78,118,72,97,10,53,76,160,51,40,243,176,120,57,89,141,164,215,92,45,191,160,184,31,217,8,228,185,188,31,233,196,252,198,24,187,49,30,94,56,59,188,110,6,228,121,215,83,105,120,178,98,103,171,108,11,225,104,245,30,194,145,182,9,205,51,151,19,158,172,65,120,82,70,152,214,146,203,73,175,33,247,112,88,70,154,150,253,203,73,123,107,144,246,202,72,99,165,190,156,118,180,6,237,168,128,182,246,100,67,164,115,220,98,98,72,81,9,26,12,254,178,249,91,30,90,202,204,222,130,169,233,0,129,209,13,179,156,204,57,113,96,149,91,162,95,134,26,17,229,157,130,32,162,63,165,16,148,92,127,37,45,253,73,78,74,78,22,162,248,150,154,105,146,182,140,141,44,14,248,184,48,29,23,237,130,12,237,70,158,118,9,91,43,200,139,46,2,123,95,166,244,3,210,135,14,110,124,232,198,35,56,171,188,60,141,72,118,169,187,81,158,11,142,134,182,226,118,52,223,167,251,32,184,49,232,6,66,207,25,17,171,254,159,223,15,119,234,215,53,19,221,43,235,81,96,239,5,75,102,173,2,71,166,186,105,10,225,30,108,177,224,29,142,82,15,88,50,177,141,23,153,202,224,200,241,188,161,51,186,185,32,16,83,111,219,38,213,138,201,236,85,21,143,152,148,114,43,4,177,16,246,166,162,48,89,104,56,91,229,235,214,248,170,237,197,66,60,76,145,69,160,84,206,24,19,61,166,129,176,189,50,178,126,111,26,24,67,211,26,123,38,138,222,161,101,246,150,105,182,17,116,7,108,22,147,163,35,148,16,253,139,248,84,48,37,11,43,101,208,74,245,251,119,233,115,203,171,182,7,13,173,172,186,14,221,247,203,200,166,207,103,216,235,30,208,254,242,167,55,250,107,4,158,99,231,58,233,165,61,240,76,87,110,243,87,13,88,150,44,126,227,192,178,79,182,21,217,7,83,18,21,212,228,142,170,89,99,68,175,10,187,146,220,5,244,245,238,124,230,199,2,131,170,145,34,56,209,216,72,216,219,36,218,109,41,142,203,177,193,54,125,35,58,118,172,243,98,238,215,1,180,63,141,234,180,37,195,35,252,180,90,137,157,25,236,201,101,138,161,233,83,141,77,182,18,179,119,140,72,82,236,137,182,18,97,181,37,12,22,115,130,105,187,72,158,245,158,21,101,77,28,231,181,202,253,217,166,87,78,30,242,2,86,70,178,71,154,14,131,36,184,16,84,236,37,231,92,47,118,228,78,186,58,44,207,58,46,68,47,175,1,205,100,11,201,202,97,164,137,25,175,32,41,135,36,189,85,231,138,63,114,222,143,65,165,168,107,240,86,66,203,26,131,91,82,209,168,67,3,255,221,189,139,156,48,223,47,166,196,14,204,236,83,30,177,20,11,154,113,49,172,92,149,45,199,219,215,52,0,2,76,37,210,102,83,106,6,122,103,218,155,52,213,86,119,17,38,115,180,149,3,189,143,9,156,50,100,133,87,121,161,8,110,217,110,41,179,241,106,209,240,78,177,120,252,37,42,230,77,243,189,116,250,160,20,56,129,37,181,17,248,227,130,215,65,197,210,143,93,17,186,25,124,158,201,79,20,61,153,124,77,215,231,48,84,62,183,7,92,109,24,220,87,24,231,130,241,192,239,82,185,8,70,233,99,93,38,33,140,0,177,171,187,130,115,83,28,217,253,58,74,70,17,93,238,234,21,34,132,44,68,48,203,95,191,193,165,53,247,24,215,218,83,5,166,107,245,73,144,161,43,155,114,104,42,202,46,68,229,218,198,173,211,215,77,236,29,194,139,103,63,191,125,211,104,167,175,25,86,173,206,222,208,172,203,64,6,91,227,33,218,152,7,124,111,180,46,11,58,178,198,129,183,49,7,248,66,103,93,14,116,100,141,131,225,82,14,234,204,28,180,34,30,179,168,247,38,176,150,90,207,196,141,102,149,18,86,249,27,157,53,121,229,216,197,220,142,4,183,167,191,80,70,197,233,219,175,131,45,171,183,5,11,42,132,161,43,167,82,141,206,211,99,181,198,129,231,51,244,227,206,142,182,126,9,177,131,142,235,84,140,153,11,130,104,192,95,231,222,174,52,27,13,229,229,134,122,225,161,52,116,191,83,196,48,79,39,224,148,162,91,40,196,64,138,5,55,42,222,253,194,171,103,162,45,33,39,182,29,238,13,49,144,105,13,33,251,184,105,231,174,86,19,55,141,213,45,254,34,133,109,155,37,84,165,187,132,251,31,163,123,129,200,243,30,38,58,208,113,93,225,77,9,253,116,254,0,59,117,167,235,51,203,202,100,217,247,51,101,252,41,53,183,66,238,120,20,42,221,52,22,174,126,64,116,162,210,197,249,73,23,214,106,100,133,75,179,136,87,172,60,113,175,231,17,65,154,188,165,206,159,119,193,192,200,225,239,124,50,65,158,50,132,31,64,64,165,143,49,52,167,255,165,127,116,100,124,232,25,29,3,193,198,50,27,65,30,88,211,232,239,50,10,22,209,115,222,240,195,168,211,255,176,3,135,112,22,50,41,147,177,49,1,175,249,176,173,30,123,135,62,26,32,81,48,163,133,120,198,41,130,36,167,7,42,246,16,18,76,41,71,230,85,67,144,113,17,173,96,158,208,39,43,18,57,68,81,150,253,87,53,189,84,159,13,102,203,99,194,76,58,149,121,22,32,154,44,132,145,45,104,131,171,101,144,138,40,54,86,120,29,68,193,99,117,16,89,141,148,133,16,158,164,103,155,235,162,112,243,35,36,121,233,166,248,109,230,58,47,11,178,4,183,181,189,103,18,22,45,157,92,209,222,255,33,194,185,196,116,157,38,253,15,173,160,229,185,171,187,236,63,68,91,203,214,87,52,201,127,136,176,26,106,118,179,221,235,194,110,118,161,241,106,137,45,175,150,151,217,112,106,156,69,179,10,109,84,88,223,98,241,95,139,112,223,96,113,64,0,0 }; +const uint8_t JS_CONTROLS_GZIP[4212] PROGMEM = { 31,139,8,0,13,167,140,98,2,255,197,27,105,119,218,72,242,187,127,133,172,228,5,177,198,28,185,38,3,150,243,8,38,9,59,190,214,198,147,121,155,201,250,9,104,140,158,133,164,145,132,143,113,252,223,183,186,250,80,183,14,32,120,102,247,75,140,170,171,171,171,171,170,187,174,206,56,240,227,196,184,24,92,14,142,7,195,65,247,240,242,211,197,192,126,217,108,118,198,98,224,172,127,120,210,61,0,88,75,192,78,15,186,195,254,229,201,199,143,231,253,161,221,82,113,251,191,13,251,199,7,140,70,75,129,15,7,195,254,161,173,0,78,129,98,134,30,130,210,69,6,151,61,10,121,169,35,245,24,214,203,20,235,195,197,112,120,114,108,191,210,241,56,180,213,124,149,98,30,118,63,0,19,175,117,68,6,108,53,95,167,120,231,95,6,195,222,231,254,153,253,70,71,149,240,86,243,141,130,125,56,56,0,216,219,12,46,131,182,154,111,83,204,227,139,163,15,0,251,73,199,228,208,86,243,39,69,92,32,71,80,200,233,197,208,126,167,99,43,35,173,230,187,116,198,167,179,238,233,103,251,103,14,232,30,28,48,200,229,233,201,224,152,162,242,129,222,97,191,123,198,145,91,205,159,149,21,187,31,236,86,70,33,12,166,40,228,188,127,216,239,1,181,140,78,4,184,165,104,229,228,116,56,160,242,207,168,69,128,91,138,90,142,6,0,200,104,5,97,45,69,39,71,221,223,236,86,70,31,8,107,169,170,24,246,79,237,86,86,19,8,108,41,122,248,212,189,248,212,183,91,25,61,112,104,75,81,67,183,215,163,182,145,81,1,135,182,222,169,130,57,237,158,117,135,39,160,198,159,179,178,145,35,45,85,220,131,163,62,156,168,140,188,41,176,165,64,229,129,57,56,249,114,44,143,203,97,255,227,80,30,139,179,193,167,207,67,105,252,189,254,241,16,108,73,200,173,119,57,188,56,251,215,197,201,224,188,47,73,245,46,251,71,253,179,238,97,122,252,122,151,167,125,152,117,54,248,21,166,190,148,192,47,253,97,247,252,244,115,247,80,33,127,121,126,113,252,241,240,228,139,182,70,175,123,118,118,50,148,135,165,119,217,61,28,252,187,123,6,26,124,43,65,7,221,179,95,164,225,247,46,143,79,142,97,251,111,222,116,110,156,200,184,138,156,112,118,224,36,142,237,147,91,163,27,69,206,189,85,197,145,153,19,119,199,99,226,217,83,199,139,9,130,98,207,157,144,168,23,248,137,235,47,130,69,204,135,166,11,127,156,184,129,111,140,3,47,136,122,158,19,199,22,254,28,76,170,15,252,135,125,188,152,143,72,36,225,157,248,214,77,198,51,5,207,137,137,42,179,118,68,146,69,228,155,240,207,31,139,192,141,137,217,225,40,92,132,2,129,204,73,228,120,19,57,156,202,83,96,132,36,33,81,228,222,144,72,34,165,242,21,72,183,36,113,226,112,230,120,137,68,146,242,22,56,241,194,159,122,193,173,66,135,137,95,140,143,157,40,10,210,249,66,21,98,216,241,220,63,157,200,245,37,2,85,76,155,255,166,90,17,136,19,39,186,54,59,19,50,117,22,94,34,128,102,231,241,113,139,106,225,150,140,226,96,124,221,81,126,131,74,124,50,78,200,36,171,145,136,252,177,32,113,114,18,185,196,79,28,10,58,37,209,220,141,99,248,101,85,31,30,183,36,102,236,220,144,79,194,24,96,200,11,198,142,119,158,4,145,115,69,234,49,73,6,9,153,91,38,137,195,133,139,54,19,155,181,127,158,159,28,215,227,4,118,116,229,78,239,45,105,74,213,106,71,33,28,193,250,65,164,208,118,65,219,104,77,176,226,4,77,79,91,235,170,112,173,148,120,199,157,90,114,234,182,237,47,60,175,250,144,210,66,166,66,39,138,73,138,85,237,48,25,166,75,126,117,39,223,128,73,6,254,250,45,203,175,19,37,32,130,231,214,36,24,47,230,32,185,106,221,153,76,44,243,31,102,181,30,76,167,112,64,158,91,230,179,40,184,133,239,89,50,247,44,211,172,118,184,42,234,99,47,128,181,193,192,25,21,149,52,156,192,115,208,194,34,238,131,157,68,176,66,137,250,40,117,137,11,107,68,100,30,220,16,118,176,76,60,49,187,87,17,33,190,89,205,161,2,159,26,94,68,38,5,88,140,105,228,194,104,24,199,129,193,57,160,76,190,120,246,238,237,171,55,157,130,89,233,214,53,168,111,61,140,61,119,124,221,230,146,171,61,106,155,158,57,254,196,35,191,186,177,59,114,61,55,185,239,1,224,10,4,244,0,122,220,206,10,224,197,139,109,33,243,250,204,157,76,136,95,125,144,10,161,7,32,181,87,174,36,137,14,59,239,223,192,143,67,55,78,136,15,87,141,121,35,215,28,227,154,102,173,152,151,26,74,29,13,235,214,245,39,193,109,157,26,36,93,165,30,6,81,178,109,155,230,247,239,197,35,239,154,101,35,175,95,191,146,250,197,187,245,11,25,157,195,111,146,88,230,109,220,110,52,204,157,236,196,89,16,39,190,51,39,59,102,59,63,72,169,238,152,141,91,16,121,231,145,0,191,27,19,231,52,182,132,193,6,126,16,18,223,22,146,181,200,77,66,175,109,63,14,60,2,243,175,128,36,195,52,40,222,26,54,87,102,155,9,185,3,254,164,174,211,51,147,218,127,18,45,72,231,177,147,178,134,167,105,29,222,16,17,72,102,207,152,70,141,80,216,18,106,20,80,68,129,249,67,106,59,104,98,171,40,80,244,73,230,50,130,129,250,4,239,34,58,74,108,105,183,163,96,114,143,176,49,124,145,8,140,77,248,70,138,94,79,238,67,194,189,163,158,39,180,11,238,32,10,74,156,81,236,59,55,69,96,96,20,142,70,162,14,129,205,227,50,89,215,14,87,106,214,217,23,226,129,29,33,156,146,142,2,47,174,79,131,168,239,0,243,196,35,116,123,246,62,222,245,224,201,238,152,232,30,40,122,59,227,58,56,114,181,246,216,81,196,108,201,89,160,131,148,213,36,72,28,79,172,183,111,233,203,123,196,191,74,102,187,173,170,60,124,224,188,124,184,187,23,110,112,13,199,170,20,29,54,50,138,136,115,221,17,162,78,179,169,246,255,119,135,76,238,244,186,131,35,77,238,118,54,218,241,58,243,243,50,96,217,103,59,123,151,68,196,11,156,9,156,12,29,27,243,204,182,52,236,196,77,60,194,172,198,115,70,196,67,51,156,59,174,255,153,56,96,67,194,10,83,132,44,61,204,14,219,226,139,165,106,242,51,205,197,36,136,165,66,242,19,115,10,101,144,231,2,109,33,101,116,15,30,169,194,245,53,12,62,15,143,14,45,118,62,117,38,88,46,155,155,244,144,157,69,55,55,74,124,115,7,209,32,198,65,199,152,4,139,241,12,101,223,78,239,140,234,3,169,135,17,161,106,63,96,49,30,21,229,34,73,232,117,7,142,212,226,36,106,244,54,4,165,212,144,10,232,116,19,26,220,183,61,50,175,172,239,77,228,212,171,119,199,110,36,112,170,130,44,67,119,60,100,48,67,150,150,9,164,220,233,239,181,132,23,78,55,150,93,232,76,216,166,47,78,107,155,202,174,136,134,42,59,100,209,123,58,139,52,129,124,58,147,26,149,28,155,209,211,217,196,212,246,233,124,234,100,114,140,142,158,206,40,205,206,159,206,167,70,37,199,230,248,233,108,178,226,192,211,25,205,208,89,122,186,177,10,182,250,240,69,52,6,62,71,191,110,109,231,226,128,28,217,97,247,67,158,166,30,120,56,97,136,30,104,207,115,247,247,28,35,240,231,64,137,44,66,187,2,56,108,31,82,162,59,102,181,98,204,34,50,181,43,148,130,2,175,236,243,15,188,102,118,204,189,134,179,191,215,0,146,133,17,141,92,115,226,222,24,238,4,151,210,136,237,53,96,132,206,165,243,108,32,80,215,9,192,215,136,76,122,236,219,130,252,55,8,219,84,77,143,85,140,219,44,211,9,93,182,178,3,216,83,215,131,96,205,146,106,163,105,10,166,152,207,173,100,230,198,192,79,146,64,10,66,55,102,86,109,219,134,72,152,238,123,55,9,118,217,93,10,233,60,26,147,137,112,179,166,26,0,141,39,128,29,59,140,130,121,8,33,243,208,25,25,73,96,176,137,244,151,229,99,53,197,128,244,13,108,242,61,139,227,182,233,126,234,12,9,102,88,240,9,49,129,227,145,136,146,152,57,9,165,105,76,2,18,27,126,144,24,228,14,18,37,163,253,251,239,152,12,20,216,92,129,73,177,10,162,84,63,68,182,48,163,199,34,9,198,54,3,81,241,62,139,33,230,25,39,92,7,58,106,135,125,166,74,11,66,76,234,168,222,216,79,115,103,75,232,110,203,172,24,104,2,118,69,64,153,69,208,1,1,97,139,17,138,189,47,96,24,84,0,96,175,193,104,238,155,249,29,29,13,74,183,3,224,231,86,229,89,236,85,138,182,192,227,38,106,250,229,56,204,8,230,174,111,234,14,147,230,111,6,167,15,170,92,189,64,41,82,217,10,185,125,118,127,251,251,247,233,220,45,217,39,205,254,86,175,80,142,37,215,96,232,127,183,68,115,123,201,93,175,195,254,233,154,39,193,157,20,157,130,29,211,112,253,112,145,176,211,203,79,68,236,254,73,44,56,182,226,128,32,51,113,66,194,21,220,96,87,97,245,93,47,203,104,95,249,233,250,102,231,234,115,194,213,117,128,3,240,5,56,112,126,115,101,229,231,214,76,132,165,222,81,63,94,153,70,72,27,175,181,216,62,114,146,89,61,10,22,112,240,105,233,2,40,194,142,105,217,111,232,206,225,87,163,213,108,54,139,56,173,135,139,120,102,61,220,181,147,184,118,223,78,165,1,247,84,166,120,185,9,231,10,223,74,159,166,93,32,176,175,223,254,226,245,68,179,131,170,79,84,221,171,108,92,22,225,177,48,178,218,149,47,45,247,102,46,63,165,5,135,181,4,53,184,77,51,51,110,112,98,105,96,232,228,214,63,141,130,16,220,202,189,85,225,121,237,121,114,239,145,74,149,5,2,42,33,97,192,48,204,45,88,157,81,204,146,76,75,150,100,29,224,81,155,230,251,102,187,245,99,172,197,79,230,141,5,85,37,180,144,53,237,164,110,177,128,234,146,22,112,45,237,46,128,89,10,98,205,4,179,55,149,74,228,255,110,75,60,177,166,180,224,82,84,136,1,99,27,219,128,78,105,19,182,148,4,31,163,61,112,12,127,17,111,25,82,171,153,43,35,142,215,247,240,62,92,78,153,86,240,56,97,57,161,196,184,88,1,35,23,60,61,117,195,57,98,155,232,131,23,66,242,117,142,44,103,121,12,44,252,110,202,188,78,106,19,206,211,114,68,250,140,161,157,71,99,245,34,186,228,149,179,184,34,127,145,236,179,180,54,217,0,243,14,5,71,100,112,212,71,175,26,221,216,138,43,77,130,193,249,201,57,150,30,173,180,47,197,138,130,9,248,216,182,185,19,221,96,147,33,227,141,68,199,81,20,180,177,92,110,153,23,254,181,31,220,250,6,53,100,154,114,96,158,96,138,73,233,241,160,227,251,182,40,4,190,120,33,129,123,218,163,21,8,110,162,96,76,226,184,239,59,224,197,38,220,119,229,232,168,115,52,98,90,25,156,5,91,162,22,155,189,97,75,85,21,58,62,241,52,69,169,211,10,180,148,78,88,118,35,112,207,76,105,114,148,175,18,246,173,186,149,91,39,158,5,183,160,35,26,189,230,7,103,224,57,172,172,96,108,91,243,68,213,7,190,117,189,73,200,188,206,174,108,158,243,214,253,46,111,150,139,207,180,51,46,32,105,27,92,64,100,211,91,0,88,151,91,124,201,166,54,221,5,17,157,56,157,13,115,71,121,25,192,171,207,240,93,21,157,172,194,45,164,188,11,166,21,110,85,54,37,127,156,177,101,28,149,242,177,85,98,147,180,78,128,5,146,93,238,200,47,241,203,172,214,9,237,1,40,249,63,79,252,191,54,191,241,8,69,175,4,176,208,128,222,142,12,234,211,59,145,7,90,133,152,44,1,87,154,87,115,96,207,185,34,182,210,63,80,251,172,140,63,214,233,228,245,1,118,54,128,158,45,2,5,14,199,27,45,123,53,196,30,174,12,215,2,252,197,235,129,99,119,126,88,8,122,56,148,149,12,47,45,72,206,217,50,75,56,199,96,98,25,235,126,25,231,202,42,212,9,45,89,131,185,238,101,139,36,235,44,34,234,91,133,75,208,138,212,210,21,156,209,26,107,48,111,190,76,209,220,221,47,85,246,26,11,169,237,4,54,92,115,227,9,120,2,188,220,248,79,157,236,136,194,20,106,152,150,103,80,22,97,241,114,178,198,73,175,185,90,126,65,113,63,178,17,200,158,121,151,211,137,249,141,49,113,99,60,188,112,118,120,53,14,200,243,94,170,210,70,101,37,212,118,217,22,194,241,234,61,132,99,109,19,154,103,46,39,60,93,131,240,180,140,48,173,80,151,147,94,67,238,225,168,140,52,109,38,148,147,246,214,32,237,149,145,198,250,127,57,237,104,13,218,81,1,109,237,33,136,72,18,185,197,196,144,248,18,52,24,252,101,243,23,66,180,64,154,189,5,83,211,1,2,227,107,102,57,153,115,226,192,42,55,68,191,12,53,34,202,235,7,65,68,127,160,33,40,185,254,74,90,250,67,159,148,156,44,111,241,45,181,210,212,111,25,27,89,28,240,113,97,58,46,154,16,25,218,205,60,237,18,182,86,144,23,189,9,246,106,77,233,50,164,207,39,220,248,192,141,199,112,86,121,209,27,145,236,82,119,163,60,66,28,143,108,197,237,104,190,79,247,65,112,99,208,13,132,158,51,38,86,227,63,191,31,236,52,174,106,38,186,87,214,249,192,142,14,38,102,237,2,71,166,186,105,10,225,30,236,241,145,247,77,74,61,96,201,196,14,94,100,42,131,99,199,243,70,206,248,250,156,64,76,189,109,155,84,43,38,179,87,85,60,98,82,202,173,16,196,163,176,55,21,133,201,66,195,217,42,95,183,198,87,237,60,62,138,231,46,178,180,148,202,25,99,162,135,52,16,182,87,70,214,239,77,3,99,104,90,185,207,68,209,59,180,120,223,54,205,14,130,110,129,205,98,114,116,132,18,162,127,17,159,10,166,100,97,165,184,90,169,126,255,46,125,110,121,45,120,191,169,21,107,215,161,251,126,25,217,244,81,14,123,51,4,218,95,254,160,71,127,227,192,115,236,92,127,190,180,179,158,233,245,109,254,86,2,139,157,197,47,39,88,246,201,182,34,187,107,74,162,130,154,220,81,53,107,140,233,85,97,87,146,219,128,190,9,94,204,253,88,96,80,53,82,4,39,154,24,9,123,241,68,123,56,197,113,57,182,237,102,111,68,31,144,245,115,204,189,6,128,246,102,81,131,54,122,120,132,159,214,64,177,223,131,157,190,76,137,53,125,0,178,201,86,98,246,58,18,73,138,61,209,6,37,172,182,132,193,98,78,48,109,23,201,179,222,9,163,172,137,227,188,86,19,33,219,74,203,201,67,94,192,202,72,246,72,211,97,144,4,23,130,138,189,228,156,235,197,142,220,73,87,135,229,89,199,133,68,13,204,94,85,83,3,154,152,241,10,146,114,72,210,91,117,174,248,211,233,189,24,84,138,186,6,111,37,180,172,49,184,37,21,141,58,52,240,223,221,219,200,9,243,93,104,74,108,223,204,62,16,18,75,177,160,25,23,195,202,85,217,114,188,41,78,3,32,192,84,34,109,54,165,102,160,119,166,29,79,83,109,160,23,97,50,71,91,217,215,187,163,192,41,67,86,120,149,23,138,224,150,237,150,50,27,175,22,13,239,63,139,39,101,162,14,223,50,223,75,167,15,74,129,19,88,82,27,129,63,46,120,29,84,44,253,216,21,161,155,193,231,153,252,68,209,147,201,215,116,125,14,67,229,115,123,192,213,70,193,93,133,113,46,24,15,252,30,149,139,96,148,62,1,102,18,194,8,16,123,197,43,56,55,197,145,221,107,160,100,20,209,229,174,94,33,66,200,66,4,179,252,77,29,92,90,11,143,113,173,61,128,96,186,86,31,26,25,186,178,41,135,166,162,236,66,84,174,109,220,58,125,51,197,94,55,188,120,246,243,219,55,205,78,250,70,98,213,234,236,101,206,186,12,100,176,53,30,162,141,121,192,87,76,235,178,160,35,107,28,120,27,115,128,239,126,214,229,64,71,214,56,24,45,229,160,193,204,65,43,226,49,139,122,111,2,107,169,245,76,221,104,94,41,97,149,191,252,89,147,87,142,93,204,237,88,112,123,242,11,101,84,156,190,189,6,216,178,122,91,176,160,66,24,186,114,42,213,232,60,61,86,107,28,120,62,67,63,238,236,104,235,151,16,59,232,184,78,197,152,187,32,136,38,252,117,238,236,74,171,217,84,222,131,168,23,30,74,67,247,59,69,12,243,116,2,78,41,186,133,66,12,164,88,112,163,226,221,47,188,122,38,218,18,114,98,219,225,222,16,3,153,246,8,178,143,235,78,238,106,53,113,211,88,221,226,239,92,216,182,89,66,85,186,75,184,255,49,186,23,136,60,239,97,162,3,29,55,20,222,148,208,79,231,15,176,83,119,186,62,179,172,76,150,125,149,83,198,159,82,115,43,228,142,71,161,210,77,99,225,234,7,68,39,42,93,156,159,116,97,173,70,86,184,52,139,120,197,202,83,247,106,17,17,164,201,27,245,252,209,24,12,140,29,254,122,40,19,228,41,67,248,1,4,84,250,24,67,115,250,95,6,135,135,198,135,190,209,53,16,108,44,179,17,228,129,53,141,254,46,163,96,17,61,231,13,63,140,6,253,111,64,112,8,231,33,147,50,153,24,83,240,154,247,219,234,177,119,232,83,4,18,5,115,90,136,103,156,34,72,114,186,175,98,143,32,193,148,114,100,94,53,4,25,23,209,10,22,9,125,8,35,145,67,20,101,217,127,128,211,75,245,217,96,182,60,38,204,164,83,153,199,6,162,201,66,24,217,130,230,186,90,6,169,136,98,99,133,215,65,20,60,86,7,145,213,72,89,8,225,73,122,182,101,47,10,55,63,66,146,151,110,138,95,124,174,243,94,33,75,112,91,219,123,38,97,209,210,201,21,143,6,126,136,112,46,49,93,167,245,255,67,43,104,121,238,234,46,251,15,209,214,178,245,21,77,242,31,34,172,134,154,189,108,247,186,176,155,93,104,188,90,98,203,171,229,101,54,156,26,103,209,172,66,27,21,214,247,248,248,95,68,190,140,182,199,64,0,0 };