boneio 1.5.0.dev39__tar.gz → 1.5.0.dev41__tar.gz

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 (543) hide show
  1. {boneio-1.5.0.dev39/boneio.egg-info → boneio-1.5.0.dev41}/PKG-INFO +1 -1
  2. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/onewire/dallas.py +44 -6
  3. boneio-1.5.0.dev41/boneio/version.py +2 -0
  4. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/app.py +1 -1
  5. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/BindingMatrix-nIxlEHTd.js +1 -0
  6. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/ConfigEditor-set_Qoo1.js +1 -0
  7. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/EditItemDialog-_53aIb2_.js +66 -0
  8. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/EntityCard-D74vPKzA.js +1 -0
  9. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/EntityGrid-BN3hkCWK.js +1 -0
  10. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/FormInputToggle-CwIjG43p.js → boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/FormInputToggle-C3N_UWzy.js +2 -2
  11. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/InputsView-B7on4rOh.js +1 -0
  12. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/LogViewer-RefUkoWR.js +2 -0
  13. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/ModbusView-Dwd3_KJS.js +1 -0
  14. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/NodeRedView--ogT6Dbm.js +1 -0
  15. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/OutputsView-BxFJRwd4.js +1 -0
  16. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/SensorView-C3kPKCFf.js +1 -0
  17. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/SudoPasswordDialog-DS-3pCx-.js +1 -0
  18. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/SystemState-CUmudnMp.js +1 -0
  19. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/TemplatesView-CFa1qlRa.js +1 -0
  20. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/Tools-CUS0azhR.js +14 -0
  21. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/UISettings-BWNODvh7.js +38 -0
  22. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/axios-DHUeYRnu.js +10 -0
  23. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +1 -0
  24. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/configCache-BAkc0Ye7.js +1 -0
  25. boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/gi-7Mj_ioeM.js +1 -0
  26. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/index-wG0pm3Xe.css → boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/index-FA3V0TxG.css +1 -1
  27. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/useTranslation-BEfaP96W.js → boneio-1.5.0.dev41/boneio/webui/frontend-dist/assets/index-N_Atf1i3.js +4 -11
  28. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/index.html +5 -4
  29. boneio-1.5.0.dev41/boneio/webui/frontend-dist/sw.js +1 -0
  30. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/system.py +30 -0
  31. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/web_server.py +1 -1
  32. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41/boneio.egg-info}/PKG-INFO +1 -1
  33. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio.egg-info/SOURCES.txt +23 -22
  34. boneio-1.5.0.dev39/boneio/version.py +0 -2
  35. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/BindingMatrix-DD8F4tGm.js +0 -1
  36. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/ConfigEditor-C0V3ulTf.js +0 -1
  37. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/EditItemDialog-CfFL7_35.js +0 -66
  38. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/EntityCard-CFVEbUQP.js +0 -1
  39. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/EntityGrid-CSg0J6S3.js +0 -1
  40. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/InputsView-BIwbJpZm.js +0 -1
  41. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/LogViewer-DggqmjBf.js +0 -2
  42. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/ModbusView-D4IwlxQh.js +0 -1
  43. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/NodeRedView-4hx1AtCh.js +0 -1
  44. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/OutputsView-OAyGWR_D.js +0 -1
  45. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/SensorView-CsERFR-2.js +0 -1
  46. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/SudoPasswordDialog-BUS23rfA.js +0 -1
  47. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/SystemState-Bc1ojVad.js +0 -1
  48. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/TemplatesView-CPL_vhH2.js +0 -1
  49. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/Tools-DdVzKIOA.js +0 -14
  50. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/UISettings-DaVtvqbo.js +0 -38
  51. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/fa-C9nnJsGR.js +0 -1
  52. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/gi-DFg4IokC.js +0 -1
  53. boneio-1.5.0.dev39/boneio/webui/frontend-dist/assets/index-DwDqJ1Sc.js +0 -2
  54. boneio-1.5.0.dev39/boneio/webui/frontend-dist/sw.js +0 -1
  55. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/LICENSE +0 -0
  56. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/MANIFEST.in +0 -0
  57. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/README.md +0 -0
  58. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/__init__.py +0 -0
  59. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/input.yaml +0 -0
  60. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/output_24_16.yaml +0 -0
  61. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/output_32_10.yaml +0 -0
  62. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/output_32_5.yaml +0 -0
  63. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/output_cover.yaml +0 -0
  64. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  65. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/input.yaml +0 -0
  66. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/output_24_16.yaml +0 -0
  67. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/output_32_10.yaml +0 -0
  68. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/output_32_5.yaml +0 -0
  69. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/output_cover.yaml +0 -0
  70. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  71. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/input.yaml +0 -0
  72. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/output_24_16.yaml +0 -0
  73. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/output_32_10.yaml +0 -0
  74. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/output_32_5.yaml +0 -0
  75. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/output_cover.yaml +0 -0
  76. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  77. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.5/input.yaml +0 -0
  78. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.5/output_24_16.yaml +0 -0
  79. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.5/output_32_10.yaml +0 -0
  80. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.5/output_cover.yaml +0 -0
  81. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  82. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.6/input.yaml +0 -0
  83. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.6/output_24_16.yaml +0 -0
  84. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.6/output_32_10.yaml +0 -0
  85. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.6/output_cover.yaml +0 -0
  86. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  87. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/input.yaml +0 -0
  88. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/output_24_16.yaml +0 -0
  89. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/output_32_10.yaml +0 -0
  90. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/output_48_4.yaml +0 -0
  91. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/output_cover.yaml +0 -0
  92. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  93. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/input.yaml +0 -0
  94. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/output_24_16.yaml +0 -0
  95. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/output_32_10.yaml +0 -0
  96. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/output_48_4.yaml +0 -0
  97. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/output_cover.yaml +0 -0
  98. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  99. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/input.yaml +0 -0
  100. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/output_24_16.yaml +0 -0
  101. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/output_32_10.yaml +0 -0
  102. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/output_48_4.yaml +0 -0
  103. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/output_cover.yaml +0 -0
  104. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
  105. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/bonecli.py +0 -0
  106. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/__init__.py +0 -0
  107. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/cover/__init__.py +0 -0
  108. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/cover/cover.py +0 -0
  109. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/cover/time_based.py +0 -0
  110. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/cover/venetian.py +0 -0
  111. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/group/__init__.py +0 -0
  112. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/group/output_group.py +0 -0
  113. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/__init__.py +0 -0
  114. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/binary_sensor.py +0 -0
  115. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/detectors.py +0 -0
  116. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/event.py +0 -0
  117. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/remote/__init__.py +0 -0
  118. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/remote/base.py +0 -0
  119. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/input/remote/esphome.py +0 -0
  120. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/irrigation/__init__.py +0 -0
  121. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/irrigation/controller.py +0 -0
  122. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/irrigation/water_source.py +0 -0
  123. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/__init__.py +0 -0
  124. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/basic.py +0 -0
  125. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/buzzer.py +0 -0
  126. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/mcp.py +0 -0
  127. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/pca.py +0 -0
  128. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/pcf.py +0 -0
  129. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/output/remote.py +0 -0
  130. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/sensor/__init__.py +0 -0
  131. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/sensor/virtual_energy.py +0 -0
  132. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/template/__init__.py +0 -0
  133. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/template/alarm_panel.py +0 -0
  134. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/template/gate_cover.py +0 -0
  135. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/components/template/thermostat.py +0 -0
  136. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/const.py +0 -0
  137. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/__init__.py +0 -0
  138. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/__init__.py +0 -0
  139. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/data/__init__.py +0 -0
  140. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/data/docker-compose-cloud.yaml +0 -0
  141. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/data/docker-compose.yaml +0 -0
  142. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
  143. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/registration.py +0 -0
  144. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/cloud/secrets.py +0 -0
  145. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/__init__.py +0 -0
  146. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/config_helper.py +0 -0
  147. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/migrations/__init__.py +0 -0
  148. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
  149. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/migrations/v2_transition.py +0 -0
  150. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
  151. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
  152. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/package-lock.json +0 -0
  153. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/package.json +0 -0
  154. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/schema_converter.py +0 -0
  155. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/yaml_compat.py +0 -0
  156. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/config/yaml_util.py +0 -0
  157. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/discovery.py +0 -0
  158. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/events/__init__.py +0 -0
  159. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/events/bus.py +0 -0
  160. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/__init__.py +0 -0
  161. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/action_conditions.py +0 -0
  162. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/canopen.py +0 -0
  163. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/covers.py +0 -0
  164. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/display.py +0 -0
  165. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/inputs.py +0 -0
  166. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/irrigation.py +0 -0
  167. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/manager.py +0 -0
  168. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/modbus.py +0 -0
  169. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/outputs.py +0 -0
  170. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/remote.py +0 -0
  171. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/remote_input_registrar.py +0 -0
  172. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/sensors.py +0 -0
  173. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/templates/__init__.py +0 -0
  174. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/templates/alarm.py +0 -0
  175. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/templates/gate_cover.py +0 -0
  176. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/templates/thermostat.py +0 -0
  177. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/templates.py +0 -0
  178. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/manager/update.py +0 -0
  179. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/__init__.py +0 -0
  180. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/basic.py +0 -0
  181. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/basic_mqtt.py +0 -0
  182. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/composite.py +0 -0
  183. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/local.py +0 -0
  184. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/lox.py +0 -0
  185. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/mqtt.py +0 -0
  186. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/messaging/queue.py +0 -0
  187. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/__init__.py +0 -0
  188. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/base.py +0 -0
  189. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/can.py +0 -0
  190. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/esphome.py +0 -0
  191. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/mqtt.py +0 -0
  192. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/wled.py +0 -0
  193. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/remote/wled_cache.py +0 -0
  194. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/sensor/__init__.py +0 -0
  195. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/sensor/base.py +0 -0
  196. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/sensor/system.py +0 -0
  197. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/state/__init__.py +0 -0
  198. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/state/manager.py +0 -0
  199. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/system/__init__.py +0 -0
  200. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/system/host_data.py +0 -0
  201. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/system/monitor.py +0 -0
  202. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/__init__.py +0 -0
  203. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/async_updater.py +0 -0
  204. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/conditions.py +0 -0
  205. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/filter.py +0 -0
  206. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/font_util.py +0 -0
  207. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/logger.py +0 -0
  208. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/timeperiod.py +0 -0
  209. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/core/utils/util.py +0 -0
  210. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/adc.yaml +0 -0
  211. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  212. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/config.yaml +0 -0
  213. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/event.yaml +0 -0
  214. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/mqtt.yaml +0 -0
  215. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  216. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/adc.yaml +0 -0
  217. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  218. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/config.yaml +0 -0
  219. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/event.yaml +0 -0
  220. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/mqtt.yaml +0 -0
  221. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  222. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/adc.yaml +0 -0
  223. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
  224. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/config.yaml +0 -0
  225. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/event.yaml +0 -0
  226. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/mqtt.yaml +0 -0
  227. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/48x4/output48x4A.yaml +0 -0
  228. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/__init__.py +0 -0
  229. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/can_master.yaml +0 -0
  230. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/can_slave.yaml +0 -0
  231. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/adc.yaml +0 -0
  232. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  233. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/config.yaml +0 -0
  234. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/cover.yaml +0 -0
  235. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/event.yaml +0 -0
  236. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/mqtt.yaml +0 -0
  237. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover/outputCover.yaml +0 -0
  238. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/adc.yaml +0 -0
  239. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  240. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/config.yaml +0 -0
  241. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/cover.yaml +0 -0
  242. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/event.yaml +0 -0
  243. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  244. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  245. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/adc.yaml +0 -0
  246. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  247. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  248. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  249. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  250. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/event_all.yaml +0 -0
  251. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  252. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  253. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  254. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  255. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  256. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  257. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/exceptions.py +0 -0
  258. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/__init__.py +0 -0
  259. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/analog/__init__.py +0 -0
  260. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/analog/adc.py +0 -0
  261. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/__init__.py +0 -0
  262. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/bridge.py +0 -0
  263. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/client.py +0 -0
  264. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/interface.py +0 -0
  265. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/node.py +0 -0
  266. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/node_id.py +0 -0
  267. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/can/test_od.py +0 -0
  268. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/display/__init__.py +0 -0
  269. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/display/early_oled.py +0 -0
  270. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  271. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/display/oled.py +0 -0
  272. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/__init__.py +0 -0
  273. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  274. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
  275. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  276. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  277. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/input/__init__.py +0 -0
  278. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/input/base.py +0 -0
  279. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/gpio/input/manager.py +0 -0
  280. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/__init__.py +0 -0
  281. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/bus.py +0 -0
  282. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/ina219.py +0 -0
  283. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/ina219_driver.py +0 -0
  284. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/ina226.py +0 -0
  285. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/ina226_driver.py +0 -0
  286. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/mcp9808.py +0 -0
  287. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/i2c/pct2075.py +0 -0
  288. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/onewire/__init__.py +0 -0
  289. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/sensor/__init__.py +0 -0
  290. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  291. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/sensor/temperature/base.py +0 -0
  292. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  293. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  294. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/integration/__init__.py +0 -0
  295. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/integration/homeassistant.py +0 -0
  296. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/integration/interlock.py +0 -0
  297. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/integration/lox_template.py +0 -0
  298. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/__init__.py +0 -0
  299. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/actions.py +0 -0
  300. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/MANIFEST.sha256 +0 -0
  301. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/daemon.json +0 -0
  302. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
  303. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +0 -0
  304. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
  305. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/nodered/nginx/default.conf +0 -0
  306. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
  307. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/journald/journald.conf +0 -0
  308. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
  309. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
  310. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/sudoers/boneio +0 -0
  311. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
  312. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
  313. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/systemd/boneio.service +0 -0
  314. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
  315. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
  316. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
  317. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
  318. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
  319. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
  320. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/assets/wheels/pyyaml-6.0.3-cp313-cp313-linux_armv7l.whl +0 -0
  321. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/bootstrap/boneio-migrate +0 -0
  322. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/bootstrap/install-helper.sh +0 -0
  323. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
  324. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/runner.py +0 -0
  325. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/__init__.py +0 -0
  326. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
  327. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
  328. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
  329. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
  330. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
  331. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
  332. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
  333. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
  334. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
  335. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
  336. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
  337. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/__init__.py +0 -0
  338. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/cli.py +0 -0
  339. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/client.py +0 -0
  340. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/coordinator.py +0 -0
  341. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/__init__.py +0 -0
  342. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
  343. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
  344. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
  345. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  346. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  347. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  348. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  349. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  350. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
  351. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  352. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/hvac/thessla.json +0 -0
  353. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  354. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/hvac/wanas415.json +0 -0
  355. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/inverters/sofar.json +0 -0
  356. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
  357. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/other/n4dsc08.json +0 -0
  358. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  359. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
  360. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/cwt.json +0 -0
  361. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  362. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/gdfs.json +0 -0
  363. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/gdfx.json +0 -0
  364. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  365. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/pt100.json +0 -0
  366. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
  367. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/sht20.json +0 -0
  368. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/devices/sensors/sht30.json +0 -0
  369. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/__init__.py +0 -0
  370. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/base.py +0 -0
  371. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/derived/__init__.py +0 -0
  372. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/derived/numeric.py +0 -0
  373. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/derived/select.py +0 -0
  374. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/derived/switch.py +0 -0
  375. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/derived/text.py +0 -0
  376. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/sensor/__init__.py +0 -0
  377. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/sensor/binary.py +0 -0
  378. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/sensor/numeric.py +0 -0
  379. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/sensor/text.py +0 -0
  380. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/writeable/__init__.py +0 -0
  381. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/writeable/binary.py +0 -0
  382. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/entities/writeable/numeric.py +0 -0
  383. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/mock_coordinator.py +0 -0
  384. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/modbus/utils.py +0 -0
  385. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/__init__.py +0 -0
  386. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/actions.py +0 -0
  387. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/events.py +0 -0
  388. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/files.py +0 -0
  389. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/logs.py +0 -0
  390. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/mqtt.py +0 -0
  391. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/models/state.py +0 -0
  392. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/runner.py +0 -0
  393. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/actions.yaml +0 -0
  394. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/actions_sensor.yaml +0 -0
  395. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/actions_switch.yaml +0 -0
  396. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/condition.yaml +0 -0
  397. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/filters.yaml +0 -0
  398. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/filters_adc.yaml +0 -0
  399. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/id.yaml +0 -0
  400. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/remote_devices.yaml +0 -0
  401. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/remote_inputs.yaml +0 -0
  402. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/remote_outputs.yaml +0 -0
  403. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/schema.yaml +0 -0
  404. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/temp_unit.yaml +0 -0
  405. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/schema/update_interval.yaml +0 -0
  406. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/action_validation.py +0 -0
  407. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/dashboard_cards.py +0 -0
  408. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/HelpLabel-BSTjOtDA.js +0 -0
  409. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/LongPressWrapper-BHOQV7Wq.js +0 -0
  410. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/Sparkline-BGWlVLtt.js +0 -0
  411. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/aiConfig-IRYCBmLm.js +0 -0
  412. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/aiWizardPrompt-D9OJ-cE7.js +0 -0
  413. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
  414. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  415. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/css.worker-CvXBzhp8.js +0 -0
  416. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/editor.worker-Cn2oRESe.js +0 -0
  417. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/formatters-zOiGPJLh.js +0 -0
  418. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/html.worker-BO6WuOEO.js +0 -0
  419. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/json.worker-BkJRGcCJ.js +0 -0
  420. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/longPress-Dx7OCSyP.js +0 -0
  421. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/modbusDeviceCatalog-L6as-BKo.js +0 -0
  422. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/monaco-61yH0vfd.js +0 -0
  423. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
  424. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/rolldown-runtime-QTnfLwEv.js +0 -0
  425. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/select-B2YDgQ4X.js +0 -0
  426. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/tabs-box-Dj36r4_e.js +0 -0
  427. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/ts.worker-B0J26iPs.js +0 -0
  428. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/utils-C8nShLO6.js +0 -0
  429. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/vendor-IzweXARb.js +0 -0
  430. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
  431. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/assets/yaml.worker-BKRoXlmz.js +0 -0
  432. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/boneio-192.png +0 -0
  433. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/boneio-512.png +0 -0
  434. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/boneio.svg +0 -0
  435. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  436. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
  437. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
  438. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
  439. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
  440. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
  441. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/config.schema.json +0 -0
  442. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
  443. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
  444. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
  445. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
  446. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
  447. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
  448. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
  449. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
  450. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
  451. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
  452. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
  453. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
  454. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
  455. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
  456. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
  457. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
  458. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
  459. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
  460. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
  461. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
  462. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
  463. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
  464. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
  465. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
  466. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
  467. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
  468. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
  469. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/frontend-dist/workbox-4918f2f6.js +0 -0
  470. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/hvac_svg_templates.py +0 -0
  471. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/middleware/__init__.py +0 -0
  472. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/middleware/auth.py +0 -0
  473. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/modbus_card_templates.py +0 -0
  474. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/__init__.py +0 -0
  475. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/auth.py +0 -0
  476. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/caddy.py +0 -0
  477. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/can.py +0 -0
  478. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config.py +0 -0
  479. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config_actions.py +0 -0
  480. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config_backups.py +0 -0
  481. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config_core.py +0 -0
  482. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config_discovery.py +0 -0
  483. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/config_files.py +0 -0
  484. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/covers.py +0 -0
  485. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/dashboard.py +0 -0
  486. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/dev_fake_device.py +0 -0
  487. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/irrigation.py +0 -0
  488. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/migrations.py +0 -0
  489. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/modbus.py +0 -0
  490. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/mqtt_reference.py +0 -0
  491. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/nodered.py +0 -0
  492. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/outputs.py +0 -0
  493. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/remote_devices.py +0 -0
  494. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/sensors.py +0 -0
  495. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/templates.py +0 -0
  496. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/timezone_sudoers.py +0 -0
  497. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/tools.py +0 -0
  498. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/routes/update.py +0 -0
  499. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/adc.schema.json +0 -0
  500. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/areas.schema.json +0 -0
  501. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/binary_sensor.schema.json +0 -0
  502. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/boneio.schema.json +0 -0
  503. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/can.schema.json +0 -0
  504. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/config.schema.json +0 -0
  505. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/cover.schema.json +0 -0
  506. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/dallas.schema.json +0 -0
  507. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/ds2482.schema.json +0 -0
  508. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/event.schema.json +0 -0
  509. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/ina219.schema.json +0 -0
  510. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/ina226.schema.json +0 -0
  511. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/irrigation.schema.json +0 -0
  512. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/lm75.schema.json +0 -0
  513. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/logger.schema.json +0 -0
  514. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/lox_udp.schema.json +0 -0
  515. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/mcp23017.schema.json +0 -0
  516. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/mcp9808.schema.json +0 -0
  517. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/modbus.schema.json +0 -0
  518. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  519. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/mqtt.schema.json +0 -0
  520. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/oled.schema.json +0 -0
  521. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/output.schema.json +0 -0
  522. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/output_group.schema.json +0 -0
  523. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/pca9685.schema.json +0 -0
  524. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/pcf8575.schema.json +0 -0
  525. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/remote_devices.schema.json +0 -0
  526. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/remote_inputs.schema.json +0 -0
  527. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/remote_outputs.schema.json +0 -0
  528. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/sensor.schema.json +0 -0
  529. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/template.schema.json +0 -0
  530. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  531. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/schema/web.schema.json +0 -0
  532. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/services/__init__.py +0 -0
  533. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/services/logs.py +0 -0
  534. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/sudo_rate_limiter.py +0 -0
  535. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio/webui/websocket_manager.py +0 -0
  536. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio.egg-info/dependency_links.txt +0 -0
  537. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio.egg-info/entry_points.txt +0 -0
  538. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio.egg-info/requires.txt +0 -0
  539. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/boneio.egg-info/top_level.txt +0 -0
  540. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/pyproject.toml +0 -0
  541. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/setup.cfg +0 -0
  542. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/setup.py +0 -0
  543. {boneio-1.5.0.dev39 → boneio-1.5.0.dev41}/tests/test_py313_compatibility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.5.0.dev39
