@iobroker/json-config 7.4.21 → 7.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +19 -17
  2. package/build/JsonConfig.js +1 -1
  3. package/build/JsonConfig.js.map +1 -1
  4. package/build/JsonConfigComponent/ChipInput.js +2 -2
  5. package/build/JsonConfigComponent/ChipInput.js.map +1 -1
  6. package/build/JsonConfigComponent/ConfigAccordion.js.map +1 -1
  7. package/build/JsonConfigComponent/ConfigAlive.js.map +1 -1
  8. package/build/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
  9. package/build/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
  10. package/build/JsonConfigComponent/ConfigCertCollection.js.map +1 -1
  11. package/build/JsonConfigComponent/ConfigCertificateSelect.js.map +1 -1
  12. package/build/JsonConfigComponent/ConfigCertificates.js.map +1 -1
  13. package/build/JsonConfigComponent/ConfigCheckLicense.js.map +1 -1
  14. package/build/JsonConfigComponent/ConfigCheckbox.js.map +1 -1
  15. package/build/JsonConfigComponent/ConfigChip.js.map +1 -1
  16. package/build/JsonConfigComponent/ConfigColor.js.map +1 -1
  17. package/build/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
  18. package/build/JsonConfigComponent/ConfigCustom.js +3 -1
  19. package/build/JsonConfigComponent/ConfigCustom.js.map +1 -1
  20. package/build/JsonConfigComponent/ConfigDeviceManager.js.map +1 -1
  21. package/build/JsonConfigComponent/ConfigFile.js.map +1 -1
  22. package/build/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
  23. package/build/JsonConfigComponent/ConfigFunc.js.map +1 -1
  24. package/build/JsonConfigComponent/ConfigGeneric.js +2 -2
  25. package/build/JsonConfigComponent/ConfigGeneric.js.map +1 -1
  26. package/build/JsonConfigComponent/ConfigIP.js.map +1 -1
  27. package/build/JsonConfigComponent/ConfigImageSendTo.js.map +1 -1
  28. package/build/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
  29. package/build/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
  30. package/build/JsonConfigComponent/ConfigInterface.js.map +1 -1
  31. package/build/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
  32. package/build/JsonConfigComponent/ConfigLanguage.js.map +1 -1
  33. package/build/JsonConfigComponent/ConfigLicense.js.map +1 -1
  34. package/build/JsonConfigComponent/ConfigNumber.js.map +1 -1
  35. package/build/JsonConfigComponent/ConfigObjectId.js.map +1 -1
  36. package/build/JsonConfigComponent/ConfigPanel.js +1 -1
  37. package/build/JsonConfigComponent/ConfigPanel.js.map +1 -1
  38. package/build/JsonConfigComponent/ConfigPassword.js.map +1 -1
  39. package/build/JsonConfigComponent/ConfigPort.js.map +1 -1
  40. package/build/JsonConfigComponent/ConfigQrCode.js.map +1 -1
  41. package/build/JsonConfigComponent/ConfigRoom.js.map +1 -1
  42. package/build/JsonConfigComponent/ConfigSelect.js.map +1 -1
  43. package/build/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
  44. package/build/JsonConfigComponent/ConfigSendto.js.map +1 -1
  45. package/build/JsonConfigComponent/ConfigSetState.js.map +1 -1
  46. package/build/JsonConfigComponent/ConfigSlider.js.map +1 -1
  47. package/build/JsonConfigComponent/ConfigState.d.ts +1 -1
  48. package/build/JsonConfigComponent/ConfigState.js +67 -38
  49. package/build/JsonConfigComponent/ConfigState.js.map +1 -1
  50. package/build/JsonConfigComponent/ConfigStaticHeader.js.map +1 -1
  51. package/build/JsonConfigComponent/ConfigStaticImage.js.map +1 -1
  52. package/build/JsonConfigComponent/ConfigStaticInfo.js.map +1 -1
  53. package/build/JsonConfigComponent/ConfigStaticText.js.map +1 -1
  54. package/build/JsonConfigComponent/ConfigTable.d.ts +1 -1
  55. package/build/JsonConfigComponent/ConfigTable.js +4 -4
  56. package/build/JsonConfigComponent/ConfigTable.js.map +1 -1
  57. package/build/JsonConfigComponent/ConfigTabs.js.map +1 -1
  58. package/build/JsonConfigComponent/ConfigText.js.map +1 -1
  59. package/build/JsonConfigComponent/ConfigTextSendTo.js.map +1 -1
  60. package/build/JsonConfigComponent/ConfigTimePicker.js.map +1 -1
  61. package/build/JsonConfigComponent/ConfigTopic.js.map +1 -1
  62. package/build/JsonConfigComponent/ConfigUser.js.map +1 -1
  63. package/build/JsonConfigComponent/Icons.js.map +1 -1
  64. package/build/JsonConfigComponent/index.d.ts +1 -1
  65. package/build/JsonConfigComponent/index.js.map +1 -1
  66. package/build/JsonConfigComponent/wrapper/Components/CustomModal.js.map +1 -1
  67. package/build/types.d.ts +5 -1
  68. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["JsonConfigComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAwB,IAAI,EAAiD,MAAM,4BAA4B,CAAC;AAMvH,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACjB;CACJ,CAAC;AA2CF,MAAM,OAAO,mBAAoB,SAAQ,SAA6D;IACjF,mBAAmB,CAAsC;IAElE,YAAY,GAAyC,IAAI,CAAC;IAE1D,WAAW,GAAkC,IAAI,CAAC;IAElD,QAAQ,CAAoB;IAEpC,YAAY,KAA+B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7C,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC;YACtC,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,KAAK;YACZ,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACxD,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAE9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,wBAAwB,CAC3B,KAA+B,EAC/B,KAA+B;QAE/B,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE;YACvC,OAAO;gBACH,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACnD,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CACjB,MAAuB,EACvB,IAA2E,EAC3E,WAAmB;QAEnB,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACtD,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;YACrF,IAAI,QAAQ,CAAC;YACb,IAAI,MAAM,EAAE;gBACR,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC;aACrC;iBAAM;gBACH,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,oBAAoB,CAAC,CAAC;gBAC9F,IAAI,MAAM,EAAE;oBACR,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,oBAAoB,CAAC;iBAClD;qBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;oBACtB,sBAAsB;oBACtB,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,QAAQ,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC;oBAC5E,IAAI,MAAM,EAAE;wBACR,QAAQ,GAAG,GAAG,IAAI,UAAU,CAAC;qBAChC;yBAAM;wBACH,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,QAAQ,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;wBACzF,IAAI,MAAM,EAAE;4BACR,QAAQ,GAAG,GAAG,IAAI,uBAAuB,CAAC;yBAC7C;qBACJ;iBACJ;aACJ;YAED,IAAI,QAAQ,EAAE;gBACV,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACzE,IAAI,OAAe,CAAC;gBACpB,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC7B,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;iBAC3B;qBAAM;oBACH,8BAA8B;oBAC9B,OAAO,GAAG,QAAQ,CAAC;iBACtB;gBAED,IAAI;oBACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,qBAAqB;oBACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACvC;gBAAC,OAAO,CAAC,EAAE;oBACR,OAAO,CAAC,KAAK,CAAC,+BAA+B,WAAW,UAAU,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;oBACpF,OAAO,EAAE,CAAC;iBACb;gBACD,OAAO,QAAQ,CAAC;aACnB;YACD,OAAO,CAAC,IAAI,CAAC,wBAAwB,WAAW,MAAM,QAAQ,EAAE,CAAC,CAAC;YAClE,OAAO,EAAE,CAAC;SACb;QACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC;SACb;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,gBAAgB,GAAG,CAAC,cAAuB,EAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAExF,QAAQ;QACJ,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;aACjB,sBAAsB,EAAE;aACxB,IAAI,CAAC,YAAY,CAAC,EAAE,CACjB,IAAI,CAAC,KAAK,CAAC,MAAM;aACZ,QAAQ,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,QAAQ,CAAC;aACjF,IAAI,CAAC,KAAK,CAAC,EAAE,CACV,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE;YACrF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACpB,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CACjC,kBAAkB,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,QAAQ,EACvE,IAAI,CAAC,OAAO,CACf,CAAC;aACL;QACL,CAAC,CAAC,CACL,CACR;aACA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,GAAG,CAAC,GAAW,EAAE,KAA6B,EAAQ,EAAE;QAC3D,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAC1C;IACL,CAAC,CAAC;IAEF,QAAQ,GAAG,CAAC,UAAwC,EAAE,KAAU,EAAE,EAAe,EAAE,UAAoB,EAAQ,EAAE;QAC7G,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAClE,IAAI,EAAE,EAAE;gBACJ,EAAE,EAAE,CAAC;aACR;SACJ;aAAM,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC1C,MAAM,QAAQ,GAAsC;gBAChD,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY;aAClE,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAoC,EAAE,GAAG,EAAE;gBACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAiC,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACrF,IAAI,EAAE,EAAE;oBACJ,EAAE,EAAE,CAAC;iBACR;YACL,CAAC,CAAC,CAAC;SACN;aAAM,IAAI,UAAU,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;SAC/C;IACL,CAAC,CAAC;IAEF,OAAO,GAAG,CAAC,IAAY,EAAE,KAAc,EAAQ,EAAE;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;SACxB;aAAM;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACnC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC9D,IAAI,CAAC,YAAY,GAAG,UAAU,CAC1B,GAAG,EAAE,CACD,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE;gBAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,EACN,EAAE,CACL,CAAC;SACL;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;IACL,CAAC,CAAC;IAEF,OAAO,CAAC,MAA2B,EAAE,KAA2B;QAC5D,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,KAAK,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;SACN;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,MAAwC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAA6B,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE;gBACpC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,kBAAkB,CAAC,CAAC;wBACxE,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CACR,qCAAqC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,GAAG,GAAG,CACzF,CAAC;yBACL;qBACJ;yBAAM;wBACH,KAAK,CAAC,GAAG,CAAC,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC;wBAEhE,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wBACxC,IAAI,MAAM,CAAC,OAAO,EAAE;4BAChB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;yBAClC;wBAED,KAAK,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC5C;gBACL,CAAC,CAAC,CAAC;aACN;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE;gBACrC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACxD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,kBAAkB,CAAC,CAAC;wBACxE,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CACR,qCAAqC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,GAAG,GAAG,CACzF,CAAC;yBACL;qBACJ;yBAAM;wBACH,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC;wBAElE,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wBAExC,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC7C;gBACL,CAAC,CAAC,CAAC;aACN;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE;gBACnC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,kBAAkB,CAAC,CAAC;wBACxE,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CACR,qCAAqC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,GAAG,GAAG,CACzF,CAAC;yBACL;qBACJ;yBAAM;wBACH,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;wBAE9D,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wBAExC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC3C;gBACL,CAAC,CAAC,CAAC;aACN;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE;gBAClC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,kBAAkB,CAAC,CAAC;wBACxE,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CACR,qCAAqC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,GAAG,GAAG,CACzF,CAAC;yBACL;qBACJ;yBAAM;wBACH,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC;wBAE5D,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wBAExC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC1C;gBACL,CAAC,CAAC,CAAC;aACN;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE;gBACjC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,kBAAkB,CAAC,CAAC;wBACxE,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CACR,qCAAqC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,GAAG,GAAG,CACzF,CAAC;yBACL;qBACJ;yBAAM;wBACH,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;wBAE1D,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wBAExC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACzC;gBACL,CAAC,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,WAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG;YACZ,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YACvC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YACjC,WAAW,EAAE,IAAI,CAAC,eAAe;YACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,+BAA+B;YAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;SACf,CAAC;QAEvB,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;IACL,CAAC;IAED,UAAU,CAAC,IAAsC;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACtB,OAAO,CACH,oBAAC,UAAU,IACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EACnD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EACjD,IAAI,QACJ,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GACjC,CACL,CAAC;SACL;QACD,IACI,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,uCAAuC;YACvC,CAAC,IAAI,CAAC,IAAI,EACZ;YACE,OAAO,CACH,oBAAC,WAAW,IACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,KAAK,EAAE,IAAI,EACX,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EACnD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EACjD,IAAI,QACJ,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GACjC,CACL,CAAC;SACL;QACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,eAAe,GAAG,CAAC,IAAuB,EAAE,IAAS,EAAQ,EAAE;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACvF;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;SACxC;IACL,CAAC,CAAC;IAEF,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAiC,EAAQ,EAAE;QAC9E,IAAI,EAAE,EAAE;YACJ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACvC;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACzC;IACL,CAAC,CAAC;IAEF,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5C,OAAO,oBAAC,cAAc,OAAG,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACnD,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAChD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACjD;QAED,OAAO,CACH,6BACI,KAAK,EAAE;gBACH,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnD,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;gBACnB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;aAC7B,IAEA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CACjC,CACT,CAAC;IACN,CAAC;CACJ;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { LinearProgress } from '@mui/material';\n\nimport { type AdminConnection, I18n, type ThemeName, type ThemeType, type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport type { BackEndCommand, ConfigItemPanel, ConfigItemTabs, JsonConfigContext } from '#JC/types';\nimport type ConfigGeneric from '#JC/JsonConfigComponent/ConfigGeneric';\n// eslint-disable-next-line no-duplicate-imports\nimport { type DeviceManagerPropsProps } from '#JC/JsonConfigComponent/ConfigGeneric';\nimport ConfigTabs from './ConfigTabs';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles: Record<string, React.CSSProperties> = {\n root: {\n width: '100%',\n height: '100%',\n },\n};\n\ninterface JsonConfigComponentProps {\n socket: AdminConnection;\n themeName: ThemeName;\n themeType: ThemeType;\n adapterName: string;\n instance: number;\n isFloatComma: boolean;\n dateFormat: string;\n imagePrefix?: string;\n schema: ConfigItemTabs | ConfigItemPanel;\n common?: Record<string, any>;\n data: Record<string, any>;\n updateData?: number;\n onError: (error: boolean) => void;\n onChange?: (data: Record<string, any>, changed: boolean, saveConfig: boolean) => void;\n /** Backend request to refresh data */\n onBackEndCommand?: (command?: BackEndCommand) => void;\n custom?: boolean;\n onValueChange?: (attr: string, value: any, saveConfig: boolean) => void;\n embedded?: boolean;\n multiEdit?: boolean;\n instanceObj?: ioBroker.InstanceObject;\n customObj?: ioBroker.Object;\n customs?: Record<string, typeof ConfigGeneric>;\n DeviceManager?: React.FC<DeviceManagerPropsProps>;\n style?: React.CSSProperties;\n theme: IobTheme;\n expertMode?: boolean;\n}\n\ninterface JsonConfigComponentState {\n originalData: string;\n changed: boolean;\n errors: Record<string, string>;\n systemConfig: ioBroker.SystemConfigCommon | null;\n updateData?: number;\n alive: boolean;\n commandRunning: boolean;\n schema: ConfigItemTabs | ConfigItemPanel;\n}\n\nexport class JsonConfigComponent extends Component<JsonConfigComponentProps, JsonConfigComponentState> {\n private readonly forceUpdateHandlers: Record<string, (data: any) => void>;\n\n private errorTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private errorCached: Record<string, string> | null = null;\n\n private oContext: JsonConfigContext;\n\n constructor(props: JsonConfigComponentProps) {\n super(props);\n\n this.state = {\n originalData: JSON.stringify(this.props.data),\n changed: false,\n errors: {},\n updateData: this.props.updateData || 0,\n systemConfig: null,\n alive: false,\n commandRunning: false,\n schema: JSON.parse(JSON.stringify(this.props.schema)),\n };\n\n this.forceUpdateHandlers = {};\n\n this.buildDependencies(this.state.schema);\n\n this.readData();\n }\n\n static getDerivedStateFromProps(\n props: JsonConfigComponentProps,\n state: JsonConfigComponentState,\n ): Partial<JsonConfigComponentState> | null {\n if (props.updateData !== state.updateData) {\n return {\n updateData: props.updateData,\n originalData: JSON.stringify(props.data),\n schema: JSON.parse(JSON.stringify(props.schema)),\n };\n }\n return null;\n }\n\n static async loadI18n(\n socket: AdminConnection,\n i18n: boolean | string | Record<string, Record<ioBroker.Languages, string>>,\n adapterName: string,\n ): Promise<string> {\n if (i18n === true || (i18n && typeof i18n === 'string')) {\n const lang = I18n.getLanguage();\n const path = typeof i18n === 'string' ? i18n : 'i18n';\n let exists = await socket.fileExists(`${adapterName}.admin`, `${path}/${lang}.json`);\n let fileName;\n if (exists) {\n fileName = `${path}/${lang}.json`;\n } else {\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/${lang}/translations.json`);\n if (exists) {\n fileName = `${path}/${lang}/translations.json`;\n } else if (lang !== 'en') {\n // fallback to english\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/en.json`);\n if (exists) {\n fileName = `${path}/en.json`;\n } else {\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/en/translations.json`);\n if (exists) {\n fileName = `${path}/en/translations.json`;\n }\n }\n }\n }\n\n if (fileName) {\n const jsonFile = await socket.readFile(`${adapterName}.admin`, fileName);\n let jsonStr: string;\n if (jsonFile.file !== undefined) {\n jsonStr = jsonFile.file;\n } else {\n // @ts-expect-error deprecated\n jsonStr = jsonFile;\n }\n\n try {\n const json = JSON.parse(jsonStr);\n // apply file to I18n\n I18n.extendTranslations(json, lang);\n } catch (e) {\n console.error(`Cannot parse language file \"${adapterName}.admin/${fileName}: ${e}`);\n return '';\n }\n return fileName;\n }\n console.warn(`Cannot find i18n for ${adapterName} / ${fileName}`);\n return '';\n }\n if (i18n && typeof i18n === 'object') {\n I18n.extendTranslations(i18n);\n return '';\n }\n return '';\n }\n\n onCommandRunning = (commandRunning: boolean): void => this.setState({ commandRunning });\n\n readData(): void {\n void this.props.socket\n .getCompactSystemConfig()\n .then(systemConfig =>\n this.props.socket\n .getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`)\n .then(state =>\n this.setState({ systemConfig: systemConfig.common, alive: !!(state && state.val) }, () => {\n this.updateContext(true);\n if (!this.props.custom) {\n void this.props.socket.subscribeState(\n `system.adapter.${this.props.adapterName}.${this.props.instance}.alive`,\n this.onAlive,\n );\n }\n }),\n ),\n )\n .catch(e => console.error(`Cannot read system config: ${e}`));\n }\n\n onAlive = (_id: string, state?: ioBroker.State | null): void => {\n if (!!state?.val !== this.state.alive) {\n this.setState({ alive: !!state?.val });\n }\n };\n\n onChange = (attrOrData: string | Record<string, any>, value: any, cb?: () => void, saveConfig?: boolean): void => {\n if (this.props.onValueChange) {\n this.props.onValueChange(attrOrData as string, value, saveConfig);\n if (cb) {\n cb();\n }\n } else if (attrOrData && this.props.onChange) {\n const newState: Partial<JsonConfigComponentState> = {\n changed: JSON.stringify(attrOrData) !== this.state.originalData,\n };\n\n this.setState(newState as JsonConfigComponentState, () => {\n this.props.onChange(attrOrData as Record<string, any>, newState.changed, saveConfig);\n if (cb) {\n cb();\n }\n });\n } else if (saveConfig) {\n this.props.onChange(null, null, saveConfig);\n }\n };\n\n onError = (attr: string, error?: string): void => {\n this.errorCached = this.errorCached || JSON.parse(JSON.stringify(this.state.errors));\n const errors = this.errorCached;\n if (error) {\n errors[attr] = error;\n } else {\n delete errors[attr];\n }\n\n if (this.errorTimeout) {\n clearTimeout(this.errorTimeout);\n }\n if (JSON.stringify(errors) !== JSON.stringify(this.state.errors)) {\n this.errorTimeout = setTimeout(\n () =>\n this.setState({ errors: this.errorCached }, () => {\n this.errorTimeout = null;\n this.errorCached = null;\n this.props.onError(!!Object.keys(this.state.errors).length);\n }),\n 50,\n );\n } else {\n this.errorCached = null;\n }\n };\n\n flatten(schema: Record<string, any>, _list?: Record<string, any>): Record<string, any> {\n _list = _list || {};\n if (schema.items) {\n Object.keys(schema.items).forEach(attr => {\n _list[attr] = schema.items[attr];\n this.flatten(schema.items[attr], _list);\n });\n }\n\n return _list;\n }\n\n buildDependencies(schema: ConfigItemTabs | ConfigItemPanel): void {\n const attrs = this.flatten(schema as Record<string, any>);\n Object.keys(attrs).forEach(attr => {\n if (attrs[attr].confirm?.alsoDependsOn) {\n attrs[attr].confirm?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].confirmDependsOn = attrs[dep].confirmDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n if (depObj.confirm) {\n depObj.confirm.cancel = 'Undo';\n }\n\n attrs[dep].confirmDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].onChange?.alsoDependsOn) {\n attrs[attr].onChange?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].onChangeDependsOn = attrs[dep].onChangeDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].onChangeDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].hidden?.alsoDependsOn) {\n attrs[attr].hidden?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].hiddenDependsOn = attrs[dep].hiddenDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].hiddenDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].label?.alsoDependsOn) {\n attrs[attr].label?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].labelDependsOn = attrs[dep].labelDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].labelDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].help?.alsoDependsOn) {\n attrs[attr].help?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].helpDependsOn = attrs[dep].helpDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].helpDependsOn.push(depObj);\n }\n });\n }\n });\n }\n\n updateContext(forceUpdate?: boolean): void {\n this.oContext = {\n DeviceManager: this.props.DeviceManager,\n adapterName: this.props.adapterName,\n changeLanguage: this.changeLanguage,\n common: this.props.common,\n customs: this.props.customs,\n dateFormat: this.props.dateFormat,\n embedded: this.props.embedded,\n expertMode: this.props.expertMode,\n forceUpdate: this.forceAttrUpdate,\n imagePrefix: this.props.imagePrefix,\n instance: this.props.instance,\n instanceObj: this.props.instanceObj,\n isFloatComma: this.props.isFloatComma,\n multiEdit: this.props.multiEdit,\n onBackEndCommand: this.props.onBackEndCommand,\n onCommandRunning: this.onCommandRunning,\n onValueChange: this.props.onValueChange,\n registerOnForceUpdate: this.registerOnForceUpdate,\n socket: this.props.socket,\n systemConfig: this.state.systemConfig,\n theme: this.props.theme,\n // could be changed dynamically\n themeType: this.props.themeType,\n _themeName: this.props.themeName,\n updateData: this.state.updateData,\n } as JsonConfigContext;\n\n if (forceUpdate) {\n this.forceUpdate();\n }\n }\n\n renderItem(item: ConfigItemTabs | ConfigItemPanel): JSX.Element | null {\n if (item.type === 'tabs') {\n return (\n <ConfigTabs\n oContext={this.oContext}\n alive={this.state.alive}\n changed={this.state.changed}\n commandRunning={this.state.commandRunning}\n common={this.props.common}\n custom={this.props.custom}\n customObj={this.props.customObj}\n data={this.props.data}\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n originalData={JSON.parse(this.state.originalData)}\n root\n schema={item}\n themeName={this.props.themeName}\n />\n );\n }\n if (\n item.type === 'panel' ||\n // @ts-expect-error type could be empty\n !item.type\n ) {\n return (\n <ConfigPanel\n oContext={this.oContext}\n alive={this.state.alive}\n changed={this.state.changed}\n commandRunning={this.state.commandRunning}\n common={this.props.common}\n custom={this.props.custom}\n customObj={this.props.customObj}\n data={this.props.data}\n index={1000}\n isParentTab={!this.props.embedded}\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n originalData={JSON.parse(this.state.originalData)}\n root\n schema={item}\n themeName={this.props.themeName}\n />\n );\n }\n console.error(`Unknown item type in root: ${JSON.stringify(item)}`);\n\n return null;\n }\n\n changeLanguage = (): void => {\n this.forceUpdate();\n };\n\n forceAttrUpdate = (attr: string | string[], data: any): void => {\n if (Array.isArray(attr)) {\n attr.forEach(a => this.forceUpdateHandlers[a] && this.forceUpdateHandlers[a](data));\n } else if (this.forceUpdateHandlers[attr]) {\n this.forceUpdateHandlers[attr](data);\n }\n };\n\n registerOnForceUpdate = (attr: string, cb?: ((data: any) => void) | null): void => {\n if (cb) {\n this.forceUpdateHandlers[attr] = cb;\n } else if (this.forceUpdateHandlers[attr]) {\n delete this.forceUpdateHandlers[attr];\n }\n };\n\n render(): JSX.Element {\n if (!this.state.systemConfig || !this.oContext) {\n return <LinearProgress />;\n }\n\n if (this.oContext._themeName !== this.props.themeName) {\n this.oContext._themeName = this.props.themeName;\n setTimeout(() => this.updateContext(true), 0);\n }\n\n return (\n <div\n style={{\n ...(!this.props.embedded ? styles.root : undefined),\n ...this.props.style,\n ...this.state.schema.style,\n }}\n >\n {this.renderItem(this.state.schema)}\n </div>\n );\n }\n}\n\nexport default JsonConfigComponent;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["JsonConfigComponent/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { LinearProgress } from '@mui/material';\n\nimport { type AdminConnection, I18n, type ThemeName, type ThemeType, type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport type { BackEndCommand, ConfigItemPanel, ConfigItemTabs, JsonConfigContext } from '#JC/types';\nimport type ConfigGeneric from '#JC/JsonConfigComponent/ConfigGeneric';\n// eslint-disable-next-line no-duplicate-imports\nimport { type DeviceManagerPropsProps } from '#JC/JsonConfigComponent/ConfigGeneric';\nimport ConfigTabs from './ConfigTabs';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles: Record<string, React.CSSProperties> = {\n root: {\n width: '100%',\n height: '100%',\n },\n};\n\ninterface JsonConfigComponentProps {\n socket: AdminConnection;\n themeName: ThemeName;\n themeType: ThemeType;\n adapterName: string;\n instance: number;\n isFloatComma: boolean;\n dateFormat: string;\n imagePrefix?: string;\n schema: ConfigItemTabs | ConfigItemPanel;\n common?: Record<string, any>;\n data: Record<string, any>;\n updateData?: number;\n onError: (error: boolean) => void;\n onChange?: (data: Record<string, any>, changed: boolean, saveConfig: boolean) => void;\n /** Backend request to refresh data */\n onBackEndCommand?: (command?: BackEndCommand) => void;\n custom?: boolean;\n onValueChange?: (attr: string, value: any, saveConfig: boolean) => void;\n embedded?: boolean;\n multiEdit?: boolean;\n instanceObj?: ioBroker.InstanceObject;\n customObj?: ioBroker.Object;\n customs?: Record<string, typeof ConfigGeneric>;\n DeviceManager?: React.FC<DeviceManagerPropsProps>;\n style?: React.CSSProperties;\n theme: IobTheme;\n expertMode?: boolean;\n}\n\ninterface JsonConfigComponentState {\n originalData: string;\n changed: boolean;\n errors: Record<string, string>;\n systemConfig: ioBroker.SystemConfigCommon | null;\n updateData?: number;\n alive: boolean;\n commandRunning: boolean;\n schema: ConfigItemTabs | ConfigItemPanel;\n}\n\nexport class JsonConfigComponent extends Component<JsonConfigComponentProps, JsonConfigComponentState> {\n private readonly forceUpdateHandlers: Record<string, (data: any) => void>;\n\n private errorTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private errorCached: Record<string, string> | null = null;\n\n private oContext: JsonConfigContext;\n\n constructor(props: JsonConfigComponentProps) {\n super(props);\n\n this.state = {\n originalData: JSON.stringify(this.props.data),\n changed: false,\n errors: {},\n updateData: this.props.updateData || 0,\n systemConfig: null,\n alive: false,\n commandRunning: false,\n schema: JSON.parse(JSON.stringify(this.props.schema)),\n };\n\n this.forceUpdateHandlers = {};\n\n this.buildDependencies(this.state.schema);\n\n this.readData();\n }\n\n static getDerivedStateFromProps(\n props: JsonConfigComponentProps,\n state: JsonConfigComponentState,\n ): Partial<JsonConfigComponentState> | null {\n if (props.updateData !== state.updateData) {\n return {\n updateData: props.updateData,\n originalData: JSON.stringify(props.data),\n schema: JSON.parse(JSON.stringify(props.schema)),\n };\n }\n return null;\n }\n\n static async loadI18n(\n socket: AdminConnection,\n i18n: boolean | string | Record<string, Record<ioBroker.Languages, string>>,\n adapterName: string,\n ): Promise<string> {\n if (i18n === true || (i18n && typeof i18n === 'string')) {\n const lang = I18n.getLanguage();\n const path = typeof i18n === 'string' ? i18n : 'i18n';\n let exists = await socket.fileExists(`${adapterName}.admin`, `${path}/${lang}.json`);\n let fileName;\n if (exists) {\n fileName = `${path}/${lang}.json`;\n } else {\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/${lang}/translations.json`);\n if (exists) {\n fileName = `${path}/${lang}/translations.json`;\n } else if (lang !== 'en') {\n // fallback to english\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/en.json`);\n if (exists) {\n fileName = `${path}/en.json`;\n } else {\n exists = await socket.fileExists(`${adapterName}.admin`, `${path}/en/translations.json`);\n if (exists) {\n fileName = `${path}/en/translations.json`;\n }\n }\n }\n }\n\n if (fileName) {\n const jsonFile = await socket.readFile(`${adapterName}.admin`, fileName);\n let jsonStr: string;\n if (jsonFile.file !== undefined) {\n jsonStr = jsonFile.file;\n } else {\n // @ts-expect-error deprecated\n jsonStr = jsonFile;\n }\n\n try {\n const json = JSON.parse(jsonStr);\n // apply file to I18n\n I18n.extendTranslations(json, lang);\n } catch (e) {\n console.error(`Cannot parse language file \"${adapterName}.admin/${fileName}: ${e}`);\n return '';\n }\n return fileName;\n }\n console.warn(`Cannot find i18n for ${adapterName} / ${fileName}`);\n return '';\n }\n if (i18n && typeof i18n === 'object') {\n I18n.extendTranslations(i18n);\n return '';\n }\n return '';\n }\n\n onCommandRunning = (commandRunning: boolean): void => this.setState({ commandRunning });\n\n readData(): void {\n void this.props.socket\n .getCompactSystemConfig()\n .then(systemConfig =>\n this.props.socket\n .getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`)\n .then(state =>\n this.setState({ systemConfig: systemConfig.common, alive: !!(state && state.val) }, () => {\n this.updateContext(true);\n if (!this.props.custom) {\n void this.props.socket.subscribeState(\n `system.adapter.${this.props.adapterName}.${this.props.instance}.alive`,\n this.onAlive,\n );\n }\n }),\n ),\n )\n .catch(e => console.error(`Cannot read system config: ${e}`));\n }\n\n onAlive = (_id: string, state?: ioBroker.State | null): void => {\n if (!!state?.val !== this.state.alive) {\n this.setState({ alive: !!state?.val });\n }\n };\n\n onChange = (attrOrData: string | Record<string, any>, value: any, cb?: () => void, saveConfig?: boolean): void => {\n if (this.props.onValueChange) {\n this.props.onValueChange(attrOrData as string, value, saveConfig);\n if (cb) {\n cb();\n }\n } else if (attrOrData && this.props.onChange) {\n const newState: Partial<JsonConfigComponentState> = {\n changed: JSON.stringify(attrOrData) !== this.state.originalData,\n };\n\n this.setState(newState as JsonConfigComponentState, () => {\n this.props.onChange(attrOrData as Record<string, any>, newState.changed, saveConfig);\n if (cb) {\n cb();\n }\n });\n } else if (saveConfig) {\n this.props.onChange(null, null, saveConfig);\n }\n };\n\n onError = (attr: string, error?: string): void => {\n this.errorCached = this.errorCached || JSON.parse(JSON.stringify(this.state.errors));\n const errors = this.errorCached;\n if (error) {\n errors[attr] = error;\n } else {\n delete errors[attr];\n }\n\n if (this.errorTimeout) {\n clearTimeout(this.errorTimeout);\n }\n if (JSON.stringify(errors) !== JSON.stringify(this.state.errors)) {\n this.errorTimeout = setTimeout(\n () =>\n this.setState({ errors: this.errorCached }, () => {\n this.errorTimeout = null;\n this.errorCached = null;\n this.props.onError(!!Object.keys(this.state.errors).length);\n }),\n 50,\n );\n } else {\n this.errorCached = null;\n }\n };\n\n flatten(schema: Record<string, any>, _list?: Record<string, any>): Record<string, any> {\n _list = _list || {};\n if (schema.items) {\n Object.keys(schema.items).forEach(attr => {\n _list[attr] = schema.items[attr];\n this.flatten(schema.items[attr], _list);\n });\n }\n\n return _list;\n }\n\n buildDependencies(schema: ConfigItemTabs | ConfigItemPanel): void {\n const attrs = this.flatten(schema as Record<string, any>);\n Object.keys(attrs).forEach(attr => {\n if (attrs[attr].confirm?.alsoDependsOn) {\n attrs[attr].confirm?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].confirmDependsOn = attrs[dep].confirmDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n if (depObj.confirm) {\n depObj.confirm.cancel = 'Undo';\n }\n\n attrs[dep].confirmDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].onChange?.alsoDependsOn) {\n attrs[attr].onChange?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].onChangeDependsOn = attrs[dep].onChangeDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].onChangeDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].hidden?.alsoDependsOn) {\n attrs[attr].hidden?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].hiddenDependsOn = attrs[dep].hiddenDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].hiddenDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].label?.alsoDependsOn) {\n attrs[attr].label?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].labelDependsOn = attrs[dep].labelDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].labelDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].help?.alsoDependsOn) {\n attrs[attr].help?.alsoDependsOn.forEach((dep: string) => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(\n `[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`,\n );\n }\n } else {\n attrs[dep].helpDependsOn = attrs[dep].helpDependsOn || [];\n\n const depObj = { ...attrs[attr], attr };\n\n attrs[dep].helpDependsOn.push(depObj);\n }\n });\n }\n });\n }\n\n updateContext(forceUpdate?: boolean): void {\n this.oContext = {\n DeviceManager: this.props.DeviceManager,\n adapterName: this.props.adapterName,\n changeLanguage: this.changeLanguage,\n common: this.props.common,\n customs: this.props.customs,\n dateFormat: this.props.dateFormat,\n embedded: this.props.embedded,\n expertMode: this.props.expertMode,\n forceUpdate: this.forceAttrUpdate,\n imagePrefix: this.props.imagePrefix,\n instance: this.props.instance,\n instanceObj: this.props.instanceObj,\n isFloatComma: this.props.isFloatComma,\n multiEdit: this.props.multiEdit,\n onBackEndCommand: this.props.onBackEndCommand,\n onCommandRunning: this.onCommandRunning,\n onValueChange: this.props.onValueChange,\n registerOnForceUpdate: this.registerOnForceUpdate,\n socket: this.props.socket,\n systemConfig: this.state.systemConfig,\n theme: this.props.theme,\n // could be changed dynamically\n themeType: this.props.themeType,\n _themeName: this.props.themeName,\n updateData: this.state.updateData,\n } as JsonConfigContext;\n\n if (forceUpdate) {\n this.forceUpdate();\n }\n }\n\n renderItem(item: ConfigItemTabs | ConfigItemPanel): JSX.Element | null {\n if (item.type === 'tabs') {\n return (\n <ConfigTabs\n oContext={this.oContext}\n alive={this.state.alive}\n changed={this.state.changed}\n commandRunning={this.state.commandRunning}\n common={this.props.common}\n custom={this.props.custom}\n customObj={this.props.customObj}\n data={this.props.data}\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n originalData={JSON.parse(this.state.originalData)}\n root\n schema={item}\n themeName={this.props.themeName}\n />\n );\n }\n if (\n item.type === 'panel' ||\n // @ts-expect-error type could be empty\n !item.type\n ) {\n return (\n <ConfigPanel\n oContext={this.oContext}\n alive={this.state.alive}\n changed={this.state.changed}\n commandRunning={this.state.commandRunning}\n common={this.props.common}\n custom={this.props.custom}\n customObj={this.props.customObj}\n data={this.props.data}\n index={1000}\n isParentTab={!this.props.embedded}\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n originalData={JSON.parse(this.state.originalData)}\n root\n schema={item}\n themeName={this.props.themeName}\n />\n );\n }\n console.error(`Unknown item type in root: ${JSON.stringify(item)}`);\n\n return null;\n }\n\n changeLanguage = (): void => {\n this.forceUpdate();\n };\n\n forceAttrUpdate = (attr: string | string[], data: any): void => {\n if (Array.isArray(attr)) {\n attr.forEach(a => this.forceUpdateHandlers[a] && this.forceUpdateHandlers[a](data));\n } else if (this.forceUpdateHandlers[attr]) {\n this.forceUpdateHandlers[attr](data);\n }\n };\n\n registerOnForceUpdate = (attr: string, cb?: ((data: any) => void) | null): void => {\n if (cb) {\n this.forceUpdateHandlers[attr] = cb;\n } else if (this.forceUpdateHandlers[attr]) {\n delete this.forceUpdateHandlers[attr];\n }\n };\n\n render(): JSX.Element {\n if (!this.state.systemConfig || !this.oContext) {\n return <LinearProgress />;\n }\n\n if (this.oContext._themeName !== this.props.themeName) {\n this.oContext._themeName = this.props.themeName;\n setTimeout(() => this.updateContext(true), 0);\n }\n\n return (\n <div\n style={{\n ...(!this.props.embedded ? styles.root : undefined),\n ...this.props.style,\n ...this.state.schema.style,\n }}\n >\n {this.renderItem(this.state.schema)}\n </div>\n );\n }\n}\n\nexport default JsonConfigComponent;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomModal.js","sourceRoot":"./src/","sources":["JsonConfigComponent/wrapper/Components/CustomModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX, useEffect, useState } from 'react';\n\nimport { Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField, Button } from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, React.CSSProperties> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: {\n color: 'primary.main',\n },\n};\n\ninterface CustomModalProps {\n toggleTranslation?: () => void;\n noTranslation?: boolean;\n title: string;\n fullWidth?: boolean;\n help?: string;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\n progress?: boolean;\n icon?: any;\n applyDisabled?: boolean;\n applyButton?: boolean;\n onClose: () => void;\n children: JSX.Element | JSX.Element[] | string | string[] | undefined | null;\n titleButtonApply?: string;\n titleButtonClose?: string;\n onApply: (value: string) => void;\n textInput?: boolean;\n defaultValue?: string;\n overflowHidden?: boolean;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n applyDisabled,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n let Icon = null;\n\n if (icon) {\n Icon = icon;\n }\n\n return (\n <Dialog\n open={!0}\n maxWidth={maxWidth || 'md'}\n fullWidth={!!fullWidth}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n sx={{ ...(overflowHidden ? styles.overflowHidden : {}), ...styles.content }}\n style={{ paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"outlined\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {applyButton !== false && (\n <Button\n startIcon={<CheckIcon />}\n disabled={progress || (applyDisabled && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={() => onClose && onClose()}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n"]}
1
+ {"version":3,"file":"CustomModal.js","sourceRoot":"./src/","sources":["JsonConfigComponent/wrapper/Components/CustomModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX, useEffect, useState } from 'react';\n\nimport { Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField, Button } from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, React.CSSProperties> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: {\n color: 'primary.main',\n },\n};\n\ninterface CustomModalProps {\n toggleTranslation?: () => void;\n noTranslation?: boolean;\n title: string;\n fullWidth?: boolean;\n help?: string;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\n progress?: boolean;\n icon?: any;\n applyDisabled?: boolean;\n applyButton?: boolean;\n onClose: () => void;\n children: JSX.Element | JSX.Element[] | string | string[] | undefined | null;\n titleButtonApply?: string;\n titleButtonClose?: string;\n onApply: (value: string) => void;\n textInput?: boolean;\n defaultValue?: string;\n overflowHidden?: boolean;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n applyDisabled,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n let Icon = null;\n\n if (icon) {\n Icon = icon;\n }\n\n return (\n <Dialog\n open={!0}\n maxWidth={maxWidth || 'md'}\n fullWidth={!!fullWidth}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n sx={{ ...(overflowHidden ? styles.overflowHidden : {}), ...styles.content }}\n style={{ paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"outlined\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {applyButton !== false && (\n <Button\n startIcon={<CheckIcon />}\n disabled={progress || (applyDisabled && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={() => onClose && onClose()}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n"]}
package/build/types.d.ts CHANGED
@@ -605,6 +605,8 @@ export interface ConfigItemCustom extends ConfigItem {
605
605
  name: string;
606
606
  /** i18n */
607
607
  i18n: boolean | Record<string, string>;
608
+ /** New format for components written in TypeScript */
609
+ bundlerType?: 'module';
608
610
  /** custom properties */
609
611
  [prop: string]: any;
610
612
  }
@@ -708,7 +710,7 @@ export interface ConfigItemState extends ConfigItem {
708
710
  readOnly?: boolean;
709
711
  /** Base64 icon */
710
712
  labelIcon?: string;
711
- /** Normally the title and value are shown on the left and right of the line. With this flag, the value will appear just after the label*/
713
+ /** Normally, the title and value are shown on the left and right of the line. With this flag, the value will appear just after the label*/
712
714
  narrow?: boolean;
713
715
  /** Add to label the colon at the end if not exist in label */
714
716
  addColon?: boolean;
@@ -716,6 +718,8 @@ export interface ConfigItemState extends ConfigItem {
716
718
  blinkOnUpdate?: boolean | string;
717
719
  /** Font size */
718
720
  size?: number | 'small' | 'normal' | 'large';
721
+ /** Optional value, that will be sent for button */
722
+ buttonValue?: ioBroker.StateValue;
719
723
  }
720
724
 
721
725
  export interface ConfigItemTextSendTo extends Omit<ConfigItem, 'data'> {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iobroker/json-config",
3
3
  "description": "This package contains the ioBroker JSON config UI components",
4
- "version": "7.4.21",
4
+ "version": "7.4.22",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
7
7
  "scripts": {
@@ -18,10 +18,10 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
- "@iobroker/adapter-react-v5": "7.4.21",
22
- "@mui/x-date-pickers": "^7.25.0",
21
+ "@iobroker/adapter-react-v5": "7.4.22",
22
+ "@mui/x-date-pickers": "^7.27.0",
23
23
  "crypto-js": "^4.2.0",
24
- "react-ace": "^13.0.0",
24
+ "react-ace": "^14.0.1",
25
25
  "react-qr-code": "^2.0.15"
26
26
  },
27
27
  "devDependencies": {
@@ -34,5 +34,5 @@
34
34
  "build/",
35
35
  "LICENSE"
36
36
  ],
37
- "gitHead": "348fe64af871f96077bf9074cc2bc14b738f8b6c"
37
+ "gitHead": "294088f7d04b508a3a1a90959299b7a107025585"
38
38
  }