From e675ec8b5047cd7184b430aeb35283574c8eac44 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Wed, 28 Aug 2024 15:49:19 +0800 Subject: [PATCH] Extended link button --- admin/custom/customComponents.js | 2 +- admin/custom/customComponents.js.map | 2 +- ...s => src_Components_jsx.e88043ee.chunk.js} | 4 +- .../src_Components_jsx.e88043ee.chunk.js.map | 1 + .../src_Components_jsx.ed943ea7.chunk.js.map | 1 - lib/i18n.js | 53 ++++++ lib/i18n/de.json | 7 + lib/i18n/en.json | 7 + lib/i18n/es.json | 7 + lib/i18n/fr.json | 7 + lib/i18n/it.json | 7 + lib/i18n/nl.json | 7 + lib/i18n/pl.json | 7 + lib/i18n/pt.json | 7 + lib/i18n/ru.json | 7 + lib/i18n/zh-cn.json | 7 + main.js | 167 ++++++++++++++++-- src-admin/src/PingBrowseComponent.jsx | 1 + 18 files changed, 286 insertions(+), 15 deletions(-) rename admin/custom/static/js/{src_Components_jsx.ed943ea7.chunk.js => src_Components_jsx.e88043ee.chunk.js} (60%) create mode 100644 admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js.map delete mode 100644 admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js.map create mode 100644 lib/i18n.js create mode 100644 lib/i18n/de.json create mode 100644 lib/i18n/en.json create mode 100644 lib/i18n/es.json create mode 100644 lib/i18n/fr.json create mode 100644 lib/i18n/it.json create mode 100644 lib/i18n/nl.json create mode 100644 lib/i18n/pl.json create mode 100644 lib/i18n/pt.json create mode 100644 lib/i18n/ru.json create mode 100644 lib/i18n/zh-cn.json diff --git a/admin/custom/customComponents.js b/admin/custom/customComponents.js index 4e0b265..bbde316 100644 --- a/admin/custom/customComponents.js +++ b/admin/custom/customComponents.js @@ -1,4 +1,4 @@ -var ConfigCustomPingSet;(()=>{"use strict";var T={23009:(s,l,n)=>{var m={"./Components":()=>Promise.all([n.e("webpack_sharing_consume_default_react_react"),n.e("webpack_sharing_consume_default_prop-types_prop-types"),n.e("webpack_sharing_consume_default_mui_material_mui_material"),n.e("webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5"),n.e("src_Components_jsx")]).then(()=>()=>n(66393))},f=(u,b)=>(n.R=b,b=n.o(m,u)?m[u]():Promise.resolve().then(()=>{throw new Error('Module "'+u+'" does not exist in container.')}),n.R=void 0,b),p=(u,b)=>{if(n.S){var c="default",g=n.S[c];if(g&&g!==u)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return n.S[c]=u,n.I(c,b)}};n.d(l,{get:()=>f,init:()=>p})}},B={};function e(s){var l=B[s];if(l!==void 0)return l.exports;var n=B[s]={id:s,loaded:!1,exports:{}};return T[s].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}e.m=T,e.c=B,e.amdD=function(){throw new Error("define cannot be used indirect")},e.n=s=>{var l=s&&s.__esModule?()=>s.default:()=>s;return e.d(l,{a:l}),l},e.d=(s,l)=>{for(var n in l)e.o(l,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:l[n]})},e.f={},e.e=s=>Promise.all(Object.keys(e.f).reduce((l,n)=>(e.f[n](s,l),l),[])),e.u=s=>"static/js/"+s+"."+{"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6":"4a14fca8","vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs":"588691e8","vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js":"45d670ad","vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58":"1f031669",webpack_sharing_consume_default_react_react:"21e17afe","webpack_sharing_consume_default_prop-types_prop-types":"23041369","webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de":"9ed501c4",webpack_sharing_consume_default_mui_material_mui_material:"964b8de8","node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730":"b4aefc92","vendors-node_modules_mui_material_FilledInput_FilledInput_js":"a283b241","vendors-node_modules_iobroker_json-config_build_index_js":"a5ef3191","webpack_sharing_consume_default_react-dom_react-dom":"b3ae40f1","webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d":"ab00b1a0","webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5":"f325f981",_91571:"55fd1740","vendors-node_modules_mui_icons-material_esm_index_js":"bb0d80a0","vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3":"781a4ff9","vendors-node_modules_mui_material_index_js":"6c914b69","vendors-node_modules_mui_x-date-pickers_index_js":"3ae19eac","node_modules_prop-types_index_js":"14e4449a","vendors-node_modules_react-ace_lib_index_js":"f60ae856","vendors-node_modules_react-dom_index_js":"b52d06ff","vendors-node_modules_react-dropzone_dist_es_index_js":"6fcef6b7",node_modules_react_index_js:"651a4dee",src_Components_jsx:"ed943ea7","node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731":"e2151bed",_91570:"ce48d110"}[s]+".chunk.js",e.miniCssF=s=>{},e.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(s){if(typeof window=="object")return window}}(),e.o=(s,l)=>Object.prototype.hasOwnProperty.call(s,l),(()=>{var s={},l="iobroker-admin-component-ping:";e.l=(n,m,f,p)=>{if(s[n]){s[n].push(m);return}var u,b;if(f!==void 0)for(var c=document.getElementsByTagName("script"),g=0;g{u.onerror=u.onload=null,clearTimeout(k);var x=s[n];if(delete s[n],u.parentNode&&u.parentNode.removeChild(u),x&&x.forEach(h=>h(y)),P)return P(y)},k=setTimeout(j.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=j.bind(null,u.onerror),u.onload=j.bind(null,u.onload),b&&document.head.appendChild(u)}})(),e.r=s=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},e.nmd=s=>(s.paths=[],s.children||(s.children=[]),s),(()=>{e.S={};var s={},l={};e.I=(n,m)=>{m||(m=[]);var f=l[n];if(f||(f=l[n]={}),!(m.indexOf(f)>=0)){if(m.push(f),s[n])return s[n];e.o(e.S,n)||(e.S[n]={});var p=e.S[n],u=j=>{typeof console!="undefined"&&console.warn&&console.warn(j)},b="iobroker-admin-component-ping",c=(j,k,P,y)=>{var x=p[j]=p[j]||{},h=x[k];(!h||!h.loaded&&(!y!=!h.eager?y:b>h.from))&&(x[k]={get:P,from:b,eager:!!y})},g=j=>{var k=h=>u("Initialization of sharing external failed: "+h);try{var P=e(j);if(!P)return;var y=h=>h&&h.init&&h.init(e.S[n],m);if(P.then)return v.push(P.then(y,k));var x=y(P);if(x&&x.then)return v.push(x.catch(k))}catch(h){k(h)}},v=[];switch(n){case"default":c("@iobroker/adapter-react-v5","6.1.9",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("webpack_sharing_consume_default_mui_material_mui_material"),e.e("node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730")]).then(()=>()=>e(64620))),c("@iobroker/json-config","7.0.24",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_iobroker_json-config_build_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("webpack_sharing_consume_default_mui_material_mui_material"),e.e("webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d"),e.e("webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5"),e.e("_91571")]).then(()=>()=>e(51191))),c("@mui/icons-material","5.16.7",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_icons-material_esm_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(58597))),c("@mui/material","5.16.7",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_mui_material_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom")]).then(()=>()=>e(64291))),c("@mui/x-date-pickers","7.13.0",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_x-date-pickers_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom")]).then(()=>()=>e(19938))),c("prop-types","15.8.1",()=>e.e("node_modules_prop-types_index_js").then(()=>()=>e(75826))),c("react-ace","12.0.0",()=>Promise.all([e.e("vendors-node_modules_react-ace_lib_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(76216))),c("react-dom","18.3.1",()=>Promise.all([e.e("vendors-node_modules_react-dom_index_js"),e.e("webpack_sharing_consume_default_react_react")]).then(()=>()=>e(22483))),c("react-dropzone","14.2.3",()=>Promise.all([e.e("vendors-node_modules_react-dropzone_dist_es_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(72589))),c("react","18.3.1",()=>e.e("node_modules_react_index_js").then(()=>()=>e(77810)));break}return v.length?s[n]=Promise.all(v).then(()=>s[n]=1):s[n]=1}}})(),(()=>{var s;e.g.importScripts&&(s=e.g.location+"");var l=e.g.document;if(!s&&l&&(l.currentScript&&(s=l.currentScript.src),!s)){var n=l.getElementsByTagName("script");if(n.length)for(var m=n.length-1;m>-1&&(!s||!/^http(s?):/.test(s));)s=n[m--].src}if(!s)throw new Error("Automatic publicPath is not supported in this browser");s=s.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=s})(),(()=>{var s=_=>{var a=o=>o.split(".").map(t=>+t==t?+t:t),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(_),i=r[1]?a(r[1]):[];return r[2]&&(i.length++,i.push.apply(i,a(r[2]))),r[3]&&(i.push([]),i.push.apply(i,a(r[3]))),i},l=(_,a)=>{_=s(_),a=s(a);for(var r=0;;){if(r>=_.length)return r=a.length)return o=="u";var t=a[r],d=(typeof t)[0];if(o!=d)return o=="o"&&d=="n"||d=="s"||o=="u";if(o!="o"&&o!="u"&&i!=t)return i{var a=_[0],r="";if(_.length===1)return"*";if(a+.5){r+=a==0?">=":a==-1?"<":a==1?"^":a==2?"~":a>0?"=":"!=";for(var i=1,o=1;o<_.length;o++)i--,r+=(typeof(d=_[o]))[0]=="u"?"-":(i>0?".":"")+(i=2,d);return r}var t=[];for(o=1;o<_.length;o++){var d=_[o];t.push(d===0?"not("+w()+")":d===1?"("+w()+" || "+w()+")":d===2?t.pop()+" "+t.pop():n(d))}return w();function w(){return t.pop().replace(/^\((.+)\)$/,"$1")}},m=(_,a)=>{if(0 in _){a=s(a);var r=_[0],i=r<0;i&&(r=-r-1);for(var o=0,t=1,d=!0;;t++,o++){var w,M,S=t<_.length?(typeof _[t])[0]:"";if(o>=a.length||(M=(typeof(w=a[o]))[0])=="o")return!d||(S=="u"?t>r&&!i:S==""!=i);if(M=="u"){if(!d||S!="u")return!1}else if(d)if(S==M)if(t<=r){if(w!=_[t])return!1}else{if(i?w>_[t]:w<_[t])return!1;w!=_[t]&&(d=!1)}else if(S!="s"&&S!="n"){if(i||t<=r)return!1;d=!1,t--}else{if(t<=r||M_&&e.o(_,a),p=_=>(_.loaded=1,_.get()),u=_=>Object.keys(_).reduce((a,r)=>(_[r].eager&&(a[r]=_[r]),a),{}),b=(_,o,r)=>{var i=r?u(_[o]):_[o],o=Object.keys(i).reduce((t,d)=>!t||l(t,d)?d:t,0);return o&&i[o]},c=(_,t,r,i)=>{var o=i?u(_[t]):_[t],t=Object.keys(o).reduce((d,w)=>m(r,w)&&(!d||l(d,w))?w:d,0);return t&&o[t]},g=(_,a,r)=>{var i=r?u(_[a]):_[a];return Object.keys(i).reduce((o,t)=>!o||!i[o].loaded&&l(o,t)?t:o,0)},v=(_,a,r,i)=>"Unsatisfied version "+r+" from "+(r&&_[a][r].from)+" of shared singleton module "+a+" (required "+n(i)+")",j=(_,a,r,i,o)=>{var t=_[r];return"No satisfying version ("+n(i)+")"+(o?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+a+`. +var ConfigCustomPingSet;(()=>{"use strict";var T={23009:(s,l,n)=>{var m={"./Components":()=>Promise.all([n.e("webpack_sharing_consume_default_react_react"),n.e("webpack_sharing_consume_default_prop-types_prop-types"),n.e("webpack_sharing_consume_default_mui_material_mui_material"),n.e("webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5"),n.e("src_Components_jsx")]).then(()=>()=>n(66393))},f=(u,b)=>(n.R=b,b=n.o(m,u)?m[u]():Promise.resolve().then(()=>{throw new Error('Module "'+u+'" does not exist in container.')}),n.R=void 0,b),p=(u,b)=>{if(n.S){var c="default",g=n.S[c];if(g&&g!==u)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return n.S[c]=u,n.I(c,b)}};n.d(l,{get:()=>f,init:()=>p})}},B={};function e(s){var l=B[s];if(l!==void 0)return l.exports;var n=B[s]={id:s,loaded:!1,exports:{}};return T[s].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}e.m=T,e.c=B,e.amdD=function(){throw new Error("define cannot be used indirect")},e.n=s=>{var l=s&&s.__esModule?()=>s.default:()=>s;return e.d(l,{a:l}),l},e.d=(s,l)=>{for(var n in l)e.o(l,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:l[n]})},e.f={},e.e=s=>Promise.all(Object.keys(e.f).reduce((l,n)=>(e.f[n](s,l),l),[])),e.u=s=>"static/js/"+s+"."+{"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6":"4a14fca8","vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs":"588691e8","vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js":"45d670ad","vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58":"1f031669",webpack_sharing_consume_default_react_react:"21e17afe","webpack_sharing_consume_default_prop-types_prop-types":"23041369","webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de":"9ed501c4",webpack_sharing_consume_default_mui_material_mui_material:"964b8de8","node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730":"b4aefc92","vendors-node_modules_mui_material_FilledInput_FilledInput_js":"a283b241","vendors-node_modules_iobroker_json-config_build_index_js":"a5ef3191","webpack_sharing_consume_default_react-dom_react-dom":"b3ae40f1","webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d":"ab00b1a0","webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5":"f325f981",_91571:"55fd1740","vendors-node_modules_mui_icons-material_esm_index_js":"bb0d80a0","vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3":"781a4ff9","vendors-node_modules_mui_material_index_js":"6c914b69","vendors-node_modules_mui_x-date-pickers_index_js":"3ae19eac","node_modules_prop-types_index_js":"14e4449a","vendors-node_modules_react-ace_lib_index_js":"f60ae856","vendors-node_modules_react-dom_index_js":"b52d06ff","vendors-node_modules_react-dropzone_dist_es_index_js":"6fcef6b7",node_modules_react_index_js:"651a4dee",src_Components_jsx:"e88043ee","node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731":"e2151bed",_91570:"ce48d110"}[s]+".chunk.js",e.miniCssF=s=>{},e.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(s){if(typeof window=="object")return window}}(),e.o=(s,l)=>Object.prototype.hasOwnProperty.call(s,l),(()=>{var s={},l="iobroker-admin-component-ping:";e.l=(n,m,f,p)=>{if(s[n]){s[n].push(m);return}var u,b;if(f!==void 0)for(var c=document.getElementsByTagName("script"),g=0;g{u.onerror=u.onload=null,clearTimeout(k);var x=s[n];if(delete s[n],u.parentNode&&u.parentNode.removeChild(u),x&&x.forEach(h=>h(y)),P)return P(y)},k=setTimeout(j.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=j.bind(null,u.onerror),u.onload=j.bind(null,u.onload),b&&document.head.appendChild(u)}})(),e.r=s=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},e.nmd=s=>(s.paths=[],s.children||(s.children=[]),s),(()=>{e.S={};var s={},l={};e.I=(n,m)=>{m||(m=[]);var f=l[n];if(f||(f=l[n]={}),!(m.indexOf(f)>=0)){if(m.push(f),s[n])return s[n];e.o(e.S,n)||(e.S[n]={});var p=e.S[n],u=j=>{typeof console!="undefined"&&console.warn&&console.warn(j)},b="iobroker-admin-component-ping",c=(j,k,P,y)=>{var x=p[j]=p[j]||{},h=x[k];(!h||!h.loaded&&(!y!=!h.eager?y:b>h.from))&&(x[k]={get:P,from:b,eager:!!y})},g=j=>{var k=h=>u("Initialization of sharing external failed: "+h);try{var P=e(j);if(!P)return;var y=h=>h&&h.init&&h.init(e.S[n],m);if(P.then)return v.push(P.then(y,k));var x=y(P);if(x&&x.then)return v.push(x.catch(k))}catch(h){k(h)}},v=[];switch(n){case"default":c("@iobroker/adapter-react-v5","6.1.9",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("webpack_sharing_consume_default_mui_material_mui_material"),e.e("node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730")]).then(()=>()=>e(64620))),c("@iobroker/json-config","7.0.24",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_iobroker_json-config_build_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("webpack_sharing_consume_default_mui_material_mui_material"),e.e("webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d"),e.e("webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5"),e.e("_91571")]).then(()=>()=>e(51191))),c("@mui/icons-material","5.16.7",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_icons-material_esm_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(58597))),c("@mui/material","5.16.7",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_mui_material_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom")]).then(()=>()=>e(64291))),c("@mui/x-date-pickers","7.13.0",()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_x-date-pickers_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types"),e.e("webpack_sharing_consume_default_react-dom_react-dom")]).then(()=>()=>e(19938))),c("prop-types","15.8.1",()=>e.e("node_modules_prop-types_index_js").then(()=>()=>e(75826))),c("react-ace","12.0.0",()=>Promise.all([e.e("vendors-node_modules_react-ace_lib_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(76216))),c("react-dom","18.3.1",()=>Promise.all([e.e("vendors-node_modules_react-dom_index_js"),e.e("webpack_sharing_consume_default_react_react")]).then(()=>()=>e(22483))),c("react-dropzone","14.2.3",()=>Promise.all([e.e("vendors-node_modules_react-dropzone_dist_es_index_js"),e.e("webpack_sharing_consume_default_react_react"),e.e("webpack_sharing_consume_default_prop-types_prop-types")]).then(()=>()=>e(72589))),c("react","18.3.1",()=>e.e("node_modules_react_index_js").then(()=>()=>e(77810)));break}return v.length?s[n]=Promise.all(v).then(()=>s[n]=1):s[n]=1}}})(),(()=>{var s;e.g.importScripts&&(s=e.g.location+"");var l=e.g.document;if(!s&&l&&(l.currentScript&&(s=l.currentScript.src),!s)){var n=l.getElementsByTagName("script");if(n.length)for(var m=n.length-1;m>-1&&(!s||!/^http(s?):/.test(s));)s=n[m--].src}if(!s)throw new Error("Automatic publicPath is not supported in this browser");s=s.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=s})(),(()=>{var s=_=>{var a=o=>o.split(".").map(t=>+t==t?+t:t),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(_),i=r[1]?a(r[1]):[];return r[2]&&(i.length++,i.push.apply(i,a(r[2]))),r[3]&&(i.push([]),i.push.apply(i,a(r[3]))),i},l=(_,a)=>{_=s(_),a=s(a);for(var r=0;;){if(r>=_.length)return r=a.length)return o=="u";var t=a[r],d=(typeof t)[0];if(o!=d)return o=="o"&&d=="n"||d=="s"||o=="u";if(o!="o"&&o!="u"&&i!=t)return i{var a=_[0],r="";if(_.length===1)return"*";if(a+.5){r+=a==0?">=":a==-1?"<":a==1?"^":a==2?"~":a>0?"=":"!=";for(var i=1,o=1;o<_.length;o++)i--,r+=(typeof(d=_[o]))[0]=="u"?"-":(i>0?".":"")+(i=2,d);return r}var t=[];for(o=1;o<_.length;o++){var d=_[o];t.push(d===0?"not("+w()+")":d===1?"("+w()+" || "+w()+")":d===2?t.pop()+" "+t.pop():n(d))}return w();function w(){return t.pop().replace(/^\((.+)\)$/,"$1")}},m=(_,a)=>{if(0 in _){a=s(a);var r=_[0],i=r<0;i&&(r=-r-1);for(var o=0,t=1,d=!0;;t++,o++){var w,M,S=t<_.length?(typeof _[t])[0]:"";if(o>=a.length||(M=(typeof(w=a[o]))[0])=="o")return!d||(S=="u"?t>r&&!i:S==""!=i);if(M=="u"){if(!d||S!="u")return!1}else if(d)if(S==M)if(t<=r){if(w!=_[t])return!1}else{if(i?w>_[t]:w<_[t])return!1;w!=_[t]&&(d=!1)}else if(S!="s"&&S!="n"){if(i||t<=r)return!1;d=!1,t--}else{if(t<=r||M_&&e.o(_,a),p=_=>(_.loaded=1,_.get()),u=_=>Object.keys(_).reduce((a,r)=>(_[r].eager&&(a[r]=_[r]),a),{}),b=(_,o,r)=>{var i=r?u(_[o]):_[o],o=Object.keys(i).reduce((t,d)=>!t||l(t,d)?d:t,0);return o&&i[o]},c=(_,t,r,i)=>{var o=i?u(_[t]):_[t],t=Object.keys(o).reduce((d,w)=>m(r,w)&&(!d||l(d,w))?w:d,0);return t&&o[t]},g=(_,a,r)=>{var i=r?u(_[a]):_[a];return Object.keys(i).reduce((o,t)=>!o||!i[o].loaded&&l(o,t)?t:o,0)},v=(_,a,r,i)=>"Unsatisfied version "+r+" from "+(r&&_[a][r].from)+" of shared singleton module "+a+" (required "+n(i)+")",j=(_,a,r,i,o)=>{var t=_[r];return"No satisfying version ("+n(i)+")"+(o?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+a+`. Available versions: `+Object.keys(t).map(d=>d+" from "+t[d].from).join(", ")},k=_=>{throw new Error(_)},P=(_,a)=>k("Shared module "+a+" doesn't exist in shared scope "+_),y=_=>{typeof console!="undefined"&&console.warn&&console.warn(_)},x=_=>function(a,r,i,o,t){var d=e.I(a);return d&&d.then&&!i?d.then(_.bind(_,a,e.S[a],r,!1,o,t)):_(a,e.S[a],r,i,o,t)},h=(_,a,r)=>r?r():P(_,a),$=x((_,a,r,i,o)=>f(a,r)?p(b(a,r,i)):h(_,r,o)),U=x((_,a,r,i,o,t)=>{if(!f(a,r))return h(_,r,t);var d=c(a,r,o,i);return d?p(d):(y(j(a,_,r,o,i)),p(b(a,r,i)))}),L=x((_,a,r,i,o,t)=>{if(!f(a,r))return h(_,r,t);var d=c(a,r,o,i);if(d)return p(d);if(t)return t();k(j(a,_,r,o,i))}),G=x((_,a,r,i,o)=>{if(!f(a,r))return h(_,r,o);var t=g(a,r,i);return p(a[r][t])}),C=x((_,a,r,i,o,t)=>{if(!f(a,r))return h(_,r,t);var d=g(a,r,i);return m(o,d)||y(v(a,r,d,o)),p(a[r][d])}),H=x((_,a,r,i,o,t)=>{if(!f(a,r))return h(_,r,t);var d=g(a,r,i);return m(o,d)||k(v(a,r,d,o)),p(a[r][d])}),F={},I={28437:()=>C("default","react",!1,[0],()=>e.e("node_modules_react_index_js").then(()=>()=>e(77810))),95973:()=>C("default","prop-types",!1,[0],()=>e.e("node_modules_prop-types_index_js").then(()=>()=>e(75826))),21839:()=>C("default","@mui/icons-material",!1,[0],()=>e.e("vendors-node_modules_mui_icons-material_esm_index_js").then(()=>()=>e(58597))),53683:()=>C("default","react-dropzone",!1,[0],()=>e.e("vendors-node_modules_react-dropzone_dist_es_index_js").then(()=>()=>e(72589))),67085:()=>C("default","@mui/material",!1,[0],()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_mui_material_index_js"),e.e("webpack_sharing_consume_default_react-dom_react-dom")]).then(()=>()=>e(64291))),23479:()=>C("default","react-dom",!1,[0],()=>e.e("vendors-node_modules_react-dom_index_js").then(()=>()=>e(22483))),28497:()=>C("default","@mui/x-date-pickers",!1,[0],()=>Promise.all([e.e("vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3"),e.e("vendors-node_modules_mui_x-date-pickers_index_js")]).then(()=>()=>e(19938))),58093:()=>C("default","react-ace",!1,[0],()=>e.e("vendors-node_modules_react-ace_lib_index_js").then(()=>()=>e(76216))),37449:()=>C("default","@iobroker/adapter-react-v5",!1,[0],()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js"),e.e("vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731")]).then(()=>()=>e(64620))),60556:()=>C("default","@iobroker/json-config",!1,[0],()=>Promise.all([e.e("vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6"),e.e("vendors-node_modules_mui_material_FilledInput_FilledInput_js"),e.e("vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs"),e.e("vendors-node_modules_iobroker_json-config_build_index_js"),e.e("webpack_sharing_consume_default_react-dom_react-dom"),e.e("webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de"),e.e("webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d"),e.e("_91570")]).then(()=>()=>e(51191)))},V={webpack_sharing_consume_default_react_react:[28437],"webpack_sharing_consume_default_prop-types_prop-types":[95973],"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de":[21839,53683],webpack_sharing_consume_default_mui_material_mui_material:[67085],"webpack_sharing_consume_default_react-dom_react-dom":[23479],"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d":[28497,58093],"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5":[37449],src_Components_jsx:[60556]},z={};e.f.consumes=(_,a)=>{e.o(V,_)&&V[_].forEach(r=>{if(e.o(F,r))return a.push(F[r]);if(!z[r]){var i=d=>{F[r]=0,e.m[r]=w=>{delete e.c[r],w.exports=d()}};z[r]=!0;var o=d=>{delete F[r],e.m[r]=w=>{throw delete e.c[r],d}};try{var t=I[r]();t.then?a.push(F[r]=t.then(i).catch(o)):i(t)}catch(d){o(d)}}})}})(),(()=>{var s={ConfigCustomPingSet:0};e.f.j=(m,f)=>{var p=e.o(s,m)?s[m]:void 0;if(p!==0)if(p)f.push(p[2]);else if(/^webpack_sharing_consume_default_(mui_(icons\-material_mui_icons\-material\-webpack_sharing_consume\-80e7de|material_mui_material|x\-date\-pickers_mui_x\-date\-pickers\-webpack_sharing_consume\-9f1a2d)|react(\-dom_react\-dom|_react)|iobroker_adapter\-react\-v5_iobroker_adapter\-react\-v5|prop\-types_prop\-types)$/.test(m))s[m]=0;else{var u=new Promise((v,j)=>p=s[m]=[v,j]);f.push(p[2]=u);var b=e.p+e.u(m),c=new Error,g=v=>{if(e.o(s,m)&&(p=s[m],p!==0&&(s[m]=void 0),p)){var j=v&&(v.type==="load"?"missing":v.type),k=v&&v.target&&v.target.src;c.message="Loading chunk "+m+` failed. (`+j+": "+k+")",c.name="ChunkLoadError",c.type=j,c.request=k,p[1](c)}};e.l(b,g,"chunk-"+m,m)}};var l=(m,f)=>{var p=f[0],u=f[1],b=f[2],c,g,v=0;if(p.some(k=>s[k]!==0)){for(c in u)e.o(u,c)&&(e.m[c]=u[c]);if(b)var j=b(e)}for(m&&m(f);v {\n\t\treturn Promise.all([__webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\"), __webpack_require__.e(\"src_Components_jsx\")]).then(() => (() => ((__webpack_require__(66393)))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\":\"4a14fca8\",\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\":\"588691e8\",\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\":\"45d670ad\",\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\":\"1f031669\",\"webpack_sharing_consume_default_react_react\":\"21e17afe\",\"webpack_sharing_consume_default_prop-types_prop-types\":\"23041369\",\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\":\"9ed501c4\",\"webpack_sharing_consume_default_mui_material_mui_material\":\"964b8de8\",\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730\":\"b4aefc92\",\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\":\"a283b241\",\"vendors-node_modules_iobroker_json-config_build_index_js\":\"a5ef3191\",\"webpack_sharing_consume_default_react-dom_react-dom\":\"b3ae40f1\",\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\":\"ab00b1a0\",\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\":\"f325f981\",\"_91571\":\"55fd1740\",\"vendors-node_modules_mui_icons-material_esm_index_js\":\"bb0d80a0\",\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\":\"781a4ff9\",\"vendors-node_modules_mui_material_index_js\":\"6c914b69\",\"vendors-node_modules_mui_x-date-pickers_index_js\":\"3ae19eac\",\"node_modules_prop-types_index_js\":\"14e4449a\",\"vendors-node_modules_react-ace_lib_index_js\":\"f60ae856\",\"vendors-node_modules_react-dom_index_js\":\"b52d06ff\",\"vendors-node_modules_react-dropzone_dist_es_index_js\":\"6fcef6b7\",\"node_modules_react_index_js\":\"651a4dee\",\"src_Components_jsx\":\"ed943ea7\",\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731\":\"e2151bed\",\"_91570\":\"ce48d110\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"iobroker-admin-component-ping:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"iobroker-admin-component-ping\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"@iobroker/adapter-react-v5\", \"6.1.9\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730\")]).then(() => (() => (__webpack_require__(64620))))));\n\t\t\tregister(\"@iobroker/json-config\", \"7.0.24\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_iobroker_json-config_build_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\"), __webpack_require__.e(\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\"), __webpack_require__.e(\"_91571\")]).then(() => (() => (__webpack_require__(51191))))));\n\t\t\tregister(\"@mui/icons-material\", \"5.16.7\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_icons-material_esm_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(58597))))));\n\t\t\tregister(\"@mui/material\", \"5.16.7\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(64291))))));\n\t\t\tregister(\"@mui/x-date-pickers\", \"7.13.0\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_x-date-pickers_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(19938))))));\n\t\t\tregister(\"prop-types\", \"15.8.1\", () => (__webpack_require__.e(\"node_modules_prop-types_index_js\").then(() => (() => (__webpack_require__(75826))))));\n\t\t\tregister(\"react-ace\", \"12.0.0\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-ace_lib_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(76216))))));\n\t\t\tregister(\"react-dom\", \"18.3.1\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-dom_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\")]).then(() => (() => (__webpack_require__(22483))))));\n\t\t\tregister(\"react-dropzone\", \"14.2.3\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-dropzone_dist_es_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(72589))))));\n\t\t\tregister(\"react\", \"18.3.1\", () => (__webpack_require__.e(\"node_modules_react_index_js\").then(() => (() => (__webpack_require__(77810))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t28437: () => (loadSingletonVersion(\"default\", \"react\", false, [0], () => (__webpack_require__.e(\"node_modules_react_index_js\").then(() => (() => (__webpack_require__(77810))))))),\n\t95973: () => (loadSingletonVersion(\"default\", \"prop-types\", false, [0], () => (__webpack_require__.e(\"node_modules_prop-types_index_js\").then(() => (() => (__webpack_require__(75826))))))),\n\t21839: () => (loadSingletonVersion(\"default\", \"@mui/icons-material\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_mui_icons-material_esm_index_js\").then(() => (() => (__webpack_require__(58597))))))),\n\t53683: () => (loadSingletonVersion(\"default\", \"react-dropzone\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-dropzone_dist_es_index_js\").then(() => (() => (__webpack_require__(72589))))))),\n\t67085: () => (loadSingletonVersion(\"default\", \"@mui/material\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(64291))))))),\n\t23479: () => (loadSingletonVersion(\"default\", \"react-dom\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-dom_index_js\").then(() => (() => (__webpack_require__(22483))))))),\n\t28497: () => (loadSingletonVersion(\"default\", \"@mui/x-date-pickers\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_x-date-pickers_index_js\")]).then(() => (() => (__webpack_require__(19938))))))),\n\t58093: () => (loadSingletonVersion(\"default\", \"react-ace\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-ace_lib_index_js\").then(() => (() => (__webpack_require__(76216))))))),\n\t37449: () => (loadSingletonVersion(\"default\", \"@iobroker/adapter-react-v5\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731\")]).then(() => (() => (__webpack_require__(64620))))))),\n\t60556: () => (loadSingletonVersion(\"default\", \"@iobroker/json-config\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_iobroker_json-config_build_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\"), __webpack_require__.e(\"_91570\")]).then(() => (() => (__webpack_require__(51191)))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"webpack_sharing_consume_default_react_react\": [\n\t\t28437\n\t],\n\t\"webpack_sharing_consume_default_prop-types_prop-types\": [\n\t\t95973\n\t],\n\t\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\": [\n\t\t21839,\n\t\t53683\n\t],\n\t\"webpack_sharing_consume_default_mui_material_mui_material\": [\n\t\t67085\n\t],\n\t\"webpack_sharing_consume_default_react-dom_react-dom\": [\n\t\t23479\n\t],\n\t\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\": [\n\t\t28497,\n\t\t58093\n\t],\n\t\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\": [\n\t\t37449\n\t],\n\t\"src_Components_jsx\": [\n\t\t60556\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"ConfigCustomPingSet\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^webpack_sharing_consume_default_(mui_(icons\\-material_mui_icons\\-material\\-webpack_sharing_consume\\-80e7de|material_mui_material|x\\-date\\-pickers_mui_x\\-date\\-pickers\\-webpack_sharing_consume\\-9f1a2d)|react(\\-dom_react\\-dom|_react)|iobroker_adapter\\-react\\-v5_iobroker_adapter\\-react\\-v5|prop\\-types_prop\\-types)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkiobroker_admin_component_ping\"] = self[\"webpackChunkiobroker_admin_component_ping\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(23009);\n"],"names":["moduleMap","__webpack_require__","get","module","getScope","init","shareScope","initScope","name","oldScope","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","definition","key","chunkId","promises","e","obj","prop","inProgress","dataWebpackPrefix","url","done","script","needAttach","scripts","i","s","onScriptComplete","prev","event","timeout","doneFns","fn","initPromises","initTokens","initToken","scope","warn","msg","uniqueName","register","version","factory","eager","versions","activeVersion","initExternal","id","handleError","err","initFn","initResult","scriptUrl","document","parseVersion","str","p","n","r","versionLt","a","b","f","rangeToString","range","t","g","o","satisfy","u","exists","entry","eagerOnly","filtered","findLatestVersion","findSatisfyingVersion","requiredVersion","findSingletonVersionKey","getInvalidSingletonVersionMessage","getInvalidVersionMessage","scopeName","fail","failAsNotExist","c","d","promise","useFallback","fallback","load","loadVersion","satisfyingVersion","loadStrictVersion","loadSingleton","loadSingletonVersion","loadStrictSingletonVersion","installedModules","moduleToHandlerMapping","chunkMapping","startedInstallModules","onFactory","onError","error","installedChunks","installedChunkData","resolve","reject","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","result","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"customComponents.js","mappings":"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","sources":["../webpack/container-entry","../webpack/bootstrap","../webpack/runtime/amd define","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/sharing","../webpack/runtime/publicPath","../webpack/runtime/consumes","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../webpack/startup"],"sourcesContent":["var moduleMap = {\n\t\"./Components\": () => {\n\t\treturn Promise.all([__webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\"), __webpack_require__.e(\"src_Components_jsx\")]).then(() => (() => ((__webpack_require__(66393)))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\":\"4a14fca8\",\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\":\"588691e8\",\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\":\"45d670ad\",\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\":\"1f031669\",\"webpack_sharing_consume_default_react_react\":\"21e17afe\",\"webpack_sharing_consume_default_prop-types_prop-types\":\"23041369\",\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\":\"9ed501c4\",\"webpack_sharing_consume_default_mui_material_mui_material\":\"964b8de8\",\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730\":\"b4aefc92\",\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\":\"a283b241\",\"vendors-node_modules_iobroker_json-config_build_index_js\":\"a5ef3191\",\"webpack_sharing_consume_default_react-dom_react-dom\":\"b3ae40f1\",\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\":\"ab00b1a0\",\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\":\"f325f981\",\"_91571\":\"55fd1740\",\"vendors-node_modules_mui_icons-material_esm_index_js\":\"bb0d80a0\",\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\":\"781a4ff9\",\"vendors-node_modules_mui_material_index_js\":\"6c914b69\",\"vendors-node_modules_mui_x-date-pickers_index_js\":\"3ae19eac\",\"node_modules_prop-types_index_js\":\"14e4449a\",\"vendors-node_modules_react-ace_lib_index_js\":\"f60ae856\",\"vendors-node_modules_react-dom_index_js\":\"b52d06ff\",\"vendors-node_modules_react-dropzone_dist_es_index_js\":\"6fcef6b7\",\"node_modules_react_index_js\":\"651a4dee\",\"src_Components_jsx\":\"e88043ee\",\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731\":\"e2151bed\",\"_91570\":\"ce48d110\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"iobroker-admin-component-ping:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"iobroker-admin-component-ping\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"@iobroker/adapter-react-v5\", \"6.1.9\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23730\")]).then(() => (() => (__webpack_require__(64620))))));\n\t\t\tregister(\"@iobroker/json-config\", \"7.0.24\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_iobroker_json-config_build_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_material_mui_material\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\"), __webpack_require__.e(\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\"), __webpack_require__.e(\"_91571\")]).then(() => (() => (__webpack_require__(51191))))));\n\t\t\tregister(\"@mui/icons-material\", \"5.16.7\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_icons-material_esm_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(58597))))));\n\t\t\tregister(\"@mui/material\", \"5.16.7\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(64291))))));\n\t\t\tregister(\"@mui/x-date-pickers\", \"7.13.0\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_x-date-pickers_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(19938))))));\n\t\t\tregister(\"prop-types\", \"15.8.1\", () => (__webpack_require__.e(\"node_modules_prop-types_index_js\").then(() => (() => (__webpack_require__(75826))))));\n\t\t\tregister(\"react-ace\", \"12.0.0\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-ace_lib_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(76216))))));\n\t\t\tregister(\"react-dom\", \"18.3.1\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-dom_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\")]).then(() => (() => (__webpack_require__(22483))))));\n\t\t\tregister(\"react-dropzone\", \"14.2.3\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-dropzone_dist_es_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"webpack_sharing_consume_default_prop-types_prop-types\")]).then(() => (() => (__webpack_require__(72589))))));\n\t\t\tregister(\"react\", \"18.3.1\", () => (__webpack_require__.e(\"node_modules_react_index_js\").then(() => (() => (__webpack_require__(77810))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t28437: () => (loadSingletonVersion(\"default\", \"react\", false, [0], () => (__webpack_require__.e(\"node_modules_react_index_js\").then(() => (() => (__webpack_require__(77810))))))),\n\t95973: () => (loadSingletonVersion(\"default\", \"prop-types\", false, [0], () => (__webpack_require__.e(\"node_modules_prop-types_index_js\").then(() => (() => (__webpack_require__(75826))))))),\n\t21839: () => (loadSingletonVersion(\"default\", \"@mui/icons-material\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_mui_icons-material_esm_index_js\").then(() => (() => (__webpack_require__(58597))))))),\n\t53683: () => (loadSingletonVersion(\"default\", \"react-dropzone\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-dropzone_dist_es_index_js\").then(() => (() => (__webpack_require__(72589))))))),\n\t67085: () => (loadSingletonVersion(\"default\", \"@mui/material\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_mui_material_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\")]).then(() => (() => (__webpack_require__(64291))))))),\n\t23479: () => (loadSingletonVersion(\"default\", \"react-dom\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-dom_index_js\").then(() => (() => (__webpack_require__(22483))))))),\n\t28497: () => (loadSingletonVersion(\"default\", \"@mui/x-date-pickers\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_Button_Button_js-node_modules_mui_material_Chip_Chip_js-nod-0905a3\"), __webpack_require__.e(\"vendors-node_modules_mui_x-date-pickers_index_js\")]).then(() => (() => (__webpack_require__(19938))))))),\n\t58093: () => (loadSingletonVersion(\"default\", \"react-ace\", false, [0], () => (__webpack_require__.e(\"vendors-node_modules_react-ace_lib_index_js\").then(() => (() => (__webpack_require__(76216))))))),\n\t37449: () => (loadSingletonVersion(\"default\", \"@iobroker/adapter-react-v5\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_mui_material_colors_index_js-node_modules_mui_material_styles_index_js\"), __webpack_require__.e(\"vendors-node_modules_iobroker_adapter-react-v5_index_js-node_modules_mui_material_styles_cssU-2e9b58\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"node_modules_iobroker_adapter-react-v5_assets_devices_sync_recursive_-node_modules_iobroker_a-de23731\")]).then(() => (() => (__webpack_require__(64620))))))),\n\t60556: () => (loadSingletonVersion(\"default\", \"@iobroker/json-config\", false, [0], () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_mui_material_styles_styled_js-node_modules_mui_system_esm_DefaultPropsPr-f385a6\"), __webpack_require__.e(\"vendors-node_modules_mui_material_FilledInput_FilledInput_js\"), __webpack_require__.e(\"vendors-node_modules_react-color_es_index_js-node_modules_react-icons_lib_index_mjs\"), __webpack_require__.e(\"vendors-node_modules_iobroker_json-config_build_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\"), __webpack_require__.e(\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\"), __webpack_require__.e(\"_91570\")]).then(() => (() => (__webpack_require__(51191)))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"webpack_sharing_consume_default_react_react\": [\n\t\t28437\n\t],\n\t\"webpack_sharing_consume_default_prop-types_prop-types\": [\n\t\t95973\n\t],\n\t\"webpack_sharing_consume_default_mui_icons-material_mui_icons-material-webpack_sharing_consume-80e7de\": [\n\t\t21839,\n\t\t53683\n\t],\n\t\"webpack_sharing_consume_default_mui_material_mui_material\": [\n\t\t67085\n\t],\n\t\"webpack_sharing_consume_default_react-dom_react-dom\": [\n\t\t23479\n\t],\n\t\"webpack_sharing_consume_default_mui_x-date-pickers_mui_x-date-pickers-webpack_sharing_consume-9f1a2d\": [\n\t\t28497,\n\t\t58093\n\t],\n\t\"webpack_sharing_consume_default_iobroker_adapter-react-v5_iobroker_adapter-react-v5\": [\n\t\t37449\n\t],\n\t\"src_Components_jsx\": [\n\t\t60556\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"ConfigCustomPingSet\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^webpack_sharing_consume_default_(mui_(icons\\-material_mui_icons\\-material\\-webpack_sharing_consume\\-80e7de|material_mui_material|x\\-date\\-pickers_mui_x\\-date\\-pickers\\-webpack_sharing_consume\\-9f1a2d)|react(\\-dom_react\\-dom|_react)|iobroker_adapter\\-react\\-v5_iobroker_adapter\\-react\\-v5|prop\\-types_prop\\-types)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkiobroker_admin_component_ping\"] = self[\"webpackChunkiobroker_admin_component_ping\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(23009);\n"],"names":["moduleMap","__webpack_require__","get","module","getScope","init","shareScope","initScope","name","oldScope","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","definition","key","chunkId","promises","e","obj","prop","inProgress","dataWebpackPrefix","url","done","script","needAttach","scripts","i","s","onScriptComplete","prev","event","timeout","doneFns","fn","initPromises","initTokens","initToken","scope","warn","msg","uniqueName","register","version","factory","eager","versions","activeVersion","initExternal","id","handleError","err","initFn","initResult","scriptUrl","document","parseVersion","str","p","n","r","versionLt","a","b","f","rangeToString","range","t","g","o","satisfy","u","exists","entry","eagerOnly","filtered","findLatestVersion","findSatisfyingVersion","requiredVersion","findSingletonVersionKey","getInvalidSingletonVersionMessage","getInvalidVersionMessage","scopeName","fail","failAsNotExist","c","d","promise","useFallback","fallback","load","loadVersion","satisfyingVersion","loadStrictVersion","loadSingleton","loadSingletonVersion","loadStrictSingletonVersion","installedModules","moduleToHandlerMapping","chunkMapping","startedInstallModules","onFactory","onError","error","installedChunks","installedChunkData","resolve","reject","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","result","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js b/admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js similarity index 60% rename from admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js rename to admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js index 66574a8..d6f7409 100644 --- a/admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js +++ b/admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js @@ -1,3 +1,3 @@ -"use strict";(self.webpackChunkiobroker_admin_component_ping=self.webpackChunkiobroker_admin_component_ping||[]).push([["src_Components_jsx"],{66393:(x,v,d)=>{d.r(v),d.d(v,{default:()=>T});var b=d(28437),s=d.n(b),y=d(95973),u=d.n(y),a=d(67085),p=d(37449),S=d(60556),C=Object.defineProperty,E=Object.getPrototypeOf,w=Reflect.get,_=(h,t,i)=>t in h?C(h,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):h[t]=i,k=(h,t,i)=>_(h,typeof t!="symbol"?t+"":t,i),I=(h,t,i)=>w(E(h),i,t),f=(h,t,i)=>new Promise((l,e)=>{var n=o=>{try{c(i.next(o))}catch(m){e(m)}},r=o=>{try{c(i.throw(o))}catch(m){e(m)}},c=o=>o.done?l(o.value):Promise.resolve(o.value).then(n,r);c((i=i.apply(h,t)).next())});function $(h){const t=h.split(".").map(l=>parseInt(l,10).toString(2));if(t.length!==4)return 0;const i=t.join("").split("1").length-1;return Math.pow(2,32-i)}class g extends S.ConfigGeneric{constructor(t){super(t),k(this,"onChangedState",(i,l)=>{if(i.endsWith(".alive")){const e=l?l.val:!1;e!==this.state.alive&&this.setState({alive:e})}else if(i.endsWith(".progress")){const e=l?l.val:0;e!==this.state.progress&&this.setState({progress:e})}else if(i.endsWith(".running")){const e=!!(l!=null&&l.val);e!==this.state.running&&this.setState({running:e})}else if(i.endsWith(".result")){const e=(l==null?void 0:l.val)||"[]";e!==JSON.stringify(this.state.ips)&&this.setState({ips:JSON.parse(e)})}else if(i.endsWith(".status")){const e=(l==null?void 0:l.val)||"";e!==this.state.status&&this.setState({status:e})}else if(i.endsWith(".interface")){const e=(l==null?void 0:l.val)||"";e&&e!==this.state.interface&&this.state.interfaces.find(n=>n.ip===e)&&this.setState({interface:e})}}),this.state={alive:!1,progress:0,interface:"",interfaces:[],selected:[],ips:[],running:!1,status:""}}getAllInterfaces(){return f(this,null,function*(){var t,i;const l=[],e=yield this.props.socket.getObject(`system.adapter.ping.${this.props.instance}`),n=yield this.props.socket.getObject(`system.host.${e.common.host}`);return(i=(t=n==null?void 0:n.native)==null?void 0:t.hardware)!=null&&i.networkInterfaces&&Object.keys(n.native.hardware.networkInterfaces).forEach(r=>{n.native.hardware.networkInterfaces[r].forEach(o=>{o.family==="IPv4"&&!o.internal&&l.push({name:r,ip:o.address,netmask:o.netmask})})}),l})}componentDidMount(){return f(this,null,function*(){yield I(g.prototype,this,"componentDidMount").call(this);const t={},i=yield this.props.socket.getState(`system.adapter.ping.${this.props.instance}.alive`);t.alive=!!(i!=null&&i.val);const l=yield this.props.socket.getState(`ping.${this.props.instance}.browse.interface`),e=yield this.props.socket.getState(`ping.${this.props.instance}.browse.progress`),n=yield this.props.socket.getState(`ping.${this.props.instance}.browse.running`),r=yield this.props.socket.getState(`ping.${this.props.instance}.browse.result`),c=yield this.props.socket.getState(`ping.${this.props.instance}.browse.status`);t.status=(c==null?void 0:c.val)||"",t.progress=(e==null?void 0:e.val)||0,t.running=!!(n!=null&&n.val);try{t.ips=JSON.parse(r==null?void 0:r.val)||[],t.ips[0]&&typeof t.ips=="string"&&(t.ips=t.ips.map(o=>({ip:o})))}catch(o){t.ips=[]}yield this.props.socket.subscribeState(`system.adapter.ping.${this.props.instance}.alive`,this.onChangedState),yield this.props.socket.subscribeState(`ping.${this.props.instance}.browse.*`,this.onChangedState),t.interfaces=yield this.getAllInterfaces(),t.interfaces.find(o=>o.ip===(l==null?void 0:l.val))&&(t.interface=l==null?void 0:l.val),this.setState(t)})}browse(){this.props.socket.sendTo(`ping.${this.props.instance}`,"browse",this.state.interfaces.find(t=>t.ip===this.state.interface)).catch(t=>console.error(`Cannot ping: ${t}`))}componentWillUnmount(){return f(this,null,function*(){yield this.props.socket.unsubscribeState(`system.adapter.ping.${this.props.instance}.alive`,this.onChangedState),yield this.props.socket.unsubscribeState(`ping.${this.props.instance}.browse.*`,this.onChangedState)})}renderItem(){if(!this.state.interfaces)return s().createElement(a.LinearProgress,null);const t=this.props.data.devices||[],i=this.state.ips.filter(e=>!t.find(n=>n.ip===e.ip)),l=i.length===this.state.selected.length;return s().createElement("div",{style:{width:"100%"},className:"ping_custom"},s().createElement("h4",null,p.I18n.t("custom_ping_title")),s().createElement("div",{style:{width:"100%",display:"flex",alignItems:"center"}},s().createElement(a.FormControl,{style:{width:"100%",maxWidth:600},variant:"standard"},s().createElement(a.InputLabel,null,p.I18n.t("custom_ping_interface")),s().createElement(a.Select,{variant:"standard",disabled:this.state.running,value:this.state.interface,onChange:e=>this.setState({interface:e.target.value},()=>this.props.socket.setState(`ping.${this.props.instance}.browse.interface`,this.state.interface))},s().createElement(a.MenuItem,{value:""},s().createElement("em",null,p.I18n.t("custom_ping_select_interface"))),this.state.interfaces.map(e=>{const n=$(e.netmask);return s().createElement(a.MenuItem,{disabled:n>4096,value:e.ip},`${e.name} - ${e.ip} (${n} ${p.I18n.t("custom_ping_ips")})`)}))),s().createElement(a.Button,{style:{marginLeft:16,whiteSpace:"nowrap"},variant:"contained",disabled:!this.state.alive||!this.state.interface,onClick:()=>{this.state.running?this.props.socket.setState(`ping.${this.props.instance}.browse.running`,!1):this.browse()}},s().createElement("span",{style:{marginLeft:8}},this.state.running?`${this.state.status} ${p.I18n.t("custom_ping_stop")}`:p.I18n.t("custom_ping_browse")))),this.state.running?s().createElement(a.LinearProgress,{value:this.state.progress/255*100,variant:"determinate"}):s().createElement("div",{style:{height:4}}),s().createElement(a.Button,{variant:"contained",style:{marginTop:10,marginBottom:10},disabled:!this.state.selected.length,onClick:()=>{const e=[...this.props.data.devices];this.state.selected.forEach(r=>{e.find(c=>c.ip===r)||e.push({ip:r,name:r})});const n=JSON.parse(JSON.stringify(this.props.data));n.devices=e,e.sort((r,c)=>r.ip>c.ip?1:r.ip{l?this.setState({selected:[]}):this.setState({selected:i})}}):null),s().createElement(a.TableCell,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",height:55}},p.I18n.t("custom_ping_ip")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_mac")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_vendor")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_ignore")))),s().createElement(a.TableBody,null,this.state.ips.map(e=>s().createElement(a.TableRow,{key:e.ip,sx:{"&:last-child td, &:last-child th":{border:0}}},s().createElement(a.TableCell,{component:"th",scope:"row"},t.find(n=>n.ip===e.ip)?null:s().createElement(a.Checkbox,{checked:this.state.selected.includes(e.ip),style:{padding:"0 8px"},onChange:()=>{const n=this.state.selected,r=n.indexOf(e.ip);r===-1?n.push(e.ip):n.splice(r,1),this.setState({selected:n})}})),s().createElement(a.TableCell,null,e.ip),s().createElement(a.TableCell,null,e.mac),s().createElement(a.TableCell,null,e.vendor),s().createElement(a.TableCell,null,t.find(n=>n.ip===e.ip)?null:s().createElement(a.Checkbox,{checked:e.ignore,style:{padding:"0 8px"},onChange:()=>{const n=[...this.state.ips],r=n.find(c=>c.ip===e.ip);r&&(r.ignore=!r.ignore,this.setState({ips:n},()=>this.props.socket.setState(`ping.${this.props.instance}.browse.result`,JSON.stringify(n),!1)))}}))))))))}}g.propTypes={socket:u().object.isRequired,themeType:u().string,themeName:u().string,style:u().object,data:u().object.isRequired,attr:u().string,schema:u().object,onError:u().func,onChange:u().func};const T={PingBrowseComponent:g}}}]); +"use strict";(self.webpackChunkiobroker_admin_component_ping=self.webpackChunkiobroker_admin_component_ping||[]).push([["src_Components_jsx"],{66393:(x,v,d)=>{d.r(v),d.d(v,{default:()=>T});var b=d(28437),s=d.n(b),y=d(95973),u=d.n(y),a=d(67085),p=d(37449),S=d(60556),C=Object.defineProperty,E=Object.getPrototypeOf,w=Reflect.get,_=(h,t,i)=>t in h?C(h,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):h[t]=i,k=(h,t,i)=>_(h,typeof t!="symbol"?t+"":t,i),I=(h,t,i)=>w(E(h),i,t),f=(h,t,i)=>new Promise((l,e)=>{var n=o=>{try{c(i.next(o))}catch(m){e(m)}},r=o=>{try{c(i.throw(o))}catch(m){e(m)}},c=o=>o.done?l(o.value):Promise.resolve(o.value).then(n,r);c((i=i.apply(h,t)).next())});function $(h){const t=h.split(".").map(l=>parseInt(l,10).toString(2));if(t.length!==4)return 0;const i=t.join("").split("1").length-1;return Math.pow(2,32-i)}class g extends S.ConfigGeneric{constructor(t){super(t),k(this,"onChangedState",(i,l)=>{if(i.endsWith(".alive")){const e=l?l.val:!1;e!==this.state.alive&&this.setState({alive:e})}else if(i.endsWith(".progress")){const e=l?l.val:0;e!==this.state.progress&&this.setState({progress:e})}else if(i.endsWith(".running")){const e=!!(l!=null&&l.val);e!==this.state.running&&this.setState({running:e})}else if(i.endsWith(".result")){const e=(l==null?void 0:l.val)||"[]";e!==JSON.stringify(this.state.ips)&&this.setState({ips:JSON.parse(e)})}else if(i.endsWith(".status")){const e=(l==null?void 0:l.val)||"";e!==this.state.status&&this.setState({status:e})}else if(i.endsWith(".interface")){const e=(l==null?void 0:l.val)||"";e&&e!==this.state.interface&&this.state.interfaces.find(n=>n.ip===e)&&this.setState({interface:e})}}),this.state={alive:!1,progress:0,interface:"",interfaces:[],selected:[],ips:[],running:!1,status:""}}getAllInterfaces(){return f(this,null,function*(){var t,i;const l=[],e=yield this.props.socket.getObject(`system.adapter.ping.${this.props.instance}`),n=yield this.props.socket.getObject(`system.host.${e.common.host}`);return(i=(t=n==null?void 0:n.native)==null?void 0:t.hardware)!=null&&i.networkInterfaces&&Object.keys(n.native.hardware.networkInterfaces).forEach(r=>{n.native.hardware.networkInterfaces[r].forEach(o=>{o.family==="IPv4"&&!o.internal&&l.push({name:r,ip:o.address,netmask:o.netmask})})}),l})}componentDidMount(){return f(this,null,function*(){yield I(g.prototype,this,"componentDidMount").call(this);const t={},i=yield this.props.socket.getState(`system.adapter.ping.${this.props.instance}.alive`);t.alive=!!(i!=null&&i.val);const l=yield this.props.socket.getState(`ping.${this.props.instance}.browse.interface`),e=yield this.props.socket.getState(`ping.${this.props.instance}.browse.progress`),n=yield this.props.socket.getState(`ping.${this.props.instance}.browse.running`),r=yield this.props.socket.getState(`ping.${this.props.instance}.browse.result`),c=yield this.props.socket.getState(`ping.${this.props.instance}.browse.status`);t.status=(c==null?void 0:c.val)||"",t.progress=(e==null?void 0:e.val)||0,t.running=!!(n!=null&&n.val);try{t.ips=JSON.parse(r==null?void 0:r.val)||[],t.ips[0]&&typeof t.ips=="string"&&(t.ips=t.ips.map(o=>({ip:o})))}catch(o){t.ips=[]}yield this.props.socket.subscribeState(`system.adapter.ping.${this.props.instance}.alive`,this.onChangedState),yield this.props.socket.subscribeState(`ping.${this.props.instance}.browse.*`,this.onChangedState),t.interfaces=yield this.getAllInterfaces(),t.interfaces.find(o=>o.ip===(l==null?void 0:l.val))&&(t.interface=l==null?void 0:l.val),this.setState(t)})}browse(){this.props.socket.sendTo(`ping.${this.props.instance}`,"browse",this.state.interfaces.find(t=>t.ip===this.state.interface)).catch(t=>console.error(`Cannot ping: ${t}`))}componentWillUnmount(){return f(this,null,function*(){yield this.props.socket.unsubscribeState(`system.adapter.ping.${this.props.instance}.alive`,this.onChangedState),yield this.props.socket.unsubscribeState(`ping.${this.props.instance}.browse.*`,this.onChangedState)})}renderItem(){if(!this.state.interfaces)return s().createElement(a.LinearProgress,null);const t=this.props.data.devices||[],i=this.state.ips.filter(e=>!t.find(n=>n.ip===e.ip)),l=i.length===this.state.selected.length;return s().createElement("div",{style:{width:"100%"},className:"ping_custom"},s().createElement("h4",null,p.I18n.t("custom_ping_title")),s().createElement("div",{style:{width:"100%",display:"flex",alignItems:"center"}},s().createElement(a.FormControl,{style:{width:"100%",maxWidth:600},variant:"standard"},s().createElement(a.InputLabel,null,p.I18n.t("custom_ping_interface")),s().createElement(a.Select,{variant:"standard",disabled:this.state.running,value:this.state.interface,onChange:e=>this.setState({interface:e.target.value},()=>this.props.socket.setState(`ping.${this.props.instance}.browse.interface`,this.state.interface))},s().createElement(a.MenuItem,{value:""},s().createElement("em",null,p.I18n.t("custom_ping_select_interface"))),this.state.interfaces.map(e=>{const n=$(e.netmask);return s().createElement(a.MenuItem,{key:e.ip,disabled:n>4096,value:e.ip},`${e.name} - ${e.ip} (${n} ${p.I18n.t("custom_ping_ips")})`)}))),s().createElement(a.Button,{style:{marginLeft:16,whiteSpace:"nowrap"},variant:"contained",disabled:!this.state.alive||!this.state.interface,onClick:()=>{this.state.running?this.props.socket.setState(`ping.${this.props.instance}.browse.running`,!1):this.browse()}},s().createElement("span",{style:{marginLeft:8}},this.state.running?`${this.state.status} ${p.I18n.t("custom_ping_stop")}`:p.I18n.t("custom_ping_browse")))),this.state.running?s().createElement(a.LinearProgress,{value:this.state.progress/255*100,variant:"determinate"}):s().createElement("div",{style:{height:4}}),s().createElement(a.Button,{variant:"contained",style:{marginTop:10,marginBottom:10},disabled:!this.state.selected.length,onClick:()=>{const e=[...this.props.data.devices];this.state.selected.forEach(r=>{e.find(c=>c.ip===r)||e.push({ip:r,name:r})});const n=JSON.parse(JSON.stringify(this.props.data));n.devices=e,e.sort((r,c)=>r.ip>c.ip?1:r.ip{l?this.setState({selected:[]}):this.setState({selected:i})}}):null),s().createElement(a.TableCell,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",height:55}},p.I18n.t("custom_ping_ip")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_mac")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_vendor")),s().createElement(a.TableCell,null,p.I18n.t("custom_ping_ignore")))),s().createElement(a.TableBody,null,this.state.ips.map(e=>s().createElement(a.TableRow,{key:e.ip,sx:{"&:last-child td, &:last-child th":{border:0}}},s().createElement(a.TableCell,{component:"th",scope:"row"},t.find(n=>n.ip===e.ip)?null:s().createElement(a.Checkbox,{checked:this.state.selected.includes(e.ip),style:{padding:"0 8px"},onChange:()=>{const n=this.state.selected,r=n.indexOf(e.ip);r===-1?n.push(e.ip):n.splice(r,1),this.setState({selected:n})}})),s().createElement(a.TableCell,null,e.ip),s().createElement(a.TableCell,null,e.mac),s().createElement(a.TableCell,null,e.vendor),s().createElement(a.TableCell,null,t.find(n=>n.ip===e.ip)?null:s().createElement(a.Checkbox,{checked:e.ignore,style:{padding:"0 8px"},onChange:()=>{const n=[...this.state.ips],r=n.find(c=>c.ip===e.ip);r&&(r.ignore=!r.ignore,this.setState({ips:n},()=>this.props.socket.setState(`ping.${this.props.instance}.browse.result`,JSON.stringify(n),!1)))}}))))))))}}g.propTypes={socket:u().object.isRequired,themeType:u().string,themeName:u().string,style:u().object,data:u().object.isRequired,attr:u().string,schema:u().object,onError:u().func,onChange:u().func};const T={PingBrowseComponent:g}}}]); -//# sourceMappingURL=src_Components_jsx.ed943ea7.chunk.js.map \ No newline at end of file +//# sourceMappingURL=src_Components_jsx.e88043ee.chunk.js.map \ No newline at end of file diff --git a/admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js.map b/admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js.map new file mode 100644 index 0000000..18a4941 --- /dev/null +++ b/admin/custom/static/js/src_Components_jsx.e88043ee.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/src_Components_jsx.e88043ee.chunk.js","mappings":"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","sources":["PingBrowseComponent.jsx","Components.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n LinearProgress, Table, TableBody,\r\n TableCell, TableContainer, TableHead,\r\n TableRow, Paper, Checkbox,\r\n FormControl, InputLabel, Select, MenuItem,\r\n Button,\r\n} from '@mui/material';\r\nimport { I18n } from '@iobroker/adapter-react-v5';\r\nimport { ConfigGeneric } from '@iobroker/json-config';\r\n\r\nfunction netMask2Count(netmask) {\r\n // Calculate the number of available IP addresses\r\n const numbers = netmask.split('.').map(i => parseInt(i, 10).toString(2));\r\n if (numbers.length !== 4) {\r\n return 0;\r\n }\r\n const numOfOnes = numbers.join('').split('1').length - 1;\r\n\r\n return Math.pow(2, 32 - numOfOnes);\r\n}\r\n\r\nclass PingBrowseComponent extends ConfigGeneric {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n alive: false,\r\n progress: 0,\r\n interface: '',\r\n interfaces: [],\r\n selected: [],\r\n ips: [],\r\n running: false,\r\n status: '',\r\n };\r\n }\r\n\r\n async getAllInterfaces() {\r\n const interfaces = [];\r\n // read config of ping adapter\r\n const config = await this.props.socket.getObject(`system.adapter.ping.${this.props.instance}`);\r\n const host = await this.props.socket.getObject(`system.host.${config.common.host}`);\r\n if (host?.native?.hardware?.networkInterfaces) {\r\n Object.keys(host.native.hardware.networkInterfaces).forEach(iface => {\r\n const ifc = host.native.hardware.networkInterfaces[iface];\r\n ifc.forEach(addr => {\r\n if (addr.family === 'IPv4' && !addr.internal) {\r\n interfaces.push({\r\n name: iface,\r\n ip: addr.address,\r\n netmask: addr.netmask,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n return interfaces;\r\n }\r\n\r\n async componentDidMount() {\r\n await super.componentDidMount();\r\n const newState = {};\r\n\r\n const state = await this.props.socket.getState(`system.adapter.ping.${this.props.instance}.alive`);\r\n newState.alive = !!state?.val;\r\n\r\n const ifaceLast = await this.props.socket.getState(`ping.${this.props.instance}.browse.interface`);\r\n const progress = await this.props.socket.getState(`ping.${this.props.instance}.browse.progress`);\r\n const browse = await this.props.socket.getState(`ping.${this.props.instance}.browse.running`);\r\n const result = await this.props.socket.getState(`ping.${this.props.instance}.browse.result`);\r\n const status = await this.props.socket.getState(`ping.${this.props.instance}.browse.status`);\r\n\r\n newState.status = status?.val || '';\r\n newState.progress = progress?.val || 0;\r\n newState.running = !!browse?.val;\r\n\r\n try {\r\n newState.ips = JSON.parse(result?.val) || [];\r\n // convert an old format to [{ip: 'address}]\r\n if (newState.ips[0] && typeof newState.ips === 'string') {\r\n newState.ips = newState.ips.map(ip => ({ ip }));\r\n }\r\n } catch {\r\n newState.ips = [];\r\n }\r\n\r\n await this.props.socket.subscribeState(`system.adapter.ping.${this.props.instance}.alive`, this.onChangedState);\r\n await this.props.socket.subscribeState(`ping.${this.props.instance}.browse.*`, this.onChangedState);\r\n newState.interfaces = await this.getAllInterfaces();\r\n if (newState.interfaces.find(item => item.ip === ifaceLast?.val)) {\r\n newState.interface = ifaceLast?.val;\r\n }\r\n\r\n this.setState(newState);\r\n }\r\n\r\n browse() {\r\n this.props.socket.sendTo(`ping.${this.props.instance}`, 'browse', this.state.interfaces.find(item => item.ip === this.state.interface))\r\n .catch(error => console.error(`Cannot ping: ${error}`));\r\n }\r\n\r\n async componentWillUnmount() {\r\n await this.props.socket.unsubscribeState(`system.adapter.ping.${this.props.instance}.alive`, this.onChangedState);\r\n await this.props.socket.unsubscribeState(`ping.${this.props.instance}.browse.*`, this.onChangedState);\r\n }\r\n\r\n onChangedState = (id, state) => {\r\n if (id.endsWith('.alive')) {\r\n const alive = state ? state.val : false;\r\n if (alive !== this.state.alive) {\r\n this.setState({alive});\r\n }\r\n } else if (id.endsWith('.progress')) {\r\n const progress = state ? state.val : 0;\r\n if (progress !== this.state.progress) {\r\n this.setState({ progress });\r\n }\r\n } else if (id.endsWith('.running')) {\r\n const running = !!state?.val;\r\n if (running !== this.state.running) {\r\n this.setState({ running });\r\n }\r\n } else if (id.endsWith('.result')) {\r\n const ips = state?.val || '[]';\r\n if (ips !== JSON.stringify(this.state.ips)) {\r\n this.setState({ ips: JSON.parse(ips) });\r\n }\r\n } else if (id.endsWith('.status')) {\r\n const status = state?.val || '';\r\n if (status !== this.state.status) {\r\n this.setState({ status });\r\n }\r\n } else if (id.endsWith('.interface')) {\r\n const iface = state?.val || '';\r\n if (iface &&\r\n iface !== this.state.interface &&\r\n this.state.interfaces.find(item => item.ip === iface)\r\n ) {\r\n this.setState({ interface: iface });\r\n }\r\n }\r\n };\r\n\r\n renderItem() {\r\n if (!this.state.interfaces) {\r\n return ;\r\n }\r\n\r\n const exists = this.props.data.devices || [];\r\n const selectable = this.state.ips.filter(it => !exists.find(item => item.ip === it.ip));\r\n const allSelected = selectable.length === this.state.selected.length;\r\n\r\n return
\r\n

{I18n.t('custom_ping_title')}

\r\n
\r\n \r\n {I18n.t('custom_ping_interface')}\r\n \r\n this.setState({ interface: e.target.value }, () =>\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.interface`, this.state.interface))}\r\n >\r\n \r\n {I18n.t('custom_ping_select_interface')}\r\n \r\n {this.state.interfaces.map(item => {\r\n const len = netMask2Count(item.netmask);\r\n return 4096}\r\n value={item.ip}\r\n >\r\n {`${item.name} - ${item.ip} (${len} ${I18n.t('custom_ping_ips')})`}\r\n ;\r\n })}\r\n \r\n \r\n {\r\n if (this.state.running) {\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.running`, false);\r\n } else {\r\n this.browse();\r\n }\r\n }}\r\n >\r\n {this.state.running ? `${this.state.status} ${I18n.t('custom_ping_stop')}` : I18n.t('custom_ping_browse')}\r\n \r\n
\r\n {this.state.running ? :
}\r\n {\r\n const devices = [...this.props.data.devices];\r\n this.state.selected.forEach(ip => {\r\n if (!devices.find(item => item.ip === ip)) {\r\n devices.push({ ip, name: ip });\r\n }\r\n });\r\n const data = JSON.parse(JSON.stringify(this.props.data));\r\n data.devices = devices;\r\n devices.sort((a, b) => a.ip > b.ip ? 1 : (a.ip < b.ip ? -1 : 0));\r\n this.props.onChange(data);\r\n this.setState({ selected: [] });\r\n }}\r\n >\r\n {I18n.t('custom_ping_add')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {selectable.length ? {\r\n if (!allSelected) {\r\n this.setState({ selected: selectable });\r\n } else {\r\n this.setState({ selected: [] });\r\n }\r\n }}\r\n /> : null}\r\n \r\n \r\n {I18n.t('custom_ping_ip')}\r\n \r\n {I18n.t('custom_ping_mac')}\r\n {I18n.t('custom_ping_vendor')}\r\n {I18n.t('custom_ping_ignore')}\r\n \r\n \r\n \r\n {this.state.ips.map(item => \r\n \r\n {!exists.find(it => it.ip === item.ip) ? {\r\n const selected = this.state.selected;\r\n const pos = selected.indexOf(item.ip);\r\n if (pos === -1) {\r\n selected.push(item.ip);\r\n } else {\r\n selected.splice(pos, 1);\r\n }\r\n this.setState({ selected });\r\n }}\r\n /> : null}\r\n \r\n {item.ip}\r\n {item.mac}\r\n {item.vendor}\r\n \r\n {!exists.find(it => it.ip === item.ip) ? {\r\n const ips = [...this.state.ips];\r\n const editedItem = ips.find(it => it.ip === item.ip);\r\n if (editedItem) {\r\n editedItem.ignore = !editedItem.ignore;\r\n this.setState({ ips }, () =>\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.result`, JSON.stringify(ips), false));\r\n }\r\n }}\r\n /> : null}\r\n \r\n )}\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nPingBrowseComponent.propTypes = {\r\n socket: PropTypes.object.isRequired,\r\n themeType: PropTypes.string,\r\n themeName: PropTypes.string,\r\n style: PropTypes.object,\r\n data: PropTypes.object.isRequired,\r\n attr: PropTypes.string,\r\n schema: PropTypes.object,\r\n onError: PropTypes.func,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nexport default PingBrowseComponent;\r\n","import PingBrowseComponent from './PingBrowseComponent';\r\n\r\nexport default { PingBrowseComponent };\r\n"],"names":["netMask2Count","netmask","numbers","i","numOfOnes","PingBrowseComponent","props","id","state","alive","progress","running","ips","status","iface","item","interfaces","config","host","addr","newState","ifaceLast","browse","result","ip","error","exists","selectable","it","allSelected","len","devices","data","a","b","selected","pos","editedItem"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js.map b/admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js.map deleted file mode 100644 index 71b19e8..0000000 --- a/admin/custom/static/js/src_Components_jsx.ed943ea7.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/src_Components_jsx.ed943ea7.chunk.js","mappings":"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","sources":["PingBrowseComponent.jsx","Components.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n LinearProgress, Table, TableBody,\r\n TableCell, TableContainer, TableHead,\r\n TableRow, Paper, Checkbox,\r\n FormControl, InputLabel, Select, MenuItem,\r\n Button,\r\n} from '@mui/material';\r\nimport { I18n } from '@iobroker/adapter-react-v5';\r\nimport { ConfigGeneric } from '@iobroker/json-config';\r\n\r\nfunction netMask2Count(netmask) {\r\n // Calculate the number of available IP addresses\r\n const numbers = netmask.split('.').map(i => parseInt(i, 10).toString(2));\r\n if (numbers.length !== 4) {\r\n return 0;\r\n }\r\n const numOfOnes = numbers.join('').split('1').length - 1;\r\n\r\n return Math.pow(2, 32 - numOfOnes);\r\n}\r\n\r\nclass PingBrowseComponent extends ConfigGeneric {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n alive: false,\r\n progress: 0,\r\n interface: '',\r\n interfaces: [],\r\n selected: [],\r\n ips: [],\r\n running: false,\r\n status: '',\r\n };\r\n }\r\n\r\n async getAllInterfaces() {\r\n const interfaces = [];\r\n // read config of ping adapter\r\n const config = await this.props.socket.getObject(`system.adapter.ping.${this.props.instance}`);\r\n const host = await this.props.socket.getObject(`system.host.${config.common.host}`);\r\n if (host?.native?.hardware?.networkInterfaces) {\r\n Object.keys(host.native.hardware.networkInterfaces).forEach(iface => {\r\n const ifc = host.native.hardware.networkInterfaces[iface];\r\n ifc.forEach(addr => {\r\n if (addr.family === 'IPv4' && !addr.internal) {\r\n interfaces.push({\r\n name: iface,\r\n ip: addr.address,\r\n netmask: addr.netmask,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n return interfaces;\r\n }\r\n\r\n async componentDidMount() {\r\n await super.componentDidMount();\r\n const newState = {};\r\n\r\n const state = await this.props.socket.getState(`system.adapter.ping.${this.props.instance}.alive`);\r\n newState.alive = !!state?.val;\r\n\r\n const ifaceLast = await this.props.socket.getState(`ping.${this.props.instance}.browse.interface`);\r\n const progress = await this.props.socket.getState(`ping.${this.props.instance}.browse.progress`);\r\n const browse = await this.props.socket.getState(`ping.${this.props.instance}.browse.running`);\r\n const result = await this.props.socket.getState(`ping.${this.props.instance}.browse.result`);\r\n const status = await this.props.socket.getState(`ping.${this.props.instance}.browse.status`);\r\n\r\n newState.status = status?.val || '';\r\n newState.progress = progress?.val || 0;\r\n newState.running = !!browse?.val;\r\n\r\n try {\r\n newState.ips = JSON.parse(result?.val) || [];\r\n // convert an old format to [{ip: 'address}]\r\n if (newState.ips[0] && typeof newState.ips === 'string') {\r\n newState.ips = newState.ips.map(ip => ({ ip }));\r\n }\r\n } catch {\r\n newState.ips = [];\r\n }\r\n\r\n await this.props.socket.subscribeState(`system.adapter.ping.${this.props.instance}.alive`, this.onChangedState);\r\n await this.props.socket.subscribeState(`ping.${this.props.instance}.browse.*`, this.onChangedState);\r\n newState.interfaces = await this.getAllInterfaces();\r\n if (newState.interfaces.find(item => item.ip === ifaceLast?.val)) {\r\n newState.interface = ifaceLast?.val;\r\n }\r\n\r\n this.setState(newState);\r\n }\r\n\r\n browse() {\r\n this.props.socket.sendTo(`ping.${this.props.instance}`, 'browse', this.state.interfaces.find(item => item.ip === this.state.interface))\r\n .catch(error => console.error(`Cannot ping: ${error}`));\r\n }\r\n\r\n async componentWillUnmount() {\r\n await this.props.socket.unsubscribeState(`system.adapter.ping.${this.props.instance}.alive`, this.onChangedState);\r\n await this.props.socket.unsubscribeState(`ping.${this.props.instance}.browse.*`, this.onChangedState);\r\n }\r\n\r\n onChangedState = (id, state) => {\r\n if (id.endsWith('.alive')) {\r\n const alive = state ? state.val : false;\r\n if (alive !== this.state.alive) {\r\n this.setState({alive});\r\n }\r\n } else if (id.endsWith('.progress')) {\r\n const progress = state ? state.val : 0;\r\n if (progress !== this.state.progress) {\r\n this.setState({ progress });\r\n }\r\n } else if (id.endsWith('.running')) {\r\n const running = !!state?.val;\r\n if (running !== this.state.running) {\r\n this.setState({ running });\r\n }\r\n } else if (id.endsWith('.result')) {\r\n const ips = state?.val || '[]';\r\n if (ips !== JSON.stringify(this.state.ips)) {\r\n this.setState({ ips: JSON.parse(ips) });\r\n }\r\n } else if (id.endsWith('.status')) {\r\n const status = state?.val || '';\r\n if (status !== this.state.status) {\r\n this.setState({ status });\r\n }\r\n } else if (id.endsWith('.interface')) {\r\n const iface = state?.val || '';\r\n if (iface &&\r\n iface !== this.state.interface &&\r\n this.state.interfaces.find(item => item.ip === iface)\r\n ) {\r\n this.setState({ interface: iface });\r\n }\r\n }\r\n };\r\n\r\n renderItem() {\r\n if (!this.state.interfaces) {\r\n return ;\r\n }\r\n\r\n const exists = this.props.data.devices || [];\r\n const selectable = this.state.ips.filter(it => !exists.find(item => item.ip === it.ip));\r\n const allSelected = selectable.length === this.state.selected.length;\r\n\r\n return
\r\n

{I18n.t('custom_ping_title')}

\r\n
\r\n \r\n {I18n.t('custom_ping_interface')}\r\n \r\n this.setState({ interface: e.target.value }, () =>\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.interface`, this.state.interface))}\r\n >\r\n \r\n {I18n.t('custom_ping_select_interface')}\r\n \r\n {this.state.interfaces.map(item => {\r\n const len = netMask2Count(item.netmask);\r\n return 4096}\r\n value={item.ip}\r\n >\r\n {`${item.name} - ${item.ip} (${len} ${I18n.t('custom_ping_ips')})`}\r\n ;\r\n })}\r\n \r\n \r\n {\r\n if (this.state.running) {\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.running`, false);\r\n } else {\r\n this.browse();\r\n }\r\n }}\r\n >\r\n {this.state.running ? `${this.state.status} ${I18n.t('custom_ping_stop')}` : I18n.t('custom_ping_browse')}\r\n \r\n
\r\n {this.state.running ? :
}\r\n {\r\n const devices = [...this.props.data.devices];\r\n this.state.selected.forEach(ip => {\r\n if (!devices.find(item => item.ip === ip)) {\r\n devices.push({ ip, name: ip });\r\n }\r\n });\r\n const data = JSON.parse(JSON.stringify(this.props.data));\r\n data.devices = devices;\r\n devices.sort((a, b) => a.ip > b.ip ? 1 : (a.ip < b.ip ? -1 : 0));\r\n this.props.onChange(data);\r\n this.setState({ selected: [] });\r\n }}\r\n >\r\n {I18n.t('custom_ping_add')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {selectable.length ? {\r\n if (!allSelected) {\r\n this.setState({ selected: selectable });\r\n } else {\r\n this.setState({ selected: [] });\r\n }\r\n }}\r\n /> : null}\r\n \r\n \r\n {I18n.t('custom_ping_ip')}\r\n \r\n {I18n.t('custom_ping_mac')}\r\n {I18n.t('custom_ping_vendor')}\r\n {I18n.t('custom_ping_ignore')}\r\n \r\n \r\n \r\n {this.state.ips.map(item => \r\n \r\n {!exists.find(it => it.ip === item.ip) ? {\r\n const selected = this.state.selected;\r\n const pos = selected.indexOf(item.ip);\r\n if (pos === -1) {\r\n selected.push(item.ip);\r\n } else {\r\n selected.splice(pos, 1);\r\n }\r\n this.setState({ selected });\r\n }}\r\n /> : null}\r\n \r\n {item.ip}\r\n {item.mac}\r\n {item.vendor}\r\n \r\n {!exists.find(it => it.ip === item.ip) ? {\r\n const ips = [...this.state.ips];\r\n const editedItem = ips.find(it => it.ip === item.ip);\r\n if (editedItem) {\r\n editedItem.ignore = !editedItem.ignore;\r\n this.setState({ ips }, () =>\r\n this.props.socket.setState(`ping.${this.props.instance}.browse.result`, JSON.stringify(ips), false));\r\n }\r\n }}\r\n /> : null}\r\n \r\n )}\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n\r\nPingBrowseComponent.propTypes = {\r\n socket: PropTypes.object.isRequired,\r\n themeType: PropTypes.string,\r\n themeName: PropTypes.string,\r\n style: PropTypes.object,\r\n data: PropTypes.object.isRequired,\r\n attr: PropTypes.string,\r\n schema: PropTypes.object,\r\n onError: PropTypes.func,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nexport default PingBrowseComponent;\r\n","import PingBrowseComponent from './PingBrowseComponent';\r\n\r\nexport default { PingBrowseComponent };\r\n"],"names":["netMask2Count","netmask","numbers","i","numOfOnes","PingBrowseComponent","props","id","state","alive","progress","running","ips","status","iface","item","interfaces","config","host","addr","newState","ifaceLast","browse","result","ip","error","exists","selectable","it","allSelected","len","devices","data","a","b","selected","pos","editedItem"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/i18n.js b/lib/i18n.js new file mode 100644 index 0000000..cadcde5 --- /dev/null +++ b/lib/i18n.js @@ -0,0 +1,53 @@ +const fs = require('node:fs'); +const path = require('node:path'); + +let language = 'en'; +let words = null; + +function init(lang) { + language = lang; + const files = fs.readdirSync(path.join(__dirname, '/i18n')); + words = {}; + files.forEach(file => { + if (file.endsWith('.json')) { + const lang = file.split('.')[0]; + const wordsForLanguage = JSON.parse(fs.readFileSync(path.join(__dirname, `/i18n/${file}`)).toString('utf8')); + Object.keys(wordsForLanguage).forEach(key => { + if (!words[key]) { + words[key] = {}; + } + words[key][lang] = wordsForLanguage[key]; + }); + } + }); +} + +function getText(key, lang) { + lang = lang || language; + if (!language && lang) { + language = lang; + } + if (!words && !lang) { + throw new Error('i18n not initialized'); + } + if (!words) { + init(lang); + } + if (!words[key]) { + return key; + } + return words[key][lang] || words[key].en || key; +} + +function getAllTexts(key) { + if (!words) { + init(); + } + return words[key]; +} + +module.exports = { + init, + t: getText, + tt: getAllTexts, +} diff --git a/lib/i18n/de.json b/lib/i18n/de.json new file mode 100644 index 0000000..1069c7d --- /dev/null +++ b/lib/i18n/de.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Neue Geräte wurden gefunden", + "Notification is not actual. All found devices are already added.": "Benachrichtigung ist nicht aktuell. Alle gefundenen Geräte sind bereits hinzugefügt.", + "Save settings": "Einstellungen speichern", + "Open settings": "Einstellungen öffnen", + "Saved": "Gespeichert" +} \ No newline at end of file diff --git a/lib/i18n/en.json b/lib/i18n/en.json new file mode 100644 index 0000000..953b3d8 --- /dev/null +++ b/lib/i18n/en.json @@ -0,0 +1,7 @@ +{ + "New devices found": "New devices found", + "Notification is not actual. All found devices are already added.": "Notification is not actual. All found devices are already added.", + "Save settings": "Save settings", + "Saved": "Saved", + "Open settings": "Open settings" +} \ No newline at end of file diff --git a/lib/i18n/es.json b/lib/i18n/es.json new file mode 100644 index 0000000..464c0c5 --- /dev/null +++ b/lib/i18n/es.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Nuevos dispositivos encontrados", + "Notification is not actual. All found devices are already added.": "La notificación no es actual. Todos los dispositivos encontrados ya están agregados.", + "Open settings": "Abrir configuración", + "Save settings": "Guardar configuración", + "Saved": "Guardado" +} \ No newline at end of file diff --git a/lib/i18n/fr.json b/lib/i18n/fr.json new file mode 100644 index 0000000..d73d615 --- /dev/null +++ b/lib/i18n/fr.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Nouveaux appareils trouvés", + "Notification is not actual. All found devices are already added.": "La notification n'est pas actuelle. Tous les appareils trouvés sont déjà ajoutés.", + "Open settings": "Ouvrir les paramètres", + "Save settings": "Enregistrer les paramètres", + "Saved": "Sauvé" +} \ No newline at end of file diff --git a/lib/i18n/it.json b/lib/i18n/it.json new file mode 100644 index 0000000..f939697 --- /dev/null +++ b/lib/i18n/it.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Nuovi dispositivi trovati", + "Notification is not actual. All found devices are already added.": "La notifica non è effettiva. Tutti i dispositivi trovati sono già stati aggiunti.", + "Open settings": "Apri impostazioni", + "Save settings": "Salva impostazioni", + "Saved": "Salvato" +} \ No newline at end of file diff --git a/lib/i18n/nl.json b/lib/i18n/nl.json new file mode 100644 index 0000000..ff75e7f --- /dev/null +++ b/lib/i18n/nl.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Nieuwe apparaten gevonden", + "Notification is not actual. All found devices are already added.": "Notificatie is niet actueel. Alle gevonden apparaten zijn al toegevoegd.", + "Open settings": "Instellingen openen", + "Save settings": "Instellingen opslaan", + "Saved": "Opgeslagen" +} \ No newline at end of file diff --git a/lib/i18n/pl.json b/lib/i18n/pl.json new file mode 100644 index 0000000..20662bc --- /dev/null +++ b/lib/i18n/pl.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Znaleziono nowe urządzenia", + "Notification is not actual. All found devices are already added.": "Powiadomienie nie jest aktualne. Wszystkie znalezione urządzenia są już dodane.", + "Open settings": "Otwórz ustawienia", + "Save settings": "Zapisz ustawienia", + "Saved": "Zapisane" +} \ No newline at end of file diff --git a/lib/i18n/pt.json b/lib/i18n/pt.json new file mode 100644 index 0000000..08cc551 --- /dev/null +++ b/lib/i18n/pt.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Novos dispositivos encontrados", + "Notification is not actual. All found devices are already added.": "A notificação não é real. Todos os dispositivos encontrados já foram adicionados.", + "Open settings": "Abrir configurações", + "Save settings": "Salvar configurações", + "Saved": "Salvo" +} \ No newline at end of file diff --git a/lib/i18n/ru.json b/lib/i18n/ru.json new file mode 100644 index 0000000..6fccb6b --- /dev/null +++ b/lib/i18n/ru.json @@ -0,0 +1,7 @@ +{ + "New devices found": "Найдены новые устройства", + "Notification is not actual. All found devices are already added.": "Уведомление не актуально. Все найденные устройства уже добавлены.", + "Open settings": "Открыть настройки", + "Save settings": "Сохранить настройки", + "Saved": "Сохранено" +} \ No newline at end of file diff --git a/lib/i18n/zh-cn.json b/lib/i18n/zh-cn.json new file mode 100644 index 0000000..b93ba81 --- /dev/null +++ b/lib/i18n/zh-cn.json @@ -0,0 +1,7 @@ +{ + "New devices found": "发现新设备", + "Notification is not actual. All found devices are already added.": "通知不真实。所有找到的设备均已添加。", + "Open settings": "打开设置", + "Save settings": "保存设置", + "Saved": "已保存" +} \ No newline at end of file diff --git a/main.js b/main.js index 9735ffd..d235571 100644 --- a/main.js +++ b/main.js @@ -17,6 +17,8 @@ const ip = require('ip'); const ping = require('./lib/ping'); const allowPing = require('./lib/setcup'); const adapterName = require('./package.json').name.split('.').pop(); +const { init, tt } = require('./lib/i18n'); +const {get} = require("axios"); let adapter; let arp; @@ -35,7 +37,7 @@ function startAdapter(options) { adapter = new utils.Adapter(options); - adapter.on('message', obj => obj && obj.command && processMessage(obj)); + adapter.on('message', obj => obj?.command && processMessage(obj)); adapter.on('ready', () => main(adapter)); @@ -119,8 +121,12 @@ async function browse(iface) { } } } - if (!iface) { - adapter.log.warn(`Defined interface "${iface}" does not exists on this host`); + if (!iface || typeof iface === 'string') { + if (!iface) { + adapter.log.warn(`No interface selected`); + } else { + adapter.log.warn(`Defined interface "${iface}" does not exists on this host`); + } runningBrowse = false; return; } @@ -214,11 +220,90 @@ async function browse(iface) { const newDevices = detectedIPs.filter(item => !item.ignore && !adapter.config.devices.find(dev => dev.ip === item.ip)); if (generateNotification && newDevices.length) { const devices = newDevices.map(item => `${item.ip}${item.vendor && item.vendor !== '' ? ` [${item.vendor}]` : ''}`).join('\n'); - await adapter.registerNotification('ping', 'newDevices', devices); + await adapter.registerNotification('ping', 'newDevices', devices, newDevices); + } +} + +let temporaryAddressesToAdd = []; + +function getGuiSchema(newDevices) { + const schema = { + type: 'panel', + items: { + _info: { + type: 'header', + size: 5, + text: tt('New devices found'), + sm: 12, + } + }, + }; + + let added = 0; + newDevices?.forEach((device, i) => { + if (adapter.config.devices.find(dev => dev.ip === device.ip)) { + return; + } + added++; + schema.items[`_device_${i}_ip`] = { + newLine: true, + type: 'staticText', + noTranslation: true, + text: `${device.ip}${device.vendor || device.mac ? ` [${device.vendor || (device.mac || '').substring(0, 9)}]` : ''}`, + sm: 8, + style: { + marginTop: 5, + }, + }; + const included = !!temporaryAddressesToAdd.find(item => item.ip === device.ip); + schema.items[`_device_${i}_btn`] = { + type: 'sendto', + command: 'addIpAddress', + data: { ip: device.ip, vendor: device.vendor }, + label: included ? '-' : '+', + noTranslation: true, + sm: 4, + variant: included ? 'text' : 'contained', + controlStyle: { + width: 30, + minWidth: 30, + }, + }; + }); + + if (!added) { + // delete info text + schema.items = {}; + schema.items[`_noDevices`] = { + type: 'staticText', + text: tt('Notification is not actual. All found devices are already added.'), + sm: 12, + }; } + + schema.items[`_open`] = { + newLine: true, + type: 'sendto', + command: 'openLink', + label: tt('Open settings'), + variant: 'contained', + icon: 'open', + }; + + if (temporaryAddressesToAdd.length) { + schema.items[`_save`] = { + type: 'sendto', + command: 'save', + label: tt('Save settings'), + variant: 'contained', + icon: 'save', + }; + } + + return schema; } -function processMessage(obj) { +async function processMessage(obj) { switch (obj.command) { case 'ping': { // Try to ping one IP or name @@ -241,6 +326,66 @@ function processMessage(obj) { break; } + + case 'addIpAddress': { + if (obj.message?.ip) { + const index = temporaryAddressesToAdd.findIndex(item => item.ip === obj.message.ip); + if (index === -1) { + temporaryAddressesToAdd.push({ ip: obj.message.ip, name: obj.message.vendor }); + } else { + temporaryAddressesToAdd.splice(index, 1); + } + } + + adapter.sendTo(obj.from, obj.command, { + command: { + command: 'nop', + refresh: !!obj.message?.ip, + }, + }, obj.callback); + + break; + } + + case 'openLink': { + adapter.sendTo(obj.from, obj.command, { + command: { + command: 'link', + url: '#tab-instances/config/system.adapter.ping.0/_browse', + close: true, + }, + }, obj.callback); + break; + } + + case 'save': { + const config = await adapter.getForeignObjectAsync(`system.adapter.${adapter.namespace}`); + let changed = false; + temporaryAddressesToAdd.forEach(item => { + if (!config.native.devices.find(dev => dev.ip === item.ip)) { + config.native.devices.push({ enabled: true, ip: item.ip, name: item.name }); + changed = true; + } + }); + temporaryAddressesToAdd = []; + // adapter will be restarted + if (changed) { + await adapter.setForeignObjectAsync(config._id, config); + } + adapter.sendTo(obj.from, obj.command, { + command: { + command: 'message', + message: tt('Saved'), + refresh: true, + }, + }, obj.callback); + break + } + + case 'getNotificationSchema': { + adapter.sendTo(obj.from, obj.command, { schema: getGuiSchema(obj.message.actionData) }, obj.callback); + break; + } } } @@ -439,16 +584,16 @@ async function syncObjects(preparedObjects, oldObjects) { } function prepareObjectsForHost(hostDevice, config) { - const host = config.ip.trim(); - const name = config.name.trim(); + const host = (config.ip || '').trim(); + const name = (config.name || '').trim(); const idName = (config.use_name ? name || host : host).replace(FORBIDDEN_CHARS, '_').replace(/[.\s]+/g, '_'); if (config.extended_info) { const channelID = {device: hostDevice, channel: idName}; - const stateAliveID = {device: hostDevice, channel: idName, state: 'alive'}; - const stateTimeID = {device: hostDevice, channel: idName, state: 'time'}; - const stateRpsID = {device: hostDevice, channel: idName, state: 'rps'}; + const stateAliveID = { device: hostDevice, channel: idName, state: 'alive' }; + const stateTimeID = { device: hostDevice, channel: idName, state: 'time' }; + const stateRpsID = { device: hostDevice, channel: idName, state: 'rps' }; return { ping_task: { host, @@ -654,6 +799,8 @@ async function main(adapter) { await adapter.setStateAsync('browse.progress', 0, true); await adapter.setStateAsync('browse.status', '', true); + init(); + adapter.config.autoDetect = parseInt(adapter.config.autoDetect, 10) || 0; const res = await adapter.getStateAsync('browse.result'); diff --git a/src-admin/src/PingBrowseComponent.jsx b/src-admin/src/PingBrowseComponent.jsx index d217f1f..71bc508 100644 --- a/src-admin/src/PingBrowseComponent.jsx +++ b/src-admin/src/PingBrowseComponent.jsx @@ -172,6 +172,7 @@ class PingBrowseComponent extends ConfigGeneric { {this.state.interfaces.map(item => { const len = netMask2Count(item.netmask); return 4096} value={item.ip} >