3
+ Version: 1.5.0.dev41
4
4
  Summary: Python App for BoneIO
5
5
  Author-email: Paweł Szafer <pszafer@gmail.com>
6
6
  License: GNU General Public License v3.0
@@ -89,10 +89,38 @@ class DallasSensor(TempSensor):
89
89
 
90
90
  # Initialize Dallas sensor manually
91
91
  try:
92
- self._pct = W1ThermSensor(sensor_id=address)
92
+ # W1ThermSensor expects only the serial number (without family prefix).
93
+ # Config address is e.g. "28-0b24402d6f2c" — strip "28-" prefix.
94
+ raw_id = address
95
+ if "-" in raw_id:
96
+ parts = raw_id.split("-", 1)
97
+ family_code = parts[0]
98
+ serial = parts[1]
99
+ else:
100
+ family_code = "28"
101
+ serial = raw_id
102
+
103
+ # Map family code to W1ThermSensor sensor type
104
+ from w1thermsensor import Sensor as W1SensorType
105
+
106
+ family_map: dict[str, W1SensorType] = {
107
+ "10": W1SensorType.DS18S20,
108
+ "22": W1SensorType.DS1822,
109
+ "28": W1SensorType.DS18B20,
110
+ "3b": W1SensorType.DS1825,
111
+ "42": W1SensorType.DS28EA00,
112
+ }
113
+ sensor_type = family_map.get(family_code.lower(), W1SensorType.DS18B20)
114
+
115
+ self._pct = W1ThermSensor(sensor_type=sensor_type, sensor_id=serial)
93
116
  # Perform a first read to check if sensor is available
94
117
  self._pct.get_temperature()
95
- _LOGGER.info("Dallas sensor %s initialized successfully", address)
118
+ _LOGGER.info(
119
+ "Dallas sensor %s initialized successfully (serial=%s, type=%s)",
120
+ address,
121
+ serial,
122
+ sensor_type,
123
+ )
96
124
  except (ValueError, W1ThermSensorError) as err:
97
125
  raise OneWireError(f"Error initializing sensor {address}: {err}") from err
98
126
 
@@ -137,14 +165,22 @@ class DallasSensor(TempSensor):
137
165
  """
138
166
  try:
139
167
  if not self._pct:
140
- _LOGGER.warning("Dallas sensor %s not initialized, skipping update", self.id)
168
+ _LOGGER.warning(
169
+ "Dallas sensor %s not initialized, skipping update", self.id
170
+ )
141
171
  return
142
172
  # Run blocking get_temperature in executor to avoid blocking the event loop
143
173
  _temp = await self._loop.run_in_executor(None, self._pct.get_temperature)
144
- _LOGGER.debug("Fetched temperature %s°C for sensor %s. Applying filters.", _temp, self.id)
174
+ _LOGGER.debug(
175
+ "Fetched temperature %s°C for sensor %s. Applying filters.",
176
+ _temp,
177
+ self.id,
178
+ )
145
179
 
146
180
  if _temp is None:
147
- _LOGGER.warning("Temperature reading returned None for sensor %s", self.id)
181
+ _LOGGER.warning(
182
+ "Temperature reading returned None for sensor %s", self.id
183
+ )
148
184
  return
149
185
 
150
186
  # Apply filters
@@ -167,7 +203,9 @@ class DallasSensor(TempSensor):
167
203
  W1ThermSensorError,
168
204
  )
169
205
 
170
- if isinstance(err, (SensorNotReadyError, NoSensorFoundError, W1ThermSensorError)):
206
+ if isinstance(
207
+ err, (SensorNotReadyError, NoSensorFoundError, W1ThermSensorError)
208
+ ):
171
209
  _LOGGER.error("Failed to read sensor %s: %s", self.id, err)
172
210
  else:
173
211
  _LOGGER.error("Unexpected error reading sensor %s: %s", self.id, err)
@@ -0,0 +1,2 @@
1
+ # flake8: noqa
2
+ __version__ = "1.5.0.dev41"
@@ -842,7 +842,7 @@ if FRONTEND_DIR.exists() and (FRONTEND_DIR / "index.html").exists():
842
842
  return JSONResponse(
843
843
  content=manifest,
844
844
  media_type="application/manifest+json",
845
- headers={"Cache-Control": "no-store, no-cache, must-revalidate"},
845
+ headers={"Cache-Control": "public, max-age=300"},
846
846
  )
847
847
 
848
848
  @app.get("/sw.js")
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{c as t}from"./monaco-61yH0vfd.js";import{b as n}from"./vendor-IzweXARb.js";import{r}from"./utils-C8nShLO6.js";import{E as i,Ht as a,K as o,Qt as s,T as c,U as l,Wt as u,X as d,Zt as f,_t as p,k as m,ot as h,p as g,q as _,z as v}from"./index-N_Atf1i3.js";import{t as y}from"./EditItemDialog-_53aIb2_.js";var b=e(t(),1);function x(e){return s({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M224 0c17.7 0 32 14.3 32 32l0 12 96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12 0-12c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-43.8 32-4 32 4 0 43.8 18.7 0c8.5 0 16.6 3.4 22.6 9.4L320 192l32 0c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 320c-17.7 0-32-14.3-32-32l0-64zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z`},child:[]}]})(e)}var S=n();function C({outputType:e,className:t}){switch(e){case`light`:return(0,S.jsx)(h,{className:r(`text-warning`,t)});case`switch`:return(0,S.jsx)(u,{className:r(`text-info`,t)});case`valve`:return(0,S.jsx)(x,{className:r(`text-accent`,t)});case`cover`:return(0,S.jsx)(v,{className:r(`text-secondary`,t)});case`shutter`:case`blind`:case`curtain`:return(0,S.jsx)(f,{className:r(`text-secondary`,t)});default:return null}}var w={single:`1×`,double:`2×`,triple:`3×`,long:`L`,pressed:`P`,released:`R`,double_then_long:`2×L`,single_then_long:`1×L`,double_then_single:`2×1`},T={TOGGLE:`short_toggle`,ON:`short_on`,OFF:`short_off`,OPEN:`short_open`,CLOSE:`short_close`,STOP:`short_stop`},E=[{key:`single`,labelKey:`binding_matrix.legend_single`,icon:`1×`},{key:`double`,labelKey:`binding_matrix.legend_double`,icon:`2×`},{key:`triple`,labelKey:`binding_matrix.legend_triple`,icon:`3×`},{key:`long`,labelKey:`binding_matrix.legend_long`,icon:`L`},{key:`pressed`,labelKey:`binding_matrix.legend_pressed`,icon:`P`},{key:`released`,labelKey:`binding_matrix.legend_released`,icon:`R`}],D=[{labelKey:`actions.toggle`,shortKey:`actions.short_toggle`},{labelKey:`actions.on`,shortKey:`actions.short_on`},{labelKey:`actions.off`,shortKey:`actions.short_off`},{labelKey:`actions.open`,shortKey:`actions.short_open`},{labelKey:`actions.close`,shortKey:`actions.short_close`},{labelKey:`actions.stop`,shortKey:`actions.short_stop`}],O={single:`single`,double:`double`,triple:`triple`,long:`long`,pressed:`pressed`,released:`released`,double_then_long:`sequences`,single_then_long:`sequences`,double_then_single:`sequences`};function k(e,t){let n=w[e.clickType]||e.clickType,r=T[e.actionValue];return`${n} ${r?t(`actions.${r}`):e.actionValue}`}function A(e,t){let n=`actions.${e.actionValue.toLowerCase()}`,r=t(n),i=r===n?e.actionValue:r;return`${e.clickType} → ${i}`}function j(e){let t=e.action||`output`,n=``,r=``,i;switch(t){case`output`:n=e.boneio_output||``,r=e.action_output||`TOGGLE`;break;case`cover`:n=e.boneio_cover||``,r=e.action_cover||`TOGGLE`;break;case`remote_output`:i=e.boneio_id||``,n=i?`${i}/${e.output_id||``}`:e.output_id||``,r=e.action_output||`TOGGLE`;break;case`remote_cover`:i=e.boneio_id||``,n=i?`${i}/${e.cover_id||``}`:e.cover_id||``,r=e.action_cover||`TOGGLE`;break;default:n=``,r=e.action_output||e.action_cover||``;break}return{targetId:n,actionType:t,actionValue:r,remoteDevice:i}}function M(e){let t=[],n=[`single`,`double`,`triple`,`long`,`pressed`,`released`,`double_then_long`,`single_then_long`,`double_then_single`],r=e.local_inputs||[];for(let e=0;e<r.length;e++){let i=r[e],a=i.id||i.boneio_input||i.pin||`local_${e}`,o=[];for(let e of n){let t=i.actions?.[e]||[];for(let n of t){let{targetId:t,actionType:r,actionValue:i,remoteDevice:a}=j(n);t&&o.push({clickType:e,actionType:r,targetId:t,actionValue:i,remoteDevice:a})}}t.push({id:a,name:i.name||i.id||i.boneio_input||i.pin||a,area:i.area||void 0,type:`local`,inputKind:i._type===`binary_sensor`?`binary_sensor`:`event`,bindings:o})}let i=e.remote_inputs||[];for(let e=0;e<i.length;e++){let r=i[e],a=r.boneio_id||r.remote_device||``,o=r.id||r.entity_id||``,s=a?`${a}/${o}`:o||`remote_${e}`,c=[];for(let e of n){let t=r.actions?.[e]||[];for(let n of t){let{targetId:t,actionType:r,actionValue:i,remoteDevice:a}=j(n);t&&c.push({clickType:e,actionType:r,targetId:t,actionValue:i,remoteDevice:a})}}t.push({id:s,name:r.name||r.id||o,area:r.area||void 0,type:`remote`,inputKind:r._type===`binary_sensor`?`binary_sensor`:`event`,remoteDevice:a,bindings:c})}return t}function N(e){let t=[],n=e.output||[];for(let e=0;e<n.length;e++){let r=n[e];if(r.output_type===`cover`||r.output_type===`none`)continue;let i=r.id||`output_${e}`;t.push({id:i,name:r.name||r.id||i,area:r.area||void 0,type:`output`,outputType:r.output_type})}let r=e.cover||[];for(let e=0;e<r.length;e++){let n=r[e],i=n.id||`cover_${e}`;t.push({id:i,name:n.name||n.id||i,area:n.area||void 0,type:`cover`,outputType:n.device_class||`cover`})}let i=e.remote_outputs||[];for(let e=0;e<i.length;e++){let n=i[e],r=n.boneio_id||n.remote_device||``,a=n.id||n.output_id||``,o=r?`${r}/${a}`:a||`remote_out_${e}`;t.push({id:o,name:n.name||n.id||a,area:n.area||void 0,type:`remote_output`,remoteDevice:r,outputType:n.output_type})}return t}function P({inputs:e,outputs:t,t:n}){let r=e.filter(e=>e.type===`local`),i=e.filter(e=>e.type===`remote`),a=t.filter(e=>e.type===`output`),o=t.filter(e=>e.type===`cover`),s=t.filter(e=>e.type===`remote_output`||e.type===`remote_cover`),c=r.filter(e=>e.bindings.length>0),l=i.filter(e=>e.bindings.length>0),u=new Set(e.flatMap(e=>e.bindings.map(e=>e.targetId))),d=a.filter(e=>u.has(e.id)),f=o.filter(e=>u.has(e.id)),p=s.filter(e=>u.has(e.id)),m=e.reduce((e,t)=>e+t.bindings.length,0);return(0,S.jsxs)(`div`,{className:`gap-3 grid grid-cols-1 md:grid-cols-4 mb-4`,children:[(0,S.jsxs)(`div`,{className:`space-y-1 bg-base-200/50 p-3 border border-base-300 rounded-xl`,children:[(0,S.jsx)(`h4`,{className:`font-bold text-xs text-base-content/50 uppercase tracking-wider`,children:n(`binding_matrix.local`)}),(0,S.jsxs)(`p`,{className:`text-xs text-base-content/70`,children:[`📥 `,n(`binding_matrix.inputs`),`: `,r.length,(0,S.jsxs)(`span`,{className:`ml-1 text-success`,children:[`(`,c.length,` ✓)`]}),(0,S.jsxs)(`span`,{className:`ml-1 text-warning`,children:[`(`,r.length-c.length,` ○)`]})]}),(0,S.jsxs)(`p`,{className:`text-xs text-base-content/70`,children:[`💡 `,n(`binding_matrix.outputs`),`: `,a.length,(0,S.jsxs)(`span`,{className:`ml-1 text-success`,children:[`(`,d.length,` ✓)`]}),(0,S.jsxs)(`span`,{className:`ml-1 text-warning`,children:[`(`,a.length-d.length,` ○)`]})]}),(0,S.jsxs)(`p`,{className:`text-xs text-base-content/70`,children:[`🚪 `,n(`binding_matrix.covers`),`: `,o.length,(0,S.jsxs)(`span`,{className:`ml-1 text-success`,children:[`(`,f.length,` ✓)`]}),(0,S.jsxs)(`span`,{className:`ml-1 text-warning`,children:[`(`,o.length-f.length,` ○)`]})]})]}),(i.length>0||s.length>0)&&(0,S.jsxs)(`div`,{className:`space-y-1 bg-info/5 p-3 border border-info/20 rounded-xl`,children:[(0,S.jsx)(`h4`,{className:`font-bold text-info/70 text-xs uppercase tracking-wider`,children:n(`binding_matrix.remote`)}),(0,S.jsxs)(`p`,{className:`text-xs text-base-content/70`,children:[`📥 `,n(`binding_matrix.inputs`),`: `,i.length,(0,S.jsxs)(`span`,{className:`ml-1 text-success`,children:[`(`,l.length,` ✓)`]}),(0,S.jsxs)(`span`,{className:`ml-1 text-warning`,children:[`(`,i.length-l.length,` ○)`]})]}),(0,S.jsxs)(`p`,{className:`text-xs text-base-content/70`,children:[`📡 `,n(`binding_matrix.outputs`),`: `,s.length,(0,S.jsxs)(`span`,{className:`ml-1 text-success`,children:[`(`,p.length,` ✓)`]}),(0,S.jsxs)(`span`,{className:`ml-1 text-warning`,children:[`(`,s.length-p.length,` ○)`]})]})]}),(0,S.jsxs)(`div`,{className:`flex flex-col justify-center bg-primary/5 p-3 border border-primary/20 rounded-xl`,children:[(0,S.jsx)(`p`,{className:`font-extrabold text-primary text-2xl`,children:m}),(0,S.jsx)(`p`,{className:`font-medium text-primary/70 text-xs`,children:n(`binding_matrix.total_bindings`)})]}),(0,S.jsxs)(`div`,{className:`bg-base-200/50 p-3 border border-base-300 rounded-xl`,children:[(0,S.jsx)(`h4`,{className:`mb-1.5 font-bold text-xs text-base-content/50 uppercase tracking-wider`,children:n(`binding_matrix.legend`)}),(0,S.jsx)(`div`,{className:`gap-x-3 gap-y-0.5 grid grid-cols-2`,children:E.map(e=>(0,S.jsxs)(`span`,{className:`text-xxs text-base-content/60`,children:[(0,S.jsx)(`span`,{className:`font-mono font-bold text-base-content/80`,children:e.icon}),` `,n(e.labelKey)]},e.key))}),(0,S.jsx)(`div`,{className:`gap-x-2 gap-y-0.5 grid grid-cols-3 mt-1.5 pt-1.5 border-base-300 border-t`,children:D.map(e=>(0,S.jsxs)(`span`,{className:`text-xxs text-base-content/60`,children:[(0,S.jsx)(`span`,{className:`font-mono font-bold text-base-content/80`,children:n(e.shortKey)}),` `,n(e.labelKey)]},e.shortKey))})]})]})}function F({inputs:e,outputs:t,t:n}){let[r,a]=(0,b.useState)(!0),[o,s]=(0,b.useState)(!0),c=new Set(e.flatMap(e=>e.bindings.map(e=>e.targetId))),u=e.filter(e=>e.type===`local`&&e.bindings.length===0),d=t.filter(e=>e.type===`output`&&!c.has(e.id)),f=t.filter(e=>e.type===`cover`&&!c.has(e.id)),p=e.filter(e=>e.type===`remote`&&e.bindings.length===0),h=t.filter(e=>(e.type===`remote_output`||e.type===`remote_cover`)&&!c.has(e.id)),g=u.length>0||d.length>0||f.length>0,_=p.length>0||h.length>0;return!g&&!_?null:(0,S.jsxs)(`div`,{className:`space-y-3 mt-4`,children:[g&&(0,S.jsxs)(`div`,{className:`bg-warning/5 border border-warning/20 rounded-xl overflow-hidden`,children:[(0,S.jsxs)(`button`,{className:`flex justify-between items-center hover:bg-warning/10 p-3 w-full font-semibold text-warning text-sm transition-colors`,onClick:()=>a(!r),children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(l,{className:`w-3.5 h-3.5`}),n(`binding_matrix.unconfigured_local`)]}),r?(0,S.jsx)(m,{className:`w-3 h-3`}):(0,S.jsx)(i,{className:`w-3 h-3`})]}),r&&(0,S.jsxs)(`div`,{className:`space-y-2 p-3 pt-0`,children:[u.length>0&&(0,S.jsx)(I,{title:`📥 ${n(`binding_matrix.free_inputs`)} (${u.length})`,items:u.map(e=>({id:e.id,name:e.name,area:e.area}))}),d.length>0&&(0,S.jsx)(I,{title:`💡 ${n(`binding_matrix.free_outputs`)} (${d.length})`,items:d.map(e=>({id:e.id,name:e.name,area:e.area}))}),f.length>0&&(0,S.jsx)(I,{title:`🚪 ${n(`binding_matrix.free_covers`)} (${f.length})`,items:f.map(e=>({id:e.id,name:e.name,area:e.area}))})]})]}),_&&(0,S.jsxs)(`div`,{className:`bg-info/5 border border-info/20 rounded-xl overflow-hidden`,children:[(0,S.jsxs)(`button`,{className:`flex justify-between items-center hover:bg-info/10 p-3 w-full font-semibold text-info text-sm transition-colors`,onClick:()=>s(!o),children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(l,{className:`w-3.5 h-3.5`}),n(`binding_matrix.unconfigured_remote`)]}),o?(0,S.jsx)(m,{className:`w-3 h-3`}):(0,S.jsx)(i,{className:`w-3 h-3`})]}),o&&(0,S.jsxs)(`div`,{className:`space-y-2 p-3 pt-0`,children:[p.length>0&&(0,S.jsx)(I,{title:`📥 ${n(`binding_matrix.free_remote_inputs`)} (${p.length})`,items:p.map(e=>({id:e.id,name:e.name,area:e.area,badge:e.remoteDevice}))}),h.length>0&&(0,S.jsx)(I,{title:`📡 ${n(`binding_matrix.free_remote_outputs`)} (${h.length})`,items:h.map(e=>({id:e.id,name:e.name,area:e.area,badge:e.remoteDevice}))})]})]})]})}function I({title:e,items:t}){return(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`mb-1 font-semibold text-xs text-base-content/60`,children:e}),(0,S.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.map(e=>(0,S.jsxs)(`span`,{className:`gap-1 font-mono text-xxs badge badge-sm badge-ghost`,title:e.id,children:[e.name,e.area&&(0,S.jsxs)(`span`,{className:`text-base-content/40`,children:[`(`,e.area,`)`]}),e.badge&&(0,S.jsxs)(`span`,{className:`text-info/60`,children:[`[`,e.badge,`]`]})]},e.id))})]})}function ee({inputs:e,outputs:t,areaFilter:n,hideEmpty:i,t:a,onEditInput:o,onEditOutput:s}){let[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)(null),f=(0,b.useRef)(null),m=(0,b.useRef)(!1),h=(0,b.useRef)(!1),g=(0,b.useRef)(0),_=(0,b.useRef)(0),[v,y]=(0,b.useState)(null),x=(0,b.useRef)(null),w=(0,b.useCallback)((e,t,n)=>{n||(e.preventDefault(),y({x:e.clientX,y:e.clientY,row:t}))},[]),T=(0,b.useCallback)((e,t,n)=>{if(n)return;let r=`touches`in e?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY};x.current=setTimeout(()=>{y({...r,row:t}),x.current=null},500)},[]),D=(0,b.useCallback)(()=>{x.current&&=(clearTimeout(x.current),null)},[]);(0,b.useEffect)(()=>{if(!v)return;let e=null,t=requestAnimationFrame(()=>{let t=()=>y(null);window.addEventListener(`click`,t),window.addEventListener(`contextmenu`,t,{capture:!0}),window.addEventListener(`scroll`,t,!0),e=()=>{window.removeEventListener(`click`,t),window.removeEventListener(`contextmenu`,t,{capture:!0}),window.removeEventListener(`scroll`,t,!0)}});return()=>{cancelAnimationFrame(t),e?.()}},[v]);let O=(0,b.useMemo)(()=>{let e=new Map;for(let n of t)e.set(n.id,n.area);return e},[t]),j=(0,b.useMemo)(()=>{let t=e;return n.size>0&&(t=t.filter(e=>{let t=e.area||`__none__`;return n.has(t)?!0:e.bindings.some(e=>{let t=O.get(e.targetId)||`__none__`;return n.has(t)})})),i&&(t=t.filter(e=>e.bindings.length>0)),t},[e,n,i,O]),M=(0,b.useMemo)(()=>new Set(e.flatMap(e=>e.bindings.map(e=>e.targetId))),[e]),N=(0,b.useMemo)(()=>{let t=new Map;for(let n of e){let e=n.area||`__none__`;for(let r of n.bindings)t.has(r.targetId)||t.set(r.targetId,new Set),t.get(r.targetId).add(e)}return t},[e]),P=(0,b.useMemo)(()=>{let e=t;return n.size>0&&(e=e.filter(e=>{let t=e.area||`__none__`;if(n.has(t))return!0;let r=N.get(e.id);if(r){for(let e of r)if(n.has(e))return!0}return!1})),i&&(e=e.filter(e=>M.has(e.id))),e},[t,n,i,M,N]),F=(0,b.useMemo)(()=>{let e=new Map;for(let t of j){let n=new Map;for(let e of t.bindings){let t=n.get(e.targetId)||[];t.push(e),n.set(e.targetId,t)}e.set(t.id,n)}return e},[j]);return j.length===0||P.length===0?(0,S.jsx)(`div`,{className:`py-12 text-base-content/40 text-center`,children:(0,S.jsx)(`p`,{className:`text-sm`,children:a(`binding_matrix.no_data`)})}):(0,S.jsxs)(`div`,{ref:f,className:`border border-base-300 rounded-xl overflow-x-auto cursor-grab active:cursor-grabbing select-none`,onMouseDown:e=>{m.current=!0,h.current=!1,g.current=e.clientX,_.current=f.current?.scrollLeft||0},onMouseMove:e=>{if(!m.current||!f.current)return;let t=e.clientX-g.current;!h.current&&Math.abs(t)>5&&(h.current=!0),h.current&&(f.current.scrollLeft=_.current-t)},onMouseUp:()=>{m.current=!1,h.current=!1},onMouseLeave:()=>{m.current=!1,h.current=!1},onClickCapture:e=>{h.current&&(e.stopPropagation(),e.preventDefault())},children:[(0,S.jsxs)(`table`,{className:`table table-xs w-auto`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`th`,{className:`left-0 z-20 sticky bg-base-200 border-base-300 border-r min-w-30`}),P.map(e=>(0,S.jsxs)(`th`,{className:r(`group/col bg-base-200 px-2 py-2 border-base-300 border-r min-w-20 font-bold text-xxs text-center whitespace-nowrap cursor-pointer`,u===e.id&&`bg-primary/10`),onMouseEnter:()=>d(e.id),onMouseLeave:()=>d(null),onClick:()=>s(e),title:a(`binding_matrix.click_to_edit`),children:[(0,S.jsxs)(`div`,{className:`flex justify-center items-center gap-1`,children:[(0,S.jsx)(C,{outputType:e.outputType,className:`w-3 h-3 shrink-0`}),(0,S.jsx)(`span`,{className:`whitespace-nowrap`,children:e.name}),(0,S.jsx)(p,{className:`opacity-0 group-hover/col:opacity-40 w-2 h-2 transition-opacity shrink-0`})]}),e.area?(0,S.jsx)(`div`,{className:`font-normal text-xxs text-base-content/40 truncate`,children:e.area}):(0,S.jsx)(`div`,{className:`font-normal text-xxs text-base-content/20`,children:`—`}),e.remoteDevice&&(0,S.jsx)(`div`,{className:`font-normal text-info/50 text-xxs truncate`,children:e.remoteDevice})]},e.id))]})}),(0,S.jsx)(`tbody`,{children:j.map(e=>{let t=F.get(e.id);return(0,S.jsxs)(`tr`,{className:r(`hover:bg-base-200/50`,c===e.id&&`bg-base-200/40`),onMouseEnter:()=>l(e.id),onMouseLeave:()=>l(null),children:[(0,S.jsxs)(`td`,{className:r(`group/row left-0 z-10 sticky bg-base-100 border-base-300 border-r font-medium text-xs cursor-pointer`,c===e.id&&`bg-base-200/60`,e.bindings.length===0&&`text-base-content/30`),onClick:()=>o(e),title:a(`binding_matrix.click_to_edit`),children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-1 max-w-30 font-bold truncate`,title:e.id,children:[e.name,(0,S.jsx)(p,{className:`opacity-0 group-hover/row:opacity-40 w-2.5 h-2.5 transition-opacity shrink-0`})]}),e.area&&(0,S.jsx)(`div`,{className:`text-xxs text-base-content/40`,children:e.area}),e.remoteDevice&&(0,S.jsx)(`div`,{className:`text-info/50 text-xxs`,children:e.remoteDevice})]}),P.map(n=>{let i=t?.get(n.id)||[],s=c===e.id||u===n.id;return(0,S.jsx)(`td`,{className:r(`px-1 py-1 border-base-300 border-r text-xs text-center`,i.length>0?`bg-success/15 text-success font-medium`:`text-base-content/30`,s&&i.length>0&&`bg-success/25`,s&&i.length===0&&`bg-base-200/40`),onMouseEnter:()=>d(n.id),onMouseLeave:()=>{d(null),D()},onContextMenu:t=>w(t,e,i.length>0),onMouseDown:t=>{t.button===0&&T(t,e,i.length>0)},onMouseUp:D,onTouchStart:t=>T(t,e,i.length>0),onTouchEnd:D,onTouchMove:D,children:i.length>0&&(0,S.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:i.map((t,n)=>(0,S.jsx)(`button`,{className:`hover:bg-success/30 px-0.5 rounded text-left whitespace-nowrap transition-colors cursor-pointer`,onClick:()=>o(e,t.clickType),title:`${A(t,a)}\n${a(`binding_matrix.click_to_edit`)}`,children:k(t,a)},n))})},n.id)})]},e.id)})})]}),v&&(0,S.jsxs)(`div`,{className:`z-50 fixed bg-base-100 shadow-xl py-1 border border-base-300 rounded-lg min-w-45 animate-in duration-100 fade-in zoom-in-95`,style:{left:v.x,top:v.y},onClick:e=>e.stopPropagation(),children:[(0,S.jsx)(`div`,{className:`px-3 py-1.5 font-semibold text-xxs text-base-content/40 uppercase tracking-wider`,children:a(`binding_matrix.add_action`)}),E.filter(e=>v.row.inputKind===`binary_sensor`?e.key===`pressed`||e.key===`released`:e.key!==`pressed`&&e.key!==`released`).map(e=>(0,S.jsxs)(`button`,{className:`flex items-center gap-2 hover:bg-primary/10 px-3 py-1.5 w-full text-sm text-left transition-colors`,onClick:()=>{o(v.row,e.key),y(null)},children:[(0,S.jsx)(`span`,{className:`font-mono text-base-content/70`,children:e.icon}),a(`binding_matrix.legend_${e.key}`)]},e.key))]})]})}function te({inputs:e,areaFilter:t,hideEmpty:n,t:o,onEditInput:s}){let[l,u]=(0,b.useState)(null),d=(0,b.useMemo)(()=>{let r=e;return t.size>0&&(r=r.filter(e=>{let n=e.area||`__none__`;return t.has(n)})),n&&(r=r.filter(e=>e.bindings.length>0)),r},[e,t,n]),f=(0,b.useCallback)(e=>{u(t=>t===e?null:e)},[]);return d.length===0?(0,S.jsx)(`div`,{className:`py-12 text-base-content/40 text-center`,children:(0,S.jsx)(`p`,{className:`text-sm`,children:o(`binding_matrix.no_data`)})}):(0,S.jsx)(`div`,{className:`space-y-1.5`,children:d.map(e=>{let t=l===e.id,n=e.bindings.length>0,u=new Map;for(let t of e.bindings){let e=u.get(t.targetId)||[];e.push(t),u.set(t.targetId,e)}return(0,S.jsxs)(`div`,{className:r(`border rounded-xl overflow-hidden transition-colors`,n?`border-success/20 bg-success/5`:`border-base-300 bg-base-200/30`),children:[(0,S.jsxs)(`button`,{className:`flex justify-between items-center hover:bg-base-200/30 p-3 w-full text-sm transition-colors`,onClick:()=>n&&f(e.id),disabled:!n,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[n?(0,S.jsx)(c,{className:`w-3.5 h-3.5 text-success shrink-0`}):(0,S.jsx)(a,{className:`w-3.5 h-3.5 text-base-content/20 shrink-0`}),(0,S.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,S.jsx)(`span`,{className:r(`block font-semibold truncate`,!n&&`text-base-content/30`),children:e.name}),e.area&&(0,S.jsx)(`span`,{className:`text-xxs text-base-content/40`,children:e.area})]})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,S.jsx)(`span`,{className:`font-bold badge badge-sm badge-success`,children:e.bindings.length}),e.type===`remote`&&(0,S.jsx)(`span`,{className:`font-mono badge badge-xs badge-info`,children:e.remoteDevice}),n&&(t?(0,S.jsx)(m,{className:`w-3 h-3 text-base-content/30`}):(0,S.jsx)(i,{className:`w-3 h-3 text-base-content/30`}))]})]}),t&&n&&(0,S.jsxs)(`div`,{className:`space-y-2 bg-base-100/50 p-3 border-base-300 border-t`,children:[[...u.entries()].map(([e,t])=>(0,S.jsxs)(`div`,{className:`flex items-start gap-2 text-xs`,children:[(0,S.jsx)(`span`,{className:`mt-0.5 font-mono font-bold text-base-content/70 shrink-0`,children:`→`}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`font-semibold`,children:e}),(0,S.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:t.map((e,t)=>(0,S.jsx)(`span`,{className:`gap-0.5 font-mono badge badge-xs badge-success`,children:k(e,o)},t))})]})]},e)),(0,S.jsxs)(`button`,{className:`gap-1 mt-1 btn-outline btn btn-xs btn-primary`,onClick:t=>{t.stopPropagation(),s(e)},children:[(0,S.jsx)(p,{className:`w-2.5 h-2.5`}),o(`binding_matrix.edit_input`)]})]})]},e.id)})})}var L=({formData:e,sections:t,onSaveSection:n,onUpdateFormData:r})=>{let{t:a}=g(),[s,c]=(0,b.useState)(new Set),[l,u]=(0,b.useState)(!1),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(!1),[v,x]=(0,b.useState)(null),[C,w]=(0,b.useState)(``),[T,E]=(0,b.useState)(-1),[D,k]=(0,b.useState)(`basic`),[A,j]=(0,b.useState)(!1),[I,L]=(0,b.useState)(!1),R=(0,b.useRef)(null),[ne,z]=(0,b.useState)(!1),[B,V]=(0,b.useState)(null),[H,re]=(0,b.useState)(``),[U,ie]=(0,b.useState)(-1),[W,G]=(0,b.useState)(!1),K=(0,b.useRef)(null),q=(0,b.useCallback)((t,n)=>{let r=t.type===`remote`?`remote_inputs`:`local_inputs`,i=e[r]||[],a=i.findIndex((e,n)=>{if(t.type===`remote`){let r=e.boneio_id||e.remote_device||``,i=e.id||e.entity_id||``;return(r?`${r}/${i}`:i||`remote_${n}`)===t.id}return(e.id||e.boneio_input||e.pin||`local_${n}`)===t.id});a<0||(w(r),E(a),x(JSON.parse(JSON.stringify(i[a]))),R.current=JSON.stringify(i[a]),k(n&&O[n]||`basic`),j(!1),h(!0))},[e]),ae=(0,b.useCallback)(async()=>{if(A||T<0||!v)return;let t=[...e[C]||[]];t[T]=v,L(!0);try{r(C,t),await n(C,t),h(!1),x(null)}catch(e){console.error(`Failed to save input:`,e)}finally{L(!1)}},[v,T,C,e,A,n,r]),oe=(0,b.useCallback)(()=>{h(!1),x(null)},[]),J=(0,b.useMemo)(()=>M(e),[e]),Y=(0,b.useMemo)(()=>N(e),[e]),se=(0,b.useMemo)(()=>{let e=new Set;return J.forEach(t=>{t.area&&e.add(t.area)}),Y.forEach(t=>{t.area&&e.add(t.area)}),[...e].sort()},[J,Y]),ce=(0,b.useMemo)(()=>J.some(e=>!e.area)||Y.some(e=>!e.area),[J,Y]),X=(0,b.useMemo)(()=>e.output||[],[e.output]),Z=(0,b.useMemo)(()=>e.cover||[],[e.cover]),Q=(0,b.useMemo)(()=>e.output_group||[],[e.output_group]),le=(0,b.useMemo)(()=>e.remote_devices||[],[e.remote_devices]),ue=(0,b.useMemo)(()=>e.remote_inputs||[],[e.remote_inputs]),de=(0,b.useMemo)(()=>(e.local_inputs||[]).filter(e=>e._inputType===`binary_sensor`),[e.local_inputs]),fe=(0,b.useMemo)(()=>(e.local_inputs||[]).filter(e=>e._inputType!==`binary_sensor`),[e.local_inputs]),$=(0,b.useMemo)(()=>e.areas||[],[e.areas]),pe=(0,b.useMemo)(()=>{let e=t.find(e=>e.name===`local_inputs`);return e?.schema||e?.normalizedSchema||{}},[t]),me=(0,b.useMemo)(()=>{let e=t.find(e=>e.name===`output`);return e?.schema||e?.normalizedSchema||{}},[t]),he=(0,b.useMemo)(()=>t.find(e=>e.name===`output`)?.uiSchema||{},[t]),ge=(0,b.useMemo)(()=>{let e=t.find(e=>e.name===`cover`);return e?.schema||e?.normalizedSchema||{}},[t]),_e=(0,b.useCallback)(t=>{let n={output:`output`,cover:`cover`,remote_output:`remote_outputs`,remote_cover:`remote_covers`}[t.type]||`output`,r=e[n]||[],i=r.findIndex((e,n)=>{if(t.type===`remote_output`||t.type===`remote_cover`){let r=e.boneio_id||e.remote_device||``,i=e.id||e.output_id||``;return(r?`${r}/${i}`:i||`remote_out_${n}`)===t.id}return(e.id||``)===t.id});i<0||(re(n),ie(i),V(JSON.parse(JSON.stringify(r[i]))),K.current=JSON.stringify(r[i]),z(!0))},[e]),ve=(0,b.useCallback)(async()=>{if(U<0||!B)return;let t=[...e[H]||[]];t[U]=B,G(!0);try{r(H,t),await n(H,t),z(!1),V(null)}catch(e){console.error(`Failed to save output:`,e)}finally{G(!1)}},[B,U,H,e,n,r]),ye=(0,b.useCallback)(()=>{z(!1),V(null)},[]),be=v&&R.current&&JSON.stringify(v)!==R.current,xe=B&&K.current&&JSON.stringify(B)!==K.current;return(0,S.jsxs)(`div`,{className:`p-4 md:p-6 max-w-full`,children:[(0,S.jsxs)(`div`,{className:`mb-4`,children:[(0,S.jsx)(`h2`,{className:`font-extrabold text-xl tracking-tight`,children:a(`binding_matrix.title`)}),(0,S.jsx)(`p`,{className:`text-sm text-base-content/50`,children:a(`binding_matrix.subtitle`)})]}),(0,S.jsx)(P,{inputs:J,outputs:Y,t:a}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 mb-4`,children:[(0,S.jsxs)(`div`,{className:`relative flex items-center gap-2`,children:[(0,S.jsx)(d,{className:`w-3 h-3 text-base-content/40`}),(0,S.jsxs)(`button`,{className:`justify-between gap-1 btn-outline min-w-40 btn btn-sm`,onClick:()=>u(e=>!e),children:[(0,S.jsx)(`span`,{className:`text-xs truncate`,children:s.size===0?a(`binding_matrix.all_areas`):s.size===1?s.has(`__none__`)?a(`binding_matrix.no_area`):[...s][0]:a(`binding_matrix.areas_selected`,{count:s.size})}),(0,S.jsx)(i,{className:`w-2.5 h-2.5 shrink-0`})]}),l&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`z-40 fixed inset-0`,onClick:()=>u(!1)}),(0,S.jsxs)(`div`,{className:`top-full left-0 z-50 absolute bg-base-100 shadow-xl mt-1 py-1 border border-base-300 rounded-lg min-w-50 max-h-75 overflow-y-auto`,children:[(0,S.jsxs)(`label`,{className:`flex items-center gap-2 hover:bg-base-200/60 px-3 py-1.5 transition-colors cursor-pointer`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`checkbox checkbox-xs checkbox-primary`,checked:s.size===0,onChange:()=>c(new Set)}),(0,S.jsx)(`span`,{className:`font-semibold text-xs`,children:a(`binding_matrix.all_areas`)})]}),(0,S.jsx)(`div`,{className:`my-0.5 border-base-300 border-t`}),ce&&(0,S.jsxs)(`label`,{className:`flex items-center gap-2 hover:bg-base-200/60 px-3 py-1.5 transition-colors cursor-pointer`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`checkbox checkbox-xs checkbox-primary`,checked:s.has(`__none__`),onChange:()=>{let e=new Set(s);e.has(`__none__`)?e.delete(`__none__`):e.add(`__none__`),c(e)}}),(0,S.jsx)(`span`,{className:`text-xs text-base-content/50 italic`,children:a(`binding_matrix.no_area`)})]}),se.map(e=>(0,S.jsxs)(`label`,{className:`flex items-center gap-2 hover:bg-base-200/60 px-3 py-1.5 transition-colors cursor-pointer`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`checkbox checkbox-xs checkbox-primary`,checked:s.has(e),onChange:()=>{let t=new Set(s);t.has(e)?t.delete(e):t.add(e),c(t)}}),(0,S.jsx)(`span`,{className:`text-xs`,children:e})]},e))]})]})]}),(0,S.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`checkbox checkbox-sm checkbox-primary`,checked:f,onChange:e=>p(e.target.checked)}),(0,S.jsxs)(`span`,{className:`flex items-center gap-1 font-medium text-xs text-base-content/60`,children:[f?(0,S.jsx)(_,{className:`w-3 h-3`}):(0,S.jsx)(o,{className:`w-3 h-3`}),a(`binding_matrix.hide_empty`)]})]})]}),(0,S.jsx)(`div`,{className:`hidden md:block`,children:(0,S.jsx)(ee,{inputs:J,outputs:Y,areaFilter:s,hideEmpty:f,t:a,onEditInput:q,onEditOutput:_e})}),(0,S.jsx)(`div`,{className:`md:hidden`,children:(0,S.jsx)(te,{inputs:J,areaFilter:s,hideEmpty:f,t:a,onEditInput:q})}),(0,S.jsx)(F,{inputs:J,outputs:Y,t:a}),(0,S.jsx)(y,{open:m,onOpenChange:h,editingItem:v,editingIndex:T,sectionType:C,schema:C===`remote_inputs`?t.find(e=>e.name===`remote_inputs`)?.schema||t.find(e=>e.name===`remote_inputs`)?.normalizedSchema||{}:pe,allBinarySensors:de,allEvents:fe,allOutputs:X,allOutputGroups:Q,allCovers:Z,allAreas:$,allRemoteDevices:le,allRemoteInputs:ue,savedOutputs:X,savedOutputGroups:Q,savedCovers:Z,onChange:x,onSave:ae,onCancel:oe,onValidationChange:j,saveDisabled:A||!be,isSaving:I,initialTab:D}),(0,S.jsx)(y,{open:ne,onOpenChange:z,editingItem:B,editingIndex:U,sectionType:H,schema:H===`cover`?ge:me,uiSchema:H===`cover`?void 0:he,allOutputs:X,allCovers:Z,allAreas:$,onChange:V,onSave:ve,onCancel:ye,saveDisabled:!xe,isSaving:W})]})};export{L as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,c as n,i as r,n as i,o as a,r as o,t as s}from"./monaco-61yH0vfd.js";import{b as c}from"./vendor-IzweXARb.js";import{t as l}from"./axios-DHUeYRnu.js";import{E as u,Et as d,O as f,Qt as p,Tt as m,p as h,wt as g}from"./index-N_Atf1i3.js";var _=e(n(),1);function v(){let[e,t]=(0,_.useState)(`dark`);return(0,_.useEffect)(()=>{t(localStorage.getItem(`theme`)||`dark`);let e=new MutationObserver(e=>{e.forEach(e=>{e.attributeName===`data-theme`&&t(document.documentElement.getAttribute(`data-theme`)||`dark`)})});return e.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`]}),()=>e.disconnect()},[]),e}function y(e){return p({tag:`svg`,attr:{viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M11.28 9.53 8.81 12l2.47 2.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-3-3a.75.75 0 0 1 0-1.06l3-3a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734Z`},child:[]},{tag:`path`,attr:{d:`M3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25V3.75C2 2.784 2.784 2 3.75 2ZM3.5 3.75v16.5c0 .138.112.25.25.25H15v-17H3.75a.25.25 0 0 0-.25.25Zm13 16.75h3.75a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25H16.5Z`},child:[]}]})(e)}var b=c();function x({isOpen:e,onClose:t}){let{t:n}=h(),[r,i]=(0,_.useState)(!1),[a,o]=(0,_.useState)(null),s=async()=>{i(!0);try{let e=await l.get(`/api/check_configuration`);o({status:e.data.status,message:e.data.message})}catch{o({status:`error`,message:n(`config_check.failed`)})}finally{i(!1)}};return e?(0,b.jsx)(`div`,{className:`fixed inset-0 bg-base-300/80 flex items-center justify-center z-50`,children:(0,b.jsxs)(`div`,{className:`bg-base-200 p-8 rounded-lg shadow-lg max-w-2xl w-full mx-4`,children:[(0,b.jsx)(`h2`,{className:`text-2xl font-bold mb-6`,children:n(`config_check.title`)}),r?(0,b.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-8`,children:[(0,b.jsx)(`div`,{className:`loading loading-spinner loading-lg`}),(0,b.jsx)(`p`,{className:`text-lg`,children:n(`config_check.checking`)})]}):a?(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsx)(`div`,{className:`text-lg font-semibold ${a.status===`success`?`text-success`:`text-error`}`,children:a.status===`success`?n(`config_check.valid`):n(`config_check.error`)}),a.message&&(0,b.jsx)(`pre`,{className:`bg-base-300 p-4 rounded-lg whitespace-pre-wrap`,children:a.message}),(0,b.jsxs)(`div`,{className:`flex justify-end gap-4 mt-6`,children:[(0,b.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>{o(null),t()},children:n(`common.close`)}),(0,b.jsx)(`button`,{className:`btn btn-primary`,onClick:()=>{o(null),s()},children:n(`config_check.check_again`)})]})]}):(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsx)(`p`,{className:`text-base-content/70`,children:n(`config_check.description`)}),(0,b.jsxs)(`div`,{className:`flex justify-end gap-4`,children:[(0,b.jsx)(`button`,{className:`btn btn-ghost`,onClick:t,children:n(`common.cancel`)}),(0,b.jsx)(`button`,{className:`btn btn-primary`,onClick:s,children:n(`config_check.check_button`)})]})]})]})}):null}function S(e){return new Worker(`/assets/yaml.worker-BKRoXlmz.js`,{name:e?.name})}self.MonacoEnvironment={getWorker(e,t){return t===`yaml`?new S:t===`json`?new s:new i}},a.config({monaco:r});var C;function w(){let[e,n]=(0,_.useState)([]),[r,i]=(0,_.useState)(null),[a,s]=(0,_.useState)(``),[c,p]=(0,_.useState)(!1),[h,S]=(0,_.useState)(`waiting`),[w,T]=(0,_.useState)(!0),[E,D]=(0,_.useState)(!1),O=v(),k=async()=>{try{n((await l.get(`/api/files`)).data.items)}catch(e){console.error(`Error loading directory:`,e)}},A=async e=>{try{let t=`/api/files/${encodeURIComponent(e)}`,n=await l.get(t);i(e),s(n.data.content),localStorage.setItem(`lastOpenedFile`,e)}catch(e){console.error(`Error loading file:`,e)}},j=async()=>{if(r)try{await l.put(`/api/files/${encodeURIComponent(r)}`,{content:a}),console.log(`File saved successfully`)}catch(e){console.error(`Error saving file:`,e)}},M=async e=>{if(!C){let t=(await l.get(`/schema/config.schema.json`)).data;C=await o(e,{enableSchemaRequest:!0,schemas:[{uri:window.location.origin+`/schema/config.schema.json`,fileMatch:[`config.yaml`,`config.yml`],schema:t},...Object.keys(t.properties).map(e=>({uri:window.location.origin+`/schema/${e}.schema.json`,fileMatch:[`${e}.yaml`,`${e}.yml`],schema:t.properties[e]}))],validate:!0})}},N=async(e,t)=>{e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KeyS,()=>{j()})},P=e=>{n(t=>{let n=t=>t.map(t=>t.path===e?{...t,isOpen:!t.isOpen}:t.children?{...t,children:n(t.children)}:t);return n(t)})},F=(e,t=0)=>e.map(e=>{let n=t==0||e.isOpen;return(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`button`,{className:`flex items-center gap-2 w-full px-2 py-1 hover:bg-base-300 ${r===e.path?`bg-primary/10`:``}`,style:{paddingLeft:`${t*16+8}px`},onClick:()=>e.type===`file`?A(e.path):P(e.path),children:[e.type===`directory`&&(0,b.jsx)(`span`,{className:`text-xs`,children:n?(0,b.jsx)(u,{}):(0,b.jsx)(f,{})}),(0,b.jsx)(`span`,{className:`text-base-content/70`,children:e.type===`directory`?n?(0,b.jsx)(d,{}):(0,b.jsx)(m,{}):(0,b.jsx)(g,{})}),(0,b.jsx)(`span`,{className:`text-sm truncate`,children:e.name})]}),e.type===`directory`&&n&&e.children&&F(e.children,t+1)]},e.path)}),I=async()=>{try{return await l.get(`/api/files`),!0}catch{return!1}},L=async()=>{for(p(!0),S(`waiting`),await new Promise(e=>setTimeout(e,2e3)),S(`checking`);;){if(await I()){S(`ready`),await new Promise(e=>setTimeout(e,1e3)),p(!1),k();break}await new Promise(e=>setTimeout(e,1e3))}};return(0,_.useEffect)(()=>{(async()=>{await k();let e=localStorage.getItem(`lastOpenedFile`);e&&A(e)})()},[]),(0,b.jsxs)(`div`,{className:`flex h-full bg-base-300`,children:[c?(0,b.jsx)(`div`,{className:`fixed inset-0 bg-base-300/80 flex items-center justify-center z-50`,children:(0,b.jsxs)(`div`,{className:`bg-base-200 p-8 rounded-lg shadow-lg text-center`,children:[(0,b.jsx)(`div`,{className:`loading loading-spinner loading-lg mb-4`}),(0,b.jsxs)(`h2`,{className:`text-xl font-bold mb-4`,children:[h===`waiting`&&`Restarting Service...`,h===`checking`&&`Waiting for Service...`,h===`ready`&&`Service Restarted!`]}),(0,b.jsxs)(`p`,{className:`text-base-content/70`,children:[h===`waiting`&&`Initiating service restart`,h===`checking`&&`Checking if service is back online`,h===`ready`&&`Redirecting...`]})]})}):null,(0,b.jsxs)(`div`,{className:`${w?`w-64`:`w-0`} transition-all duration-300 bg-base-200 border-r border-base-content/10 overflow-hidden`,children:[(0,b.jsx)(`div`,{className:`p-2 text-sm font-semibold text-base-content/70 uppercase`,children:`Explorer`}),(0,b.jsx)(`div`,{className:`overflow-y-auto`,children:F(e)})]}),(0,b.jsxs)(`div`,{className:`flex-1 overflow-hidden flex flex-col h-full max-h-screen`,children:[(0,b.jsxs)(`div`,{className:`flex items-center p-2 border-b border-base-content/10`,children:[(0,b.jsx)(`button`,{onClick:()=>T(!w),className:`btn btn-ghost btn-sm p-1`,title:w?`Hide file tree`:`Show file tree`,children:(0,b.jsx)(y,{className:`h-5 w-5 opacity-70 transition-transform duration-200 ${w?``:`rotate-180`}`})}),r&&(0,b.jsx)(`span`,{className:`ml-2 text-sm opacity-70`,children:r})]}),(0,b.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,b.jsx)(t,{height:`100%`,width:`100%`,defaultLanguage:`yaml`,path:r||`config.yaml`,theme:O===`light`?`vs-light`:`vs-dark`,value:a,onChange:e=>s(e||``),onMount:N,beforeMount:M,options:{minimap:{enabled:!0},scrollBeyondLastLine:!1,fontSize:14,automaticLayout:!0,readOnly:!1,formatOnType:!0,formatOnPaste:!0,quickSuggestions:{other:!0,comments:!1,strings:!0}}})}),(0,b.jsxs)(`div`,{className:`h-12 bg-base-200 border-t border-base-content/10 flex items-center justify-end px-4 gap-4`,children:[(0,b.jsx)(`button`,{onClick:j,disabled:!r,className:`btn btn-primary btn-sm`,children:`Save`}),(0,b.jsx)(`button`,{onClick:()=>D(!0),className:`btn btn-primary btn-sm`,children:`Check Config`}),(0,b.jsx)(`button`,{onClick:async()=>{await j();try{if((await l.post(`/api/restart`)).data.status===`not available`){let e=document.getElementById(`toast`);e&&(e.classList.remove(`hidden`),setTimeout(()=>{e.classList.add(`hidden`)},5e3))}else console.log(`Service restarted successfully`),L()}catch(e){console.error(`Error restarting service:`,e)}},disabled:!r,className:`btn btn-secondary btn-sm`,children:`Save and Restart`})]})]}),(0,b.jsx)(`div`,{id:`toast`,className:`toast toast-end hidden`,children:(0,b.jsx)(`div`,{className:`alert alert-warning`,children:(0,b.jsx)(`span`,{children:`Restart not possible. Application is not running as systemd service. Restart manually.`})})}),(0,b.jsx)(x,{isOpen:E,onClose:()=>D(!1)})]})}export{w as default};